VirtualBox上のCentOS7にあれやこれや入れてたら、仮想HDDの2GBでは少な過ぎたようで、ルートパスの使用率が96%に。
$ df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/centos-root 1361920 1306184 55736 96% /
devtmpfs 242508 0 242508 0% /dev
tmpfs 251028 0 251028 0% /dev/shm
tmpfs 251028 4408 246620 2% /run
tmpfs 251028 0 251028 0% /sys/fs/cgroup
/dev/sda1 508588 136960 371628 27% /boot
なにも考えず、とりあえず仮想HDDをもう2GB追加してルートパス /
を拡張してみます。
#VirtualBoxで新しい仮想HDDを追加
追加するVMのストレージ設定画面を開きます。
「コントローラー: SATA」を選択するとの右のほうにHDD追加ボタン
がでるので、それをクリックします。
「新規ディスクの作成」をクリックします。
私の場合は、既存のディスクがVHDだったので同じVHDを選択しました。
デフォルトのVDIでも結構です。
可変サイズを選択。固定でも大丈夫です。
(固定だといきなり指定サイズのファイルが作成される)
仮想ディスクイメージのファイル名と、サイズを設定します。
最後に作成をクリックするとDiskが追加されます。
#追加した仮想HDDをLinuxのボリュームへ追加
ルート /
の空きを増やすには以下の作業が必要です。
- 追加した仮想HDDにパーティションを作成
- 作成したパーティションで物理ボリュームを作成
- / にマウントしている論理ボリュームが割当てられているボリュームグループへ、物理ボリュームを追加
- 論理ボリュームを拡張
- ファイルシステムを拡張
CentOS7に加えて、Ubuntu Server 14.04LTSでも試しています。
Ubuntuのrootボリュームグループ名はホスト名によって変るので、hostname
コマンドで確認して置き換えて下さい。
##パーティション作成
まずは、認識されているHDDを探します。
デバイス名はsd?(もしくはhd?)を探します。
$ ll /dev/sd*
brw-rw----. 1 root disk 8, 0 2月 00 00:00 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 00 00:00 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 00 00:00 /dev/sda2
brw-rw----. 1 root disk 8, 16 2月 00 00:00 /dev/sdb
$ ll /dev/sd*
brw-rw----. 1 root disk 8, 0 2月 00 00:00 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 00 00:00 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 00 00:00 /dev/sda2
brw-rw----. 1 root disk 8, 5 2月 00 00:00 /dev/sda5
brw-rw----. 1 root disk 8, 16 2月 00 00:00 /dev/sdb
まだパーティションが作成されていない /dev/sdb が見つかりました。
fdiskを使用して、/dev/sdb に新しいパーティションを追加します。
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x1c46cb44.
コマンド (m でヘルプ):
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xf591a1f7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help):
p
コマンドで現在のパーティションを確認します。
コマンド (m でヘルプ): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x1c46cb44
デバイス ブート 始点 終点 ブロック Id システム
初期状態なので何もありません。
n
コマンド新しいプライマリ・パーティションを作成します。
パーティション番号は1、2GiB全て割当てるために、セクターは全て(2048-4194303)使用します。
※2048開始なのは、あらゆるRAIDでストライプ・サイズの倍数になっているから、セクタ位置合せで都合がよいのだとか。
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-4194303, 初期値 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, 初期値 4194303): 4194303
Partition 1 of type Linux and of size 2 GiB is set
コマンド (m でヘルプ): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x1c46cb44
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 4194303 2096128 83 Linux
新しいパーティション /dev/sdb1 が作成されました。
w
コマンドでパーティションを書込みます。
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
ファイルシステムからも /dev/sdb1 が確認できます。
$ ll /dev/sd*
brw-rw----. 1 root disk 8, 0 2月 00 00:00 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 00 00:00 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 00 00:00 /dev/sda2
brw-rw----. 1 root disk 8, 16 2月 00 00:00 /dev/sdb
brw-rw----. 1 root disk 8, 17 2月 00 00:00 /dev/sdb1
$ ll /dev/sd*
brw-rw----. 1 root disk 8, 0 2月 00 00:00 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 00 00:00 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 00 00:00 /dev/sda2
brw-rw----. 1 root disk 8, 5 2月 00 00:00 /dev/sda5
brw-rw----. 1 root disk 8, 16 2月 00 00:00 /dev/sdb
brw-rw----. 1 root disk 8, 17 2月 00 00:00 /dev/sdb1
##ボリューム拡張
冒頭のdf
コマンドで確認した通り、/dev/mapper/centos-root がルートにマウントされています。(Ubuntuは /dev/mapper/ホスト名--vg-root)
ボリュームグループ centos に物理ボリュームとして/dev/sdb1を追加して、論理ボリュームrootの容量を拡張します。
###ボリュームグループ拡張
vgdisplay
コマンドで現在のボリュームグループを確認します。
$ sudo vgdisplay
--- Volume group ---
VG Name centos
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 1.51 GiB
PE Size 4.00 MiB
Total PE 386
Alloc PE / Size 386 / 1.51 GiB
Free PE / Size 0 / 0
VG UUID UPHnYU-zXwc-1L3w-LxQu-1uEP-K1wO-vCUXwc
$ sudo vgdisplay
--- Volume group ---
VG Name ホスト名-vg
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 7.76 GiB
PE Size 4.00 MiB
Total PE 1986
Alloc PE / Size 1978 / 7.73 GiB
Free PE / Size 8 / 32.00 MiB
VG UUID JkiHt9-3wvZ-dJYz-qhPp-xGxd-QRWq-5HsliN
VG Sizeが1.51GiBになっています。(Ubuntuは7.76GiB)
pvcreate
コマンドでパーティション /dev/sdb1 の物理ボリュームを作成して、ボリュームグループ centos へ追加します。(Ubuntuはボリュームグループ ホスト名-vg)
$ sudo pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
$ sudo vgextend centos /dev/sdb1
Volume group "centos" successfully extended
$ sudo vgdisplay
--- Volume group ---
VG Name centos
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 3.50 GiB
PE Size 4.00 MiB
Total PE 897
Alloc PE / Size 386 / 1.51 GiB
Free PE / Size 511 / 2.00 GiB
VG UUID UPHnYU-zXwc-1L3w-LxQu-1uEP-K1wO-vCUXwc
$ sudo pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
$ sudo vgextend ホスト名-vg /dev/sdb1
Volume group "ホスト名-vg" successfully extended
$ sudo vgdisplay
--- Volume group ---
VG Name ホスト名-vg
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 9.75 GiB
PE Size 4.00 MiB
Total PE 2497
Alloc PE / Size 1978 / 7.73 GiB
Free PE / Size 519 / 2.03 GiB
VG UUID JkiHt9-3wvZ-dJYz-qhPp-xGxd-QRWq-5HsliN
Free Sizeが2.00GiBに増えて、VG Sizeが3.50GiBになりました。(
Ubuntuは9.75GiBに)
この2.00GiBをすべて論理ボリューム root に割当てます。
###論理ボリューム拡張
lvdisplay
コマンドで現在のLV SizeとLV Pathを確認します。
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID T2yPcS-nfFm-QNQF-NXK9-IiOM-ZUz4-c4GY3V
LV Write Access read/write
LV Creation host, time localhost, 2015-02-00 00:00:00 +0900
LV Status available
# open 2
LV Size 204.00 MiB
Current LE 51
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID NhZmMs-2PF4-Izbl-glMg-Pm26-GPh0-cPnP0s
LV Write Access read/write
LV Creation host, time localhost, 2015-02-00 00:00:00 +0900
LV Status available
# open 1
LV Size 1.31 GiB
Current LE 335
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/ホスト名-vg/root
LV Name root
VG Name ホスト名-vg
LV UUID wfJe7W-SFJC-y3oK-2Qz2-fgR5-n8D2-8Jvb1a
LV Write Access read/write
LV Creation host, time ホスト名, 2014-09-00 00:00:00 +0900
LV Status available
# open 1
LV Size 7.23 GiB
Current LE 1851
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/ホスト名-vg/swap_1
LV Name swap_1
VG Name ホスト名-vg
LV UUID 5lMqR5-0r5b-WfRz-21Rs-sF4z-foms-H3VYmY
LV Write Access read/write
LV Creation host, time ホスト名, 2014-09-00 00:00:00 +0900
LV Status available
# open 2
LV Size 508.00 MiB
Current LE 127
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
lvextend
コマンドでLV Path /dev/centos/root を指定し、論理ボリュームrootを拡張します(CentOSで、なんか2Gを指定したらエクステントが一個足らんって怒られたので、1.99Gにしました)
$ sudo lvextend -L+1.99G /dev/centos/root
Rounding size to boundary between physical extents: 1.99 GiB
Extending logical volume root to 3.30 GiB
Logical volume root successfully resized
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID T2yPcS-nfFm-QNQF-NXK9-IiOM-ZUz4-c4GY3V
LV Write Access read/write
LV Creation host, time localhost, 2015-02-19 10:44:47 +0900
LV Status available
# open 2
LV Size 204.00 MiB
Current LE 51
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID NhZmMs-2PF4-Izbl-glMg-Pm26-GPh0-cPnP0s
LV Write Access read/write
LV Creation host, time localhost, 2015-02-19 10:44:47 +0900
LV Status available
# open 1
LV Size 3.30 GiB
Current LE 845
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
$ sudo lvextend -L+2G /dev/ホスト名-vg/root
Extending logical volume root to 9.23 GiB
Logical volume root successfully resized
rootのLV Sizeが3.30GiBに増えました。(Ubuntuは9.23GiB)
###ファイルシステム拡張(xfs)
最後にファイルシステムを拡張します。
CentOS7の場合、デフォルトのファイルシステムはxfsになっています。(Ubuntuはext4)
df -T
でファイルシステムタイプを確認してみます。
$ df -T
ファイルシス タイプ 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/centos-root xfs 1361920 1306176 55744 96% /
devtmpfs devtmpfs 242508 0 242508 0% /dev
tmpfs tmpfs 251028 0 251028 0% /dev/shm
tmpfs tmpfs 251028 4440 246588 2% /run
tmpfs tmpfs 251028 0 251028 0% /sys/fs/cgroup
/dev/sda1 xfs 508588 136960 371628 27% /boot
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/ubuntu01--vg-root ext4 7331536 1841792 5094276 27% /
none tmpfs 4 0 4 0% /sys/fs/cgroup
udev devtmpfs 239652 12 239640 1% /dev
tmpfs tmpfs 50180 436 49744 1% /run
none tmpfs 5120 0 5120 0% /run/lock
none tmpfs 250892 0 250892 0% /run/shm
none tmpfs 102400 0 102400 0% /run/user
/dev/sda1 ext2 240972 37074 191457 17% /boot
xfsの拡張はxfs_growfs
コマンドを使用します。
$ sudo xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=85760 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=343040, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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 343040 to 865280
$ df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/centos-root 3450880 1306424 2144456 38% /
devtmpfs 242508 0 242508 0% /dev
tmpfs 251028 0 251028 0% /dev/shm
tmpfs 251028 4408 246620 2% /run
tmpfs 251028 0 251028 0% /sys/fs/cgroup
/dev/sda1 508588 136960 371628 27% /boot
無事にルートの空きが増えて、使用率が38%へ落ちました。
ext4の拡張はresize2fs
コマンドを使用します。
$ sudo resize2fs /dev/ホスト名-vg/root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/ubuntu01-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/ubuntu01-vg/root is now 2419712 blocks long.
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/ホスト名--vg-root 9395856 1841792 7075532 21% /
none 4 0 4 0% /sys/fs/cgroup
udev 239652 12 239640 1% /dev
tmpfs 50180 436 49744 1% /run
none 5120 0 5120 0% /run/lock
none 250892 0 250892 0% /run/shm
none 102400 0 102400 0% /run/user
/dev/sda1 240972 37074 191457 17% /boot