我有一個儲存資料庫資料的磁碟。磁碟現在已滿,我想為機器新增另一個磁碟。我聽說透過 LVM 可以新增和擴展分割區,所以我想知道是否可以透過新增磁碟來擴展目前的完整磁碟(不會損壞其目前資料)?
答案1
LVM 可以輕鬆調整現有分割區的大小並移動它們。但它們首先必須是 LVM 分割區。由於您目前的分割區不在 LVM 上,因此您必須手動執行操作。我的答案中的所有命令都需要以 root 身分執行。
準備新磁碟
- 建立 GPT 或 MBR 分割區供 Linux 使用。使用整個磁碟,除非您想與其他作業系統共用該磁碟。我將稱該分區為
/dev/sdb1
。 製作
/dev/sdb1
LVM物理體積,即聲明這部分磁碟用於LVM。pvcreate /dev/sdb1
建立LVM卷組包含該物理卷。所有 LVM 磁碟區都是磁碟區組的一部分。為該磁碟區組選擇一個名稱,例如
alex_os
。vgcreate alex_os /dev/sdb1
您現在有一些空間可供 LVM 使用。建立一個足夠大的 LVM 邏輯磁碟區以容納您要在其上儲存的資料。如果需要,您可以使用所有空間(除非您想為另一個檔案系統或交換空間保留空間),但由於縮小檔案系統比擴充檔案系統更困難,因此最好只使用您認為在檔案系統中需要的空間。為邏輯磁碟區選擇一個名稱,例如
root
為您的根檔案系統,或者db
如果您要在其上儲存資料庫。lvcreate -L 40g -n root alex_os
接下來要做什麼取決於您是否要將作業系統分割區移至新磁碟,或使用新磁碟作為額外儲存。
使用新磁碟進行額外存儲
在新磁碟上建立檔案系統。
mkfs.ext4 /dev/mapper/alex_os-root
註冊新檔案系統以供使用。為其選擇一個安裝點。這可以是現有目錄或新目錄。
如果您想移動
/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
將系統轉移到新磁碟
重新啟動以挽救媒體(例如系統救援光碟)將資料複製到新磁碟。您無法從正在運行的系統進行複製,因為不可能獲得一致的快照²。要複製數據,您有兩種可能性:
建立檔案系統並複製文件,例如 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
使新磁碟可啟動。具體如何執行取決於您的發行版。您通常必須安裝引導程式並重建 initramfs。例如,在 Ubuntu 上,您通常需要類似的東西
chroot /media/alex_os-root update-initramfs update-grub grub-install /dev/sdb
1調整分區上檔案系統的大小是另一回事;大多數現代檔案系統支援線上擴展,但不支援線上收縮。
²技術上來說可能cp -a
如果系統處於空閒狀態,則可能會很幸運,但這會導致災難;這可能會導致難以追蹤的延遲錯誤。 LVM 的優點之一是您可以使用它來拍攝一致的快照。某些檔案系統(zfs、btrfs)有自己的快照功能,但 ext4 沒有。