OCI Computeでブロックボリュームをマウントする（LVM不使用編）

# 1. はじめに

以前に書いた以下のエントリでは、追加したブロックボリュームをLVM（論理ボリュームマネージャー）で構成した。

* [OCI Computeでブロックボリュームをマウントする](https://qiita.com/yamada-hakase/items/4360d723245126f43eb9)

しかしクラウドや仮想サーバー環境では既存のボリュームを簡単に拡張できるので、使わないことも多い。そこで今回はLVMを使用しない方法を説明する。

**既存のボリュームを拡張する方法**
Oracle Cloud Infrastructureでボリュームを拡張するには以下の方法がある。この中で1番目の方法を説明する。

* オフラインにした既存のボリュームを拡張する
* ボリュームのバックアップを、より大きなサイズのボリュームにリストアする
* 既存のボリュームを、より大きなサイズのボリュームにクローンする

# 2. 前提条件

[前回](https://qiita.com/yamada-hakase/items/4360d723245126f43eb9)の補足的な位置づけなので、ブロックボリュームは作成＆アタッチ済みで、「5-2. ディスクパーティションを作成する」以降の差分だけを書くことにする。

# 3. 追加したブロックボリュームを使えるように構成する

### 3-1. パーティション構成を確認する
追加したブロックボリュームを確認する。すると`/dev/sdb`として追加され、コンシステンス・デバイス・パス`/dev/oracleoci/oraclevdb`として定義されていることがわかる。

```shell-session
# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  512G  0 disk
sda      8:0    0 46.6G  0 disk
├─sda2   8:2    0    8G  0 part [SWAP]
├─sda3   8:3    0 38.4G  0 part /
└─sda1   8:1    0  200M  0 part /boot/efi
```

```shell-session
# ll /dev/oracleoci/oraclevd*
lrwxrwxrwx. 1 root root 6 Jul 16 19:13 /dev/oracleoci/oraclevda -> ../sda
lrwxrwxrwx. 1 root root 7 Jul 16 19:13 /dev/oracleoci/oraclevda1 -> ../sda1
lrwxrwxrwx. 1 root root 7 Jul 16 19:13 /dev/oracleoci/oraclevda2 -> ../sda2
lrwxrwxrwx. 1 root root 7 Jul 16 19:13 /dev/oracleoci/oraclevda3 -> ../sda3
lrwxrwxrwx. 1 root root 6 Jul 16 19:13 /dev/oracleoci/oraclevdb -> ../sdb
```

### 3-2. ディスクパーティションを作成する

LVMは使用しないので、LVMフラグを付けずに作成する。ここではコンシステンス・デバイス・パスを指定しているが`/dev/sdb`でもよい。

```shell-session
# parted -s -a optimal /dev/oracleoci/oraclevdb \
   mklabel gpt \
   mkpart primary 0% 100%
```

パーティション情報を確認すると`sdb1`が定義されていることがわかる。

```shell-session
# parted /dev/oracleoci/oraclevdb print
Model: ORACLE BlockVolume (scsi)
Disk /dev/sdb: 550GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  550GB  550GB               primary
```

```shell-session
# lsblk -o +UUID
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT UUID
sdb      8:16   0  512G  0 disk
└─sdb1   8:17   0  512G  0 part            c31941dc-9bae-4680-9c35-8f195b0db30d
sda      8:0    0 46.6G  0 disk
├─sda2   8:2    0    8G  0 part [SWAP]     d2f67c75-3f12-4abb-9c5a-ae8c23426d7c
├─sda3   8:3    0 38.4G  0 part /          666196a2-64e0-4535-a3f8-7d746a37d900
└─sda1   8:1    0  200M  0 part /boot/efi  6F4C-7CE8
```
### 3-3. ファイルシステムを作成する

ファイルシステムをxfsでフォーマットする。ext4のときには、代わりに`mkfs.ext4`を指定する。

```shell-session
# mkfs.xfs /dev/oracleoci/oraclevdb1
meta-data=/dev/oracleoci/oraclevdb1 isize=256    agcount=4, agsize=33554304 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=134217216, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=65535, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
```

### 3-4. 次の手順は

残るは以下の作業である。この部分は同じなので「5-7. ブロックボリュームをマウントする」以降を参照のこと。

* マウントポイントの作成
* /etc/fstabの作成 
* ファイルシステムのマウント

# 4. コピペ用まとめバージョン
コンシステンス・デバイス・パス使用の有無によって一番違うのは`/etc/fstab`である。使用しないときは必ずUUIDを指定する。

**コンシステンス・デバイス・パス使用**

```shell-session
# パーティション作成
parted -s -a optimal /dev/oracleoci/oraclevdb mklabel gpt mkpart primary 0% 100%

# ファイルシステム作成
mkfs.xfs /dev/oracleoci/oraclevdb1

# マウントポイント作成
mkdir /mnt/vol01
chown opc:opc /mnt/vol01

# /etc/fstab元ネタ。次の行を/etc/fstabの末尾に追加する
echo "/dev/oracleoci/oraclevdb1    /mnt/vol01 xfs defaults,_netdev,nofail 0 2"
```

**コンシステンス・デバイス・パス不使用**

```shell-session
# パーティション作成
parted -s -a optimal /dev/sdb1 mklabel gpt mkpart primary 0% 100%

# ファイルシステム作成
mkfs.xfs /dev/sdb1

# マウントポイント作成
mkdir /mnt/vol01
chown opc:opc /mnt/vol01

# /etc/fstab元ネタ。次の行を/etc/fstabの末尾に追加する
echo UUID= ; lsblk -o +UUID | grep sdb1 | awk '{print $NF}' ; echo "    /mnt/vol01 xfs defaults,_netdev,nofail 0 2"
```