LoginSignup
3
1

More than 3 years have passed since last update.

Oracle Cloud ブロックボリュームを cli で作成してInstanceに接続 (iSCSI, 準仮想化, device path の動作検証有り)

Last updated at Posted at 2019-02-03

はじめに

Oracle Cloud の勉強の一環で、公式のチュートリアルを基に進めていきます。公式のチュートリアルでは日本語、かつ、GUI操作の内容となっています。わかりやすく書かれているので、基本はこちらを参照していただけるとよいと思います。

このQiitaの記事は、上記のチュートリアルを CLI であえて実施した備忘録として書きます。
CLI の理由は、GUIと比べて再現性や再実行性が高いのと、なんとなくかっこいいから

今回のテーマ

Block Volume を instance に接続
https://community.oracle.com/docs/DOC-1019345

前提作業

oci cliの導入

oci cli と jq コマンドを使用可能なこと。次のQiita記事で導入した手順を書いています
https://qiita.com/sugimount/items/63a8cfe1163030ae8804

Block Volume の作成

以下のコマンドで Block Volume を作成します

oci bv volume create --display-name tutorial_volume1 --size-in-gbs 50 --availability-domain AJtg:US-ASHBURN-AD-1

作成した Block Volume の OCID を取得して変数に設定します

set volume_ocid (oci bv volume list --display-name tutorial_volume1 | jq -r '.data[0].id')

Volumeの接続タイプについて

Block Volume を Instance に接続するときに、2個の接続Type を選択できます

  • iSCSI方式
    • device path 無し
    • device path 有り
  • 準仮想化方式
    • device path 無し
    • device path 有り

iSCSIは設定が若干面倒ですが、パフォーマンスが良いと記載されているので、基本的にはこちらを選択するのが良いのかなと思います。
また、 「device path 無し」パターンは fstabの指定がめんどくさいので、基本的にはdevice path 有りでアタッチするのが良いと思います。
※ Imageのバージョンや構成によってdevice path が使用できない場合があるので注意

パターン1 iSCSI方式 + device path無し

Block Volume を Instance へ接続(iSCSI)

iSCSIに接続する前の状態で、BlockDeviceの状態を確認します

