ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × 目次 ZFSでRAID10プールの作成と後からRAID1メンバーを追加する方法 コマンド プールの作成 RAID1セットの追加 実例 試した環境 手順 ZFSでRAID10プールの作成と後からRAID1メンバーを追加する方法 コマンド プールの作成 ZFSでRAID 1+0のプールを作るには、zpool createでmirror vdevを並べてやればよい。 zpool create プール名 \ mirror RAID1ペア1のデバイス1 RAID1ペア1のデバイス2 \ mirror RAID1ペア2のデバイス1 RAID1ペア2のデバイス2 上記コマンドではストレージ2台から成るミラーを2セットでRAID10としている。ミラーのメンバ数(各mirror行に指定するデバイス数)や、ストライピング数(mirrorの行数)は任意に変えられる。 大雑把に言うと、zpool createは引数のデバイスでストライプ構成のプールを作成するコマンドである。従って、与デバイスとしてHDD/SSDを直接指定すればRAID0プールとなるし、mirror vdevを渡せばRAID10となる。RAID-ZやRAID-Z2も同様。 RAID1セットの追加 既存のRAID 1+0プールにRAID1セットを追加するには、zpool addで以下のようにする。 zpool add プール名 mirror RAID1ペアのデバイス1 RAID1ペアのデバイス2 冒頭のプールで本コマンドを実行したとすると、ストレージ2台から成るミラーが3セットのRAID10プールに変わることとなる。 実例 試した環境 NAS4Free 11.0.0.4 4TB HDD × 6本 2本1組のRAID1を3ユニット束ねてRAID10とする 手順 ↓こんな感じで4TBのHDDが6本ある。 # 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) デバイス番号(adaX)が飛んでるのは、下図のようなSATAエンクロージャの上下にHDDを各3本挿し、上下のペアでミラーとしたため。 +---+---+---+---+ | | | | | | 0 | 1 | 2 | 3 | | | | | | +---+---+---+---+ | | | | | | 4 | 5 | 6 | 7 | | | | | | +---+---+---+---+ 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.txt 最終更新: 2022-01-11 20:08by Decomo