LinuCエヴァンジェリストの鯨井貴博@opensourcetechです。
ディスク容量がなくなった際に、LVM(Logical Volume Manager)を使って容量を増やす方法の紹介です。
まず、現状のディスク容量の確認から。
以下を見るとわかりますが、/dev/mapper/cl-rootの使用率が100%となり、全く余裕がない状態です。
[root@centos8test /]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 897M 0 897M 0% /dev tmpfs 914M 0 914M 0% /dev/shm tmpfs 914M 8.5M 906M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/mapper/cl-root 17G 17G 132K 100% / /dev/sda1 976M 128M 782M 15% /boot tmpfs 183M 0 183M 0% /run/user/0
この状態だと、ファイルをディスクに書き込もうとしても、以下のようにエラーとなります。
※カーネルの再構築中にディスク容量が不足になっています。
cp: '/lib/modules/5.7.10/kernel/drivers/infiniband/hw/cxgb4/iw_cxgb4.ko' の書き込みエラー: No space left on device make[1]: *** [scripts/Makefile.modinst:33: drivers/infiniband/hw/cxgb4/iw_cxgb4.ko] エラー 1 make: *** [Makefile:1353: _modinst_] エラー 2
容量不足に陥ったPCの電源を落とした後、物理的なディスク(HDD)を追加します。
今回は、Virtualbox上でディスク追加しました。
PCの起動。
追加されたディスクが認識されているか、確認します。
[root@centos8test ~]# dmesg | grep sdb [ 2.979261] sd 3:0:0:0: [sdb] 41943040 512-byte logical blocks: (21.5 GB/20.0 GiB) [ 2.979671] sd 3:0:0:0: [sdb] Write Protect is off [ 2.979980] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 2.979987] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.981727] sd 3:0:0:0: [sdb] Attached SCSI disk [root@centos8test ~]# dmesg | grep sdc [root@centos8test ~]# dmesg | grep sdb [ 2.979261] sd 3:0:0:0: [sdb] 41943040 512-byte logical blocks: (21.5 GB/20.0 GiB) [ 2.979671] sd 3:0:0:0: [sdb] Write Protect is off [ 2.979980] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 2.979987] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.981727] sd 3:0:0:0: [sdb] Attached SCSI disk [root@centos8test ~]# ll /dev/sdb brw-rw----. 1 root disk 8, 16 7月 24 09:35 /dev/sdb
pvcreateコマンドで、物理ボリューム(PV)の作成します。
pvdisplayコマンドで確認もしておきます。
[root@centos8test ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created. [root@centos8test ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name cl PV Size <19.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 4863 Free PE 0 Allocated PE 4863 PV UUID 1nn1XI-1AAD-LUN3-iRG5-8yMu-VZvl-2Ir5L4 "/dev/sdb" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID liQMQG-AZwk-ZONh-64fM-rR9U-UnJo-6IoS46
続いて、ボリュームグループ(VG)の拡張。
vgdisplayコマンドで確認、vgextendコマンドで物理ボリューム(/dev/sdb)を追加します。
[root@centos8test ~]# vgdisplay --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 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 <19.00 GiB PE Size 4.00 MiB Total PE 4863 Alloc PE / Size 4863 / <19.00 GiB Free PE / Size 0 / 0 VG UUID 76eOzR-XLIy-8ViI-peX1-sfvw-YqiK-frgAF1 [root@centos8test ~]# vgextend cl /dev/sdb Volume group "cl" successfully extended [root@centos8test ~]# vgdisplay --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 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 38.99 GiB PE Size 4.00 MiB Total PE 9982 Alloc PE / Size 4863 / <19.00 GiB Free PE / Size 5119 / <20.00 GiB VG UUID 76eOzR-XLIy-8ViI-peX1-sfvw-YqiK-frgAF1
そして、論理ボリューム(LV)の増加。
対象となるのは、/dev/cl/rootです。
[root@centos8test ~]# lvdisplay --- Logical volume --- LV Path /dev/cl/swap LV Name swap VG Name cl LV UUID NGr38q-VAUk-AAXz-JvDF-N4c2-BWxG-Xm4oP4 LV Write Access read/write LV Creation host, time localhost, 2020-07-23 11:13:59 +0900 LV Status available # open 2 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/cl/root LV Name root VG Name cl LV UUID jz1MtB-YopA-uvzG-ejzv-nPRR-UIbY-dKSiV1 LV Write Access read/write LV Creation host, time localhost, 2020-07-23 11:13:59 +0900 LV Status available # open 1 LV Size <17.00 GiB Current LE 4351 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
論理ボリュームの容量拡張。
「+100%FREE」をオプションに指定して、物理ボリュームにで割り当てることが可能な全ての容量を拡張対象とします。
[root@centos8test ~]# lvextend -l +100%FREE /dev/cl/root Size of logical volume cl/root changed from <17.00 GiB (4351 extents) to 36.99 GiB (9470 extents). Logical volume cl/root successfully resized. [root@centos8test ~]# lvdisplay --- Logical volume --- LV Path /dev/cl/swap LV Name swap VG Name cl LV UUID NGr38q-VAUk-AAXz-JvDF-N4c2-BWxG-Xm4oP4 LV Write Access read/write LV Creation host, time localhost, 2020-07-23 11:13:59 +0900 LV Status available # open 2 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/cl/root LV Name root VG Name cl LV UUID jz1MtB-YopA-uvzG-ejzv-nPRR-UIbY-dKSiV1 LV Write Access read/write LV Creation host, time localhost, 2020-07-23 11:13:59 +0900 LV Status available # open 1 LV Size 36.99 GiB Current LE 9470 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
仕上げに、ファイルシステムで認識しているサイズを拡張します。
これを行わないと、追加した論理ボリュームサイズが認識されないので、注意が必要です。
なお、今回使われているファイルシステムはXFSなのでxfs_growfsコマンドを使っていますが、ext4の場合はresize2fsコマンドを使います。
[root@centos8test ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 897M 0 897M 0% /dev tmpfs 914M 0 914M 0% /dev/shm tmpfs 914M 8.5M 906M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/mapper/cl-root 17G 17G 32M 100% / /dev/sda1 976M 128M 782M 15% /boot tmpfs 183M 0 183M 0% /run/user/0 [root@centos8test ~]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=917728k,nr_inodes=229432,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel) bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset) cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,rdma) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=17730) mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M) debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel) /dev/sda1 on /boot type ext4 (rw,relatime,seclabel) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=187088k,mode=700) [root@centos8test ~]# xfs_growfs /dev/cl/root meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=1113856 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=4455424, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 4455424 to 9697280 [root@centos8test ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 897M 0 897M 0% /dev tmpfs 914M 0 914M 0% /dev/shm tmpfs 914M 8.5M 906M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/mapper/cl-root 37G 18G 20G 47% / /dev/sda1 976M 128M 782M 15% /boot tmpfs 183M 0 183M 0% /run/user/0
これでディスク容量の拡張、完了です!