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 |
Xビデオステーションに入っていた250GB SATA HD×2と、 xw6400に入っていた320GB SATA HDでZFSなファイルサーバーを作るべく復活。
zfsのraidzを試してみる。 まずは最初の状態。
root@jupiter$ zpool status pool: raid0 state: ONLINE scrub: resilver completed with 0 errors on Wed Feb 18 21:21:14 2009 config: NAME STATE READ WRITE CKSUM raid0 ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 ad6 ONLINE 0 0 0 ad8 ONLINE 0 0 0 errors: No known data errors root@jupiter$ ls CHAOSHEAD1 CLANNAD23 GUNDAM00-1 ef01 CLANNAD21 CarCD1 GUNDAM00-2
ひとつオフラインにしてみる
root@jupiter$ zpool offline raid0 ad8 Bringing device ad8 offline root@jupiter$ zpool status pool: raid0 state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: resilver completed with 0 errors on Wed Feb 18 21:21:14 2009 config: NAME STATE READ WRITE CKSUM raid0 DEGRADED 0 0 0 raidz1 DEGRADED 0 0 0 ad4 ONLINE 0 0 0 ad6 ONLINE 0 0 0 ad8 OFFLINE 0 0 0 errors: No known data errors root@jupiter$ ls CHAOSHEAD1 CLANNAD23 GUNDAM00-1 ef01 CLANNAD21 CarCD1 GUNDAM00-2
この状態でも普通に読み書きできる。 ddでオフラインにしたad8の先頭をゼロクリヤして、 samba経由でmpeg-2ファイルを書き込んでみた。
root@jupiter$ dd if=/dev/zero of=/dev/ad8 count=65536 65536+0 records in 65536+0 records out 33554432 bytes transferred in 12.940815 secs (2592915 bytes/sec) root@jupiter$ ls CHAOSHEAD1 CLANNAD21 CLANNAD23 CarCD1 GUNDAM00-1 GUNDAM00-2 ef01 源氏物語千年紀 Genji藤壺-20090206-0045.mpg
ここでad8をオンラインにすると、 38秒ほどで同期を取ってくれた。
root@jupiter$ time zpool online raid0 ad8 Bringing device ad8 online real 0m38.549s user 0m0.008s sys 0m0.030s root@jupiter$ zpool status pool: raid0 state: ONLINE scrub: resilver completed with 0 errors on Wed Feb 18 21:30:06 2009 config: NAME STATE READ WRITE CKSUM raid0 ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 ad6 ONLINE 0 0 0 ad8 ONLINE 0 0 0 errors: No known data errors
なんかえらく簡単である。 本当にこれでいいんだろうか。
弟がワークマシンの中身をCore2 Quadに入れ替えたので、 今まで使っていたマザーボードとCPUと電源ユニットが余った。 モノはGIGABYTEのGA-8I945G。 型番からもわかるように、インテル945GにICH7を組み合わせている。 CPUはたぶんPentium D 920。 そのまま流用してみた。 サーバーとして使うなら、とりあえず追加のボードはいらない。 なんだか、ケースの中がスカスカである。 今までの苦労は何だったのか。
メモリの上限が4GBで、ブート時には3.3GBくらいしか認識していない。 でもまあ64ビット拡張をサポートしているので、 amd64版のFreeBSD 7.1をインストール。 zfsでraidzなpoolを作って、 そこに作ったpublicなファイルシステムをsambaで共有する。 試してみると書き込みが妙に遅いし、エラーが起きる。 と思ったら、盛大にwrite errorが発生していた。 Xビデオステーションで3年近く酷使しているハードディスクの流用だからなあ。 既に4台中2台が壊れているわけだし。
試しにddで丸ごとリードと丸ごとライトを行ってみたら、
Feb 24 14:28:26 jupiter kernel: ad5: WARNING - WRITE_DMA UDMA ICRC error (retrying request) LBA=70629760 Feb 24 18:01:13 jupiter kernel: ad6: TIMEOUT - WRITE_DMA retrying (1 retry left) LBA=31923456 Feb 24 18:05:54 jupiter kernel: ad6: WARNING - WRITE_DMA UDMA ICRC error (retrying request) LBA=65478272
なんて状態である。やはり捨てた方が良さそうだ。
しかしddを実行している最中でもidleが90%以上、 クロックも最低の349MHzになっている。 DMAでCPUの介在無しにI/Oが動いているんだなあ。
参考までに全セクタを読み出して/dev/nullにコピーすると、
Hitachi HDT725032VLA360/V54OA52A 320072933376 bytes transferred in 5397.443508 secs (59300840 bytes/sec) WDC WD2500JS-98MHB0/02.01C03 250059350016 bytes transferred in 4841.182208 secs (51652538 bytes/sec)
だった。 新しくて大きなほうが少しだけ早い。
結局使い古しのWD2500JS-98MHB0/02.01C03はダメダメなので、 ST31000333AS/CC1Hを三つ購入。 合計金額2万2139円也。 さすがにATAな電源コネクタはついておらず、 SATAな電源コネクタオンリーだ。 先日購入してきた、電源コネクタ変換ケーブルが役に立ちそう。 とりあえず1台ずつddで読み書きテストを始めた。 あれ、1台だけ接続したらad2になった。 HDT725032VLA360、WD2500JS-98MHB0×2の時はad4、ad5、ad6だったのに。
最初の1台を見た限りでは書き込みが
1000204886016 bytes transferred in 10509.500341 secs (95171498 bytes/sec)
なので、倍くらい速くなっている。 その分dd中のCPU idleも80%くらいまでに落ち込むことがあるようだ。
3台とも無事読み書きテストをパス。 ざっくり測定してみた。
ファイルシステム | 書き込み速度 |
---|---|
dd | 95171KB/s |
UFS2 + dd | 35414KB/s |
UFS2 + samba | 26383KB/s |
zpool + samba | 27460KB/s |
raidz + samba | 24028KB/s |
やはりファイルシステムを経由するとガクンと速度が落ちる。 まあいろいろ管理のオーバーヘッドがあるからしかたないのだが。 sambaで使うなら、raidzでもそれほど遅くはないようだ。
UFSとzpoolの時は似たようなネットワーク負荷だが、 raidzの時は落ち込みが激しい。 パリティを計算するためかもしれない。
ちょうどいい機会なので、 実際にraidzを構成するハードディスクを入れ替えてみた。
root@jupiter# zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 ad5 ONLINE 0 0 0 ad6 ONLINE 0 0 0 errors: No known data errors root@jupiter# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool 888G 1.88G 886G 0% ONLINE - 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 <Hitachi HDT725032VLA360/V54OA52A> Serial ATA II ATA channel 3: Master: ad6 <ST31000333AS/CC1H> Serial ATA II Slave: no device present root@jupiter# zpool offline pool ad5 Bringing device ad5 offline root@jupiter# zpool status pool: pool state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: none requested config: NAME STATE READ WRITE CKSUM pool DEGRADED 0 0 0 raidz1 DEGRADED 0 0 0 ad4 ONLINE 0 0 0 ad5 OFFLINE 0 0 0 ad6 ONLINE 0 0 0 errors: No known data errors
ここで電源を切ってハードディスクを入れ替え。
root@jupiter# zpool replace pool ad5 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, 17.46% done, 0h0m to go config: NAME STATE READ WRITE CKSUM pool DEGRADED 0 0 0 raidz1 DEGRADED 0 0 0 ad4 ONLINE 0 0 0 replacing DEGRADED 0 0 0 ad5/old UNAVAIL 0 0 0 cannot open ad5 ONLINE 0 0 0 ad6 ONLINE 0 0 0 errors: No known data errors root@jupiter# zpool status pool: pool state: ONLINE scrub: resilver completed with 0 errors on Sat Feb 28 02:08:08 2009 config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad4 ONLINE 0 0 0 ad5 ONLINE 0 0 0 ad6 ONLINE 0 0 0 errors: No known data errors
1.25GBのファイルを一つ置いただけだと、 あっという間に同期を取ってくれる。
2TBあれば結構使いでもあるだろう、と思っていたのだが。 私がもろもろコピーして500GBくらい。 で、弟が録り貯めたビデオデータを追加したら合計で1.2TBに。
root@jupiter# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool 2.73T 1.79T 963G 65% ONLINE - root@jupiter# df -hi Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/ad0s1a 496M 215M 241M 47% 1649 64141 3% / devfs 1.0K 1.0K 0B 100% 0 0 100% /dev /dev/ad0s1e 3.9G 30K 3.6G 0% 12 541682 0% /tmp /dev/ad0s1f 96G 2.4G 86G 3% 217310 12806944 2% /usr /dev/ad0s1d 4.1G 249M 3.5G 6% 21120 544126 4% /var pool 612G 0B 612G 0% 6 5013576 0% /pool pool/public 1.8T 1.2T 612G 67% 31673 5013576 1% /pool/public pool/cg 613G 1.2G 612G 0% 7998 5013576 0% /pool/cg
私はSDなmpeg-2とかmpeg-4がほとんどなのに、 弟はDVだったり、HDだったりするからやたらと容量を喰うのだ。 既に67%使っていることになるんだが、どうしよう。 raidzを使っているので、 増設するとしたら3台1組になるんだよなあ。
そろそろmercuryを退役させて、 jupiterに入れ替えようかと考えた。 で、firewallを設定しようとしたらずいぶん変わっている。 typeをworkstationにしてsshとdnsを外からアクセスできるようにすればいいのか? /etc/rc.confに
firewall_allowservices="any" firewall_enable="YES" firewall_type="workstation" firewall_myservices="1022" firewall_trusted="192.168.x.x/24"
とか書いてみる。 DNSはudpも必要なので、/etc/rc.firewall も書き換えないとダメかも。
なんだかんだとfirewallの設定を変えてみたが、 fireflyが再生途中で見えなくなるので断念。