[opc@ins-oralinux-1 ~]$ lsblk --pairs
NAME="sda" MAJ:MIN="8:0" RM="0" SIZE="46.6G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="sda2" MAJ:MIN="8:2" RM="0" SIZE="8G" RO="0" TYPE="part" MOUNTPOINT="[SWAP]"
NAME="sda3" MAJ:MIN="8:3" RM="0" SIZE="38.4G" RO="0" TYPE="part" MOUNTPOINT="/"
NAME="sda1" MAJ:MIN="8:1" RM="0" SIZE="200M" RO="0" TYPE="part" MOUNTPOINT="/boot/efi"
[opc@ins-oralinux-1 ~]$ lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
|-sda2 swap         10f7b32d-47ad-4fa1-96ea-2e38bef56f17 [SWAP]
|-sda3 xfs          5dfe1823-ab77-4d85-a0e9-3c4602c5f518 /
`-sda1 vfat         4A01-26AE                            /boot/efi
[opc@ins-oralinux-1 ~]$ lsblk -tS
NAME ALIGNMENT MIN-IO  OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda          0   4096 1048576    4096     512    1 mq-deadline     256 128   32M sda  2:0:0:1    disk ORACLE   BlockVolume      1.0

次に、前回作成したInstance の OCID を取得します

set instance1_ocid (oci compute instance list --display-name ins_oralinux_1 --lifecycle-state RUNNING | jq -r '.data[0].id')

Instance に iSCSI方式で volume を接続します (OCI上で設定のみ。実際にはまだ接続されていない)

oci compute volume-attachment attach --instance-id $instance1_ocid --type iscsi --volume-id $volume_ocid --display-name turorial-attach-iscsi --is-read-only false 

OCIの以下コマンドを実行すると、iSCSI接続に必要な情報が表示されます

> oci compute volume-attachment get --volume-attachment-id ocid1.volumeattachment.oc1.iad.abuwcljtlfcq7ptzrlfqii5vwrzhponit6ragvqh6h42zsy56q4t3c4sdx6q
{
  "data": {
    "attachment-type": "iscsi",
    "availability-domain": "AJtg:US-ASHBURN-AD-1",
    "chap-secret": null,
    "chap-username": null,
    "compartment-id": "secret",
    "device": null,
    "display-name": "turorial-attach-iscsi",
    "id": "ocid1.volumeattachment.oc1.iad.abuwcljtlfcq7ptzrlfqii5vwrzhponit6ragvqh6h42zsy56q4t3c4sdx6q",
    "instance-id": "ocid1.instance.oc1.iad.abuwcljtdvomlbvcqhgkj4t7wbwuwbi5enafwg62zoifemtbvwbpfjsmyavq",
    "ipv4": "169.254.2.2",                                                      <---これ
    "iqn": "iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a",   <---これ
    "is-pv-encryption-in-transit-enabled": false,
    "is-read-only": false,
    "lifecycle-state": "ATTACHED",
    "port": 3260,                                                               <---これ
    "time-created": "2019-02-03T16:53:34.880000+00:00",
    "volume-id": "ocid1.volume.oc1.iad.abuwcljt72zzqmi2pozqgpdoj33nefjooqygqvotviyzmoae774rkulpplbq"
  },
  "etag": "6cea6868b4565775dfba9efd1e2f942687d5cd905bf976033a5f213850029a45"
}

なお、上記コマンドから iscsiadm のコマンドを生成するのは面倒なので、OCIのコンソール画面からコマンドをコピペすることが出来ます

# iSCSI ターゲットを新たに定義します
sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.2:3260

# Instance再起動時に自動的にターゲットを構成するように設定
sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -n node.startup -v automatic

# iSCSIのターゲットにlogin
sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.2:3260 -l

実行例

[opc@ins-oralinux-1 ~]$ sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.2:3260
New iSCSI node [tcp:[hw=,ip=,net_if=,iscsi_if=default] 169.254.2.2,3260,-1 iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a] added
[opc@ins-oralinux-1 ~]$ sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -n node.startup -v automatic
[opc@ins-oralinux-1 ~]$
[opc@ins-oralinux-1 ~]$ sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.2:3260 -l
Logging in to [iface: default, target: iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a, portal: 169.254.2.2,3260] (multiple)
Login to [iface: default, target: iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a, portal: 169.254.2.2,3260] successful.

実行後の Block Device の状況を確認すると、正常に iSCSI 経由で50GBの /dev/sdb を認識していることを確認できます。再起動後も正常に認識しています

[opc@ins-oralinux-1 ~]$ lsblk --pairs
NAME="sdb" MAJ:MIN="8:16" RM="0" SIZE="50G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="sda" MAJ:MIN="8:0" RM="0" SIZE="46.6G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="sda2" MAJ:MIN="8:2" RM="0" SIZE="8G" RO="0" TYPE="part" MOUNTPOINT="[SWAP]"
NAME="sda3" MAJ:MIN="8:3" RM="0" SIZE="38.4G" RO="0" TYPE="part" MOUNTPOINT="/"
NAME="sda1" MAJ:MIN="8:1" RM="0" SIZE="200M" RO="0" TYPE="part" MOUNTPOINT="/boot/efi"
[opc@ins-oralinux-1 ~]$
[opc@ins-oralinux-1 ~]$ lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb
sda
|-sda2 swap         10f7b32d-47ad-4fa1-96ea-2e38bef56f17 [SWAP]
|-sda3 xfs          5dfe1823-ab77-4d85-a0e9-3c4602c5f518 /
`-sda1 vfat         4A01-26AE                            /boot/efi
[opc@ins-oralinux-1 ~]$
[opc@ins-oralinux-1 ~]$ lsblk -tS
NAME ALIGNMENT MIN-IO  OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME NAME HCTL       TYPE VENDOR   MODEL           REV TRAN
sdb          0   4096 1048576    4096     512    1 deadline        128 128   32M sdb  3:0:0:1    disk ORACLE   BlockVolume    1.0  iscsi
sda          0   4096 1048576    4096     512    1 mq-deadline     256 128   32M sda  2:0:0:1    disk ORACLE   BlockVolume    1.0
[opc@ins-oralinux-1 ~]$

