ConoHaは標準で50GBのSSDが仮想サーバーに付いてきます。そしてオプションで250GBや500GBのSSDを追加することができます。この追加したストレージは、仮想サーバーからは別のドライブと見なされます(Linuxでは/dev/vdaと/dev/vdbになる)。
「50GBで運用していて、足りなくなったので250GBを追加したい」といったケースでは、合わせて300GBの1ドライブとして扱いたくなるでしょう。幸いConoHaのCentOS7系のイメージはLVMが使われているので、以下の手順で2つのドライブをまとめて1ドライブとして扱うことができます。
(注) ConoHaのCentOS 7.3以降のイメージは、LVMではなくext4ファイルシステムが使われているようなので、この記事の手順を使うことはできません
やり方
ConoHaのCentOS7イメージアは以下のようなパーティション構成になっていて、ファイルシステムはxfsです。ほぼデフォルトのインストールです。そして、追加したSSDはマウントされていません。
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 48G 1.4G 47G 3% /
devtmpfs devtmpfs 487M 0 487M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 13M 484M 3% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda1 xfs 497M 170M 328M 35% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
LVMは下記のようなレイアウトになっています。一つの物理ボリューム(PV)。そしてcentosと言う名前の一つのボリュームグループ(VG)です。論理ボリューム(LV)は2つあって、ルートファイルシステムとスワップに割り当てられています(VG Nameは環境によって異なる場合があります)。
# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 49.51 GiB
PE Size 4.00 MiB
Total PE 12674
Alloc PE / Size 12663 / 49.46 GiB
Free PE / Size 11 / 44.00 MiB
VG UUID YwWgHt-3qRA-0VNA-mwx8-4T8Z-SJWq-bX2kuC
# pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name centos
PV Size 49.51 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12674
Free PE 11
Allocated PE 12663
PV UUID OQ0g7d-2BeQ-PXOr-B9lK-hfmU-8F2K-ZR4h8m
パーティショニング
まず追加SSD全体をLVMの物理ボリュームとしてパーティショニングします。fdiskでも良いですが、ここではpartedを使います。
# parted /dev/vdb
print で現在の状況を表示します。
# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)
そして、
- mklabelでラベルを与えて
- mkpartで領域の確保を行い
- set でLVMフラグを立てます。
mkpartの第3引数は、0以下の値を渡すとディスクの最終セクターを指定したことになります。
(parted) mklabel gpt
(parted) mkpart primary 1 -1
(parted) set 1 lvm on
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 215GB 215GB primary lvm
そして、quitでpartedを終了します。これで/dev/vdb1ができているはずです。
物理ボリュームの作成
作成したパーティションに物理ボリュームを作成します。
# pvcreate /dev/vdb1
Physical volume "/dev/vdb1" successfully created
ボリュームグループの作成
作成した物理ボリュームを既存のcentosボリュームグループに追加します。その後vgdisplayを実行すると、容量が増えていることが確認できます。出力が長くなるので載せませんが、vgdisplayに -v オプションを付けると、2つの物理ボリュームが見えるはずです。
# vgextend centos /dev/vdb1
Volume group "centos" successfully extended
# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 249.50 GiB
PE Size 4.00 MiB
Total PE 63873
Alloc PE / Size 12663 / 49.46 GiB
Free PE / Size 51210 / 200.04 GiB
VG UUID YwWgHt-3qRA-0VNA-mwx8-4T8Z-SJWq-bX2kuC
論理ボリュームの拡張
次にボリュームグループの新しい空き領域を、既存の論理ボリュームに割り当てます。以下のコマンドは空き領域を全てルートファイルシステムに割り当てています。lvdisplayを実行すると、ディスクサイズ容量が増えていることが確認できます。
# lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from 47.46 GiB (12151 extents) to 247.50 GiB (63361 extents).
Logical volume root successfully resized.
# lvdisplay /dev/centos/root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID YcfoSu-M0o7-cvWK-Op2I-LxyG-0gHK-ffypmV
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2015-12-24 14:02:13 +0900
LV Status available
# open 1
LV Size 247.50 GiB
Current LE 63361
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
xfsファイルシステムを拡張する
最後にxfsファイルシステムを拡張して、空き領域をファイルシステムに認識させます。これには xfs_growfs コマンドを使います。
# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=3110656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=12442624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=6075, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12442624 to 64881664
#
dfなどで空き容量が増えていることが確認できれば完了です。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 248G 1.4G 247G 1% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 13M 484M 3% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda1 497M 170M 328M 35% /boot
tmpfs 100M 0 100M 0% /run/user/0