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

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

作成日: Jul 19, 2014
カテゴリー: FreeBSD タグ: FreeBSD

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

この記事は、FreeBSDセットアップメモの一部です。

前提事項

前提は、

$ ls /dev/ada*.eli
/dev/ada0.nop.eli       /dev/ada2.nop.eli
/dev/ada1.nop.eli       /dev/ada3.nop.eli

という状態です。

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

$ sudo zpool create tank raidz /dev/ada0.nop.eli /dev/ada1.nop.eli /dev/ada2.nop.eli /dev/ada3.nop.eli

結果の確認。

$ 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
            ada0.nop.eli  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

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
$ sudo zfs set mountpoint=/mnt/tank tank

$ df -h
Filesystem                                         Size    Used   Avail Capacity  Mounted on
/dev/gptid/12345    9.7G    1.2G    7.7G    13%    /
devfs                                              1.0K    1.0K      0B   100%    /dev
/dev/gptid/12346    7.7G    220M    6.9G     3%    /var
/dev/gptid/12347    200G     32M    184G     0%    /storage
tank                                               7.8T    210K    7.8T     0%    /mnt/tank

再起動後の状況

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

$ sudo reboot
$ 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
            13217748795864370096  UNAVAIL      0     0     0  was /dev/ada0.nop.eli
            4677987797287160574   UNAVAIL      0     0     0  was /dev/ada1.nop.eli
            9850731337994411417   UNAVAIL      0     0     0  was /dev/ada2.nop.eli
            4670057673939432341   UNAVAIL      0     0     0  was /dev/ada3.nop.eli

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

アタッチ後のステータス

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

$ sudo attach_disks.sh
Enter geli passphrase. Your entry would NOT be echobacked.
/dev/ada0.nop: Attaching ...
/dev/ada1.nop: Attaching ...
/dev/ada2.nop: Attaching ...
/dev/ada3.nop: Attaching ...
Following is a result of "ls /dev/ada*.eli" command.
/dev/ada0.nop.eli       /dev/ada2.nop.eli
/dev/ada1.nop.eli       /dev/ada3.nop.eli

$ 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
            ada0.nop.eli  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

errors: No known data errors

$ df -h
Filesystem                                         Size    Used   Avail Capacity  Mounted on
/dev/gptid/12345    9.7G    1.2G    7.7G    13%    /
devfs                                              1.0K    1.0K      0B   100%    /dev
/dev/gptid/12346    7.7G    220M    6.9G     3%    /var
/dev/gptid/12347    200G     32M    184G     0%    /storage

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

マウント

$ sudo zfs mount tank

$ zfs mount
tank                            /mnt/tank

$ df -h
Filesystem                                         Size    Used   Avail Capacity  Mounted on
/dev/gptid/12345    9.7G    1.2G    7.7G    13%    /
devfs                                              1.0K    1.0K      0B   100%    /dev
/dev/gptid/12346    7.7G    220M    6.9G     3%    /var
/dev/gptid/12347    200G     32M    184G     0%    /storage
tank                                               7.8T    210K    7.8T     0%    /mnt/tank