Skip to content

[Linux] 透過 gparted 或 parted 重新縮放硬碟磁碟區(partition)尺寸

Last Updated on 2024-08-09 by Clay

最近由於工作中的需求、加上一些 Steam 的遊戲在 Windows 中跑起來比較順,我認真地考慮在 Linux 的筆電中重新切割出 200GB 的硬碟空間給 Windows;不過,由於我一開始把一整顆的 1TB SSD 分配給了 Linux,現在只能重新進行磁區的縮放。

我的 SSD 是 NVMe(Non-Volatile Memory Express)協議的固態硬碟,與傳統的 SATA SSD 或 HDD 一樣是支援磁碟區(partition)的重新劃分。在 Linux 中,我們可以透過 gpartedparted 來做到重新分配空間。

不過我們需要牢記:就算這個動作本身是安全的,但仍然要備份重要資料!意外可能潛藏在任何一個小步驟中。另外,要注意如果我們是要像我今天所操作一般縮小空間,縮小後的空間必須仍然足夠大到容納所有的資料,否則可能會發生意外。

本篇文章是我透過 gpartedparted 工具進行重新劃分的步驟筆記;gparted 可以視為 parted 的圖形化界面版本,封裝了 parted 的功能去管理磁碟區。

在重新分配前,別忘了硬碟一定要記得用 umount 卸載下來,千萬不能處於掛載的狀態。


使用 gparted 重新分配磁碟區

首先,我們可以安裝 gparted 工具。

sudo apt update
sudo apt install gparted


接著,我們啟動 gparted 工具:

sudo gparted


Output:

選擇我們想要重新分配的硬碟,可以看到總共的尺寸、使用的容量和剩餘的空間。

接著我們對著想要重新分配的硬碟點選右鍵,選擇 Resize/Move。以下,我會先拿 /dev/sda 的硬碟作為示範。


如果是要調整當前磁碟區的大小,就把想要調整成的目標尺寸填寫在 New size (MiB) 選項裡,下面的 Free space following (MiB) 會自動補上剩餘的空間。

完成配置後,按下右下角的 Resize/Move 就完成配置了。


最後,檢查下方式否出現 "Shrink /dev/sda1 from 931.51 GiB to 400.00 GiB" 這行敘述,這是我們的操作敘述;接下來按下上面那顆綠色的打勾按鈕,就可以正式執行這個操作。

目前在我的測試中,exFAT 不支援這樣重新分割,但是 ext4 之類的格式則沒有問題。


使用 parted 重新分配磁碟區

當然,如果我們處於沒有圖形化界面的伺服器上,我們當然只能通過命令列工具來處理磁碟區的重新分配。首先使用以下指令開始處理你想要重新分配的硬碟(假設是 /dev/sda,注意是硬碟不是磁碟區):

sudo parted /dev/sda


Output:

GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)


我們可以先用 print 來查看這顆硬碟磁碟區的狀態,這將顯示當前磁碟上的所有分割磁碟區,包括編號、大小、類型等資訊。

(parted) print


Output:

Model: Seagate One Touch w/PW (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 1000GB 1000GB ext4


接著我們來正式縮小某個分割磁區吧!在這裡,我的分割磁區只有 Number 1 而已,也就是 /dev/sda1,我們可以使用 resizepart 指令,格式為 resizepart <磁碟區編號> <結束位置>

(parted) resizepart 1 400GB
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? yes
(parted) print


Output:

Model: Seagate One Touch w/PW (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 400GB 400GB ext4


順帶一提,如果你希望在這裡順便把新的未分配自由空間切割,可以使用:

(parted) mkpart primary ext4 <START> <END>
  • primary 是分割區類型(可以是 primary 或 logical)
  • ext4 是文件系統類型(可以是 ext4、ntfs、exfat 等)
  • <START> 是新分割磁碟區的開始位置(如 400GB)
  • <END> 是新分割磁碟區的結束位置(如 900GB)

最後確認了你的處理沒有問題,可以直接退出,所有的操作會被保存。

(parted) quit


Output:

Information: You may need to update /etc/fstab.

References


References

Tags:

Leave a Reply