Linux 的 Parted 指令教學:建立、變更與修復磁碟分割區

選擇磁碟

print 指令預設會列出系統上第一顆硬碟的分割區資訊,如果您的系統中有多顆硬碟,可以使用 select 指令來選擇要操作的硬碟,例如選擇 /dev/sdb 則執行:

(parted) select /dev/sdb

輸出為

Using /dev/sdb

接著就可以使用 print 列出 /dev/sdb 的磁碟分割區資訊。

令一個選擇硬碟的方式是在執行 parted 指令時用參數指定:

sudo parted /dev/sdb

建立磁碟分割區

Parted 可以用來建立磁碟的主要分割區與邏輯分割區,兩種分割區的建立方式是相同的,這裡示範主要分割區的建立步驟。

在建立分割區之前,請先執行 print 確認一下目前所選擇的硬碟是否正確:

(parted) print

如果是沒有任何資料的硬碟,可能會出現類似這樣的訊息:

Error: /dev/sdb: unrecognised disk label
請小心確認目前的磁碟,若則錯誤的磁碟,可能會造成磁碟中的資料完全損毀!

建立磁碟分割區之前,要先建立磁碟分割表,一般的硬碟最常使用的是 msdos

(parted) mklabel msdos

如果是大於 2TB 的硬碟,可以使用 gpt

(parted) mklabel gpt

關於 mklabel 所支援的 label 類型,可以參考 GNU Parted 的說明文件

如果硬碟中已經存在有磁碟分割表的資訊,就會出現這樣的警告:

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No?

若確定無誤,則輸入 y 繼續。

建立好磁碟分割表之後,再用 print 確認一次:

(parted) print

輸出會類似:

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

接著建立磁碟分割區,分割區可以使用 mkpart 指令來建立:

(parted) mkpart

接著輸入一些設定參數:

Partition name?  []? my_part 1
File system type?  [ext2]? 2
Start? 1 3
End? 10000 4

1 輸入分割區名稱。

2 檔案系統格式,使用預設即可,之後格式化的時候可在更改。

3 輸入起始位置。

4 輸入結束位置。

如果是使用 msdos 的磁碟分割表,在建立磁碟分割區會有不同的選項:

Partition type?  primary/extended? primary
File system type?  [ext2]?
Start? 1                
End? 10000

主要的差異是要選擇分割區的類型,primary 是主要分割區,而 extended 則是延伸分割區。

建立好分割區之後,使用 print 確認:

(parted) print

輸出為

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  10.0GB  9999MB               my_part

接著離開 Parted 的操作環境。

(parted) quit

在 shell 中使用 mkfs.ext4 格式化分割區:

mkfs.ext4 /dev/sdb1

輸出為

mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
610800 inodes, 2441216 blocks
122060 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2499805184
75 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

如果需要將分割區格式化成其他的檔案系統,可以使用其他的 mkfs.* 工具。

雖然 Parted 操作環境之中也有格式化分割區的功能,但是它的穩定性不如一般專門的格式化工具(如 mkfs 系列的工具),所以建議在建立好分割區之後,離開 Parted 環境再用一般的工具格式化。

這樣新的磁碟分割區就完成了,接著就可以用 mount 將分割區掛載起來使用:

sudo mkdir /mnt/my_part
sudo mount /dev/sdb1 /mnt/my_part/

df 查看一下掛載後的磁碟狀況:

sudo df -h

輸出為

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       5.8G  2.4G  3.2G  44% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            986M  4.0K  986M   1% /dev
tmpfs           201M  928K  200M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1001M  136K 1001M   1% /run/shm
none            100M   28K  100M   1% /run/user
/dev/sdb1       9.1G   21M  8.6G   1% /mnt/my_part
Linux

4 留言

  1. yeh

    版大您好!
    看到您寫的網誌教人如何格式化新硬碟, 但我卻碰到問題, 因此冒昧寫信請教您
    想要請教一下, 我有一顆4TB硬碟想要重新格式化, 但是
    我使用parted 卻看不到新裝置, 只有/dev/sda (原本系統的),
    使用fdisk -l 可以看到新裝的裝置在/dev/sdg
    但是我格式化大於 2TB的新硬碟
    所以想請教, 遇到這種狀況應該怎麼處理?
    感謝萬分

  2. meow

    寫文章辛苦了

    提醒一下第二段「最常使用的工具就是 Parted,而這個工具只適用於容量較小的硬碟,容量太大的硬碟就無法使用 fdisk 來處理」,對照前後文應該是fdisk而不是parted哦

    • G. T. Wang

      感謝提醒,已修正。

  3. sihai

    請問!!低於2TB如果是500G硬碟會不會使用GTP會有問題啊?

    小弟家裡很多500G~1TB硬碟…想說沒有到達2TB直接使用GTP會不會產生什麼問題呢?

    小弟困惑中….

Comments are Closed