ZFS なストレージサーバを構築した
FreeBSD 8.2-RELEASE amd64 で、ZFS なストレージサーバを構築しました。
もちろん ZFS root です。
ハードウェア構成
- Intel Core i3-2100T
- DDR3-1333 4GB x 2
- DH67CL
- WD2500BEVT
- WD20EARS x 3
プール構成
システム用のプールです。
ルートファイルシステムをどこまで細かく分割するのが良いのか、しばらく悩みました。
とりあえず、FreeBSD を sysinstall でインストールする際の、自動割り当てを参考にしました。
今後運用していく中で必要性が出てきたら、更に細かく分割したいと思います。
現在、ディスク 1 本でプールを構成していますが、後にミラー化する予定です。
# gpart show -l ada0
=> 34 488397101 ada0 GPT (233G)
34 128 1 (null) (64K)
162 16777216 2 swap0 (8.0G)
16777378 209715200 3 sys0 (100G)
226492578 261904557 - free - (125G)
# zpool status zroot
pool: zroot
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
gpt/sys0 ONLINE 0 0 0
errors: No known data errors
# zfs list -r zroot
NAME USED AVAIL REFER MOUNTPOINT
zroot 1.45G 96.5G 290M legacy
zroot/tmp 76K 96.5G 28K /tmp
zroot/usr 1.16G 96.5G 1.16G /usr
zroot/var 1.03M 96.5G 802K /var
ストレージ用のプールです。
WD20EARS (2TB) を 3 本で、raidz1 構成です。
4.0TB = 3.6TiB なのが、なんとも悲しい所です。
AFT (Advanced Format Technology) におけるアライメントのずれが起きないように、40 セクタ目から GPT パーティションを切っています。
# gpart show -l ada1 ada2 ada3
=> 34 3907029101 ada1 GPT (1.8T)
34 6 - free - (3.0K)
40 3907029095 1 hdd0 (1.8T)
=> 34 3907029101 ada2 GPT (1.8T)
34 6 - free - (3.0K)
40 3907029095 1 hdd1 (1.8T)
=> 34 3907029101 ada3 GPT (1.8T)
34 6 - free - (3.0K)
40 3907029095 1 hdd2 (1.8T)
# zpool status zpool0
pool: zpool0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool0 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
gpt/hdd0 ONLINE 0 0 0
gpt/hdd1 ONLINE 0 0 0
gpt/hdd2 ONLINE 0 0 0
errors: No known data errors
# zfs list -r zpool0
NAME USED AVAIL REFER MOUNTPOINT
zpool0 93.9K 3.56T 28.0K /zpool0
ちょっとした工夫点
HDD 本体に、GPT のラベル名と対応したシールを貼りました。
交換・増設時にディスクの順序が入れ替わってしまっても、特定が楽になります。