Ubuntu 16.04: LVMでファイルシステムを拡張・縮小する


Table of Contents

1 動作環境

LVMを有効にしてUbuntu 16.04をインストールしています。

0001_LVM.png

 

/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/partitionsmajor 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 datamode. 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/vdbWelcome 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 でヘルプ): nPartition 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, default167772159):Created a new partition 1 of type ‘Linux’ and of size 80 GiB.コマンド (m でヘルプ): wThe 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/vdb1Volume 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/partitionsmajor 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を試す」をクリックします。

0002_LiveDVD.png

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/rootfsck from util-linux 2.27.1/dev/mapper/ubuntu–vg-root: clean, 208635/10395648 files,1987952/41553920 blocksresize2fs 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% /

Android | Linux | SDL - Narrow Escape