CentOS 7.3でiSCSIイニシエータを構成
目次
概要
既存のiSCSI接続のディスクに対してLinuxサーバから接続して利用します。 iSCSIはSCSIコマンドを通信パケットに乗せてネットワーク経由でiSCSIディスクとやり取りします。 接続したディスクは他のSCSIディスクと一見同じように見えます。 今回はiSCSI接続のディスク装置を準備できなかったので、LinuxサーバをiSCSIターゲットとして構成したものを準備しています。 今回の構成ではiSCSIイニシエータとして構成するサーバには1つの内蔵ディスク /dev/sda のみ存在しているので、 接続したiSCSIのディスクは2つ目のディスク /dev/sdb として認識されます。
構成
サーバ構成(iSCSIイニシエータ)
OSバージョン
CentOS 7.3.1611 x86_64
ソフトウェア・パッケージ一覧
- iscsi-initiator-utils-6.2.0.874-4.el7.x86_64.rpm
サーバ構成(iSCSIターゲット)
※iSCSIターゲットは既に存在するものを利用します。
※LinuxサーバをiSCSIディスクとして仕立てています。
OSバージョン
CentOS 7.3.1611 x86_64
ソフトウェア・パッケージ一覧
- targetcli-2.1.fb46-1.el7.noarch.rpm
環境構築
インストール
iscsi-initiator-utilsのインストール
iSCSIイニシエータを構成するためのツールである iscsi-initiator-utils をインストールします。
# yum install -y iscsi-initiator-utils 読み込んだプラグイン:fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (2/4): base/7/x86_64/group_gz | 156 kB 00:00:05 (3/4): base/7/x86_64/primary_db | 5.7 MB 00:00:06 (3/4): updates/7/x86_64/primary_db | 4.5 MB 00:00:06 (4/4): extras/7/x86_64/primary_db | 145 kB 00:00:12 Determining fastest mirrors * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ iscsi-initiator-utils.x86_64 0:6.2.0.874-4.el7 を インストール --> 依存性の処理をしています: iscsi-initiator-utils-iscsiuio >= 6.2.0.874-4.el7 のパッケージ: iscsi-initiator-utils-6.2.0.874-4.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ iscsi-initiator-utils-iscsiuio.x86_64 0:6.2.0.874-4.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ============================================================================================================================================ インストール中: iscsi-initiator-utils x86_64 6.2.0.874-4.el7 base 420 k 依存性関連でのインストールをします: iscsi-initiator-utils-iscsiuio x86_64 6.2.0.874-4.el7 base 90 k トランザクションの要約 ============================================================================================================================================ インストール 1 パッケージ (+1 個の依存関係のパッケージ) 総ダウンロード容量: 510 k インストール容量: 2.5 M Downloading packages: 警告: /var/cache/yum/x86_64/7/base/packages/iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.x86_64.rpm の公開鍵がインストールされていません (1/2): iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.x86_64.rpm | 90 kB 00:00:05 (2/2): iscsi-initiator-utils-6.2.0.874-4.el7.x86_64.rpm | 420 kB 00:00:05 -------------------------------------------------------------------------------------------------------------------------------------------- 合計 87 kB/s | 510 kB 00:00:05 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。 Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-3.1611.el7.centos.x86_64 (@anaconda) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : iscsi-initiator-utils-6.2.0.874-4.el7.x86_64 1/2 インストール中 : iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.x86_64 2/2 検証中 : iscsi-initiator-utils-iscsiuio-6.2.0.874-4.el7.x86_64 1/2 検証中 : iscsi-initiator-utils-6.2.0.874-4.el7.x86_64 2/2 インストール: iscsi-initiator-utils.x86_64 0:6.2.0.874-4.el7 依存性関連をインストールしました: iscsi-initiator-utils-iscsiuio.x86_64 0:6.2.0.874-4.el7 完了しました!
設定
iscsidサービスの自動起動設定
iSCSIイニシエータとして必要なiscsidサービスがLinux起動時に自動起動するように設定します。
# systemctl status iscsid.service ● iscsid.service - Open-iSCSI Loaded: loaded (/usr/lib/systemd/system/iscsid.service; disabled; vendor preset: disabled) ←自動起動無効 Active: inactive (dead) ←サービス停止状態 Docs: man:iscsid(8) man:iscsiadm(8) # systemctl enable iscsid.service ←自動起動の有効化 Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service. # systemctl status iscsid.service ● iscsid.service - Open-iSCSI Loaded: loaded (/usr/lib/systemd/system/iscsid.service; enabled; vendor preset: disabled) ←自動起動有効 Active: inactive (dead) ←サービス停止状態 Docs: man:iscsid(8) man:iscsiadm(8)
iscsidサービスの起動
iscsidサービスを起動します。
# systemctl start iscsid.service ←サービスの起動 # systemctl status iscsid.service ● iscsid.service - Open-iSCSI Loaded: loaded (/usr/lib/systemd/system/iscsid.service; enabled; vendor preset: disabled) ←自動起動有効 Active: active (running) since 土 2017-12-16 23:33:04 JST; 4s ago ←サービス起動状態 Docs: man:iscsid(8) man:iscsiadm(8) Process: 2347 ExecStart=/usr/sbin/iscsid (code=exited, status=0/SUCCESS) Main PID: 2349 (iscsid) CGroup: /system.slice/iscsid.service tq2348 /usr/sbin/iscsid mq2349 /usr/sbin/iscsid 12月 16 23:33:04 centos73 systemd[1]: Starting Open-iSCSI... 12月 16 23:33:04 centos73 systemd[1]: Failed to read PID from file /var/run/iscsid.pid: Invalid argument 12月 16 23:33:04 centos73 iscsid[2348]: iSCSI daemon with pid=2349 started! 12月 16 23:33:04 centos73 systemd[1]: Started Open-iSCSI.
iscsiサービスの自動起動設定
iscsidサービスと同様にiscsiサービスがLinux起動時に自動起動するように設定します。
# systemctl status iscsi.service ● iscsi.service - Login and scanning of iSCSI devices Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled) ←自動起動無効 Active: inactive (dead) ←サービス停止状態 Docs: man:iscsid(8) man:iscsiadm(8) # systemctl enable iscsi.service ←自動起動の有効化 # systemctl status iscsi.service ● iscsi.service - Login and scanning of iSCSI devices Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled) ←自動起動有効 Active: inactive (dead) ←サービス停止状態 Docs: man:iscsid(8) man:iscsiadm(8)
ACLを設定するためのIQN確認
iSCSIイニシエータからiSCSIターゲットへ接続するためには、
iSCSIターゲット側でACL(Access Control List)を設定する必要があります。
iSCSIターゲットのACLに設定するのは、接続元になるiSCSIイニシエータのIQNです。
下記ファイルにIQNが書かれているので、この情報をiSCSIターゲットのACLに設定してもらいます。
※iSCSIターゲット側の手順は割愛します。
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:2951af797f3e
iSCSIターゲットの検索
iSCSIターゲットを検索します。 今回の検証した環境ではiSCSIターゲットのIPアドレスは 192.168.0.20 です。
# iscsiadm -m discovery -t st -p 192.168.0.20:3260 192.168.0.20:3260,1 iqn.2011-02.net.ossfan:storage1
iSCSIターゲットへのログイン(接続)
検索して見つかったiSCSIターゲットへログイン(接続)します。 接続には検索して見つかったiSCSIターゲットのIQN(今回はiqn.2011-02.net.ossfan:storage1)を指定します。
# iscsiadm -m node -T iqn.2011-02.net.ossfan:storage1 -p 192.168.0.20:3260 -l
Logging in to [iface: default, target: iqn.2011-02.net.ossfan:storage1, portal: 192.168.0.20,3260] (multiple)
Login to [iface: default, target: iqn.2011-02.net.ossfan:storage1, portal: 192.168.0.20,3260] successful. ←successfulと表示されれば成功
ブロックデバイスの確認
Linuxが認識しているブロックデバイスの一覧を表示します。 以下ではiSCSIのデバイスが sdb という名前で認識されていることが分かります。
# lsblk -S
NAME HCTL TYPE VENDOR MODEL REV TRAN
sda 2:0:0:0 disk VMware Virtual disk 1.0 sas
sdb 3:0:0:0 disk LIO-ORG lun1 4.0 iscsi ←iSCSIのブロックデバイス
sr0 1:0:0:0 rom NECVMWar VMware IDE CDR10 1.00 ata
iSCSIのデバイス情報を確認
sdb として認識されたiSCSIのデバイス情報を確認します。
# fdisk -l /dev/sdb Disk /dev/sdb: 42.9 GB, 42945478656 bytes, 83877888 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 4194304 バイト #
パーティションの作成
iSCSIのデバイスにパーティションを作成します。 今回は42.9GBの全容量を1つのパーティション sdb1 とします。
# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x998b9b77. コマンド (m でヘルプ): p Disk /dev/sdb: 42.9 GB, 42945478656 bytes, 83877888 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 4194304 バイト Disk label type: dos ディスク識別子: 0x998b9b77 デバイス ブート 始点 終点 ブロック Id システム コマンド (m でヘルプ): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p パーティション番号 (1-4, default 1): 1 最初 sector (8192-83877887, 初期値 8192): ←何も入力せずに[Enter]キーを押す 初期値 8192 を使います Last sector, +sectors or +size{K,M,G} (8192-83877887, 初期値 83877887): ←何も入力せずに[Enter]キーを押す 初期値 83877887 を使います Partition 1 of type Linux and of size 40 GiB is set コマンド (m でヘルプ): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' コマンド (m でヘルプ): p Disk /dev/sdb: 42.9 GB, 42945478656 bytes, 83877888 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 4194304 バイト Disk label type: dos ディスク識別子: 0x998b9b77 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 8192 83877887 41934848 8e Linux LVM コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。
物理ボリュームの作成
作成したパーティション /dev/sdb1 をLVMの物理ボリュームとして設定します。
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. # pvdisplay /dev/sdb1 "/dev/sdb1" is a new physical volume of "39.99 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 39.99 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID GBwwIE-iDB9-v2Bs-URub-sc0O-FTls-rFnLIe #
ボリュームグループの作成
物理ボリュームとして構成した /dev/sdb1 をLVMのボリュームグループとして構成します。 ボリュームグループの名前は VolGroup01 とします。
# vgcreate VolGroup01 /dev/sdb1 Volume group "VolGroup01" successfully created # vgdisplay VolGroup01 --- Volume group --- VG Name VolGroup01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 39.99 GiB PE Size 4.00 MiB Total PE 10237 Alloc PE / Size 0 / 0 Free PE / Size 10237 / 39.99 GiB VG UUID 9qe6lb-OG9J-rsSp-w5xS-AtDa-Q7Ad-dao19C #
論理ボリュームの作成
ボリュームグループから論理ボリュームを切り出します。 39.99GBのボリュームグループ全てを1つの論理ボリュームとして切り出します。 論理ボリュームの名前は LogVol00 とします。 論理ボリュームのサイズはエクステント数で指定します。 VolGroup01のトータルエクステント数は 10237 なので、論理ボリュームの切り出し時に 10237 を指定します。
# lvcreate -l 10237 -n LogVol00 VolGroup01 Logical volume "LogVol00" created. # vgdisplay -v VolGroup01 --- Volume group --- VG Name VolGroup01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 39.99 GiB PE Size 4.00 MiB Total PE 10237 Alloc PE / Size 10237 / 39.99 GiB Free PE / Size 0 / 0 VG UUID 9qe6lb-OG9J-rsSp-w5xS-AtDa-Q7Ad-dao19C --- Logical volume --- LV Path /dev/VolGroup01/LogVol00 LV Name LogVol00 VG Name VolGroup01 LV UUID Q0l65m-MTfE-fEEN-a6kM-k0RL-8i0q-mbjDtM LV Write Access read/write LV Creation host, time centos73, 2017-12-17 01:54:57 +0900 LV Status available # open 0 LV Size 39.99 GiB Current LE 10237 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 --- Physical volumes --- PV Name /dev/sdb1 PV UUID GBwwIE-iDB9-v2Bs-URub-sc0O-FTls-rFnLIe PV Status allocatable Total PE / Free PE 10237 / 0 #
ファイルシステムのフォーマット
切り出した論理ボリュームにファイルを書き込めるように、 ファイルシステムのフォーマットを行います。 今回はCentOS 7.3で標準のファイルシステムである XFS でフォーマットします。
# mkfs.xfs /dev/VolGroup01/LogVol00 meta-data=/dev/VolGroup01/LogVol00 isize=512 agcount=4, agsize=2620672 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=10482688, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=5118, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
マウントポイントの作成
XFSでフォーマットした論理ボリュームをマウントするためのマウントポイントを作成します。 今回は /data をマウントポイントとします。
# cd /
# mkdir data
# ls -l
合計 16
lrwxrwxrwx. 1 root root 7 3月 11 2017 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 3月 11 2017 boot
drwxr-xr-x 2 root root 6 12月 17 01:57 data ←作成された
drwxr-xr-x 20 root root 3220 12月 17 01:54 dev
drwxr-xr-x. 88 root root 8192 12月 16 23:31 etc
drwxr-xr-x. 2 root root 6 11月 6 2016 home
lrwxrwxrwx. 1 root root 7 3月 11 2017 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 3月 11 2017 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 11月 6 2016 media
drwxr-xr-x. 2 root root 6 11月 6 2016 mnt
drwxr-xr-x. 3 root root 16 3月 11 2017 opt
dr-xr-xr-x 134 root root 0 12月 16 23:27 proc
dr-xr-x---. 4 root root 164 3月 11 2017 root
drwxr-xr-x 25 root root 760 12月 16 23:33 run
lrwxrwxrwx. 1 root root 8 3月 11 2017 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 11月 6 2016 srv
dr-xr-xr-x 13 root root 0 12月 16 23:27 sys
drwxrwxrwt. 8 root root 173 12月 17 01:24 tmp
drwxr-xr-x. 13 root root 155 3月 11 2017 usr
drwxr-xr-x. 20 root root 282 12月 16 23:27 var
論理ボリュームのマウント
論理ボリューム(/dev/VolGroup01/LogVol00)を /data にマウントします。
# mount /dev/VolGroup01/LogVol00 /data
# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=930976k,nr_inodes=232744,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/VolGroup00-root on / type xfs (rw,relatime,attr2,inode64,noquota)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=26,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/VolGroup00-var on /var type xfs (rw,relatime,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=188400k,mode=700)
/dev/mapper/VolGroup01-LogVol00 on /data type xfs (rw,relatime,attr2,inode64,noquota) ←マウントされた
自動マウントの設定
作成した論理ボリュームがLinux起動時に自動でマウントされるように fstab を設定します。
# cd /etc/ # vi fstab
※ファイルの末尾に追加※
/dev/mapper/VolGroup01-LogVol00 /data xfs _netdev 0 0
以上でiSCSIターゲットのディスクを /data にマウントして利用できるようになりました。 iSCSIイニシエータがターゲットを認識して接続した後は、通常の内蔵ディスクと同じように利用できます。