2012年5月19日土曜日

ZFS on CentOS

HP ProLiant MicroServerにCentOS6をセットアップし、ZFS on Linuxをインストールしました。
ZFSのLinux実装には、FUSE版もありますが、今使用するならやっぱりカーネルモジュール版でしょう。

ということで、ZFS on Linuxから最新版のspl-0.6.0-rc8とzfs-0.6.0.rc8を使用しました。
インストールは、SPLZFSに書かれているとおりで問題なしです。
インストール後は、こんな感じになります。
$ grep zfs /proc/filesystems
nodev   zfs
$ lsmod |grep -E '(zfs|spl)'
zfs                  1075574  3
zcommon                42648  1 zfs
znvpair                47487  2 zfs,zcommon
zavl                    6925  1 zfs
zunicode              323120  1 zfs
spl                   256427  5 zfs,zcommon,znvpair,zavl,zunicode
zlib_deflate           21629  1 spl
準備ができたので、HDDを設定していきます。
パーティション情報を確認すると、こんな感じになります。
# parted -l
Error: /dev/sda: unrecognised disk label

Error: /dev/sdb: unrecognised disk label

Model: ATA VB0250EAVER (scsi)
Disk /dev/sdc: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
~ 略 ~
ODDポートに接続したHDDにOSをインストールしてあり/dev/sdcと認識されています。
/dev/sdaと/dev/sdbをZFSで使用するため、次のようにGNU partedでディスクラベルとパーティションを設定します。
# parted /dev/sda
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(pqrted) print
Model: ATA ST3000DM001-9YN1 (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 1M 3000GB
(parted) print
Model: ATA ST3000DM001-9YN1 (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  3000GB  3000GB               primary

(parted) quit
Information: You may need to update /etc/fstab.

#
同様に/dev/sdbも設定しておきます。

さて、いよいよZFSの設定です。まずは、ストレージプールを作成します。
まずは、/dev/disk/by-id配下を参照して、/dev/sda1にリンクされている名前を調べます。
$ cd /dev/disk/by-id
$ ls -l scsi*part1
~ scsi-SATA_ST3000DM001-9YN_ABCD1234-part1 -> ../../sda1
~ scsi-SATA_ST3000DM001-9YN_EFGH5678-part1 -> ../../sdb1
~ scsi-SATA_VB0250EAVER_IJKL9012-part1 -> ../../sdc1
この情報を利用して、次のようにストレージプールを作成します。
# zpool create dtpool scsi-SATA_ST3000DM001-9YN_ABCD1234-part1
# zpool list
NAME     SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dtpool  2.72T    79K  2.72T     0%  1.00x  ONLINE  -
# zpool status
  pool: dtpool
 state: ONLINE
 scan: none requested
config:

        NAME                                        STATE     READ WRITE CKSUM
        dtpool                                      ONLINE       0     0     0
          scsi-SATA_ST3000DM001-9YN_ABCD1234-part1  ONLINE       0     0     0

errors: No known data errors
dtpoolという名前で、ストレージプールが作成されたことが確認できます。
ストレージプールには、tankという名前がよく使われるようです。
次に、mirrorで使用するため、次のように/dev/sdb1をストレージプールのsda1にアタッチします。
# zpool attach dtpool scsi-SATA_ST3000DM001-9YN_ABCD1234-part1 scsi-SATA_ST3000DM001-9YN_EFGH5678-part1
# zpool list
NAME     SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dtpool  2.72T   136K  2.72T     0%  1.00x  ONLINE  -
# zpool status
  pool: dtpool
 state: ONLINE
 scan: resilvered 85.5K in 0h0m with 0 errors on Sat May 12 00:11:40 2012
config:

        NAME                                          STATE     READ WRITE CKSUM
        dtpool                                        ONLINE       0     0     0
          mirror-0                                    ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_ABCD1234-part1  ONLINE       0     0     0
            scsi-SATA_ST3000DM001-9YN_EFGH5678-part1  ONLINE       0     0     0

errors: No known data errors
これで、2台構成のmirrorでストレージプールが作成されました。
ストレージプールがマウントされていることを確認できます。
# df -h
 :
dtpool                2.7T     0  2.7T   0% /dtpool
ストレージプールにZFSファイルシステムを作成します。
今回は、ワンセグ野郎のTSデータ格納用の領域を作成することにします。
# zfs create dtpool/ts
次のように、マウントポイントを/data/tsに変更してマウントし直します。
# mkdir /data
# zfs set mountpoint=/data/ts dtpool/ts
# df -h
 :
dtpool                2.7T  128K  2.7T   1% /dtpool
#
# zfs mount -a
# df -h
 :
dtpool                2.7T  128K  2.7T   1% /dtpool
dtpool/ts             2.7T  128K  2.7T   1% /data/ts
以上で/data/tsを使い始めることができます。
zpool、zfsコマンドは長くても数十秒でプロンプトが返ってくるし、mkfsする必要もないので楽々です。

初めて使うファイルシステムなので、少し実験してからデータ移行しようと思います。

0 件のコメント:

コメントを投稿