トップ > 興味のあること > コンピュータ > ハードウェア > パーソナルコンピュータ > 部品寄せ集め6号

更新情報

2020年5月23日 FIT e:HEV ETC 2.0取り付け
2020年5月17日 CRF250L遠乗り
2020年5月16日 楽天モバイル
2020年5月16日 エンジンオイル
2020年5月15日 CRF250Lクラッチレバー交換
2020年5月10日 楽曲データソート
2020年5月9日 FIT e:HEV 1ヶ月点検
2020年5月6日 楽曲データ変換
2020年4月29日 FIT e:HEVタイヤ交換
2020年4月26日 FIT e:HEV給油
モッピー!お金がたまるポイントサイト
日々の生活にhappyをプラスする|ハピタス

2009年の部品寄せ集め6号

2009年2月15日

Xビデオステーションに入っていた250GB SATA HD×2と、 xw6400に入っていた320GB SATA HDでZFSなファイルサーバーを作るべく復活。

  1. ケースファンを消音タイプに交換(1297円×2)。 CPUクーラーが騒音源であることが判明。
  2. バッファローのLGY-PCI-GT(1770円)と、 玄人志向のSATA4P-PCI(2970円)を追加。 GBitのスイッチングハブが一杯になってしまった。
  3. 7台入っていたハードディスクを外して、 Seagate ST3120022A 8.54だけをブートドライブとして流用。 ATA電源コネクタからSATA電源コネクタへの変換ケーブルを用意したが、 手持ちのHDは全てATA電源コネクタも持っていた。
  4. FreeBSD 7.1をインストール。IPv6を有効にしてみた。 ping6 localhostでちゃんと返事が来る。
  5. /etc/make.confでCPUTYPE=pentium3とWITHOUT_X11=yesを追加。
  6. /etc/ssh/sshd_configで待ち受けポート番号を変更。
  7. ifconfig re0 mtu 7422 でジャンボフレームに対応?
  8. portsnapでportsをアップデート。6.1とは結構画面表示が違う。
  9. bashをインストール。
  10. kernel再コンパイル。 もう大抵のドライバ類はダイナミックにロードするようになっているらしく、 ほとんどkernlのサイズは変わらなかった。
  11. portupgradeインストール。
  12. /etc/rc.confにzfs_enable="YES"を追加。
  13. /etc/rc.d/zfs startを実行。
  14. zpool create raid0 raidz ad6 ad8 ad10 でストレージプールを作成。 labelもfdiskも不要。楽ちん。
  15. zfs create raid0/public でファイルシステム作成。
  16. sambaをインストール。

2009年2月18日

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
          

なんかえらく簡単である。 本当にこれでいいんだろうか。

2009年2月24日

弟がワークマシンの中身を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)
          

だった。 新しくて大きなほうが少しだけ早い。

2009年2月26日

結局使い古しの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%くらいまでに落ち込むことがあるようだ。

2009年2月28日

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のファイルを一つ置いただけだと、 あっという間に同期を取ってくれる。

2009年5月7日

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組になるんだよなあ。

2009年8月11日

そろそろ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 も書き換えないとダメかも。

2009年8月24日

なんだかんだとfirewallの設定を変えてみたが、 fireflyが再生途中で見えなくなるので断念。