メモリ4GB、スワップ4GBの状態から、メモリを12GBまで増設したため、スワップを24GBにしたくなった。
対象は CentOS 6.4。イマドキは LVM を使っているので、昔とはオモムキが違い、あたふたしたので、メモしておく。
##現状の確認
今回対象の環境は HDD が1台のっているだけの PC。LVM 的に言うと、PV (物理ボリューム) が1つ。
VG (ボリュームグループ) も1つだけ設定されており、そこにはこの環境唯一の PV が含まれているだけ。
LV (論理ボリューム) は root, home, swap の3つが作られており、VG の空きは無し。
root, home 上には ext4 のファイルシステムが作られており、swap はスワップ領域。
##手順の確認
VG に空きがないので、swap の LV を拡張するには、root か home の LV を縮めないといけない。
home にかなり余裕があるので、home を縮め、その分を swap に回すことにする。
つまり、home LV 内のファイルシステムを縮める → home LV を縮める → swap LV を広げる という手順になる。
##home ファイルシステムの縮小後のサイズの把握
現在のサイズを調べ、欲しい容量を確保するにはいくつに縮めれば良いかを把握する。
# df -Th /home
Filesystem Type Size Used Avail Use% マウント位置
/dev/mapper/vg_hostname-lv_home
ext4 176G 7.4G 160G 4% /home
欲しい容量は24GB-4GB=20GB。空きは十分にあるので、30GB縮めて146Gにすることにする。
##home ファイルシステムの縮小
home をアンマウントし、ファイルシステムのリサイズ。
# umount /home
# e2fsck -f /dev/mapper/vg_hostname-lv_home
# resize2fs /dev/mapper/vg_hostname-lv_home 146G
resize2fs の引数に Step 3 で把握した容量を指定。
##home LV の縮小
home LV の縮小を行う。swap は余裕を見て +21G したいので、21G 縮めることにする。
# lvresize -L -21G /dev/mapper/vg_hostname-lv_home
WARNING: Reducing active logical volume to 157.56 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: y
Reducing logical volume lv_home to 157.56 GiB
Logical volume lv_home successfully resized
##home ファイルシステムの再拡張
home ファイルシステムは、余裕を見て30GB縮めたが、home LV は21Gしか縮めていない。
home LV に9GBほど空き容量が残っているはずなので、これを home ファイルシステムに返す。
# resize2fs /dev/mapper/vg_hostname-lv_home
# mount /home
ここまで終われば、home に関する操作は終わりなので、再マウントしておく。
##swapの拡張
# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 3964920 83592 -1
# swapoff /dev/dm-1
# lvresize -L +21G /dev/mapper/vg_hostname-lv_swap
# mkswap /dev/mapper/vg_hostname-lv_swap
# swapon /dev/mapper/vg_hostname-lv_swap
# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 25985016 0 -1
# free
total used free shared buffers cached
Mem: 12095724 335500 11760224 0 17752 77756
-/+ buffers/cache: 239992 11855732
Swap: 25985016 0 25985016
スワップの使用を止め、swap LV を拡張し、mkswap で領域の再作成後、スワップの使用を再開。
free でスワップが増えていることを確認して終了。