yamada-hakase’s blog

LinuxなどのOSSやクラウドについて

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

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. ブロックボリュームをマウントする」以降を参照のこと。

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"