CentOS7でzfsを動かしてみる
FreeBSDでzfs FreeBSD/zfs

CentOS7のyumには登録されていないパッケージで、ライセンス的に?なのですが、使いたいから入れてみた。

minimumで仮想CentOS7を作り、そこにzfs向けとして256GB(Thin Provision)のHDD4本を追加した

[root@zfs ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@zfs ~]#
[root@zfs ~]# cat /proc/partitions
major minor  #blocks  name
 
   2        0          4 fd0
  11        0     470528 sr0
   8       32  268435456 sdc
   8       16  268435456 sdb
   8        0   16777216 sda
   8        1     524288 sda1
   8        2     524288 sda2
   8        3    2097152 sda3
   8        4   13629440 sda4
   8       64  268435456 sde
   8       48  268435456 sdd
[root@zfs ~]#

留意
この4つの仮想HDD(sdb,sdc,sdd,sde)は parted で mklabel gpt とします。(参照: ubuntu/zfs#fa90acb2)

[root@zfs ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) quit
Information: You may need to update /etc/fstab.
 
[root@zfs ~]#

リポジトリの登録

ZFS on Linuxhttp://zfsonlinux.org/にRHEL/CentOS向けのリポジトリがある。これを登録する

[root@zfs ~]# rpm -Uvh http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm
http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.5XkOPb: ヘッダー V4 RSA/SHA256 Signature、鍵 ID f14ab620: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:zfs-release-1-4.el7_3.centos     ################################# [100%]
[root@zfs ~]#

すると、/etc/yum.repos.d にzfs.repoが配置される。

[root@zfs ~]# ls -l /etc/yum.repos.d/
合計 40
-rw-r--r--. 1 root root 1664 11月 30 03:12 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 11月 30 03:12 CentOS-CR.repo
-rw-r--r--. 1 root root  649 11月 30 03:12 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 11月 30 03:12 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 11月 30 03:12 CentOS-Sources.repo
-rw-r--r--. 1 root root 2893 11月 30 03:12 CentOS-Vault.repo
-rw-r--r--. 1 root root  314 11月 30 03:12 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 1056  7月 24 06:37 epel-testing.repo
-rw-r--r--. 1 root root  957  7月 24 06:37 epel.repo
-rw-r--r--  1 root root 1225 12月 13 08:27 zfs.repo
[root@zfs ~]#

次に、zfsにはepelリポジトリ提供の dkmsパッケージ が必要です。
なのでそのepelのリポジトリも登録します

[root@zfs ~]# yum install epel-release

zfsのインストール

次に、実際にzfs関連モジュールをインストールしますが、確認としてzfs.repoで提供される中身を見てみる

[root@zfs ~]# yum list |grep zfs
zfs-release.noarch                      1-4.el7_3.centos               installed
libnvpair1.x86_64                       0.6.5.8-1.el7_3.centos         zfs
libuutil1.x86_64                        0.6.5.8-1.el7_3.centos         zfs
libzfs2.x86_64                          0.6.5.8-1.el7_3.centos         zfs
libzfs2-devel.x86_64                    0.6.5.8-1.el7_3.centos         zfs
libzpool2.x86_64                        0.6.5.8-1.el7_3.centos         zfs
spl.x86_64                              0.6.5.8-1.el7_3.centos         zfs
spl-debuginfo.x86_64                    0.6.5.8-1.el7_3.centos         zfs
spl-dkms.noarch                         0.6.5.8-1.el7_3.centos         zfs
zfs.x86_64                              0.6.5.8-1.el7_3.centos         zfs
zfs-debuginfo.x86_64                    0.6.5.8-1.el7_3.centos         zfs
zfs-dkms.noarch                         0.6.5.8-1.el7_3.centos         zfs
zfs-dracut.x86_64                       0.6.5.8-1.el7_3.centos         zfs
zfs-test.x86_64                         0.6.5.8-1.el7_3.centos         zfs
[root@zfs ~]#

下記コマンドでzfsのインストールを行います。

[root@zfs ~]# yum install zfs

この直後にzpoolコマンドを実行すると

[root@zfs ~]# zpool list
The ZFS modules are not loaded.
Try running '/sbin/modprobe zfs' as root to load them.
[root@zfs ~]#

といわれます。/sbin/modprobe zfsを実行してzfsが利用可能になるのですが、再起動すると外れる。。。
それを回避するには

[root@zfs ~]# systemctl enable zfs-import-cache
[root@zfs ~]# systemctl enable zfs-mount
[root@zfs ~]# systemctl enable zfs.target

を有効にしておく
*zfsのマウントポイントが存在した場合、この方式で再起動後でもzfsカーネルモジュールが外れなく、zfsマウントが反映されるって感じかな

ストレージプール作成

まずは、zfsカーネルモジュール zfs.ko をロードします

[root@zfs ~]# /sbin/modprobe zfs

そして、zfsストレージプールを作成します。
プールの性格をストライピングにするなら

[root@zfs ~]# zpool create tank /dev/sdb /dev/sdc /dev/sdd /dev/sde

とします。確認は

[root@zfs ~]# zpool status tank
  pool: tank
 state: ONLINE
  scan: none requested
config:
 
        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          sdb       ONLINE       0     0     0
          sdc       ONLINE       0     0     0
          sdd       ONLINE       0     0     0
          sde       ONLINE       0     0     0
 
errors: No known data errors
[root@zfs ~]#

にて行える。
このストレージプールを作成すると同時にファイルシステムにも登録される

[root@zfs ~]# df -lTh -F zfs
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
tank           zfs      985G     0  985G    0% /tank
[root@zfs ~]#

この大本のストレージプールからサブボリュームを作成して、それを特定のマウントポイントにするには

[root@zfs ~]# zfs create tank/scratch
[root@zfs ~]# df -lTh -F zfs
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
tank           zfs      985G     0  985G    0% /tank
tank/scratch   zfs      985G     0  985G    0% /tank/scratch
[root@zfs ~]#
 
[root@zfs ~]# zfs umount tank/scratch
[root@zfs ~]# df -lTh -F zfs
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
tank           zfs      985G     0  985G    0% /tank
[root@zfs ~]#
 
[root@zfs ~]# mkdir /scratch
[root@zfs ~]# zfs set mountpoint=/scratch tank/scratch
[root@zfs ~]# zfs list
NAME           USED  AVAIL  REFER  MOUNTPOINT
tank            95K   984G    19K  /tank
tank/scratch    19K   984G    19K  /scratch
[root@zfs ~]#
 
[root@zfs ~]# df -lTh -F zfs
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
tank           zfs      985G     0  985G    0% /tank
[root@zfs ~]#
[root@zfs ~]# zfs mount tank/scratch
[root@zfs ~]# df -lTh -F zfs
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
tank           zfs      985G     0  985G    0% /tank
tank/scratch   zfs      985G     0  985G    0% /scratch
[root@zfs ~]#

ストレージプールの解消

作ったストレージプールを解消するには
zpool destroy <ストレージプール>
とする

scratch のパーミッション変更

一時ファイルの置き場所としてなのなら

[root@zfs ~]# chmod 1777 /scratch
 
[root@zfs ~]# ls -ld /scratch
drwxrwxrwt 3 root root 4 12月 21 22:38 /scratch
[root@zfs ~]#

とする

scrub

[root@ss1 ~]# crontab -e
55 23 * * 5 /usr/sbin/zpool scrub tank

(めも)

cat /proc/spl/kstat/zfs/arcstats
arcstat.py 10 10
zfs set atime=off tank


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-04-19 (水) 02:54:46 (239d)