コンピュータ/ソフトウェア関連Tips

GEOM ELI暗号化ディスクによるraidz

作成日: Jul 21, 2019
更新日: Jul 21, 2019
カテゴリー: FreeBSD タグ: FreeBSD

GEOM ELIにより暗号化されたハードディスクによりraidz1を構築したときのメモです。FreeBSDのバージョンは12.0 RELEASEです。

前提事項

前提は、

$ ls /dev/ada*.eli
/dev/ada1.nop.eli       /dev/ada2.nop.eli
/dev/ada3.nop.eli       /dev/ada4.nop.eli
/dev/ada5.nop.eli       /dev/ada6.nop.eli

という状態です。

raidzストレージプールの作成

$ sudo zpool create tank raidz /dev/ada1.nop.eli /dev/ada2.nop.eli /dev/ada3.nop.eli /dev/ada4.nop.eli /dev/ada5.nop.eli /dev/ada6.nop.eli

結果の確認。

$ sudo zpool status
  pool: tank
 state: ONLINE
  scan: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        tank              ONLINE       0     0     0
          raidz1-0        ONLINE       0     0     0
            ada1.nop.eli  ONLINE       0     0     0
            ada2.nop.eli  ONLINE       0     0     0
            ada3.nop.eli  ONLINE       0     0     0
            ada4.nop.eli  ONLINE       0     0     0
            ada5.nop.eli  ONLINE       0     0     0
            ada6.nop.eli  ONLINE       0     0     0

errors: No known data errors

ashift値の確認

http://blog.bixr.com/2012/07/243/や、http://nhh.mo-blog.jp/ttt/2013/11/freebsd_4khddzf.htmlによれば、セクターサイズが4KBになっている場合は、ashift値が12になるとのこと。

$ sudo zdb -C tank|grep ashift
                ashift: 12

無事セクタサイズは4KBになっている。

マウントポイントを作ってマウント

$ sudo mkdir /mnt/tank
$ chown ***:*** /mnt/tank
$ sudo zfs set mountpoint=/mnt/tank tank
$ sudo zfs allow wizard mount tank ←効き目なし
$ sudo zfs mount tank ←rootユーザでないとダメ
$ df -h

自分ひとりで使うので、/mnt/tankのパーミッションを自分のユーザID/グループにしておく。

zfs set でマウントポイントを設定しておくと、poolをマウントするときにその設定を保持する模様(自信なし)。

Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     46G    3.5G     39G     8%    /
devfs          1.0K    1.0K      0B   100%    /dev
tank           8.4T    141K    8.4T     0%    /mnt/tank

再起動後の状況

リブートして、ステータスを確認。

$ sudo shutdown -r now
$ sudo zpool status
  pool: tank
 state: UNAVAIL
status: One or more devices could not be opened.  There are insufficient
        replicas for the pool to continue functioning.
action: Attach the missing device and online it using 'zpool online'.
   see: http://illumos.org/msg/ZFS-8000-3C
  scan: none requested
config:

        NAME                      STATE     READ WRITE CKSUM
        tank                      UNAVAIL      0     0     0
          raidz1-0                UNAVAIL      0     0     0
            5581735753415990578   UNAVAIL      0     0     0  was /dev/ada1.nop.eli
            17703169718805307728  UNAVAIL      0     0     0  was /dev/ada2.nop.eli
            3734021442838413003   UNAVAIL      0     0     0  was /dev/ada3.nop.eli
            8181841737114853623   UNAVAIL      0     0     0  was /dev/ada4.nop.eli
            15755037921460535089  UNAVAIL      0     0     0  was /dev/ada5.nop.eli
            7104866073182250589   UNAVAIL      0     0     0  was /dev/ada6.nop.eli

まだGEOM ELIで暗号化されたハードディスクをアタッチしていないので、上記のようになるのは正常。

アタッチ後のステータス

スクリプトを使用してアタッチし、ステータスを確認。

$ sudo attach_disks.sh
Enter geli passphrase. Your entry would NOT be echobacked.
/dev/ada1.nop: Attaching ...
/dev/ada2.nop: Attaching ...
/dev/ada3.nop: Attaching ...
/dev/ada4.nop: Attaching ...
/dev/ada5.nop: Attaching ...
/dev/ada6.nop: Attaching ...
Following is a result of "ls /dev/ada*.eli" command.
/dev/ada1.nop.eli       /dev/ada3.nop.eli       /dev/ada5.nop.eli
/dev/ada2.nop.eli       /dev/ada4.nop.eli       /dev/ada6.nop.eli
$ sudo zpool status
  pool: tank
 state: ONLINE
  scan: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        tank              ONLINE       0     0     0
          raidz1-0        ONLINE       0     0     0
            ada1.nop.eli  ONLINE       0     0     0
            ada2.nop.eli  ONLINE       0     0     0
            ada3.nop.eli  ONLINE       0     0     0
            ada4.nop.eli  ONLINE       0     0     0
            ada5.nop.eli  ONLINE       0     0     0
            ada6.nop.eli  ONLINE       0     0     0

errors: No known data errors
$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     46G    3.5G     39G     8%    /
devfs          1.0K    1.0K      0B   100%    /dev

アタッチしても、マウントはされない。

マウント

$ sudo zfs mount tank
$ zfs mount
tank                            /mnt/tank
$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     46G    3.5G     39G     8%    /
devfs          1.0K    1.0K      0B   100%    /dev
tank           8.4T    141K    8.4T     0%    /mnt/tank