2024年11月18日 | EOS R7ファームウエアアップデート |
2024年11月17日 | PX-M730Fのシアンインク交換 |
2024年11月4日 | 360度モニタ不調 |
2024年11月2日 | ノート給油 |
2024年10月19日 | 腕時計のファームウエア |
2024年10月5日 | RF-S 10-18mm F4.5-6.3 IS STM購入 |
2024年10月3日 | 三菱UFJニコスカード到着 |
2024年9月28日 | 三菱UFJニコスカード申込 |
2024年9月23日 | 第10世代iPad購入 |
2024年9月17日 | iPadOS 18 |
zfsで作った2TBの共有ストレージが残り300GBくらいになってきたので、 1.5TBのハードディスクを3台追加することにした。 1台単位で追加できればいいのだが、 raidz構成ではそれができないのだ。 なので、 もう一組raidzの組を作ってpoolに追加する形をとらざるを得ない。 モノはWestern DigitalのWD15EAR。 最近では珍しく5400r.p.m.で、どうやら省電力指向らしい。 1台9880円也。
手元にあったPCIバスのSATAインターフェイスを再利用したら、 なんと認識されない。 FreeBSD 8なら、デバイスファイルは自動的に作られるはずだし……。 ありがちな対応として、 差し込むスロットを変えてみた。 これがビンゴで、無事認識。 しかし、
root@jupiter# atacontrol list ATA channel 0: Master: ad0 <ST3120022A/8.54> ATA/ATAPI revision 6 Slave: acd0 <HITACHI DVD-ROM GD-7000/0017> ATA/ATAPI revision 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <ST31000333AS/CC1H> Serial ATA II Slave: ad5 <ST31000333AS/CC1H> Serial ATA II ATA channel 3: Master: ad6 <ST31000333AS/CC1H> Serial ATA II Slave: no device present
だったのだが、
root@jupiter# atacontrol list ATA channel 0: Master: ad0 <ST3120022A/8.54> ATA/ATAPI revision 6 Slave: acd0 <HITACHI DVD-ROM GD-7000/0017> ATA/ATAPI revision 0 ATA channel 2: Master: ad4 <WDC WD15EARS-00Z5B1/80.00A80> SATA revision 2.x Slave: no device present ATA channel 3: Master: ad6 <WDC WD15EARS-00Z5B1/80.00A80> SATA revision 2.x Slave: no device present ATA channel 4: Master: ad8 <WDC WD15EARS-00Z5B1/80.00A80> SATA revision 2.x Slave: no device present ATA channel 5: Master: no device present Slave: no device present ATA channel 6: Master: ad12 <ST31000333AS/CC1H> SATA revision 2.x Slave: ad13 <ST31000333AS/CC1H> SATA revision 2.x ATA channel 7: Master: ad14 <ST31000333AS/CC1H> SATA revision 2.x Slave: no device present
になってしまった。 ad4 -> ad12、ad5 -> ad13、ad6 -> ad14になり、 新しく増やした分がad4、ad6、ad8というわけだ。 で、ad4とad6とad8がboundryから始まっていない、 みたいなエラーでzfsが止まってしまう。 どうしたものかと思っていたが、 とりあえずad6を抜いてみたらうまいこと認識してくれて
root@jupiter# zpool status pool: pool state: ONLINE status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: http://www.sun.com/msg/ZFS-8000-4J scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 UNAVAIL 0 537 0 corrupted data ad13 ONLINE 0 0 0 ad14 ONLINE 0 0 0 errors: No known data errors
となった。 指示に従って、zpool replaceを実行する。
root@jupiter# zpool replace pool ad4 root@jupiter# zpool status pool: pool state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress for 0h0m, 0.00% done, 7350h56m to go config: NAME STATE READ WRITE CKSUM pool DEGRADED 0 0 0 raidz1 DEGRADED 0 0 0 replacing DEGRADED 0 0 0 ad12 UNAVAIL 0 1.05K 0 corrupted data ad4 ONLINE 0 0 0 719K resilvered ad13 ONLINE 0 0 0 476K resilvered ad14 ONLINE 0 0 0 480K resilvered errors: No known data errors
zpool iostatで追いかけると一生懸命書き換えているのだが、 kernelレベルで処理しているせいか、topには全然出てこない。 30分かけて2.81%処理が終了し、残り予想時間が17時間32分。 うーん、3台すべて入れ替えるとなると、土日では終わらないな。 たださすがにRAIDZだけあって、 この状態でもファイルの読み書きは可能だ。
承前。 結局14時間20分かけてリビルドが終わった。
root@jupiter# zpool status pool: pool state: ONLINE scrub: resilver completed after 14h20m with 0 errors on Sun Jan 31 08:57:43 2010 config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 751G resilvered ad13 ONLINE 0 0 0 327M resilvered ad14 ONLINE 0 0 0 327M resilvered errors: No known data errors
外しておいたad6をつなげて、zpool replaceを実行。
root@jupiter# zpool replace pool ad13 ad6 root@jupiter# zpool status pool: pool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress for 0h0m, 0.00% done, 6387h11m to go config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 936K resilvered replacing ONLINE 0 0 0 ad13 ONLINE 0 0 0 ad6 ONLINE 0 0 0 1.38M resilvered ad14 ONLINE 0 0 0 977K resilvered errors: No known data errors
6387時間とはまたすごい数字。 結局のところ、
root@jupiter# zpool status pool: pool state: ONLINE scrub: resilver completed after 12h20m with 0 errors on Mon Feb 1 00:12:10 2010 config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 318M resilvered ad6 ONLINE 0 0 0 751G resilvered ad14 ONLINE 0 0 0 318M resilvered errors: No known data errors
と今度は12時間20分で終了した。 続けて最後の3台目をリプレイスする。
root@jupiter# zpool replace pool ad14 ad8 root@jupiter# zpool status pool: pool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress for 0h0m, 0.00% done, 5473h31m to go config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 498K resilvered ad6 ONLINE 0 0 0 498K resilvered replacing ONLINE 0 0 0 ad14 ONLINE 0 0 0 ad8 ONLINE 0 0 0 746K resilvered errors: No known data errors
今度は14時間かかった。
jupiter# exec bash root@jupiter# zpool status pool: pool state: ONLINE scrub: resilver completed after 14h8m with 0 errors on Mon Feb 1 14:23:28 2010 config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 317M resilvered ad6 ONLINE 0 0 0 317M resilvered ad8 ONLINE 0 0 0 751G resilvered errors: No known data errors
1TBのハードディスクを1.5TBのハードディスクに置き換えたのに、 全然容量が増えていない。
root@jupiter# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool 2.73T 2.20T 540G 80% ONLINE - root@jupiter# df -hi Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/ad0s1a 496M 254M 203M 56% 1.8k 64k 3% / devfs 1.0K 1.0K 0B 100% 0 0 100% /dev /dev/ad0s1e 3.9G 36K 3.6G 0% 13 542k 0% /tmp /dev/ad0s1f 96G 5.1G 83G 6% 208k 13M 2% /usr /dev/ad0s1d 4.1G 1.3G 2.4G 36% 76k 489k 14% /var pool 330G 0B 330G 0% 5 2.7M 0% /pool pool/public 1.8T 1.5T 330G 82% 40k 2.7M 1% /pool/public
で、お約束のexport、importを実行。
root@jupiter# zpool export pool root@jupiter# zpool import pool root@jupiter# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool 4.09T 2.20T 1.89T 53% ONLINE - root@jupiter# df -hi Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/ad0s1a 496M 254M 203M 56% 1.8k 64k 3% / devfs 1.0K 1.0K 0B 100% 0 0 100% /dev /dev/ad0s1e 3.9G 36K 3.6G 0% 13 542k 0% /tmp /dev/ad0s1f 96G 5.1G 83G 6% 208k 13M 2% /usr /dev/ad0s1d 4.1G 1.3G 2.4G 36% 76k 489k 14% /var pool 1.2T 0B 1.2T 0% 5 10M 0% /pool pool/public 2.7T 1.5T 1.2T 55% 40k 10M 0% /pool/public
とまあ無事増えた。 さらに今まで使っていた1TBのハードディスクを追加して、 4TB超えのRAIDストレージができあがり。
root@jupiter# zpool add pool raidz ad12 ad13 ad14 root@jupiter# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool 6.80T 2.20T 4.61T 32% ONLINE - root@jupiter# df -hi Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/ad0s1a 496M 254M 203M 56% 1.8k 64k 3% / devfs 1.0K 1.0K 0B 100% 0 0 100% /dev /dev/ad0s1e 3.9G 36K 3.6G 0% 13 542k 0% /tmp /dev/ad0s1f 96G 5.1G 83G 6% 208k 13M 2% /usr /dev/ad0s1d 4.1G 1.4G 2.4G 36% 76k 489k 14% /var pool 3.0T 0B 3.0T 0% 5 25M 0% /pool pool/public 4.5T 1.5T 3.0T 33% 40k 25M 0% /pool/public
しかしこれ、バックアップどーしよう。
珍しく通信が途絶したと思ったら、kernel panicだった。 ハードの故障ではなくて一安心。
ここのところ、「kmemが足りない」といってkernelが落ちる。 メモリ3.6GBあって足りないということはないだろうと思ったが、 よく見ると電源が450Wしかない。 これでハードディスク7台の駆動は辛かろう。 ということで電源強化のついでにケースも新調した。 ホットスワップなベイが4つに、 横方向に抜き差しするシャドウベイが4つというケース。 電源は別売りなので、玄人志向の600Wもの(KRPW-V2-600W)にした。 電源ユニットからの排気温度がはっきりわかるぐらいに低くなっているのにびっくり。
ついでに、 ブート用のハードディスクも120GBのATAから80GBのSATAに変えて、 OSを再インストールした。 が、これが外れだったらしく、 bashをコンパイルしている間にwrite errorを頻発する。 少し様子を見て、ダメだったら新調するか……。
ハードディスクの接続先を変えたら、 嘘のようにwrite errorが出なくなった。 で、4GB載せたメモリを3GBくらい使えるようで、 何も指定しないとvm.kmem_size: 1123835904だった。 とりあえず、/boot/loader.conf でvfs.zfs.arc_max="512M"、 /etc/sysctl.conf でkern.maxvnodes=400000として様子を見てみよう。
jupiter# atacontrol list ATA channel 0: Master: acd0 <HITACHI DVD-ROM GD-7000/0017> ATA/ATAPI revision 0 Slave: no device present ATA channel 2: Master: ad4 <SAMSUNG HD080HJ/P/ZH100-51> SATA revision 2.x Slave: no device present ATA channel 3: Master: ad6 <ST31000333AS/CC1H> SATA revision 2.x Slave: no device present ATA channel 4: Master: ad8 <ST31000333AS/CC1H> SATA revision 2.x Slave: no device present ATA channel 5: Master: ad10 <ST31000333AS/CC1H> SATA revision 2.x Slave: no device present ATA channel 6: Master: ad12 <WDC WD15EARS-00Z5B1/80.00A80> SATA revision 2.x Slave: ad13 <WDC WD15EARS-00Z5B1/80.00A80> SATA revision 2.x ATA channel 7: Master: ad14 <WDC WD15EARS-00Z5B1/80.00A80> SATA revision 2.x Slave: no device present
パラメータを変更して、OSが落ちないかどうかモニタしてみた。 いまのところだいじょうぶそうだが、 smaba経由でraidzなZFSに連続して書き込むとload averagesが9を超えた。 今となってはなかなか見ない数字である。 同じZFSでも読み出しだったり、UFSなら読み書きしても1を超えない。
今のところ、/boot/loader.confに
vm.kmem_size_max="1400M" vm.kmem_size="1400M" vfs.zfs.arc_max="500M"
としている。 これだと300MBくらいのファイルを、 2~3時間にわたって書き込んでも落ちないようだ。