VirtualBoxのディスク容量を増やす方法(「No space left on device」対策)
はじめに
(本記事は再投稿です。)
VirtulaBox上のCentOSでシェルスクリプトを動かしていたら以下のエラーを吐いて途中で動かなくなってしまいました。
No space left on device
ディスク容量を増やして対応しようとしたところ、色々苦労したので備忘のため手順を残しておきます。
初学者のためいろいろ間違っていると思います。。ご指摘いただけると嬉しいです。
手順
8GB -> 32Gbに増やしてみます。
仮想的なサイズを増やす
まず、VirtualBox Managerで以下の流れのとおり仮想的なサイズを拡張します。こちらが参考になります。
ファイル>ツール>仮想メディアマネージャー>対象のストレージを選択>サイズを変更して「適用」
しかし、これだけではdf
の結果は変わりません。
[root@localhost ~]# df -h /
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 6.2G 1.3G 5.0G 20% /
ただ、デバイス全体で見ると/dev/sda/
自体は32GBに増えていることが分かります。
[root@localhost ~]# lsblk -ip
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 32G 0 disk
|-/dev/sda1 8:1 0 1G 0 part /boot
`-/dev/sda2 8:2 0 7G 0 part
|-/dev/mapper/centos-root 253:0 0 6.2G 0 lvm /
`-/dev/mapper/centos-swap 253:1 0 820M 0 lvm [SWAP]
/dev/sr0 11:0 1 1024M 0 rom
df
の結果に反映させるには/
にマウントしている/dev/mapper/centos-root
を拡張する必要がありますが、type
を見るとLVM
となっているため、LVMを使用していることが分かります。
そのため、パーテーション -> 物理ボリューム -> 論理ボリュームの順番で拡張してあげる必要があります。
パーテーションとボリュームの確認
パーテーションの確認
cfdisk
コマンドでパーテーションを確認します。
cfdisk (util-linux 2.23.2)
ディスクドライブ: /dev/sda
サイズ: 34359738368 バイト. 34.3 GB
ヘッド: 255 トラック当たりのセクタ: 63 シリンダ: 4177
名前 フラグ パーティションタイFSタイプ [ラベル] サイズ (MB)
------------------------------------------------------------------------------------------------------------------------------
基本/論理 空き領域 1.05 *
sda1 ブート 基本領域 xfs 1073.75 *
sda2 基本領域 LVM2_member 7515.15 *
基本/論理 空き領域 25769.81 *
sda2の後ろに、先ほど追加した領域があることが分かります。
この空き領域をsda2に渡してあげることが必要になります。
ちなみに、LVMを使用していない場合はここでパーテーションを選んで「Resize」=>「Write」すれば簡単にサイズを変更できます。
物理ボリュームの確認
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <7.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1791
Free PE 0
Allocated PE 1791
PV UUID zMIdTS-ntPY-1SS6-tWlv-e4TK-5wLY-2ceZ7a
論理ボリュームの確認
最終的にはこれを拡張してあげる必要があります。
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID K0d2iQ-66qd-LFxg-YmXV-gOai-TaTo-E72wa1
LV Write Access read/write
LV Creation host, time localhost, 2024-02-17 20:39:55 +0900
LV Status available
# open 2
LV Size 820.00 MiB
Current LE 205
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID oIjimO-Y0Vq-csuL-5IEl-FTsp-KC66-n5dTdB
LV Write Access read/write
LV Creation host, time localhost, 2024-02-17 20:39:55 +0900
LV Status available
# open 1
LV Size <6.20 GiB
Current LE 1586
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
パーテーションとボリュームの拡張
パーテーションの拡張
以下のコマンドでパーテーション/dev/sda2
に空き領域を渡します。
[root@localhost ~]# parted /dev/sda
(parted) resizepart 2 100%
cfdisk
で改めて確認すると、空き領域がすべて/dev/sda2
に渡されていることが分かります。
cfdisk (util-linux 2.23.2)
ディスクドライブ: /dev/sda
サイズ: 34359738368 バイト. 34.3 GB
ヘッド: 255 トラック当たりのセクタ: 63 シリンダ: 4177
名前 フラグ パーティションタイFSタイプ [ラベル] サイズ (MB)
------------------------------------------------------------------------------------------------------------------------------
基本/論理 空き領域 1.05 *
sda1 ブート 基本領域 xfs 1073.75 *
sda2 基本領域 LVM2_member 33284.95 *
物理ボリュームの拡張
以下のコマンドを使います。
指定した物理ボリュームを拡張したパーテーションサイズに合わせて自動的に拡張します。
[root@localhost ~]# pvresize /dev/sda2
Physical volume "/dev/sda2" changed
1 physical volume(s) esized or updated / 0 physical volume(s) not resized
増えていますね。
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <31.00 GiB / not usable 2.00 MiB <===★
Allocatable yes
PE Size 4.00 MiB
Total PE 7935
Free PE 6144
Allocated PE 1791
PV UUID zMIdTS-ntPY-1SS6-tWlv-e4TK-5wLY-2ceZ7a
論理ボリュームの拡張
論理ボリュームである/dev/centos/root
を拡張します。
-l +100%FREE
オプションは、利用可能な全ての空き領域を使用して論理ボリュームを拡張することを指示します。
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from <6.20 GiB (1586 extents) to <30.20 GiB (7730 extents).
Logical volume centos/root successfully resized.
こちらもちゃんと増えています。
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID K0d2iQ-66qd-LFxg-YmXV-gOai-TaTo-E72wa1
LV Write Access read/write
LV Creation host, time localhost, 2024-02-17 20:39:55 +0900
LV Status available
# open 2
LV Size 820.00 MiB
Current LE 205
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID oIjimO-Y0Vq-csuL-5IEl-FTsp-KC66-n5dTdB
LV Write Access read/write
LV Creation host, time localhost, 2024-02-17 20:39:55 +0900
LV Status available
# open 1
LV Size <30.20 GiB <===★
Current LE 7730
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
XFSファイルシステムの拡張
最後に、論理ボリューム上のXFSファイルシステムのサイズを増やします。
[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=406016 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1624064, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal 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 1624064 to 7915520
最終確認
/dev/mapper/centos-root
のサイズが増えていることが確認できました!
[root@localhost ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 908M 0 908M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 911M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/mapper/centos-root 31G 1.3G 29G 5% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
[root@localhost ~]# lsblk -ip
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 32G 0 disk
|-/dev/sda1 8:1 0 1G 0 part /boot
`-/dev/sda2 8:2 0 31G 0 part
|-/dev/mapper/centos-root 253:0 0 30.2G 0 lvm /
`-/dev/mapper/centos-swap 253:1 0 820M 0 lvm [SWAP]
/dev/sr0 11:0 1 1024M 0 rom
Discussion