文書の過去の版を表示しています。


ZFSでRAID10ボリュームの作成とペア追加

考え方としては、「mirror RAID1の構成デバイスa RAID1の構成デバイスb RAID1の構成デバイスc …」で出来るRAID 1のvdevを並べてストライピングとする。

zpool create プール名 \
  mirror  RAID1ペア1のデバイス1  RAID1ペア1のデバイス2  ...  RAID1ペア1のデバイスn \
  mirror  RAID1ペア2のデバイス1  RAID1ペア2のデバイス2  ...  RAID1ペア2のデバイスn \
  ... \
  mirror  RAID1ペアmのデバイス1  RAID1ペアmのデバイス2  ...  RAID1ペアmのデバイスn  
  • zpool add プール名 mirror RAID1ペアのデバイス1 RAID1ペアのデバイス2
  • NAS4Free 11.0.0.4
  • 4TB HDD × 6本
    • 2本1組のRAID1を3ユニット束ねてRAID10とする

こんな感じ↓で4TBのHDDが6本ある。途中でデバイス番号(adaX)が飛んでるのは、2台に重ねた4本収納のホットスワップケースに対し、HDDをそれぞれ3本ずつ挿したから。上下のHDDをRAID-1のペアとする想定。

# camcontrol devlist
<WDC WD40EFRX-68N32N0 82.00A82>    at scbus0 target 0 lun 0 (ada0,pass0)
<WDC WD40EFRX-68N32N0 82.00A82>    at scbus1 target 0 lun 0 (ada1,pass1)
<WDC WD40EFRX-68N32N0 82.00A82>    at scbus2 target 0 lun 0 (ada2,pass2)
<WDC WD40EFRX-68N32N0 82.00A82>    at scbus4 target 0 lun 0 (ada4,pass3)
<WDC WD40EFRX-68N32N0 82.00A82>    at scbus5 target 0 lun 0 (ada5,pass4)
<WDC WD40EFRX-68N32N0 82.00A82>    at scbus6 target 0 lun 0 (ada6,pass5)

GPTで初期化する。

# gpart create -s gpt ada0
# gpart create -s gpt ada1
# gpart create -s gpt ada2
# gpart create -s gpt ada4
# gpart create -s gpt ada5
# gpart create -s gpt ada6

ZFS用にパーティションを切る。ディスク全体を使ってもいいのだが(実際ZFSではそのような使い方が推奨されている)、微妙な容量差で同一公称容量のHDDと交換出来ないと詰むため、敢えてパーティションを切って使っている。

# gpart add -a 4k -s 7800000000 -t freebsd-zfs ada0
# gpart add -a 4k -s 7800000000 -t freebsd-zfs ada1
# gpart add -a 4k -s 7800000000 -t freebsd-zfs ada2
# gpart add -a 4k -s 7800000000 -t freebsd-zfs ada4
# gpart add -a 4k -s 7800000000 -t freebsd-zfs ada5
# gpart add -a 4k -s 7800000000 -t freebsd-zfs ada6
# gpart show 
=>        40  7814037088  ada0  GPT  (3.6T)
          40  7800000000     1  freebsd-zfs  (3.6T)
  7800000040    14037088        - free -  (6.7G)

=>        40  7814037088  ada1  GPT  (3.6T)
          40  7800000000     1  freebsd-zfs  (3.6T)
  7800000040    14037088        - free -  (6.7G)

=>        40  7814037088  ada2  GPT  (3.6T)
          40  7800000000     1  freebsd-zfs  (3.6T)
  7800000040    14037088        - free -  (6.7G)

=>        40  7814037088  ada4  GPT  (3.6T)
          40  7800000000     1  freebsd-zfs  (3.6T)
  7800000040    14037088        - free -  (6.7G)

=>        40  7814037088  ada5  GPT  (3.6T)
          40  7800000000     1  freebsd-zfs  (3.6T)
  7800000040    14037088        - free -  (6.7G)

=>        40  7814037088  ada6  GPT  (3.6T)
          40  7800000000     1  freebsd-zfs  (3.6T)
  7800000040    14037088        - free -  (6.7G)

RAID10ボリュームを作成する。後の実験のために2ペア4台しか指定していないが、実際には初めから全てのHDDを使ったほうがいいだろう。

# zpool create zdata mirror ada0p1 ada4p1 mirror ada1p1 ada5p1
# zpool status
  pool: zdata
 state: ONLINE
  scan: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	zdata       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada0p1  ONLINE       0     0     0
	    ada4p1  ONLINE       0     0     0
	  mirror-1  ONLINE       0     0     0
	    ada1p1  ONLINE       0     0     0
	    ada5p1  ONLINE       0     0     0

errors: No known data errors

RAID1のペアを追加してみる。

# zpool add zdata mirror ada2p1 ada6p1
# zpool status
  pool: zdata
 state: ONLINE
  scan: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	zdata       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada0p1  ONLINE       0     0     0
	    ada4p1  ONLINE       0     0     0
	  mirror-1  ONLINE       0     0     0
	    ada1p1  ONLINE       0     0     0
	    ada5p1  ONLINE       0     0     0
	  mirror-2  ONLINE       0     0     0
	    ada2p1  ONLINE       0     0     0
	    ada6p1  ONLINE       0     0     0

errors: No known data errors

念のためashiftを確認。シフト量はvdevごとに存在することに注意。

# zdb -C zdata | grep ashift
                ashift: 12
                ashift: 12
                ashift: 12
  • zfs/zfs_create_raid10_pool.1606992202.txt.gz
  • 最終更新: 2020-12-03 19:43
  • by Decomo