Parted是一個比fdisk更高級的工具,它支持多種分區表格式,包括MS-DOS和GPT。它允許用戶創建,刪除,調整大小,縮小,移動和復制分區,重新組織磁盤使用,以及將數據復制到新硬盤,但在縮小分區時它沒有按預期工作,我大部分時間都得到了錯誤,所以我建議用戶不要縮小分區,GParted是分手的GUI前端。作為一種設計用於Linux的工具,它沒有構建成處理與fdisk關聯的多種分區類型,但是,它可以處理最常見的分區格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交換分區。
這里要主要parted的操作是即刻生效的,所以操作前要認真想好
一、parted命令格式
用法:parted [選項] [設備] [指令]
將帶有“參數”的命令應用於“設備”。如果沒有給出“命令”,則以交互模式運行。
選項:
-h, 顯示此求助信息
-l, 列出系統系統中所有的磁盤設備,和fdisk -l命令的作用差不多。
-m, 進入交互模式,如果后面不加設備則對第一個磁盤進行操作
-s, 腳本模式
-v, 顯示版本
設備:磁盤設備名稱,如/dev/sda
指令:如果沒有給出“指令”,則parted將進入交互模式運行。
align-check 檢查分區N的類型(min|opt)是否對齊
help 打印通用求助信息,或關於[指令]的幫助信息
mklabel 創建新的磁盤標簽 (分區表)
mkpart 創建一個分區
name 給指定的分區命名
print 打印分區表,或者分區
quit 退出程序
rescue 修復丟失的分區
resizepart 調整分區大小
rm 刪除分區
select 選擇要編輯的設備,默認只對指定的設備操作,這里可以改變指定的設備
disk_set 更改選定設備上的標志
disk_toggle 切換選定設備上的標志狀態
set 更改分區的標記
toggle 設置或取消分區的標記
unit 設置默認的單位
version 顯示版本信息
二、parted交互模式分區管理
與fdisk類似,parted可以使用命令“parted 設備名”進入交互模式。進入交互模式后,可以通過parted的各種指令對磁盤分區進行管理。
1、新建GPT分區
這里要主要parted的操作是即刻生效的,所以操作前要認真想好。
root@debian:~# parted /dev/sdb #對磁盤/dev/sdb進行分區
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) #如果忘記有那些可用的命令按兩次Tab鍵可以顯示所以可用的指令,也支持Tab命令補齊,和上下查找歷史記。可用命令如下:
align-check disk_toggle mklabel mktable print rescue resizepart select toggle version
disk_set help mkpart name quit resize rm set unit
(parted) help mklable #查看mklable命令的用法及支持的分區表
mklabel,mktable LABEL-TYPE create a new disklabel (partition table) #用法,用mktable也是一樣的作用
LABEL-TYPE is one of: atari, aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop #支持的分區類型
(parted) mklable gpt #創建gpt分區表,如果以存在分區表也可以通過這里命令更改
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? yes # 警告用戶磁盤上的數據將會被銷毀,詢問是否繼續,我們這里是新的磁盤,輸入yes后回車
(parted) print #查看分區表的信息
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt #分區表以是gpt格式
Disk Flags:
Number Start End Size File system Name Flags
(parted) mkpart #輸入mkpart新建分區,如果輸入mkpart指令不帶任何參數,parted會一步步提示用戶輸入相關信息最終完成創建,如下所示:
Partition name? []? #分區的名字,這里可以直接回車不給分區命名,也可以輸入用來標記的名字
File system type? [ext2]? #分區被格式化的文件系統,可以按兩次Tab鍵查看支持的文件系統
affs0 affs6 amufs3 btrfs freebsd-ufs linux-swap ntfs
affs1 affs7 amufs4 ext2 hfs linux-swap(new) reiserfs
affs2 amufs amufs5 ext3 hfs+ linux-swap(old) sun-ufs
affs3 amufs0 apfs1 ext4 hfsx linux-swap(v0) swsusp
affs4 amufs1 apfs2 fat16 hp-ufs linux-swap(v1) xfs
affs5 amufs2 asfs fat32 jfs nilfs2 zfs
File system type? [ext2]? ext4 #輸入被格式化的文件系統為ext4,這里必須要輸入文件系統
Start? 0% #開始位置,這里要輸入0%或2048s或1M都可以但是不要輸入別的,下面有說明。
End? 1G #結束位置,默認單位為compact,我們想要用其他單位必須在數字后面加上單位
(parted) mkpart pname ext4 1G 2G #如果想一步就把分區創建好可以像左邊一樣,pname表示分區名這樣分區這里必須有,后面3項目分別是文件系統,開始位置,結束位置
(parted) mkpart pname 2G 100% #如果不想創建文件系統這里可以不加這個選項,后面兩項分別是開始位置,和結束位置,100%表示使用全部剩余空間
(parted) p #輸入print查看分區情況,如果指令是唯一的直接輸入指令的首字母也可以。
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB #磁盤的總容量
Sector size (logical/physical): 512B/512B #扇區的大小
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB ext4 #通過一步步創建的第一個分區
2 1000MB 2000MB 999MB ext4 pname #通過一步就創建的分區
3 2000MB 5368MB 3368MB pname #創建不帶文件系統的分區
如果Start位置輸入的不是0%或2048s或1M或0G的數值,分區結束會有這個的提示,Warning: The resulting partition is not properly aligned for best performance.Ignore/Cancel? (意思是說警告:生成的分區沒有正確對齊以獲得最佳性能。忽略/取消? 我們可以輸入Ignore以忽略,但是這樣並不好)
這是因為在512B扇區的磁盤驅動器上,Parted希望分區從2048的倍數(即1 MiB對齊)扇區開始。
2、設置默認的單位
(parted) unit #輸入unit更改默認單位,如果不知道支持那些單位直接回車
Unit? [compact]? #按兩次Tab鍵,列出支持的單位,在parted交互模式下不知道怎么輸入就先按兩次Tab鍵看看有什么結果,很好用
% B chs compact cyl GB GiB kB kiB MB MiB s TB TiB
Unit? [compact]? GB #輸入更改后的默認單位
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB #默認單位以改稱GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB ext4 #默認單位以改稱GB
2 1.00GB 2.00GB 1.00GB ext4 pname
3 2.00GB 5.37GB 3.37GB pname
3、更改分區名
(parted) name #輸入name指令更改分區名,輸入后直接回車
Partition number? 3 #輸入要更改名的分區號
Partition name? [pname]? namep #輸入新的名字
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB ext4
2 1.00GB 2.00GB 1.00GB ext4 pname
3 2.00GB 5.37GB 3.37GB namep #名稱已經更改
4、配置分區的標記
parted的分區標記相當於fdisk gdisk里面的分區類型
(parted) set #輸入set更改分區標記,輸入后直接回車
Partition number? 3 #更改標記的分區
Flag to Invert? #輸入更改標記的類型,按二次Tab鍵查看支持的類型
atvrecv boot esp hp-service legacy_boot msftdata prep
bios_grub diag hidden irst lvm msftres raid
Flag to Invert? lvm #標記為lvm類型
New state? [on]/off? on #輸入on回車表示打開
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB ext4
2 1.00GB 2.00GB 1.00GB ext4 pname
3 2.00GB 5.37GB 3.37GB pname lvm #分區的標記已經成效
(parted) set #取消標記操作
Partition number? 3
Flag to Invert? lvm
New state? on/[off]? off #添加標記和取消標記的主要區別就在這里,這里要輸入off來關閉標記
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB ext4
2 1.00GB 2.00GB 1.00GB ext4 pname
3 2.00GB 5.37GB 3.37GB pname #分區的標記已經取消
5、刪除分區
(parted) rm #輸入刪除指令rm直接回車,如果后面加上分區號在回車就可以直接刪除分區
Partition number? 3 #輸入要刪除的分區,這里操作一定要慎重,一旦回車就生效了,是不可退的。
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags #成功刪除了分區
1 0.00GB 1.00GB 1.00GB
2 1.00GB 2.00GB 1.00GB pname
6、查看剩余可用的空間等信息
(parted) p #先查看分區的信息
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB
2 1.00GB 2.00GB 1.00GB pname
可用分區的容量需要用Disk /dev/sdb: 這行提供的總容量減去最后一個分區的結束位置的容量,這里舉例中可用分區容量為:5.37GB-2.00GB=3.37G
7、調整分區大小
盡量不要對分區進行調整,可能會丟失數據,如果要調整也要先備份數據
(parted) resizepart #輸入調整分區的指令resizepart直接回車,這里增加容量,增加容量的分區后面必須得有可用的未分配的分區
Partition number? 2 #輸入要更改的分區
End? [2.00GB]? 4G #擴容后這個分區的結束位置,這個要根據擴容前分區結束的位置和增加的容量來確定最終的分區位置
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB
2 1.00GB 4.00GB 3.00GB ext4 pname
(parted) resizepart #這里減少容量
Partition number? 2
End? [4.00GB]? 3G
Warning: Shrinking a partition can cause data loss, are you
sure you want to continue?
Yes/No? yes #減少容量會有這樣的警告:收縮分區會導致數據丟失,你確定要繼續嗎?
(parted)
三、非交互式parted分區命令
非交互模式建議把要操作的命令都在文本文件中寫出來,確認無誤后在進行配置。
1、創建GPT分區表
root@debian:~# parted /dev/sdc mklabel gpt #通過這里命令直接創建GPT分區表
Information: You may need to update /etc/fstab.
root@debian:~# parted /dev/sdc print #通過這里命令直接查看分區信息,print改稱p也可以
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt #創建成功
Disk Flags:
Number Start End Size File system Name Flags
root@debian:~#
2、創建分區
root@debian:~# parted /dev/sdc mkpart pname 0G 1G #創建1G容量的分區pname為分區名必須添加,這里不能直接添加文件系統類型,后面是起始和結束位置
root@debian:~# parted /dev/sdc p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB pname #成功創建,起始位置是0G也會從2048扇區開始創建。
3、更改默認顯示單位
root@debian:~# parted /dev/sdc unit GB print #需要在查看指令print前添加unit GB指令來以GB顯示
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB pname
2 1.00GB 2.00GB 1.00GB pname
3 2.00GB 5.37GB 3.37GB pname
4、更改分區名
root@debian:~# parted /dev/sdc name 3 namep #更改分區3的分區名
root@debian:~# parted /dev/sdc print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB pname
2 1000MB 2000MB 999MB pname
3 2000MB 5368MB 3368MB namep #更改成功
5、配置分區的標記
root@debian:~# parted /dev/sdc set 3 lvm #為分區3添加lvm標記
New state? [on]/off? on #輸入on回車表示打開
Information: You may need to update /etc/fstab.
root@debian:~# parted /dev/sdc print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB pname
2 1000MB 2000MB 999MB pname
3 2000MB 5368MB 3368MB namep lvm
root@debian:~# parted /dev/sdc set 3 lvm #取消分區3的lvm標記
New state? on/[off]? off #添加標記和取消標記的主要區別就在這里,這里要輸入off來關閉標記
Information: You may need to update /etc/fstab.
root@debian:~# parted /dev/sdc print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB pname
2 1000MB 2000MB 999MB pname
3 2000MB 5368MB 3368MB namep #取消分區3的lvm標記成功
6、刪除分區
root@debian:~# parted /dev/sdc rm 3 #刪除分區3
Information: You may need to update /etc/fstab.
root@debian:~# parted /dev/sdc print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags #刪除分區3成功
1 1049kB 1000MB 999MB pname
2 1000MB 2000MB 999MB pname
7、查看剩余可用的空間等信息
root@debian:~# parted /dev/sdc unit GB print #查看分區的信息,以GB為單位顯示
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB
2 1.00GB 2.00GB 1.00GB pname
可用分區的容量需要用Disk /dev/sdb: 這行提供的總容量減去最后一個分區的結束位置的容量,這里舉例中可用分區容量為:5.37GB-2.00GB=3.37G
8、調整分區大小
盡量不要對分區進行調整,可能會丟失數據,如果要調整也要先備份數據
root@debian:~# parted /dev/sdc resizepart 2 4G #增加分區容量,要輸入調整分區的指令及調整的分區,和擴容后這個分區的結束位置,這個要根據擴容前分區結束的位置和增加的容量來確定最終的分區位置
Information: You may need to update /etc/fstab.
root@debian:~# parted /dev/sdc unit GB print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB ext4 pname
2 1.00GB 4.00GB 3.00GB ext4 pname #分區2的容量已經增加
root@debian:~# parted /dev/sdc resizepart 2 3G #減小分區的容量
Warning: Shrinking a partition can cause data loss, are you
sure you want to continue?
Yes/No? yes #減少容量會有這樣的警告:收縮分區會導致數據丟失,你確定要繼續嗎?
Information: You may need to update /etc/fstab.
root@debian:~# parted /dev/sdc unit GB print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 5.37GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 0.00GB 1.00GB 1.00GB ext4 pname
2 1.00GB 3.00GB 2.00GB ext4 pname #分區2的容量已經減少
四、parted配額MBR分區
實際生產用對MBR的分區推薦用fdisk來進行操作
1、更改分區表
(parted) mklabel msdos #將現有的GPT分區更改成MBR分區,新磁盤也是通過這個指令來創建MBR分區
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? #警告:/dev/sdb上現有的磁盤標簽將被銷毀這個磁盤上的所有數據都將丟失。你想繼續嗎?
Yes/No? yes #輸入yes繼續,我的硬盤有gpt分區表才會提示,如果是新的磁盤不會提示
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos #分區表已經改成MBR
Disk Flags:
Number Start End Size Type File system Flags
2、新建MBR分區
(parted) mkpart #新建第一個分區,MBR磁盤標簽不支持分區名下面不會有輸入選項
Partition type? primary/extended? primary #新建主分區還是擴展分區
File system type? [ext2]? ext4 #分區的文件系統類型
Start? 0% #起始位置
End? 1G #結束位置
(parted) mkpart primary 1G 2G #不進行交互直接創建主分區,不創建文件系統,
(parted) mkpart extended 2G 100% #直接創建擴展分區,不進行交互
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1000MB 999MB primary ext4 lba #新建的主分區
2 1000MB 2000MB 999MB primary lba #新建的主分區
3 2000MB 5369MB 3369MB extended lba #新建的擴展分區
(parted) mkpart #繼續創建邏輯分區
Partition type? primary/logical? logical #新建主分區還是邏輯分區,只有創建了擴展分區才會出現邏輯分區的選項,輸入logical
File system type? [ext2]? ext4
Start? 2G
End? 3G
(parted) mkpart logical ext4 3G 4G #直接創建邏輯分區同時格式化
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1000MB 999MB primary
2 1000MB 2000MB 999MB primary
3 2000MB 5369MB 3369MB extended lba
5 2001MB 3000MB 999MB logical ext4 lba #邏輯分區成功分區號從5開始
6 3001MB 4000MB 999MB logical ext4 lba
其他的操作和gpt分區下一樣這里就不說了
五、Linux下分區工具