1. 程式人生 > 其它 >linux系統磁碟擴容那些事

linux系統磁碟擴容那些事

背景

以下場景我們經常會遇到:

  • 我們在安裝系統的時候可能沒有合理的分配空間,導致某些分割槽空間吃緊,而另外一些空間基本使用不到;
  • 由於業務量激增->資料量激增,磁碟空間被用光;
    這種情況下重新調整磁碟分割槽就很有必要。但是系統的資料都是很寶貴的,調整空間的前提是保證當前資料不被破壞。

要求

擴容操作不影響系統已經存在的資料,最好不用重啟系統。

相關概念

分割槽:磁碟上的區域劃分,例如windows中常見的C,D,E盤
擴容:增加分割槽的大小
扇區(sector):讀寫磁碟上的資料的最小單位,一般是512bytes
xfs,ext2,ext3,ext4:linux系統中常見的檔案系統格式,xfs可以通過xfs_growfs命令調整檔案系統,但是隻能增大,不能縮小;ext2,ext3,ext4格式的檔案系統可以通過resize2fs命令調整大小,增大和縮小都支援
LVM

:Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁碟分割槽進行管理的一種機制。
PV:物理卷(Physical Volume)
VG:卷組(Volume Group)
LV:邏輯卷(Logical Volume)
PE:物理塊(Physical Extent)
LE:邏輯塊(Logical Extent)

LVM的LV代替了傳統磁碟管理方式中的PV,使磁碟空間的擴充套件和壓縮變得容易。最明顯的優勢是LV中的空間可以來自於多個不同的PV。

傳統磁碟擴容(非LVM)

擴容前提:可用空間緊挨著被擴充分割槽結束扇區的位置

  • fdisk -l找到要擴容的磁碟和分割槽情況,我要對/dev/sda1擴容
  • fdisk /dev/sda修改磁碟分割槽,輸入m顯示幫助資訊
  • 輸入d刪除要擴容的分割槽,只有一個分割槽時會直接刪除,多個分割槽時按提示輸入分割槽號
  • 輸入n新建分割槽
  • 輸入p選擇主分割槽或者輸入e選擇擴充套件分割槽,一般選擇p,注意linux系統中主分割槽最多隻能有4個,建立4個主分割槽後將無法再新增分割槽
  • 回車輸入預設的第一個和最後一個扇區號
  • 其他提示輸入y
  • 輸入w儲存修改
  • 使用partprobe重新偵測分割槽,可能報錯,這個時候需要重啟系統
  • 調整檔案系統,ext2,ext3,ext4系統使用resize2fs命令,xfs系統使用xfs_growfs,通過mount命令可以檢視檔案系統的型別

  • 通過df-h命令檢查分割槽是否已經擴容

LVM擴容(新增分割槽)

  • 假設要操作的磁碟為/dev/sda,使用fdisk /dev/sdan命令建立新分割槽,步驟和傳統磁碟擴容中描述的一致
  • 使用partprobe重新偵測分割槽,假設新增的分割槽為/dev/sda3
  • 使用pvcreate /dev/sda3建立PV
  • 使用pvdisplay檢視新建立的PV
  • 使用vgdisplay檢視當前的VG資訊
  • 假設新增的PV要增加到名為centos的VG,執行vg_extend centos /dev/sda3
  • 使用df -h找到要增加的LV的名稱,假設是/dev/mapper/centos-root
  • 使用lvextend -l +100%FREE /dev/mapper/centos-root將VG中的剩餘空間全部新增到指定的LV,也可以使用lvextend -L +30G /dev/mapper/centos-root增加指定的大小
  • 調整檔案系統,ext2,ext3,ext4系統使用resize2fs命令,xfs系統使用xfs_growfs,通過mount命令可以檢視檔案系統的型別,例如resize2fs /dev/mapper/centos-root或者xfs_growfs /dev/mapper/centos-root
  • 通過df-h命令檢查分割槽是否已經擴容

LVM擴容(PV擴容)

新增分割槽的方式不是任何情況都適用的。例如某個磁碟當前已經有了4個主分割槽,此時如果再擴容則無法使用LVM(新增分割槽)的方式。此時可以將空間增加到特定的PV
擴容前提:可用空間緊挨著被擴充分割槽結束扇區的位置

  • 假設要擴容的PV所在的分割槽為/dev/sda4
  • 輸入d,再根據提示輸入4刪除要擴容的分割槽
  • 輸入n新建分割槽
  • 輸入p選擇主分割槽或者輸入e選擇擴充套件分割槽,主要需要與刪除前的分割槽屬性一致
  • 回車輸入預設的第一個和最後一個扇區號
  • 其他提示輸入y
  • 輸入t修改分割槽型別
  • 輸入4選擇要修改的分割槽
  • 輸入8e將分割槽型別改為linux LVM
  • 輸入w儲存修改
  • 使用partprobe重新偵測分割槽,可能報錯,這個時候需要重啟系統
  • 輸入pvresize /dev/sda4調整PV的大小
  • 假設LV的名稱為/dev/mapper/centos-root。調整檔案系統,ext2,ext3,ext4系統使用resize2fs命令,xfs系統使用xfs_growfs,通過mount命令可以檢視檔案系統的型別,例如resize2fs /dev/mapper/centos-root或者xfs_growfs /dev/mapper/centos-root
  • 通過df-h命令檢查分割槽是否已經擴容