ようこそゲストさん

無能日記

メッセージ欄

分類 【R&D(storage)】 で検索

一覧で表示する

2008/07/26(土) zfsでraid

はてブ 2008/07/26 28:42 R&D(storage)poti
証拠にもなく、1Tストレージの続き

比較的コンパクトで静音なPCでraid6スペア付きをそれなりに安いコストでやってみる。

RAID6ができるRAIDカードを真面目に買うと高すぎるそこで、
RAID6相当のことができるFreeBSDのzfsを使ってRAID6スペア付きをやってみる。
購入リスト
-----------------------------------------------
  - 裸族のマンション         4000円      4000円
  - 裸族の頭                 3000円 x 5 15000円
  - 500G HDD SATA            9000円 x 5 45000円 - ZFSシステム用
  - 160G HDD STAT            5000円      5000円 - FreeBSDシステム用
  - power silentist S-450EB  9000円      9000円 
  - D945GCLF                10000円     10000円
  - メモリ DDR2 667 2G       5000円      5000円 - ZFS使うなら2Gあったほうがよさげ
  - mini-box M300           12000円     12000円
  - mini-box picoPSU-120     9000円      9000円
  - ACアダプタ               2000円      2000円
  - PCI LANカード or USB LAN 2000円?     2000円
-----------------------------------------------
                                       118000円
大体の概算なので、安いものを選べもう少し安くつく。
MINI-ITXのケースにM300を使っているが、Raid6をするだけなら
前面にUSBがあるようなものならなんでもいい。
全然もっと安いものがあるはず。

組み立てフェーズ
  • 1, 裸族マンションにZFS用HDDを全部差して裸族の頭をくっつける。
  • 2, 裸族のマンションの上にS-450EBをのっけて電源ケーブルを差す。
  • 3, M-300にD945GCLを取り付ける。
  • 4, M-300にpicoPSU-120を取り付ける。
  • 5, D945GCLにメモリをさす。
  • 6, HDDを取り付ける
  • 7, PCIにLANカードを取り付ける
  • 8, まだふたはしめない
  • 9, 裸族の頭から生えたUSBをおもむろにさす

FreeBSDインストールフェーズ
  • 1 FreeBSD 7-RELEASE以上をインストールする。ネットワークインストールのときはPCIにさしたLANカードを使う
  • 2 cvsupでstable環境にする。kernel,userlandの更新(約5時間かかる)
  • 3 PCIに差したLANを抜いてふたを閉める
  • 4 普通に起動すればOK
ZFS設定フェーズ
  • 1 どのHDDがdaXとになっているかチェックしてメモする
  • 2 /boot/loader.confに以下を書く
   vm.kmem_size=671088640
   vm.kmem_size_max=671088640
  • 3 zfs_enable="YES"をrc.confに書いて/etc/rc.d/zfs start
  • 4 zpool create storage raidz2 da0 da1 da2 da3 spare da4 とかしてpoolを作る
  • 5 あとは /storageにいろいろ放り込むだけ

どのくらい安定して動くかは継続検証中

2008/06/22(日) FreeBSD current PR

はてブ 2008/06/22 21:19 R&D(storage)poti
以下のPRと同じ現象が発生してる。
kern/123392: [vfs] [lor] lock order reversal in vfs

2008/05/04(日) 1Tストレージ

はてブ 2008/05/04 26:21 R&D(storage)poti
友達からもらった不要のPCと余ったパーツでくみ上げたPCの使い道を考えていた。
スペックはというと
CPU:    pentium4 3.0G
memory: 1G
HDD:    120G SATA seagate, 500G IDE WD
NIC:    realtek 100, realtek 1000 (8169)
これで送料分の1700円しかかっていない。(てか着払いって!)

なんとなくネットワーク経由でアクセスできるストレージサーバーにすることにした。
せっかくなので、ZFSでHDDいっぱいくっつけて遊ぶことにした。
裸族のマンション x 1購入
裸族の頭 x 4購入
WDのHDD 500G x 4購入
この時点で 42000円消費。。。買いすぎた

