一、操作背景:
公司中有一部分主機在開始設計的時候,並未考慮到SWAP的大小,只是分配了物理內存的2倍-4G,導致後期應用部署完成後對系統的SWAP分區要求達不到標準。因此經過部分和領導討論後,決定在同一塊磁盤上來減少根分區的大小,並使用縮減出來的大小去增加swap分區大小的操作,這中間要保障數據的完整和業務應用不丟失。這樣做既可以保障數據盤不受影響,也保證應用系統在完成後可以正常使用,也減少了以後的一些風險(比如要使用額外的磁盤來增加swap空間大小需要考慮額外磁盤的穩定等)。
二、操作分析:
由於根分區和swap在開機運行的時候是處於使用狀態,是不能對其進行直接操作的。考慮至此,需要使用到LINUX的救援模式,且該救援模式必須是不能執行chroot /mnt/sysp_w_picpath。單用戶模式和救援模式執行chroot後都不能對根分區進行操作。
三、LVM原理操作步驟和注意事項回顧:
先回顧下針對LV的擴展或縮小步驟、以及操作方法。
a、從磁盤到LV的過程如下:
b、以下通過擴展和縮減空間來具體說明
b-1、擴展LV
1)、卸載LV
命令:umount “掛載目錄” 這一步可以不用做,因LVM的2版本支持在線升級擴展空間。
2)、擴展LV或先擴展VG
命令:vgextend vgdata100 /dev/sdb1 表示從pv爲sdb1的分區中擴展空間到vgdata100的卷組中。
命令:lvextend -L +5G /dev/lv00/lv01 或者 lvresize -L 50G /dev/lv00/lv01
lvextend 表示增加5G,lvresize表示增加到50G,是調整後的容量。
3)、檢查文件系統
命令:fsck -f /dev/vg00/lv01
4)、重建文件系統
命令:resize2fs /dev/lv00/lv01
這一步很關鍵,重建文件系統,不用擔心LV的數據會丟失,以防丟失也可以先備份下LV裏的數據。
5)、掛載LV
命令:mount /dev/lv001/lv01 /opt 或執行mount -a 這步可以省去
b-2、縮小LV
縮小LV需要事先知道LV中的數據容量大小,縮小容量值不應超過剩餘空間容量,而且要知道減少LV容量後的新大小。可以通過lvscan來查看LV容量,通過vgdisplay來查看剩餘容量。縮小空間的磁盤必須需要卸載下來,不能在線縮小正在使用中的磁盤。
1)、卸載LV
命令:umount “掛載目錄”
2)、檢查文件系統
命令:fsck -f /dev/lv00/lv01
3)、調整LV大小並重建文件系統
命令:resize2fs /dev/vg00/lv01 2G
4)、減小LV容量
命令:lvreduce -L -3G /dev/vg00/lv01
5)、掛載LV
命令:mount /dev/lv001/lv01 /opt
三、縮減根分區的空間,並劃分給swap增加空間實際操作步驟如下
正式操作之前先在實驗環境下進行2-3遍測試後,再進行現實再用的環境下進行操作。
3-1、擴展SWAP分區大小的前提條件
1)、swap必須和根分區(或者說空間來源)在同一個磁盤; 不要問爲什麼必須在一個磁盤上
2)、swap必須是LVM格式;
3)、必須在救援模式模式下完成縮減/根分區的大小。因爲lvm只能在線升級,縮小必須處於不使用狀態下進行;
3-2、縮小根分區和擴展SWAP的詳細步驟:
1)、先縮小根分區大小。
a、 插入系統光盤,啓動後輸入linux rescue進去救援模式,不要配置網絡,不要讓系統根掛載到/mnt/sysp_w_picpath上,所以最後的界面選擇“skip”
b、檢查是否符合條件並做好準備
c、開始縮小根文件系統大小
d、減小LV_根分區大小
先檢查大小並計算實際大小。
根據上圖顯示的信息計算下。此時得出lv-root的LE數量爲24525,總的PE數量爲25549,大小4M,所以可以減少的大小爲 (25549-24525)*4M=1024*4M=4G。
減小根分區大小
e、重啓系統,再次查看根分區情況
2)、開始增加swap空間大小
a、可以使用該步驟
1.swapoff -v /dev/centos/swap //關閉swap分區
2. lvresize -L +4G /dev/centos/swap //增加swap卷4G空間
3.resize2fs /dev/centos/swap //讓添加的空間生效
4.mkswap /dev/centos/swap //建立swap分區
5.swapon -va /dev/centos/swap //啓用swap分區
b、 或以下步驟
至此擴展swap分區大小操作完成,可以多重啓幾次系統,並進入系統檢查驗證。
四、總結:
1)、LVM的磁盤或其他磁盤在掛載的時候最好使用UUID寫到/etc/fstab文件中進行掛載,
UUID=44ba2667-3757-4a49-b215-698ae1425fc0 /mountdata ext3 defaults 0 0 (格式)
以避免磁盤開機的時候出現盤符漂移導致系統運行出現錯誤;
2)、被縮減空間的磁盤必須處於卸載狀態下才能操作,但可以對在使用的磁盤進行在線擴展;
3)、fsck命令執行是很好的檢查當前磁盤狀態的工具,最好不要省去該步驟;