OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2018/01/14

OSSでLinuxサーバ構築

CentOS 7.3でiSCSIイニシエータを構成

トップページOSSでLinuxサーバ構築 > 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

サーバ構築

インストール

(1) 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

完了しました!

設定

(1) 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)

(2) 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.

(3) 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)

(4) 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

(5) 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

(6) 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と表示されれば成功

(7) ブロックデバイスの確認

 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

(8) 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 バイト

#

(9) パーティションの作成

 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() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

(10) 物理ボリュームの作成

 作成したパーティション /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

#

(11) ボリュームグループの作成

 物理ボリュームとして構成した /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

#

(12) 論理ボリュームの作成

 ボリュームグループから論理ボリュームを切り出します。 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

#

(13) ファイルシステムのフォーマット

 切り出した論理ボリュームにファイルを書き込めるように、 ファイルシステムのフォーマットを行います。 今回は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

(14) マウントポイントの作成

 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

(15) 論理ボリュームのマウント

 論理ボリューム(/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) ←マウントされた

(16) 自動マウントの設定

 作成した論理ボリュームがLinux起動時に自動でマウントされるように fstab を設定します。

# cd /etc/
# vi fstab
ファイル名:/etc/fstab
※ファイルの末尾に追加※
/dev/mapper/VolGroup01-LogVol00 /data               xfs     _netdev         0 0

 以上でiSCSIターゲットのディスクを /data にマウントして利用できるようになりました。 iSCSIイニシエータがターゲットを認識して接続した後は、通常の内蔵ディスクと同じように利用できます。

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会


第000414号