LVMでスワップ領域とルートファイルシステムを拡張する

CentOS7のマシンにメモリとハードディスクを追加しました。LVMを使用しているので、スワップ領域とルートファイルシステムを拡張します。


1 新規ハードディスクを接続した状態

新規ハードディスクを接続した状態のサイズは以下の通りです。片付けをしないからこの有様。

$ df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_acer-lv_root  913G  851G   16G  99% /
devtmpfs                     3.9G     0  3.9G   0% /dev
tmpfs                        3.9G     0  3.9G   0% /dev/shm
tmpfs                        3.9G  8.8M  3.9G   1% /run
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                    477M  283M  165M  64% /boot

パーティションは以下の通りです。sda1が/bootの領域、sda2がLVMの領域、sdbが新規ハードディスクです。

$ cat /proc/partitions 
major minor  #blocks  name

   8       16 1465138584 sdb
   8        0  976762584 sda
   8        1     512000 sda1
   8        2  976248832 sda2
  11        0    1048575 sr0
 253        0  972197888 dm-0
 253        1    4046848 dm-1

物理ボリューム用のデバイスはsda2のみです。

sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_acer
  PV Size               931.02 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238341
  Free PE               0
  Allocated PE          238341
  PV UUID               dM8DU9-KgVX-9ZXx-xyi0-9gyb-ujeN-PrPh7A

論理ボリュームはルートファイルシステム用のlv_rootとスワップ用のlv_swapの2つがあります。


2 パーテションの作成

fdiskでsdbにパーテションを作成します。primaryディスクにして全領域を使います。

$ 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.


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-2930277167, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2930277167, default
2930277167): 
Using default value 2930277167
Partition 1 of type Linux and of size 1.4 TiB is set

Command (m for help): p

Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes, 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x49fe3834

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  2930277167  1465137560   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

sdb1が作成されました。

$ cat /proc/partitions 
major minor  #blocks  name

   8       16 1465138584 sdb
   8       17 1465137560 sdb1
   8        0  976762584 sda
   8        1     512000 sda1
   8        2  976248832 sda2
  11        0    1048575 sr0
 253        0  972197888 dm-0
 253        1    4046848 dm-1

3 物理ボリュームの作成

sdb1を物理ボリューム用に初期化します。

$ sudo pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

sdb1を物理ボリュームvg_acerに追加します。

$ sudo vgextend vg_acer /dev/sdb1
  Volume group "vg_acer" successfully extended

sdb1が物理ボリュームに追加されました。

$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_acer
  PV Size               931.02 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238341
  Free PE               0
  Allocated PE          238341
  PV UUID               dM8DU9-KgVX-9ZXx-xyi0-9gyb-ujeN-PrPh7A
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_acer
  PV Size               1.36 TiB / not usable 2.40 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              357699
  Free PE               357699
  Allocated PE          0
  PV UUID               D8GWrC-2Nim-ip6a-57Gd-km5k-nJ81-vWkhKP

4 スワップのサイズを拡張

現在のスワップのサイズは4GByteです。

$ swapon -s
Filename        Type    Size  Used  Priority
/dev/dm-1                               partition 4046844 0 -1

これを16GByteに変更します。

$ sudo swapoff /dev/vg_acer/lv_swap
$ sudo lvextend -L+12G /dev/vg_acer/lv_swap
Size of logical volume vg_acer/lv_swap changed from 3.86 GiB (988 extents) to 15.86 GiB (4060 extents).
Logical volume lv_swap successfully resized
$ sudo mkswap /dev/vg_acer/lv_swap
$ sudo swapon -a

スワップのサイズが16GByteになりました。

$ swapon -s
Filename        Type    Size  Used  Priority
/dev/dm-1                               partition 16629756  0 -1

5 ルートファイルシステムの拡張

物理ボリュームの残りを全てルートファイルシステムに追加します。

$ sudo lvextend -l +100%FREE /dev/vg_acer/lv_root 
  Size of logical volume vg_acer/lv_root changed from 927.16 GiB (237353 extents) to 1.35 TiB (354627 extents).
  Logical volume lv_root successfully resized

ファイルシステムを拡張します。ext4ファイルシステムなので、オンラインで拡張できます。

$ sudo resize2fs /dev/vg_acer/lv_root 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg_acer/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 87, new_desc_blocks = 145
The filesystem on /dev/vg_acer/lv_root is now 606187520 blocks long.

ルートファイルシステムが拡張されました。

$ df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_acer-lv_root  2.3T  851G  1.3T  40% /
devtmpfs                     3.9G     0  3.9G   0% /dev
tmpfs                        3.9G     0  3.9G   0% /dev/shm
tmpfs                        3.9G  8.8M  3.9G   1% /run
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                    477M  283M  165M  64% /boot