環境
CentOS7 を minimal インストールして yum -y update
した状態。
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
# uname -a
Linux localhost 3.10.0-693.21.1.el7.x86_64
3TBのHDDを3台接続。
# cat /proc/partitions
major minor #blocks name
8 0 250059096 sda
8 1 1048576 sda1
8 2 249009152 sda2
8 16 2930266584 sdb
8 32 2930266584 sdc
8 48 2930266584 sdd
ZFSのインストール・設定
リポジトリの追加
# rpm -Uvh http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm
必要パッケージのインストール
# yum install -y kernel-devel gcc-c++ zfs
ネット上の情報では kernel-devel と zfs をインストールするようなことが書いてあるが、 gcc-c++ も入れておかないと以下のエラーになるようだ。
# zpool status The ZFS modules are not loaded. Try running '/sbin/modprobe zfs' as root to load them.
# /sbin/modprobe zfs modprobe: FATAL: Module zfs not found.
CentOSなら zfs-kmod のほうがいいかもしれない
自動起動設定
# systemctl enable zfs-import-cache
# systemctl enable zfs-mount
# systemctl enable zfs.target
とりあえず、ここらで再起動しておこう
ストレージプール作成
# zpool create tank raidz /dev/sdb /dev/sdc /dev/sdd
ちなみに、他で動いていたHDDをまとめて移行する場合は
zfs import
で持ってこれるようだ。# zpool import
ボリューム作成
# zfs create -V 1T tank/vol
デバイス確認
# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
sda1 8:1 0 1G 0 part /boot
sda2 8:2 0 237.5G 0 part
:
zd0 230:0 0 1T 0 disk
zd0 ができてる
iSCSIのインストール・設定
必要パッケージのインストール
# yum -y install targetcli
起動しておこう
# systemctl start target
自動起動設定
# systemctl enable target
targetcli(ストレージマネージャー)での設定
# targetcli
ブロックデバイスをLUNに登録
/> /backstores/block create name=lun0 dev=/dev/zd0
IQNを作成
/> /iscsi create
IQNにデバイスを紐づけ
/> /iscsi/iqn..../tpg1/luns create /backstores/block/lun0
IQNにイニシエーターを紐づけ
/> /iscsi/iqn..../tpg1/acls create iqn....
ここまでの設定を保存
/> saveconfig
ファイアウォールに穴あけ。
# firewall-cmd --zone=public --permanent --add-port=3260/tcp
接続
イニシエーターから接続してみよう!