買っちゃったので後には引けない。
すでにOSはFreeBSD currentをインストール済みだったので、設置してZFSの設定をしようとすると
kernel: (da0:umass-sim0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0 
kernel: (da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error 
kernel: (da0:umass-sim0:0:0:0): SCSI Status: Check Condition 
kernel: (da0:umass-sim0:0:0:0): ILLEGAL REQUEST asc:20,0 
kernel: (da0:umass-sim0:0:0:0): Invalid command operation code 
....
と激しく起こられる、とりあえずgoogle先生にきいてみると類似のお話を発見。
http://www.nabble.com/write-cache-on-usb-disks-and-zfs-td15924198.html
というわけで、パッチを作成
--- scsi_da.c.orig      2008-05-05 02:00:52.000000000 +0900
+++ scsi_da.c   2008-05-05 02:01:30.000000000 +0900
@@ -538,6 +538,10 @@
        {
                {T_DIRECT, SIP_MEDIA_REMOVABLE, "Netac", "OnlyDisk*",
                 "2000"}, /*quirks*/ DA_Q_NO_SYNC_CACHE
+       },
+       {
+               {T_DIRECT, SIP_MEDIA_FIXED, "WDC WD50", "*", "*"},
+               /*quirks*/ DA_Q_NO_SYNC_CACHE
        }
 };
これでカーネルをインストールして試すと、起こられなくなってとりあえずは動いてる模様。

zpoolで状態を確認
# zpool status storage
  pool: storage
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        storage     ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            da0     ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0
            da3     ONLINE       0     0     0
        spares
          ad0       AVAIL

errors: No known data errors

raid6 spare尽き相当

続いて容量を確認
# df -h
Filesystem      Size    Used   Avail Capacity  Mounted on
/dev/ad4s1a     989M    289M    621M    32%    /
devfs           1.0K    1.0K      0B   100%    /dev
/dev/ad4s1d     9.7G     12K    8.9G     0%    /tmp
/dev/ad4s1e      39G    3.9G     32G    11%    /usr
/dev/ad4s1f      60G     52M     55G     0%    /var
storage         913G      0B    913G     0%    /storage
storage/home    913G    128K    913G     0%    /storage/home
storage/ns      913G     22M    913G     0%    /storage/ns
大体1Tです。
でもUSB接続なので、
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <WDC WD50 00AACS-00ZUB0 1B01> Fixed Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
読み書きは遅そう、まぁこの上で何か作業するわけでもないし、ネットワーク経由だとどうせフレッツである程度絞られるだろうからいいか。
あと、ZFS使うとkmem_sizeを512M以上にしろとか言われたので、/boot/loader.confに以下を追加
vm.kmem_size=671088640
vm.kmem_size_max=671088640
640Mにしてみた。これするとWARNINGはきえた。
なんか、メモリも足したくなってきたので1Gのメモリを2枚購入
FDC 1G DDR-400 x 2
9600円消費

そして、最終的なスペックは
CPU:    pentium4 3.0G
memory: 2G
HDD:    120G SATA seagate, 500G IDE WD, WD 500G SATA (usb converter) x 4
NIC:    realtek 100, realtek 1000 (8169)
となり、結局53300円かかってしまった。
そして、自分の作業時間 丸1日

とりあえず、DAVの設定はしてwindowsからアクセスできるようにはしたけど、
元をとるにはどうすればいいだろう。。。。

余談ですが、実は余りパーツでもう一台作れたのでつくってみた。
CPU:    semprom 2600+
memory: 1G
HDD:    40G IDE maxtor
NIC:    realtek 100, realtek 1000 (8169)
こちらは、余ったノートPCと余った無線ルータと一緒に実家に郵送した。
余りもので親孝行しつつ、いらないものは減らすソリューション。

ついでにどなたか、ATXケースが余ってたら貸してください。もう一台作れそうです。
中身を入れて返します。