LVMを用いたディスク追加とファイルシステムの拡張と、ファイルシステムの縮小とディスクの削除について記載します。
Table of Contents
1 動作環境
LVMを有効にしてUbuntu 16.04をインストールしています。
/dev/vda1 | マウントポイント/boot用の領域 |
/dev/vda5 | ボリュームグループubuntu-vg用の物理ボリューム |
/dev/ubuntu-vg/root | マウントポイント/用の論理ボリューム(実体はdm-0) |
/dev/ubuntu-vg/swap_1 | スワップ領域用の論理ボリューム(実体はdm-1) |
/dev/vdb | 追加ディスク |
/proc/partitionsの内容は以下のとおりです。
$ cat /proc/partitions major minor #blocks name <snip> 253 0 83886080 vda 253 1 498688 vda1 253 2 1 vda2 253 5 83384320 vda5 11 0 1048575 sr0 252 0 82333696 dm-0 252 1 1048576 dm-1 253 16 83886080 vdb
カーネルかinitramfsに問題があるのか、LVMが有効な場合にルートファイルシステムのマウントに5秒ほどの遅延があるようです。
今後の改善を期待します。
[ 1.121681] FDC 0 is a S82078B [ 1.804980] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x30e5debfb38, max_i dle_ns: 440795265279 ns [ 6.429531] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null) [ 7.308536] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN)
2 LVMへディスクを追加してext4ファイルシステムを拡張する
Ubuntu 16.04を起動したまま実行します。
2.1 追加ディスクのパーティション作成
fdiskで追加ディスクのパーティションを作成します。ここではプライマリディスクにしてディスク全体を使います。
$ sudo fdisk /dev/vdb Welcome to fdisk (util-linux 2.27.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. コマンド (m でヘルプ): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. パーティション番号 (1-4, default 1): First sector (2048-167772159, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-167772159, default 167772159): Created a new partition 1 of type 'Linux' and of size 80 GiB. コマンド (m でヘルプ): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
2.2 物理ボリュームの作成
pvcreateでvda1を物理ボリュームとして初期化します。
$ sudo pvcreate /dev/vdb1 Physical volume "/dev/vdb1" successfully created
2.3 ボリュームグループへ追加
vgextendで既存のボリュームグループubuntu-vgに物理ボリュームを追加します。
$ sudo vgextend ubuntu-vg /dev/vdb1 Volume group "ubuntu-vg" successfully extended
pvdisplayで物理ボリュームの一覧に表示されます。
$ sudo pvdisplay --- Physical volume --- PV Name /dev/vda5 VG Name ubuntu-vg PV Size 79.52 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 20357 Free PE 0 Allocated PE 20357 PV UUID 9YrynY-3kGZ-PGiP-d7W6-8k21-JQW1-Echp5a --- Physical volume --- PV Name /dev/vdb1 VG Name ubuntu-vg PV Size 80.00 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 20479 Free PE 20479 Allocated PE 0 PV UUID oJ75n9-BQbp-zFQd-t0Ct-ChNL-zpzT-MTzWbd
2.4 論理ボリュームの拡張
lvextendで論理ボリュームrootを拡張します。
$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/root
dm-0のblockがvdb1の分だけ増加しました。
$ cat /proc/partitions major minor #blocks name <snip> 253 0 83886080 vda 253 1 498688 vda1 253 2 1 vda2 253 5 83384320 vda5 11 0 1048575 sr0 252 0 166215680 dm-0 252 1 1048576 dm-1 253 16 83886080 vdb 253 17 83885056 vdb1
2.5 ext4ファイルシステムの拡張
拡張前のサイズは以下のとおりです。
$ df -h / Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-root 78G 5.0G 69G 7% /
resize2fsをマウントポイント/のext4ファイルシステムを拡張します。
$ sudo resize2fs /dev/ubuntu-vg/root
拡張後のサイズは以下のとおりです。
$ df -h / Filesystem Size Used Avail Use% Mounted on
3 ext4ファイルシステムを縮小してLVMからディスクを削除する
ext4ファイルシステムの縮小にはマウントポイント/をumountする必要があるため、ここではLiveDVDを起動し、以下の作業を実行します。
また、ext4ファイルシステムの残り容量が削除するディスクサイズよりも大きい必要があります。
3.1 LiveDVDの起動
Ubuntu 16.04のインストールディスクを起動し、「Ubuntuを試す」をクリックします。
3.2 ディスクサイズの確認
物理ボリュームvdb1のディスクサイズを確認します。
fdisk -lだとLVMのメタデータも含まれるのでpvdisplayで表示します。
$ sudo pvdisplay /dev/vdb1 --- Physical volume --- PV Name /dev/vdb1 VG Name ubuntu-vg PV Size 80.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 20479 Free PE 0 Allocated PE 20479 PV UUID oJ75n9-BQbp-zFQd-t0Ct-ChNL-zpzT-MTzWbd
縮小すべきサイズは4MiB x 20479 = 81916MiBであることが分かります。
3.3 ext4ファイルシステムと論理ボリュームの縮小
lvreduceの-rオプションを用いればext4ファイルシステムと論理ボリュームの縮小を一度に実行できます。
$ sudo lvreduce -r -L -81916M /dev/ubuntu-vg/root fsck from util-linux 2.27.1 /dev/mapper/ubuntu--vg-root: clean, 208635/10395648 files, 1987952/41553920 blocks resize2fs 1.42.13 (17-May-2015) Resizing the filesystem on /dev/mapper/ubuntu--vg-root to 20583424 (4k) blocks. The filesystem on /dev/mapper/ubuntu--vg-root is now 20583424 (4k) blocks long. Size of logical volume ubuntu-vg/root changed from 158.52 GiB (40580 extents) to 78.52 GiB (20101 extents). Logical volume root successfully resized.
3.4 ボリュームグループから物理ボリュームを削除
vgreduceの前にpvmovedを実行し、ディスク内の使用しているデータを別のディスクに移動する必要があります。
ここではたまたま先ほどのext4ファイルシステムと論理ボリュームの縮小でディスクにデータがなくなったので、pvmoveは不要です。
$ sudo pvmove /dev/vdb1 /dev/vda5 No free extents on physical volume "/dev/vda5". No specified PVs have space available.
vgreduceでボリュームグループから物理ボリュームを削除します。
$ sudo vgreduce ubuntu-vg /dev/vdb1 Removed "/dev/vdb1" from volume group "ubuntu-vg"
3.5 物理ボリュームを削除
pvremoveで物理ボリュームを削除します。
$ sudo pvremove /dev/vdb1 Labels on physical volume "/dev/vdb1" successfully wiped
pvdisplayで/dev/vdb1が表示されなくなりました。
$ sudo pvdisplay --- Physical volume --- PV Name /dev/vda5 VG Name ubuntu-vg PV Size 79.52 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 20357 Free PE 0 Allocated PE 20357 PV UUID 9YrynY-3kGZ-PGiP-d7W6-8k21-JQW1-Echp5a
LiveDVDをシャットダウンし、HDDからUbuntu 16.04を起動するとファイルシステムのサイズが縮小されていることを確認できます。
$ df -h / Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-root 78G 5.0G 69G 7% /