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サーバ構築・運用ガイド  佐々木 宣文 (著), 後藤 大地 (著), 佐藤 広生 (監修)

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *