在 VPS 上調整分割區大小而不遺失數據

在 VPS 上調整分割區大小而不遺失數據

我有 40 GB 磁碟空間的小型 VPS 伺服器。我額外購買了 40 GB,現在我想擴展/分割區大小。

我的分區如下圖所示:

分割區大小

/dev/vda1/boot並且/dev/vda5是我的/。我的 VPS 提供者新增了/dev/vda2.我不確定這是否正確,但我嘗試刪除/dev/vda5/dev/vda2創建/dev/vda5,但我沒有該選項,我只能重新創建 ID 為 2-4 的設備,而無法重新建立 ID 為 5 的設備/

答案1

有一個名為的實用程序,growpart一旦您的提供者擴展了您的虛擬磁碟,它將安全地增長分割區。您的情況中唯一的技巧是他們在不需要時不必要地創建了擴展/邏輯 DOS 分區。因此,您必須調整擴充分割區的大小,然後調整其包含的邏輯分割區的大小。

sudo apt install cloud-guest-utils

growpart實用程式接受磁碟和分割區號作為單獨的參數,因此要調整大小,/dev/vda2您將編寫:

sudo growpart /dev/vda 2

首先調整擴充分割區的大小/dev/vda2,然後/dev/vda5以相同的方式調整大小。

sudo growpart /dev/vda 2
sudo growpart /dev/vda 5

現在您應該能夠調整檔案系統的大小。如果是 ext4 就resize2fs /dev/vda5可以了。對於 XFS,請使用xfs_growfs /.

答案2

從你的fdisk輸出來看,你確實有一個 80 GB 的磁碟和 40 GB擴充分割區 ( /dev/vda2) 其中包含 40 GB邏輯的/dev/vda5儲存檔案系統的分割區/。擴展分區實際上並不包含任何文件,它只是邏輯分區的“容器”,可以克服我下面提到的 4 個分區的限制。然後有 40 GB 未分配空間,fdisk沒有以任何方式顯示。

您可能有多種選擇來使用未分配的空間。我假設您沒有使用 LVM,因為如果您這樣做,過程將完全不同,因為 LVM 有自己的工具來調整磁碟區大小。但是,您的fdisk輸出並未顯示任何 LVM 分割區的提及。

我不建議刪除並重新建立分割區,fdisk因為這總是會導致遺失資料的風險。因此,如果您想安全地進行操作,可以嘗試以下操作:

第一個選項是擁有兩個 40 GB 分割區,並在這兩個分割區之間智慧地分割檔案。例如,如果您在 中保留大量大文件/home,則可以使用新分割區,/home除此之外的所有內容/home都會保留在舊分割區上。去做這個:

  1. 用於在該未分配的空間中fdisk建立另一個主分割區(它可能會顯示為/dev/vda3!),並將其格式化為帶有mkfs /dev/vda3.總共最多可以有 4 個主分區或擴展分區,其中最多可以擴展其中一個,以便有空間容納另一個分區。主分區所在的位置不是建議的分區佈局擴展分區,但它可能會起作用。

  2. 將您的/home目錄重新命名為/old_home(確保目前沒有使用它,因此在沒有普通使用者登入的情況下從根目錄執行此操作)並建立/home具有與舊目錄相同的擁有者和權限的新目錄。

  3. /dev/vda3使用以下/home命令掛載檔案系統: mount /dev/vda3 /home。如果成功,您應該進行編輯/etc/fstab,以便在系統啟動時正確自動安裝新的檔案系統。可能您/etc/fstab目前包含 vda1 和 vda5 的兩行,如下所示(我現在正在製作這一行,您的可能會有所不同):

    /dev/vda5 / ext4 defaults 0 1

    /dev/vda1 /boot ext4 defaults 0 2

    為 vda3 增加類似的行,例如:

    /dev/vda3 /home ext4 defaults 0 2

    (如果您的檔案有其他內容而不是“ext4”或“預設值”,只需將這些參數複製到新行)。現在將任何檔案寫入新/home目錄並重新啟動系統。如果重新啟動後,您放入目錄中的檔案/home仍然存在,則表示/home已在啟動時正確安裝。

  4. 現在您可以將所有內容從/old_home移至/home,然後刪除空白/old_home目錄。

我認為這種方法對我來說通常是最安全和最簡單的,並且已經使用過多次。然而,它的缺點是實際上有 2x40 GB 而不是單個 80 GB 空間,這有時是好的,有時是壞的 - 例如,當您想避免意外地用用戶文件填滿系統磁碟時,最好有/home作為單獨的分區。

所以另一個選擇是使用 GNU分手了程式將 vda2 和 vda5 分割區(首先是 vda2,然後是 vda5,因為前者包含後者)大小調整為 80 GB。parted是專門設計來修改分區而不遺失資料的,這一點fdisk不能保證。我確定parted它在 Debian 存儲庫中,因此您可以使用apt.

調整分割區大小後,使用該指令resize2fs /dev/vda5將檔案系統擴充/至完整的 80 GB。

答案3

通常在這種情況下您會使用fdisk /dev/vda.

  • 記下分割區 2 和 5 的起始磁區。
  • 刪除分割區 5。
  • 刪除分割區 2。
  • 使用舊的起始磁區和新的結束磁區(預設值)重新建立分割區 2。這是一擴充分割。
  • 使用舊的起始磁區和新的結束磁區(預設值)重新建立分割區 5。這是一個邏輯的分割。

在表格寫入並處於活動狀態(例如重新啟動)後,您仍然需要/dev/vda5使用resize2fs或適合該分割區上的檔案系統的任何內容來擴展檔案系統。

最重要的是,在嘗試此操作之前,請確保您有良好的備份。

相關內容