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

# はじめに

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

この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の削除

```a
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の削除

```a
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の削除

```a
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