FreeBSDのZFSでミラーリングを作ってみた。が

前回はGEOMでミラーリングを作ってみたので、今回はZFSを使ってミラーリングを作ってみた。

作ってみたのだけど、思ってたのと違っていて、2個HDDを増設してそのHDDがZFSでミラーリングされているという状況になった。
とりあえずZFSを試してみるのに一番簡単な方法だとは思うので、載せてみようと思う。

 

FreeBSDはまた最初から作成したけど、少しづつスクリプトもどきを作っていってるので、たいした労力はない。

ただ時間が結構かかるのでそこがネックかなあ。

 

たいした事はやってないのでダイジェスト的にいきます。
まずはdmesgで認識状況を確認しました。

% dmesg | grep MB
real memory  = 2147483648 (2048 MB)
avail memory = 2048126976 (1953 MB)
da0: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da0: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)
da1: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da1: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)
real memory  = 2147483648 (2048 MB)
avail memory = 2052296704 (1957 MB)
da0: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da0: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)
da1: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da1: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)

da0にFreeBSDが入ってて、da1がスレーブにある状態です。

% zpool create -m /newhdd tank da1
% zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  19.9G   120K  19.9G     0%  1.00x  ONLINE  -
% zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
tank   102K  19.6G    31K  /newhdd

da1でzpoolを作ってます、zfsはマウントを自動で作ってくれるらしい。
gmirrorの時のようなエラーは起こりませぬ。

こいつにはあとからドンドコHDDを追加してzpoolに追加できるらしい。
ストレージのクラウドみたいな。

dfで確認するとこんな感じ。

% df -T
Filesystem   Type  1K-blocks    Used    Avail Capacity  Mounted on
/dev/da0s1a  ufs     1012974  323320   608618    35%    /
devfs        devfs         1       1        0   100%    /dev
/dev/da0s1e  ufs     1012974      14   931924     0%    /tmp
/dev/da0s1f  ufs     8173726 1749948  5769880    23%    /usr
/dev/da0s1d  ufs     6070638  192890  5392098     3%    /var
tank         zfs    20514745      31 20514714     0%    /newhdd

そしてそのままda0とda1でミラーリングはできるはずないのだけど、やってみた。

% zpool create -m /mirror zmirrorA mirror da0 da1
invalid vdev specification
use '-f' to override the following errors:
/dev/da1 is part of active pool 'tank'

こいつはtankじゃろうがーって怒られる。ので
destroyで、その幻想をぶち殺す!!

% zpool destroy tank

んでやってみるけど、これももちろん、それ無理と。

% zpool create -m /mirror zmirrorA mirror da0 da1
cannot create 'zmirrorA': one or more devices is currently unavailable

1個でも当然、それ無理と。

% zpool create -m /mirror zmirrorA mirror da1
invalid vdev specification: mirror requires at least 2 devices

HDDを追加した。

da0: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da0: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)
da1: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da1: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)
da2: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da2: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)

これなら問題ない。

% zpool create -m /mirror zmirrorA mirror da1 da2
% zpool list
NAME       SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zmirrorA  19.9G   102K  19.9G     0%  1.00x  ONLINE  -
% zpool status
  pool: zmirrorA
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zmirrorA    ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0

errors: No known data errors
% df -Th
Filesystem   Type     Size    Used   Avail Capacity  Mounted on
/dev/da0s1a  ufs      989M    315M    594M    35%    /
devfs        devfs    1.0k    1.0k      0B   100%    /dev
/dev/da0s1e  ufs      989M     14k    910M     0%    /tmp
/dev/da0s1f  ufs      7.8G    1.7G    5.5G    23%    /usr
/dev/da0s1d  ufs      5.8G    188M    5.1G     3%    /var
zmirrorA     zfs       19G     31k     19G     0%    /mirror

上手くいったよだ。

 

参考資料
実践FreeBSDサーバ構築・運用ガイド  佐々木 宣文 (著), 後藤 大地 (著), 佐藤 広生 (監修)

 

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です