CentOS で LVM 物理/論理ボリュームサイズを縮小する
目次 |
はじめに
CentOS 5 で、ルートパーティションの使用量が少ないため、ルートパーティションを小さくしようとしたが、ボリュームが LVM で管理されていたため、その時のメモ。 ボリューム名は、インストール時にデフォルトで付けられた名前を使用している。
下記のような構成で、ルート (/) は 5GB ほどしか使用していない状態なので、
/boot 100 MB /dev/sda1 / 18 GB /dev/mapper/VolGroup00-LogVol00 swap 2 GB /dev/mapper/VolGroup00-LogVol01 PV /dev/sda2 VG VolGroup00 20GB
次のようにルート (/) のボリュームサイズと、PV のサイズを小さくする。
/boot 100 MB /dev/sda1 / 8 GB /dev/mapper/VolGroup00-LogVol00 swap 2 GB /dev/mapper/VolGroup00-LogVol01 PV /dev/sda2 VG VolGroup00 10GB
手順としては、次のようになる。
- ファイルシステムのサイズを縮小
- 論理ボリューム(LV)のサイズを縮小
- 物理ボリューム(PV)のサイズを縮小
ファイルシステムのサイズを縮小
マウントした状態ではファイルシステムのサイズを変更することができないため、CentOS の LiveCD で起動する。
LiveCD で起動後、/dev/mapper/VolGroup00-LogVol00 のマウントを解除する。
[root@livecd ~]# umount /dev/mapper/VolGroup00-LogVol00
e2fsck コマンドで、ファイルシステムをチェックする。(このチェックをしないと、次のサイズ変更をすることができない。)
[root@livecd ~]# e2fsck -f /dev/mapper/VolGroup00-LogVol00 e2fsck 2.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/VolGroup00-LogVol00: 92069/4704768 files (1.3% non-contiguous), 1285660/4702208 blocks
resize2fs コマンドで、ファイルシステムのサイズを変更をする。
[root@livecd ~]# resize2fs /dev/mapper/VolGroup00-LogVol00 8G resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/mapper/VolGroup00-LogVol00 to 2097152 (4k) blocks. The filesystem on /dev/mapper/VolGroup00-LogVol00 is now 2097152 blocks long.
論理ボリュームのサイズを縮小
lvreduce コマンドで論理ボリュームの縮小をする。
[root@livecd ~]# lvreduce -L 8G /dev/mapper/VolGroup00-LogVol00
WARNING: Reducing active logical volume to 8.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol00? [y/n]: y
Reducing logocal volume LogVol00 to 8.00 GB
Logical volume LogVol00 successfully resized
一応 lvdisplay コマンドで LV Size(論理ボリュームサイズ)の確認。
[root@livecd ~]# lvdisplay /dev/mapper/VolGroup00-LogVol00
物理ボリュームのサイズを縮小
物理ボリュームを縮小するための準備
/dev/mapper/VolGroup00-LogVol00 の論理ボリュームサイズを 18GB から 8GB に縮小できたので、次は、物理ボリュームのサイズを変更する。
現在の論理ボリュームと物理ボリュームのサイズを確認。
[root@livecd ~]# pvscan /dev/cdrom: open failed: Read-only file system Attempt to close device '/dev/cdrom' which is not open. PV /dev/sda22 VG VolGroup00 lvm2 [19.88 GB / 9.94 GB free] Total: 1 [19.88 GB] / in use: 1 [19.88 GB] / in no VG: 0 [0 ]
[root@livecd ~]# lvscan ACTIVE '/dev/VolGroup00/LogVol00' [8.00 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit
system-config-lvm コマンドを実行すると、グラフィカルな LVM ツールが起動し論理ボリュームの状態がわかる。
LogVol00 の論理ボリュームサイズを小さくしたので、LogVol00 と LogVol01 の間に Unused Space ができている。
LogVol01 を削除し、再度作成することで次のような状態にする。
lvremove コマンドで LogVol01 を削除しようとしても、削除できない。
[root@livecd ~]# lvremove /dev/mapper/VolGroup00-LogVol01 Can't remove open logical volume "LogVol01"
LogVol01 は SWAP 領域なので swapoff する。
[root@livecd ~]# swapoff /dev/mapper/VolGroup00-LogVol01
lvremove すると、LogVol01 を削除することができる。
[root@livecd ~]# lvremove /dev/mapper/VolGroup00-LogVol01 Do you really want to remove active logical volume LogVol01? [y/n]:y Logical volume "LogVol01" successfully removed
論理ボリューム LogVol01 を作成。
[root@livecd ~]# lvcreate -L 2G -n LogVol01 VolGroup00 /dev/cdrom: open failed: Read-only file system Logical volume "LogVol01" created
mkswap コマンドで SWAP 用にする。
[root@livecd ~]# mkswap /dev/mapper/VolGroup00-LogVol01 Setting up swapspace vrsion 1, size = 2147479 kB
swapon コマンドで SWAP 領域として割り当てる。
[root@livecd ~]# swapon /dev/mapper/VolGroup00-LogVol01
物理ボリュームを縮小
ここまでで、物理ボリューム内の論理ボリュームは次のようになったので、Unused Space を削除する形で物理ボリュームを縮小する。
まずは、物理ボリュームのサイズ確認。
[root@livecd ~]# pvscan PV /dev/sda2 VG VolGroup00 lvm2 [19.88GB / 9.88 GB free] Total: 1 [19.88 GB] / in use: 1 [19.88 GB] / in on FV: 0 [0 ]
pvresize コマンドで、物理ボリュームをリサイズ。
[root@livecd ~]# pvresize --setphysicalvolumesize 10G /dev/sda2 /dev/sda2: cannot resize to 319 extents as 320 are allocated. 0 physical volume(s) resized / 1 physical volumes(s) not resized
小さくしすぎてエラーになったので、MB 指定で少し大きなサイズを指定。
[root@livecd ~]# pvresize --setphysicalvolumesize 10500M /dev/sda2 Physical volume "/dev/sda2" changed 1 physical volume(s) resized / 0 physical volumes(s) not resized
リサイズできたので、確認。
[root@livecd ~]# pvscan PV /dev/sda2 VG VolGroup00 lvm2 [10.25 GB / 256.00 MB free] Total: 1 [10.25 GB] / in use: 1 [10.25 GB] / in on FV: 0 [0 ]
まだ 256 MB 空いているようなので、10244 MB で再リサイズ。
[root@livecd ~]# pvresize --setphysicalvolumesize 10244M /dev/sda2 Physical volume "/dev/sda2" changed 1 physical volume(s) resized / 0 physical volumes(s) not resized
サイズ確認。
[root@chuo221 ~]# pvscan PV /dev/sda2 VG VolGroup00 lvm2 [10.00 GB / 0 free] Total: 1 [10.00 GB] / in use: 1 [10.00 GB] / in no VG: 0 [0 ]