如何透過 Parted 命令列工具調整 GPT 分割區的大小。 (使用 SSH 救援環境)

如何透過 Parted 命令列工具調整 GPT 分割區的大小。 (使用 SSH 救援環境)

我有一個遠端專用伺服器,沒有線上控制面板來在初始作業系統安裝後調整分割區大小,因此我使用基於 debian 的救援環境來操作已卸載的分割區。問題是,當涉及遠端磁碟機上的分割區操作時,我有點愚蠢,我嘗試過使用GNU Parted 命令列工具,因為GParted 不是一個選項,並且fdisk 沒有用,因為磁碟機是用GPT 格式化的,只能用於發現resize指令從2.4版本開始已經被刪除了。因此,下面是我的分區列表,來自parted的列印命令:

Number  Start   End     Size    File system     Name     Flags
1      20.5kB  1049kB  1029kB                  primary  bios_grub
2      2097kB  21.0GB  21.0GB  ext4            primary
3      21.0GB  2000GB  1979GB  ext4            primary
4      2000GB  2000GB  536MB   linux-swap(v1)  primary

我需要弄清楚的是如何將 #3 縮小到大約 1.2TB,然後擴展 #2 以填充 #3 縮小時移動的內容。我的 #2 分割區已滿,而 #3 分割區有空閒空間。

答案1

執行您想要的操作可能會也可能不會,這取決於目前安裝的(並且必須安裝的)內容,以及您是否可以從其他媒體啟動來解決安裝問題。這裡要考慮的因素:

  • 始終牢記 a 之間的區別分割(一種簡單的資料結構,定義一塊磁碟空間的起點和終點,通常與類型程式碼等其他內容一起定義)和檔案系統(保存在分割區或另一個容器中的更複雜的資料結構,例如 LVM 的邏輯磁碟區)。如果您還沒有完全理解這種區別,請立即停止並研究它。
  • 您可以增加已安裝的 ext2/3/4 檔案系統的大小,但據我所知,您無法減少已安裝的 ext2/3/4 檔案系統的大小。該resize2fs實用程式透過命令列完成此工作。
  • 要調整分割區大小,您可能必須刪除該分割區並在其位置建立新分割區。起點和終點可能需要以扇區級精度指定,parted預設不提供。你需要設置unit s才能得到這個;或者您可以使用gdisk,它預設提供扇區級精度。 (即使gdisk如此,預設也會自動將分割區與 2048 磁區值對齊,因此您可能需要使用d專家選單上的選項來調整對齊方式。)
  • 檔案系統調整大小操作通常會使檔案系統的起始點保持不變。因此,如果您需要移動分割區的起始點,dd則必須使用其他工具來移動檔案系統的整個內容。根據移動的方向,這可能需要在刪除原始分割區之前或之後完成,並且可能需要在移動之前或之後建立新分割區。如果移動操作與原始位置重疊,則必須非常小心你的操作方式,以免破壞一些分區資料!
  • 請務必小心分割區和檔案系統端點。如果您縮小檔案系統,然後重新建立一個有點太小的新分割區,則最終可能會丟棄重要資料。我建議將檔案系統縮小到比您預期的小,建立一個新分割區,然後使用resize2fs將檔案系統成長到新的周圍分割區的大小。此過程可最大限度地減少尺寸不匹配的可能性。
  • 請記住,更改分區表後您可能需要重新啟動才能讓核心使用新表。

由於這些問題,在沒有 GParted 或其他一些旨在協調分割區和檔案系統變更的工具的幫助下嘗試執行您想要的操作可能會非常危險。它可以完成,但是指定磁區值時的一個失誤可能會讓您的磁碟完全毫無價值。事實上,你正在尋求這方面的幫助,這讓我對建議你做出嘗試持謹慎態度;對於以前從未做過這類事情的人來說,破壞生產系統的風險太大了。如果您沒有其他選擇,我強烈建議您在本地重新建立伺服器並在副本上進行練習,然後再在遠端伺服器上嘗試。

您可能需要考慮一些替代方案:

  • 使用GParted-- 如果您可以從外部媒體啟動,則可以使用 GParted。你說這是一個遠端伺服器。許多此類系統提供 BMC,使您能夠連接虛擬 USB 驅動器並透過 Java 小程式查看虛擬控制台。使用此功能將非常慢,但應該使您能夠運行 GParted 並使您的更改更加輕鬆和安全。
  • 建立額外的分區-- 您可以縮小一個分區,然後建立一個新分區,而不是移動和增加另一個分區。然後,您可以將資料從子目錄移至新分割區,並將其安裝到該子目錄的位置。這種方法基本上消除了差異;您仍然必須縮小一個分區,但可以避免執行更危險和更困難的移動操作。
  • 使用符號連結-- 您可以透過將一些檔案從太滿的分割區拆分到不太滿的分割區,然後使用符號連結使它們可以在所需路徑上存取來實現您的目標。這可能是最安全的方法。
  • 重新安裝-- 如果您有足夠的備份,您可以備份系統,以更好的設定重新安裝,並還原原始資料。
  • 現場進行-- 如果您可以實際存取您的伺服器,或者如果您有現場幫助,您(或您的幫助者)可以使用 Ubuntu 安裝 USB 隨身碟親自進行操作,就像使用桌面系統一樣。根據這項工作的重要性以及伺服器相對於您的位置,甚至可能值得一趟來完成這項工作。
  • 新增磁碟-- 您可以考慮新增磁碟(如果可以的話),並將一些資料移至該磁碟。

將來,您可能需要考慮使用邏輯磁碟區管理(LVM),這使得此類操作變得更加簡單和安全。 LVM 有一個顯著的學習曲線,但是一旦您掌握了基礎知識,它就會有很大幫助,因為您不必擔心行動分割區;檔案系統像檔案系統中的檔案一樣存儲,因此一旦縮小一個檔案系統,就可以將另一個檔案系統擴展到可用空間,而無需更改起始點。 LVM 還可以幫助您以新磁碟的形式新增空間。

答案2

作為臨時修復,來自我讀過的一篇文章。似乎 70% 的使用空間來自網頁伺服器,特別是 /var/www。所以我所做的是:

cd /var
mv www /home
ln -s /home/www www
ll
lrwxrwxrwx  1 root root      9 Oct 18 12:33 www -> /home/www/

就像我說的,臨時修復,但我的根目錄現在只有 %30 已滿,而不是 %100。因此,在我可以調整分割區大小之前,這將起作用。

相關內容