Block Device(iSCSI) を使用してマウント

まずは、id を使用した device のpath を確認します。これを確認する理由は、 /dev/sdX のデバイスファイルは、再起動をトリガーにタイミングによって認識順が変化するため、再起動しても変化しないid を意識して利用したほうがよいからです。 /dev/sdX を指定してfstabを構成してしまうと、再起動するとデータが見えなくなることがあります。怖い

[opc@ins-oralinux-1 by-id]$ ls -la /dev/disk/by-id
total 0
drwxr-xr-x. 2 root root 240 Feb  3 19:13 .
drwxr-xr-x. 7 root root 140 Feb  3 19:13 ..
lrwxrwxrwx. 1 root root   9 Feb  3 19:13 scsi-3606ae1fbd32f42cb832249ed3a5f2e21 -> ../../sda
lrwxrwxrwx. 1 root root  10 Feb  3 19:13 scsi-3606ae1fbd32f42cb832249ed3a5f2e21-part1 -> ../../sda1
lrwxrwxrwx. 1 root root  10 Feb  3 19:13 scsi-3606ae1fbd32f42cb832249ed3a5f2e21-part2 -> ../../sda2
lrwxrwxrwx. 1 root root  10 Feb  3 19:13 scsi-3606ae1fbd32f42cb832249ed3a5f2e21-part3 -> ../../sda3
lrwxrwxrwx. 1 root root   9 Feb  3 19:13 scsi-3608c0ac31e5d4aceb9badd44663871ac -> ../../sdb
lrwxrwxrwx. 1 root root   9 Feb  3 19:13 wwn-0x606ae1fbd32f42cb832249ed3a5f2e21 -> ../../sda
lrwxrwxrwx. 1 root root  10 Feb  3 19:13 wwn-0x606ae1fbd32f42cb832249ed3a5f2e21-part1 -> ../../sda1
lrwxrwxrwx. 1 root root  10 Feb  3 19:13 wwn-0x606ae1fbd32f42cb832249ed3a5f2e21-part2 -> ../../sda2
lrwxrwxrwx. 1 root root  10 Feb  3 19:13 wwn-0x606ae1fbd32f42cb832249ed3a5f2e21-part3 -> ../../sda3
lrwxrwxrwx. 1 root root   9 Feb  3 19:13 wwn-0x608c0ac31e5d4aceb9badd44663871ac -> ../../sdb

device file を使用して XFSファイルシステムを作成

sudo mkfs -t xfs /dev/disk/by-id/wwn-0x608c0ac31e5d4aceb9badd44663871ac

実行例

[opc@ins-oralinux-1 by-id]$ sudo mkfs -t xfs /dev/disk/by-id/wwn-0x608c0ac31e5d4aceb9badd44663871ac
meta-data=/dev/disk/by-id/wwn-0x608c0ac31e5d4aceb9badd44663871ac isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

ファイルシステムに label を付与します (念のため。これを指定することで、/dev/disk/by-label にシンボリックリンクが生成される)

sudo xfs_admin -L tutorial_label1 /dev/disk/by-id/wwn-0x608c0ac31e5d4aceb9badd44663871ac

mount pointの作成

sudo mkdir /mnt/tutorial1

fstabの作成。以下の1行を /etc/fstab に追記する。(optionや、fsckの番号などはsample。任意に変更してもよいですが、_netdevとnofailは指定は必須です)

sudo vim /etc/fstab
/dev/disk/by-id/wwn-0x608c0ac31e5d4aceb9badd44663871ac  /mnt/tutorial1  xfs defaults,noatime,_netdev,nofail 0   2

fstab の記載方法の確認のため、mount を行う (device fileを指定していないため、fstabの記載が参照されてmountされる)

sudo mount /mnt/tutorial1

確認

[opc@ins-oralinux-1 by-id]$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  7.2G     0  7.2G   0% /dev
tmpfs          tmpfs     7.3G     0  7.3G   0% /dev/shm
tmpfs          tmpfs     7.3G  8.6M  7.3G   1% /run
tmpfs          tmpfs     7.3G     0  7.3G   0% /sys/fs/cgroup
/dev/sda3      xfs        39G  1.8G   37G   5% /
/dev/sda1      vfat      200M  9.6M  191M   5% /boot/efi
tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/1000
/dev/sdb       xfs        50G   33M   50G   1% /mnt/tutorial1 <==== mountされている

