自己一開始在安裝 CentOS7 的時候, 懶得動腦, 而在磁區劃分時, 就選用
讓我自訂磁區劃分
, 然後再選擇使用預設方式規劃檔案系統
, 於是就被分配了 512M 的 swap 現在問題來了, 512MB 的空間我不想要用在 swap 之上, 怎麼把它從系統上要回來勒!? 一開始想得很單純, 先把 swap 拿掉, 再從 fstab 移除, 最後再把 Logical Volume 移除即可, 但悲劇就發生了… 無法開機 ><
Prerequest
- mount
- LVM
- grub2
- swap
- fstab
如果以上的東西你看不懂 或 看了無感, 請勿浪費您寶貴的時間繼續往下看~
本章節操作若有閃失, 可能導致將來無法正常開機
Implementation
- 從 fstab 取消掛載 swap
- 從 grup 取消使用 swap
1. 從 fstab 取消掛載 swap
$# free -m
total used free shared buff/cache available
Mem: 2782 448 1983 7 351 2234
Swap: 511 0 511
# 一開始大概 0.5G 的 swap 在那邊
$# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 84a28da6-b8d7-4c78-898e-c52959cf9c7d /boot
└─sda2 LVM2_member gFK1m6-tGsh-1Ekz-yN3N-PPt4-7dNp-0tQbzb
├─centos_5720--pw2215-root xfs cee53bff-d4f5-41c5-8a4e-8f1e8de25003 /
├─centos_5720--pw2215-swap swap 077873c2-f581-46ed-aa12-1f5f9f4df22b [SWAP] # 準備把它拔掉
└─centos_5720--pw2215-var xfs 907ff2d3-12f3-49d1-bb6e-9de6eb97943c /var
$# swapoff /dev/mapper/centos_5720--pw2215-swap # 卸載 swap
$# free -m
total used free shared buff/cache available
Mem: 2782 449 1981 7 351 2232
Swap: 0 0 0
# 拔掉了
$# vim /etc/fstab
/dev/mapper/centos_5720--pw2215-root / xfs defaults 0 0
UUID=84a28da6-b8d7-4c78-898e-c52959cf9c7d /boot xfs defaults 0 0
/dev/mapper/centos_5720--pw2215-var /var xfs defaults 0 0
# /dev/mapper/centos_5720--pw2215-swap swap swap defaults 0 0 # 然後我把這行註解掉
# 緊接著, 移除 logical volume
$# lvremove /dev/centos_5720-pw2215/swap
Do you really want to remove active logical volume centos_5720-pw2215/swap? [y/n]: y
Logical volume "swap" successfully removed
$# vgs
VG #PV #LV #SN Attr VSize VFree
centos_5720-pw2215 1 2 0 wz--n- 12.50g 512.00m # ← 512m 的空間已經釋放出來了~
# 耶~ 我就以為我完成了!!
$# systemctl reboot # 等等!!! 現在重啟, 電腦就居居惹~
第一次作業時, 重新開機後, 就沒辦法正常開機了…
上述的作法, 跟 小紅帽官網 的解法一樣
爬文後, 才意識到我忽略到一個重要的細節!!
我還不確定該怎麼正確的解釋, 但概念大概就是
系統開機時, 會依照 開機選單(grub)
先幫我把 swap 掛載上去了~ 結果導致找不到, 然後就 Do-Until-Die!!!
(疑! 原來 swap 的掛載動作也被寫入到 grup!?)
所以, 另外得把 swap 從開機選單中移除
2. 從 grup 取消使用 swap
$# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
# GRUB_CMDLINE_LINUX="rd.lvm.lv=centos_5720-pw2215/root rd.lvm.lv=centos_5720-pw2215/swap rhgb quiet audit=1" # 原本
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos_5720-pw2215/root rhgb quiet audit=1" # 改成這樣
GRUB_DISABLE_RECOVERY="true"
# 存檔後離開
# 重建 grub.cfg(grub2的 主設定檔)
$# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-18fe822a5d51433d99a546058606962a
Found initrd image: /boot/initramfs-0-rescue-18fe822a5d51433d99a546058606962a.img
done
$# systemctl reboot
重新開機之後
# Volume Group 有新鮮的 512m 可以用了
$# vgs
VG #PV #LV #SN Attr VSize VFree
centos_5720-pw2215 1 2 0 wz--n- 12.50g 512.00m
# Logical Volume 也確實移除了~
$# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_5720-pw2215 -wi-ao---- 11.00g
var centos_5720-pw2215 -wi-ao---- 1.00g
# 不再有 swap 了
$# free -m
total used free shared buff/cache available
Mem: 2682 433 1907 7 341 2151
Swap: 0 0 0
# 確實也沒 swap 掛載著了~
$# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
fd0
sda
├─sda1 xfs 84a28da6-b8d7-4c78-898e-c52959cf9c7d /boot
└─sda2 LVM2_member gFK1m6-tGsh-1Ekz-yN3N-PPt4-7dNp-0tQbzb
├─centos_5720--pw2215-root xfs cee53bff-d4f5-41c5-8a4e-8f1e8de25003 /
└─centos_5720--pw2215-var xfs 907ff2d3-12f3-49d1-bb6e-9de6eb97943c /var