#proxyサーバからうつぞ
#load averageみる
root@swift-proxy01:~# curl http://xx.xx.xx.xx:6000/recon/load
{"5m": 2.3199999999999998, "15m": 2.27, "processes": 5311, "tasks": "2/364", "1m": 2.4700000000000002}
#memoryの情報チェックするぞ
curl http://xx.xx.xx.xx:6000/recon/mem
{"WritebackTmp": "0 kB", "SwapTotal": "1998840 kB", "Active(anon)": "337664 kB", "SwapFree": "1998840 kB", "DirectMap4k": "6756 kB", "KernelStack": "2936 kB", "MemFree": "128024 kB", "HugePages_Rsvd": "0", "Committed_AS": "4068192 kB", "Active(file)": "4061696 kB", "NFS_Unstable": "0 kB", "VmallocChunk": "34359370072 kB", "Writeback": "0 kB", "Inactive(file)": "15142944 kB", "MemTotal": "24731684 kB", "VmallocUsed": "331016 kB", "HugePages_Free": "0", "AnonPages": "368188 kB", "Active": "4399360 kB", "Inactive(anon)": "30712 kB", "CommitLimit": "14364680 kB", "Hugepagesize": "2048 kB", "Cached": "19014360 kB", "SwapCached": "0 kB", "VmallocTotal": "34359738367 kB", "Shmem": "252 kB", "Mapped": "9884 kB", "SUnreclaim": "811208 kB", "Unevictable": "64 kB", "SReclaimable": "3741636 kB", "Mlocked": "64 kB", "DirectMap2M": "25149440 kB", "HugePages_Surp": "0", "Bounce": "0 kB", "Inactive": "15173656 kB", "PageTables": "5080 kB", "HardwareCorrupted": "0 kB", "HugePages_Total": "0", "Slab": "4552844 kB", "Buffers": "190532 kB", "Dirty": "456 kB"}
#Diskの情報もとれるぞ
curl http://xx.xx.xx.xx:6000/recon/diskusage
[{"device": "sdb1", "avail": 198553079808, "mounted": true, "used": 57811726336, "size": 256364806144}]
#objectのreplicationタイムもとれる(´;ω;`)
curl http://xx.xx.xx.xx:6000/recon/replication
{"object_replication_time": 21.035725466410319}
#asyncの情報もとれるんだけど、nullかえってきてる・・・
#ここは調べときます。
curl http://10.200.32.41:6000/recon/async
{"async_pending": null}
#swift clientからもたたけるんだな
swift-recon object -r --zone 1
===============================================================================
--> Starting reconnaissance on 1 hosts
===============================================================================
[2012-11-16 14:31:19] Checking on replication
[replication_time] low: 21, high: 21, avg: 21.0, total: 21, Failed: 0.0%, no_result: 0, reported: 1
===============================================================================
2012年11月22日木曜日
Openstack Swift recon太郎
Swiftにreconっていう機能があって、loadとかmemoryとかの情報がとれるみたい。
これを使って監視とかしたらいんかな。
英語よめねからよくわかんね・・・
Openstack Swift ACL太郎
SwiftのACLの方法でおじゃる。
#containerの作成
swift -A http://PROXY_VIP:8080/auth/v1.0 -U yattarou:yattarou -K yattarou post -r '.r:*' Container_Name
#indexの作成
swift -A http://PROXY_VIP:8080/auth/v1.0 -U yattarou:yattarou -K yattarou post -m 'web-index:index.html' Container_Name
#list設定
swift -A http://PROXY_VIP:8080/auth/v1.0 -U yattarou:yattarou -K yattarou post -m 'web-listings: true' Container_Name
#ACLの確認
swift -A http://PROXY_VIP:8080/auth/v1.0 -U yattarou:yattarou -K yattarou stat Container_Name
Account: AUTH_system
Container: Container_Name
Objects: 1
Bytes: 12
Read ACL: .r:*
Write ACL:
Sync To:
Sync Key:
Meta Web-Listings: true
Meta Web-Index: index.html
Openstack swift rebalance太郎
SwiftでのRebalance手順まとめたお(*´ω`*)(*´ω`*)
レプリカの一台が復旧できない状態に鳴った場合を想定して、
nodeの切り離し、別のnodeの追加まとめた。
レプリカの一台が復旧できない状態に鳴った場合を想定して、
nodeの切り離し、別のnodeの追加まとめた。
#zone確認 root@swift-proxy01:/etc/swift# swift-ring-builder object.builder object.builder, build version 3 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 Devices: id zone ip address port name weight partitions balance meta 0 1 xx.xxx.xx.41 6000 sdb1 1.00 262144 0.00 1 2 xx.xxx.xx.43 6000 sdb1 1.00 262144 0.00 2 3 xx.xxx.xx.44 6000 sdb1 1.00 262144 0.00 #ringからのremoce root@swift-proxy01:/etc/swift# swift-ring-builder object.builder remove z1-xx.xxx.xx.41/sdb1 d0z1-xx.xxx.xx.41:6000/sdb1_"" marked for removal and will be removed next rebalance. #ringへの追加 root@swift-proxy01:/etc/swift# swift-ring-builder object.builder add z1-xx.xxx.xx.45:6000/sdb1 1 Device z1-xx.xxx.xx:6000/sdb1_"" with 1.0 weight got id 3 #rebalance root@swift-proxy01:/etc/swift# swift-ring-builder object.builder rebalance Reassigned 262144 (100.00%) partitions. Balance is now 0.00. #zone確認 #xx.xxx.xx.41がはずれ、45が追加されていることがわかる。 root@swift-proxy01:/etc/swift# swift-ring-builder object.builder object.builder, build version 6 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 Devices: id zone ip address port name weight partitions balance meta 1 2 xx.xxx.xx.43 6000 sdb1 1.00 262144 0.00 2 3 xx.xxx.xx.44 6000 sdb1 1.00 262144 0.00 3 1 xx.xxx.xx.45 6000 sdb1 1.00 262144 0.00 root@swift-proxy01:/etc/swift# #この時点ではrebalanceは動かないため、proxyサーバに、builderファイル、ringファイルを展開。container object accountにはringファイルを展開 #その後、swift-init all reload"で再読み込みすればrebalanceが開始される。
2012年11月9日金曜日
riak構築太郎
riakの構築手順だんお(*´ω`*)
#まずは準備
yum install gcc gcc-c++ glibc-devel make git glibc-devel make ncurses-devel openssl-devel autoconf
#kerlおとしてビルド
curl -O https://raw.github.com/spawngrid/kerl/master/kerl;chmod +x kerl
./kerl build R15B01 r15b01
#erlangインストール
wget http://erlang.org/download/otp_src_R15B01.tar.gz
tar zxvf otp_src_R15B01.tar.gz
cd otp_src_R15B01
./configure && make && sudo make install
#riak入れる
先に、elrangをPATHに通しとくこと
curl -O http://downloads.basho.com.s3-website-us-east-1.amazonaws.com/riak/1.2/1.2.1/riak-1.2.1.tar.gz
tar zxvf riak-1.2.1.tar.gz
cd riak-1.2.1
make rel
#設定ファイル
vim /opt/riak-1.2.1/rel/riak/etc/app.config
※protocol buffer使う場合
{pb_ip, "xxx.xxx.xxx.101" },
※httpのポート指定
{http, [ {"xxx.xxx.xxx.101", 8098 } ]},
※bitcask使う場合
{storage_backend, riak_kv_bitcask_backend},
#bitcaskの格納先変更
%% Bitcask Config
{bitcask, [
{data_root, "/data/riak/bitcask"}
]},
#vm.args編集
vim /opt/riak-1.2.1/rel/riak/etc/vm.args
-name riak@XXX.XXX.XXX.101
#bitcaskのデータ格納先をつくっておく。とりまxfsでマウント。
#option
/dev/sdb1 on /data type xfs (rw,noatime,nodiratime,nobarrier,logbufs=8)
cd /data
mkdir -p riak/ring
mkdir -p riak/bitcask
chown -R riak: riak/*
#起動
/opt/riak-1.2.1/rel/riak/bin/riak start
#いったんステータスみてみる
riak-admin member-status
Attempting to restart script through sudo -H -u riak
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 100.0% -- 'riak@xxx.xxx.xxx.101'
-------------------------------------------------------------------------------
Valid:1 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
#ほかの何台かのnodeをクラスタに組み込んでみる
./riak-admin cluster join riak@xxx.xxx.xxx.102
Success: staged join request for 'riak@xxx.xxx.xxx.102' to 'riak@xxx.xxx.xxx.101'
※なんか、同じサーバから複数の台数にjoinさせようとすると失敗するので注意
#clusterがどうなるかのチェック
./riak-admin cluster plan
=============================== Staged Changes ================================
Action Nodes(s)
-------------------------------------------------------------------------------
join 'riak@xxx.xxx.xxx.101'
join 'riak@xxx.xxx.xxx.102'
join 'riak@xxx.xxx.xxx.103'
join 'riak@xxx.xxx.xxx.104'
-------------------------------------------------------------------------------
NOTE: Applying these changes will result in 2 cluster transitions
###############################################################################
After cluster transition 1/2
###############################################################################
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 20.3% 25.0% 'riak@xxx.xxx.xxx.101'
valid 20.3% 25.0% 'riak@xxx.xxx.xxx.102'
valid 20.3% 25.0% 'riak@xxx.xxx.xxx.103'
valid 20.3% 25.0% 'riak@xxx.xxx.xxx.104'
-------------------------------------------------------------------------------
Valid:4 / Leaving:1 / Exiting:0 / Joining:0 / Down:0
Transfers resulting from cluster changes: 48 [5/4071]
3 transfers from 'riak@xxx.xxx.xxx.101' to 'riak@xxx.xxx.xxx.103'
3 transfers from 'riak@xxx.xxx.xxx.102' to 'riak@xxx.xxx.xxx.103'
3 transfers from 'riak@xxx.xxx.xxx.104' to 'riak@xxx.xxx.xxx.103'
3 transfers from 'riak@xxx.xxx.xxx.101' to 'riak@xxx.xxx.xxx.102'
3 transfers from 'riak@xxx.xxx.xxx.103' to 'riak@xxx.xxx.xxx.102'
3 transfers from 'riak@xxx.xxx.xxx.104' to 'riak@xxx.xxx.xxx.102'
3 transfers from 'riak@xxx.xxx.xxx.102' to 'riak@xxx.xxx.xxx.101'
3 transfers from 'riak@xxx.xxx.xxx.101' to 'riak@xxx.xxx.xxx.104'
3 transfers from 'riak@xxx.xxx.xxx.103' to 'riak@xxx.xxx.xxx.101'
3 transfers from 'riak@xxx.xxx.xxx.102' to 'riak@xxx.xxx.xxx.104'
3 transfers from 'riak@xxx.xxx.xxx.104' to 'riak@xxx.xxx.xxx.101'
3 transfers from 'riak@xxx.xxx.xxx.103' to 'riak@xxx.xxx.xxx.104'
###############################################################################
After cluster transition 2/2
###############################################################################
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 25.0% -- 'riak@xxx.xxx.xxx.101'
valid 25.0% -- 'riak@xxx.xxx.xxx.102'
valid 25.0% -- 'riak@xxx.xxx.xxx.103'
valid 25.0% -- 'riak@xxx.xxx.xxx.104'
-------------------------------------------------------------------------------
Valid:4 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
#clusterの状態をキメル
./riak-admin cluster commit
Cluster changes committed
#状態みてみる
#ゆくりリバランスされるみたい
./riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 39.1% 20.3% 'riak@xxx.xxx.xxx.101'
valid 40.6% 20.3% 'riak@xxx.xxx.xxx.102'
valid 7.8% 20.3% 'riak@xxx.xxx.xxx.103'
valid 6.3% 20.3% 'riak@xxx.xxx.xxx.104'
-------------------------------------------------------------------------------
Valid:5 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
./riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 25.0% -- 'riak@xxx.xxx.xxx.101'
valid 25.0% -- 'riak@xxx.xxx.xxx.102'
valid 25.0% -- 'riak@xxx.xxx.xxx.103'
valid 25.0% -- 'riak@xxx.xxx.xxx.104'
-------------------------------------------------------------------------------
Valid:5 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
#cluster外すときは
riak-admin cluster leave riak@xxx.xxx.xxx.101
#からのplan commitでいける
#bucketの作成
#細かいパラメータはまだしらべてるのでおまちを。
curl -i -H "Content-Type: application/json" http://xxx.xxx.xxx.101:8098/riak/yattarou
HTTP/1.1 200 OK
Vary: Accept-Encoding
Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Date: Fri, 09 Nov 2012 08:07:57 GMT
Content-Type: application/json
Content-Length: 426
{"props":{"name":"yattarou","allow_mult":false,"basic_quorum":false,"big_vclock":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"dw":"quorum","last_write_wins":false,"linkfun":{"mod":"riak_kv_wm_link_walker","fun":"mapreduce_linkfun"},"n_val":3,"notfound_ok":true,"old_vclock":86400,"postcommit":[],"pr":0,"precommit":[],"pw":0,"r":"quorum","rw":"quorum","small_vclock":50,"w":"quorum","young_vclock":20}}
#objectのup
curl -v -T test.jpg -X PUT -H "Content-Type: image/jpeg http://xxx.xxx.xxx.101/riak/test
いったんここまで。
2012年10月26日金曜日
Openstack Swift構築太郎
openstack swiftの構築手順。
OSはubuntu 10.04
swiftのverは1.7.0(folsum)
構成は、
LB配下にproxy:2
account:3
container:3
object:3
公式ドキュメント参考にして、計11台構成で作ってみたお
#まずはproxyサーバから。 #必要なモジュールの準備 apt-get install python-software-properties add-apt-repository ppa:swift-core/release apt-get update apt-get install curl gcc git-core memcached python-configobj python-coverage python-dev python-nose python-setuptools python-simplejson python-xattr sqlite3 xfsprogs python-webob python-eventlet python-greenlet python-pastedeploy python-netifaces #ユーザつくる /usr/sbin/groupadd -g XXXXX yatta_swift /usr/sbin/useradd -u XXXXX -g yatta_swift yatta_swift #ディレクトリつくる mkdir -p /etc/swift #hashの設定ファイルつくる cat >/etc/swift/swift.conf <ここから、container、account、objectの設定するお その前に、swiftの各node間の同期はrynscでやるんでproxyをのぞく各nodeで下記を設定> /etc/fstab mkdir -p /srv/node/sdb1 mount -a chown -R yatta_swift: /srv/* #recon用のディレクトリきっとく mkdir -p /var/cache/swift chown -R yatta_swift: /var/cache/swift/ #proxy serverの設定 2台ともやるお vim /etc/swift/proxy-server.conf [DEFAULT] #cert_file = /etc/swift/cert.crt #key_file = /etc/swift/cert.key bind_port = 8080 workers = 8 user = yatta_swift log_facility = LOG_LOCAL1 [pipeline:main] pipeline = healthcheck cache tempauth staticweb proxy-server [app:proxy-server] use = egg:swift#proxy allow_account_management = true account_autocreate = true [filter:tempauth] use = egg:swift#tempauth ##proxyのinternval vipを設定 user_system_root = testpass .admin https:XXX.XXX.XXX.XXX:8080/ reseller_prefix = /yatta_images/ user_test_tester = testing .admin user_test2_tester2 = testing2 .admin user_test_tester3 = testing3 [filter:healthcheck] use = egg:swift#healthcheck [filter:cache] use = egg:swift#memcache ##proxyserverのipを追加 memcache_servers = XXX.XXX.XXX.XXX:11211,XXX.XXX.XXX.XXX:11211 #静的配信もするので、staticwebモジュール追加 [filter:staticweb] use = egg:swift#staticweb #ログ周りの設定 vim /etc/rsyslog.d/10-swift.conf # Uncomment the following to have a log containing all logs together #local1.* /var/log/swift/all.log # Uncomment the following to have hourly proxy logs for stats processing #$template HourlyProxyLog,"/var/log/swift/hourly/%$YEAR%%$MONTH%%$DAY%%$HOUR%" #local1.*;local1.!notice ?HourlyProxyLog local1.*;local1.!notice /var/log/swift/proxy.log local1.notice /var/log/swift/proxy.error local1.* ~ vim /etc/rsyslog.conf $PrivDropToGroup adm mkdir -p /var/log/swift/hourly chown -R yatta_swift /var/log/swift chmod -R g+w /var/log/swift service rsyslog restart
vim /etc/rsyncd.conf uid = yatta_swift gid = yatta_swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = xxx.xxx.xx.xxx [account] max connections = 100 path = /srv/node/ read only = false lock file = /var/lock/account.lock #rysncの設定ファイル編集 vim /etc/default/rsync RSYNC_ENABLE=true #rsync再起動 /etc/init.d/rsync restart
#accountの設定の場合 ※各nodeでやる vim /etc/swift/account-server.conf [DEFAULT] #containerのip bind_ip = XXX.XXX.XXX.XXX workers = 100 log_facility = LOG_LOCAL1 mount_check = false disable_fallocate = true recon_cache_path = /var/cache/swift user = yatta_swift [pipeline:main] pipeline = recon account-server [app:account-server] use = egg:swift#account [filter:recon] use = egg:swift#recon [account-replicator] [account-auditor] [account-reaper] #containerの場合 vim /etc/swift/container-server.conf [DEFAULT] bind_ip = xxx.xxx.xxx.xxx mount_check = false disable_fallocate = true workers = 100 log_facility = LOG_LOCAL1 devices = /srv/node user = yatta_swift recon_cache_path = /var/cache/swift [pipeline:main] pipeline = recon container-server [app:container-server] use = egg:swift#container [container-replicator] [filter:recon] use = egg:swift#recon [container-updater] [container-auditor] [container-sync] #objectの場合 /etc/swift/object-server.conf [DEFAULT] bind_ip = xxx.xxx.xxx.xxx workers = 100 log_facility = LOG_LOCAL1 devices = /srv/node user = yatta_swift mount_check = false disable_fallocate = true recon_cache_path = /var/cache/swift [pipeline:main] pipeline = recon object-server [app:object-server] use = egg:swift#object [filter:recon] use = egg:swift#recon [object-replicator] [object-updater] [object-auditor]swift-clientいれとく
python-swiftclient-1.2.0.tar.gzを本家からDL tar zxvf python-swiftclient-1.2.0.tar.gz python setup.py installswift起動させてみる
#swift起動させる #proxyの場合 swift-init proxy start #container object accountの場合 #※ほんとは個別であげるべきだとおもうけど とりま。 swift-init all start #proxyでringファイル生成(複数ある場合は一台だけで) swift-ring-builder account.builder create 18 3 1 swift-ring-builder container.builder create 18 3 1 swift-ring-builder object.builder create 18 3 1 swift-ring-builder account.builder add z1-xxx.xxx.xxx.xxx:6002/sdb1 1 swift-ring-builder account.builder add z2-xxx.xxx.xxx.xxx:6002/sdb1 1 swift-ring-builder account.builder add z3-xxx.xxx.xxx.xxx:6002/sdb1 1 swift-ring-builder account.builder rebalance swift-ring-builder container.builder add z1-xxx.xxx.xxx.xxx:6001/sdb1 1 swift-ring-builder container.builder add z2-xxx.xxx.xxx.xxx:6001/sdb1 1 swift-ring-builder container.builder add z3-xxx.xxx.xxx.xxx:6001/sdb1 1 swift-ring-builder container.builder rebalance swift-ring-builder object.builder add z1-xxx.xxx.xxx.xxx:6000/sdb1 1 swift-ring-builder object.builder add z2-xxx.xxx.xxx.xxx:6000/sdb1 1 swift-ring-builder object.builder add z3-xxx.xxx.xxx.xxx:6000/sdb1 1 swift-ring-builder object.builder rebalance #builderファイルと*.ring.gzが生成されるので、builderは各proxyに*.ring.gzは全nodeの/etc/swift配下に。ちょっといじってみるお
#各nodeの状況確認@proxyで
#swift-ring-builder container.builder
container.builder, build version 6
262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance
The minimum number of hours before a partition can be reassigned is 1
Devices: id zone ip address port name weight partitions balance meta
0 1 xxx.xxx.xxx.xxx 6001 sdb1 1.00 262144 0.00
1 2 xxx.xxx.xxx.xxx 6001 sdb1 1.00 262144 0.00
3 3 xxx.xxx.xxx.xxx 6001 sdb1 1.00 262144 0.00
#nodeのadd remove rebalance
#node外す
swift-ring-builder object.builder remove z1-xxx.xxx.xxx.xxx/sdb1
#node入れる(重み代えるのもこれでできる)
swift-ring-builder object.builder add z1-xxx.xxx.xxx.xxx/sdb1 1
#reblance ちなみにrebalanceは一度やると一時間はできない ↑の設定だと。
swift-ring-builder object.builder
swift-ring-builder object.builder rebalance
Reassigned 262144 (100.00%) partitions. Balance is now 726.36.
-------------------------------------------------------------------------------
NOTE: Balance of 726.36 indicates you should push this
ring, wait at least 1 hours, and rebalance/repush.
-------------------------------------------------------------------------------
とりあえずいったんここまでで。
ほかにも結構いろいろ検証しているので、あとでのせます。
2012年6月12日火曜日
Megacli64でディスク交換太郎
Megacli64を使ったディスク交換の手順だお。
ちなみに今回は、Medium Errorがたくさんでてるディスクの予防交換。
OSはCent5.4
RAIDカードは、LSI Megaraid 9280 FW:12.12.0-0090
Megacli 8.02.16で。
ちなみに今回は、Medium Errorがたくさんでてるディスクの予防交換。
OSはCent5.4
RAIDカードは、LSI Megaraid 9280 FW:12.12.0-0090
Megacli 8.02.16で。
#まずはHDDの状態を確認。
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0
Enclosure Device ID: 252
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 0
Device Id: 16
WWN:
Sequence Number: 2
Media Error Count: 67 ← errorはいてる
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Online, Spun Up
Is Commissioned Spare : NO
Device Firmware Level: A5C0
Shield Counter: 0
Successful diagnostics completion on : N/A
SAS Address(0): 0x4433221100000000
Connected Port Number: 0(path0)
Inquiry Data: MN1220F32HYULDHitachi HDS723020BLA642 MN6OA5C0
・・・省略
#対象のディスクを確認(ランプ点灯)
/opt/MegaRAID/MegaCli/MegaCli64 -Pdlocate start physdrv[252:0] -a0
#対象のディスクを確認(ランプ消灯)
/opt/MegaRAID/MegaCli/MegaCli64 -Pdlocate stop physdrv[252:0] -a0
#対象ディスクのオフライン
/opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv[252:0] -a0
Adapter: 0: EnclId-252 SlotId-0 state changed to OffLine.
Exit Code: 0x00
#status確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0 | less
Adapter #0
Enclosure Device ID: 252
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 0
Device Id: 16
WWN:
Sequence Number: 3
Media Error Count: 67
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Offline ← offlineになってる。
・・・省略
#対象のディスクにmissing markつける
/opt/MegaRAID/MegaCli/MegaCli64 -PDMarkMissing -PhysDrv[252:0] -a0
EnclId-252 SlotId-0 is marked Missing.
Exit Code: 0x00
#missing markのついたdiskの確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDGetMissing -aALL
Adapter 0 - Missing Physical drives
No. Array Row Size Expected
0 0 0 1907200 MB
#削除前の準備
/opt/MegaRAID/MegaCli/MegaCli64 -PDPrpRmv -PhysDrv[252:0] -a0
Prepare for removal Success
Exit Code: 0x00
#ここでHDDを交換。
#Missing markの状態変更
/opt/MegaRAID/MegaCli/MegaCli64 -PDReplaceMissing -PhysDrv[252:0] -Array0 -row0 -a0
#Rebuildスタート
/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -Start -PhysDrv[252:0] -a0
#状態確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0 | less
^M
Adapter #0
Enclosure Device ID: 252
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 0
Device Id: 16
WWN:
Sequence Number: 12
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Rebuild ← rebuildのステータスになった
・・・省略
#Rebuildの状況確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -showprog -physdrv[252:0] -a0
Rebuild Progress on Device at Enclosure 252, Slot 0 Completed 4% in 11 Minutes.
Exit Code: 0x00
こんな感じでできる。
ただ、PDmarkMissingが対応していない場合があるので注意。
2012年4月12日木曜日
SPDY 構築太郎
やっと構築までこぎつけたので、一旦メモで。
SPDYとはGoogleが策定を進めている通信プロトコルらしく
HTTPよりはやいお!!ってことらしい。
gmail、googlecalenderとか、Twitterとかが実装しているらしい太郎。
なんかみたところ、通常のHTTPの50%近くの高速化を目標としているらしい。
今後の主流となること間違いないという予想太郎。
ただ、Firefox11系と、Choromeの最新版?でしか対応してないので
大規模サービスの画像配信とかで使うにはちょっと難しいのかな・・・
まあ、apacheのモジュール公開されてたんで構築してみた。
環境は、Ubuntu 11.04
すこし、確認したところ、まあまま早い感じがする。
検証結果は、あとでちゃんと載せます。
SPDYとはGoogleが策定を進めている通信プロトコルらしく
HTTPよりはやいお!!ってことらしい。
gmail、googlecalenderとか、Twitterとかが実装しているらしい太郎。
なんかみたところ、通常のHTTPの50%近くの高速化を目標としているらしい。
今後の主流となること間違いないという予想太郎。
ただ、Firefox11系と、Choromeの最新版?でしか対応してないので
大規模サービスの画像配信とかで使うにはちょっと難しいのかな・・・
まあ、apacheのモジュール公開されてたんで構築してみた。
環境は、Ubuntu 11.04
#まずは事前準備
apt-get install subversion curl g++ apache2 patch binutils julius make
#任意のディレクトリで
mkdir mod_spdy
mkdir temp
cd temp
#depot_tools持ってくる
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
#PATH通す
export PATH="$PATH":`pwd`/depot_tools
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/yattarou/temp/depot_tools
#SPDYのコード落としてくる ちなみにrootで実行してる
gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
Running depot tools as root is sad.
#失敗したw
#gclientソース見てみる
#base_dirんとこでうまくいってないっぽいので、パワープレイ。
#パス直書きにしてやったw
vim /home/yattarou/temp/depot_tools/gclient
#!/usr/bin/env bash
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
base_dir=$(dirname "$0")
"$base_dir"/update_depot_tools
PYTHONDONTWRITEBYTECODE=1 exec python "$base_dir/gclient.py" "$@"
#もっかいチャレンジ
/home/yattarou/temp/depot_tools/gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
Running depot tools as root is sad.
#失敗した
#update_depot_toolsのコードみる
#rootの権限チェック、コメントアウトした。
vim /home/yattarou/temp/depot_tools/update_depot_tools
#!/usr/bin/env bash
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This script will try to sync the bootstrap directories and then defer control.
if [ "$USER" == "root" ];
then
echo Running depot tools as root is sad.
exit
fi
#もっかいやってみる
/home/yattarou/temp/depot_tools/gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
#いけたぽいので
/home/udagawa/temp/depot_tools/gclient sync --force
1>________ running 'svn checkout http://mod-spdy.googlecode.com/svn/trunk/src /home/udagawa/mod_spdy/src --non-interactive --force --ignore-externals' in '/home/yattarou/mod_spdy'
・・・・
いっぱいおとしてくる。
26>Checked out revision 933.
Syncing projects: 96% (26/27), done.ols/gyp
________ running '/usr/bin/python src/build/gyp_chromium' in '/home/yattarou/mod_spdy'
Updating projects from gyp files...
#落としてきたら
cd src/
./build_modssl_with_npn.sh
#.soをコピー
cp -rp mod_ssl.so /usr/lib/apache2/modules/
a2enmod ssl
#おれおれ証明書作成
apt-get install ssl-cert
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /tmp/selfsigned.crt
mkdir /etc/apache2/ssl
mv /tmp/selfsigned.crt /etc/apache2/ssl/
#証明書の設定編集
vim /etc/apache2/sites-available/default-ssl
SSLCertificateFile /etc/apache2/ssl/selfsigned.crt
#コメントアウト
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
a2ensite default-ssl
#apache再起動
/etc/init.d/apache2 restart
#SPDYのBUILD
make BUILDTYPE=Release
・・・・
#いっぱいでる
cp out/Release/libmod_spdy.so /usr/lib/apache2/modules/mod_spdy.so
echo "LoadModule spdy_module /usr/lib/apache2/modules/mod_spdy.so" | tee /etc/apache2/mods-available/spdy.load
echo "SpdyEnabled on" | tee /etc/apache2/mods-available/spdy.conf
a2enmod spdy
Enabling module spdy.
Run '/etc/init.d/apache2 restart' to activate new configuration!
#apache再起動
/etc/init.d/apache2 restart
#これでおk
#下のでいろいろ見れる
chrome://net-internals/#spdy
#あと、SPDY用のベンチマークツール
#windowsで確認するとき、chrome.exe --enable-benchmarkingしないと起動しないので注意
http://dev.chromium.org/developers/design-documents/extensions/how-the-extension-system-works/chrome-benchmarking-extension
すこし、確認したところ、まあまま早い感じがする。
検証結果は、あとでちゃんと載せます。
登録:
投稿 (Atom)