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

zpoolのインポート

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

zpoolを構築したのとは別のシステムとして、FreeBSDをインストールし直し、zpoolをインポートするテストをしたときのメモです。

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

前提

  1. zpoolをエクスポートする前に、システムディスクが壊れてしまったというシナリオ。(すなわち、エクスポートはしていない)
  2. /dev/ada0.nop、/dev/ada1.nop、/dev/ada2.nop、/dev/ada3.nopの存在を確認できるところまでシステムセットアップが終わっているが、GEOM ELIのアタッチはされていない。
  3. GEOM ELIキーファイルは、USBスティックにバックアップを保存してある。(さすがに、これが無いとどうしようもない)。

GEOM ELIキーファイルのリストア

USBスティックにバックアップしていた、GEOM ELIキーファイルをリストアします。

$ sudo mkdir /mnt/usbstick
$ sudo mount_msdosfs /dev/da1s1 /mnt/usbstick

$ cd /mnt/usbstick
$ sudo mkdir /root/.geli
$ sudo cp geli.key /root/.geli
$ sudo chmod 600 /root/.geli/geli.key

スクリプトのコピー

$ cd /mnt/usbstick
$ sudo cp attach_disks.sh /usr/local/bin

暗号化されたハードディスクのアタッチ

スクリプト使用。

$ 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 ...
Mounting zpool "tank".
cannot open 'tank': dataset does not exist
Starting samba server.
/usr/local/bin/attach_disks.sh: 行 32: /usr/local/etc/rc.d/samba_server: そのよ うなファイルまたはディレクトリはありません
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

Samba serverをセットアップしていないので、エラーになるのは正常。

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

zpoolのステイタス確認

$ zpool status
  pool: zroot
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          da0p3     ONLINE       0     0     0

errors: No known data errors
$ zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zroot  5.44G  1.36G  4.08G    25%  1.00x  ONLINE  -

インポートできるストレージプールの確認

参考

http://docs.oracle.com/cd/E19253-01/819-6260/6n89n6cfh/index.html

$ sudo zpool import

数秒後に、以下が表示された。

   pool: tank
     id: 7295399567371742997
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        tank              ONLINE
          raidz1-0        ONLINE
            ada0.nop.eli  ONLINE
            ada1.nop.eli  ONLINE
            ada2.nop.eli  ONLINE
            ada3.nop.eli  ONLINE

ストレージプールのインポート

参考

http://docs.oracle.com/cd/E19253-01/819-6260/gazuf/index.html

$ sudo zpool import tank

数秒後に、エラー無しで終了。参考にした、

http://docs.oracle.com/cd/E19253-01/819-6260/gazuf/index.htmlには、

プールを明示的にエクスポートしていない場合は、別のシステムでまだ使用されているプールを誤ってインポートすることを防ぐためにインポートできません。-f フラグを使用する必要があります。次に例を示します。

# zpool import dozer
cannot import ‘dozer’: pool may be in use on another system
use ‘-f’ to import anyway
# zpool import -f dozer

と書いてあるが、エラー無しだった。

zpoolステイタスの確認

$ zpool status
  pool: tank
 state: ONLINE
  scan: resilvered 18.8G in 0h20m with 0 errors on Sun Jul 20 13:12:17 2014
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

  pool: zroot
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          da0p3     ONLINE       0     0     0

errors: No known data errors
$ zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank   10.9T  2.44T  8.43T    22%  1.00x  ONLINE  -
zroot  5.44G  1.36G  4.08G    25%  1.00x  ONLINE  -

もとのマウントポイント(/mnt/tank)が自動的に作成され、マウントもされていた。

$ df -h|grep -e 'Filesystem' -e '/mnt/tank'
Filesystem            Size    Used   Avail Capacity  Mounted on
tank                  7.8T    1.8T    6.0T    23%    /mnt/tank