LVM:是否可以擴充正在使用的分割區?

LVM:是否可以擴充正在使用的分割區?

我有一個儲存資料庫資料的磁碟。磁碟現在已滿,我想為機器新增另一個磁碟。我聽說透過 LVM 可以新增和擴展分割區,所以我想知道是否可以透過新增磁碟來擴展目前的完整磁碟(不會損壞其目前資料)?

答案1

LVM 可以輕鬆調整現有分割區的大小並移動它們。但它們首先必須是 LVM 分割區。由於您目前的分割區不在 LVM 上,因此您必須手動執行操作。我的答案中的所有命令都需要以 root 身分執行。

準備新磁碟

  1. 建立 GPT 或 MBR 分割區供 Linux 使用。使用整個磁碟,除非您想與其他作業系統共用該磁碟。我將稱該分區為/dev/sdb1
  2. 製作/dev/sdb1LVM物理體積,即聲明這部分磁碟用於LVM。

    pvcreate /dev/sdb1
    
  3. 建立LVM卷組包含該物理卷。所有 LVM 磁碟區都是磁碟區組的一部分。為該磁碟區組選擇一個名稱,例如alex_os

    vgcreate alex_os /dev/sdb1
    
  4. 您現在有一些空間可供 LVM 使用。建立一個足夠大的 LVM 邏輯磁碟區以容納您要在其上儲存的資料。如果需要,您可以使用所有空間(除非您想為另一個檔案系統或交換空間保留空間),但由於縮小檔案系統比擴充檔案系統更困難,因此最好只使用您認為在檔案系統中需要的空間。為邏輯磁碟區選擇一個名稱,例如root為您的根檔案系統,或者db如果您要在其上儲存資料庫。

    lvcreate -L 40g -n root alex_os
    

接下來要做什麼取決於您是否要將作業系統分割區移至新磁碟,或使用新磁碟作為額外儲存。

使用新磁碟進行額外存儲

  1. 在新磁碟上建立檔案系統。

    mkfs.ext4 /dev/mapper/alex_os-root
    
  2. 註冊新檔案系統以供使用。為其選擇一個安裝點。這可以是現有目錄或新目錄。

    • 如果您想移動/var/lib/mysql到新磁碟,請將其作為安裝點。首先將新檔案系統掛載到臨時位置,移動資料(確保執行此操作時文件未被使用!

      service mysql stop
      mount /dev/mapper/alex_os-db /mnt
      mv /var/lib/mysql/* /mnt
      mount --move /mnt /var/lib/mysql
      service mysql start
      

      最後編輯該文件,在第二列/etc/fstab包含的行之後新增以下行:/

      /dev/mapper/alex_os-db /var/lib/mysql ext4 errors=remount,ro 0 2
      
    • 如果您不想將新磁碟綁定到特定服務,請將其安裝到其他位置,例如,將以下行新增至第二列中/etc/fstab包含的行之後:/

      /dev/mapper/alex_os-db /media/data ext4 errors=remount,ro 0 2
      

      然後建立掛載點並掛載檔案系統:

      mkdir /media/data
      mount /media/data
      

      現在您可以移動您想要放在那裡的任何數據,並使用符號連結來自服務期望文件的位置。在移動文件時停止存取這些文件的任何服務!例如,要將 的內容移至/var/lib/mysql新磁碟:

      service mysql stop
      mv /var/lib/mysql /media/data/
      ln -s /media/data/mysql /var/lib/mysql
      service mysql start
      

將系統轉移到新磁碟

  1. 重新啟動以挽救媒體(例如系統救援光碟)將資料複製到新磁碟。您無法從正在運行的系統進行複製,因為不可能獲得一致的快照²。要複製數據,您有兩種可能性:

    • 建立檔案系統並複製文件,例如 ext4 檔案系統:

      mkfs.ext4 /dev/mapper/alex_os-root
      mount /dev/mapper/alex_os-root /media/alex_os-root
      cp -a /media/sda1 /media/alex_os-root
      
    • 複製檔案系統映像,然後將其展開以填充,例如 ext4 檔案系統:

      cat /dev/sda1 >/dev/mapper/alex_os-root
      resize2fs /dev/mapper/alex_os-root
      
  2. 使新磁碟可啟動。具體如何執行取決於您的發行版。您通常必須安裝引導程式並重建 initramfs。例如,在 Ubuntu 上,您通常需要類似的東西

    chroot /media/alex_os-root
    update-initramfs
    update-grub
    grub-install /dev/sdb
    

1調整分區上檔案系統的大小是另一回事;大多數現代檔案系統支援線上擴展,但不支援線上收縮。
²技術上來說可能cp -a如果系統處於空閒狀態,則可能會很幸運,但這會導致災難;這可能會導致難以追蹤的延遲錯誤。 LVM 的優點之一是您可以使用它來拍攝一致的快照。某些檔案系統(zfs、btrfs)有自己的快照功能,但 ext4 沒有。

相關內容