再起動しても問題なくmountされていることを確認します。

アンマウント

fstabの削除

sudo vim /etc/fstab

追記した下記の記載をコメントアウトします

# /dev/disk/by-id/wwn-0x608c0ac31e5d4aceb9badd44663871ac    /mnt/tutorial1  xfs defaults,noatime,_netdev    0   2

アンマウント

sudo umount /mnt/tutorial1/

iSCSIターゲットも削除

sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.2:3260 -u
sudo iscsiadm -m node -o delete -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.2:3260

念のため再起動

sudo shutdown -r now

OCI コンソールから、Block Volume の detachをする

パターン2 iSCSI方式 + device path有り

Block Volume を Instance へ接続(iSCSI)

パターン1で使用したvolumeを使いまわして、Instance に iSCSI方式 + device path 有り で volume を接続します (OCI上で設定のみ。実際にはまだ接続されていない)
device path は、 --device optionで指定します。

oci compute volume-attachment attach --instance-id $instance1_ocid --type iscsi --volume-id $volume_ocid --display-name turorial-attach-iscsi --is-read-only false --device /dev/oracleoci/oraclevdb

iSCSI接続

sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.7:3260
sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -n node.startup -v automatic
sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.7:3260 -l

device path を有効にしているため、このタイミングで /dev/oracleoci/oraclevdb にデバイスファイルへのシンボリックリンクが自動生成されています (便利~)

[opc@ins-oralinux-1 oracleoci]$ ls -la /dev/oracleoci/
total 0
drwxr-xr-x.  2 root root  140 Feb  3 20:25 .
drwxr-xr-x. 20 root root 3140 Feb  3 20:25 ..
lrwxrwxrwx.  1 root root    6 Feb  3 20:18 oraclevda -> ../sda
lrwxrwxrwx.  1 root root    7 Feb  3 20:18 oraclevda1 -> ../sda1
lrwxrwxrwx.  1 root root    7 Feb  3 20:18 oraclevda2 -> ../sda2
lrwxrwxrwx.  1 root root    7 Feb  3 20:18 oraclevda3 -> ../sda3
lrwxrwxrwx.  1 root root    6 Feb  3 20:25 oraclevdb -> ../sdb      <========= これ!便利!

Block Device(iSCSI) を使用してマウント

fstabの作成。以下の1行を /etc/fstab に追記する。(optionや、fsckの番号などはsample。任意に変更してもよいですが、_netdev,nofailは指定は必須です)。device path を指定できるのが便利です

sudo vim /etc/fstab
/dev/oracleoci/oraclevdb    /mnt/tutorial1  xfs defaults,noatime,_netdev,nofail 0   2

fstab の記載方法の確認のため、mount を行う (device fileを指定していないため、fstabの記載が参照されてmountされる)

sudo mount /mnt/tutorial1

確認

[opc@ins-oralinux-1 by-id]$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  7.2G     0  7.2G   0% /dev
tmpfs          tmpfs     7.3G     0  7.3G   0% /dev/shm
tmpfs          tmpfs     7.3G  8.6M  7.3G   1% /run
tmpfs          tmpfs     7.3G     0  7.3G   0% /sys/fs/cgroup
/dev/sda3      xfs        39G  1.8G   37G   5% /
/dev/sda1      vfat      200M  9.6M  191M   5% /boot/efi
tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/1000
/dev/sdb       xfs        50G   33M   50G   1% /mnt/tutorial1 <==== mountされている

再起動しても問題なくmountされていることを確認します。

アンマウント

fstabの削除

sudo vim /etc/fstab

追記した下記の記載をコメントアウトします

# /dev/oracleoci/oraclevdb       /mnt/tutorial1  xfs     defaults,noatime,_netdev        0       2

アンマウント

sudo umount /mnt/tutorial1/

iSCSIターゲットも削除

sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.7:3260 -u
sudo iscsiadm -m node -o delete -T iqn.2015-12.com.oracleiaas:4314905c-7fa9-4514-b520-ceded0a5310a -p 169.254.2.7:3260

念のため再起動

