1. はじめに
以前に書いた以下のエントリでは、追加したブロックボリュームをLVM(論理ボリュームマネージャー)で構成した。
しかしクラウドや仮想サーバー環境では既存のボリュームを簡単に拡張できるので、使わないことも多い。そこで今回はLVMを使用しない方法を説明する。
既存のボリュームを拡張する方法
Oracle Cloud Infrastructureでボリュームを拡張するには以下の方法がある。この中で1番目の方法を説明する。
- オフラインにした既存のボリュームを拡張する
- ボリュームのバックアップを、より大きなサイズのボリュームにリストアする
- 既存のボリュームを、より大きなサイズのボリュームにクローンする
2. 前提条件
前回の補足的な位置づけなので、ブロックボリュームは作成&アタッチ済みで、「5-2. ディスクパーティションを作成する」以降の差分だけを書くことにする。
3. 追加したブロックボリュームを使えるように構成する
3-1. パーティション構成を確認する
追加したブロックボリュームを確認する。すると/dev/sdb
として追加され、コンシステンス・デバイス・パス/dev/oracleoci/oraclevdb
として定義されていることがわかる。
# 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
# 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
でもよい。
# parted -s -a optimal /dev/oracleoci/oraclevdb \
mklabel gpt \
mkpart primary 0% 100%
パーティション情報を確認するとsdb1
が定義されていることがわかる。
# 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
# 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
を指定する。
# 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を指定する。
コンシステンス・デバイス・パス使用
# パーティション作成
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"
コンシステンス・デバイス・パス不使用
# パーティション作成
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"