sudo shutdown -r now

OCI コンソールから、Block Volume の detachをする

パターン3 準仮想化方式 + device path有り

Block Volume を Instance へ接続(準仮想化方式)

パターン1で使用したvolumeを使いまわして、Instance に 準仮想化方式で volume を接続します

oci compute volume-attachment attach --instance-id $instance1_ocid --type paravirtualized --volume-id $volume_ocid --display-name turorial-attach-iscsi --is-read-only false --device /dev/oracleoci/oraclevdb

上記コマンドにより、Online状態のまま Oracle Linux 7.6 の Instance に /dev/sdb の device file が自動認識されています

[opc@ins-oralinux-1 dev]$ lsblk --pair
NAME="sdb" MAJ:MIN="8:16" RM="0" SIZE="50G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="sda" MAJ:MIN="8:0" RM="0" SIZE="46.6G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="sda2" MAJ:MIN="8:2" RM="0" SIZE="8G" RO="0" TYPE="part" MOUNTPOINT="[SWAP]"
NAME="sda3" MAJ:MIN="8:3" RM="0" SIZE="38.4G" RO="0" TYPE="part" MOUNTPOINT="/"
NAME="sda1" MAJ:MIN="8:1" RM="0" SIZE="200M" RO="0" TYPE="part" MOUNTPOINT="/boot/efi"

また、device path を有効にしているため、/dev/oracleoci 以下にも シンボリックリングが自動認識されています

[opc@ins-oralinux-1 dev]$ ls -la /dev/oracleoci/
total 0
drwxr-xr-x.  2 root root  140 Feb  3 20:37 .
drwxr-xr-x. 20 root root 3120 Feb  3 20:37 ..
lrwxrwxrwx.  1 root root    6 Feb  3 20:32 oraclevda -> ../sda
lrwxrwxrwx.  1 root root    7 Feb  3 20:32 oraclevda1 -> ../sda1
lrwxrwxrwx.  1 root root    7 Feb  3 20:32 oraclevda2 -> ../sda2
lrwxrwxrwx.  1 root root    7 Feb  3 20:32 oraclevda3 -> ../sda3
lrwxrwxrwx.  1 root root    6 Feb  3 20:37 oraclevdb -> ../sdb

Block Device(準仮想化方式) を使用してマウント

fstabの作成。以下の1行を /etc/fstab に追記する。(optionや、fsckの番号などはsample。任意に変更してもよいですが、_netdev,nofailは指定は必須です)。device path を指定できるのが便利です

sudo vim /etc/fstab
/dev/oracleoci/oraclevdb    /mnt/tutorial1  xfs defaults,noatime,_netdev,nofail 0   2

fstab の記載方法の確認のため、mount を行う (device fileを指定していないため、fstabの記載が参照されてmountされる)

sudo mount /mnt/tutorial1

確認

[opc@ins-oralinux-1 by-id]$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  7.2G     0  7.2G   0% /dev
tmpfs          tmpfs     7.3G     0  7.3G   0% /dev/shm
tmpfs          tmpfs     7.3G  8.6M  7.3G   1% /run
tmpfs          tmpfs     7.3G     0  7.3G   0% /sys/fs/cgroup
/dev/sda3      xfs        39G  1.8G   37G   5% /
/dev/sda1      vfat      200M  9.6M  191M   5% /boot/efi
tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/1000
/dev/sdb       xfs        50G   33M   50G   1% /mnt/tutorial1 <==== mountされている

再起動しても問題なくmountされていることを確認します。

アンマウント

fstabの削除

sudo vim /etc/fstab

追記した下記の記載をコメントアウトします

# /dev/oracleoci/oraclevdb       /mnt/tutorial1  xfs     defaults,noatime,_netdev        0       2

アンマウント

sudo umount /mnt/tutorial1/

念のため再起動

sudo shutdown -r now

OCI コンソールから、Block Volume の detachをする

参考URL

チュートリアル一覧
https://community.oracle.com/docs/DOC-1019313

永続的なブロックデバイスの命名
https://wiki.archlinux.jp/index.php/%E6%B0%B8%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E5%91%BD%E5%90%8D#by-label

fstab
https://help.ubuntu.com/community/Fstab

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1