Linux大分區利器parted
[10分鐘Linux]-Linux磁碟管理
多數情況下,我們可以使用fdisk進行分區,但是fdisk工具對分區的大小有限制,它只能劃分小於2T的硬碟。但是現在的磁碟空間很多都已經是遠遠大於2T了,甚至達到2.5T和3T,那要怎麼辦?可以通過Parted實現對GPT磁碟進行分區操作。
1.什麼是GPT
MBR是眾所周知的磁碟分區表方案,就是將分區信息保存到磁碟的第一個扇區(MBR扇區)中的64個位元組中,每個分區項佔用16個位元組,這16個位元組中存有活動狀態標誌、文件系統標識、起止柱面號、磁頭號、扇區號、隱含扇區數目(4個位元組)、分區總扇區數目(4個位元組)等內容。由於MBR扇區只有64個位元組用於分區表,所以只能記錄4個分區的信息。這就是硬碟主分區數目不能超過4個的原因。後來為了支持更多的分區,引入了擴展分區及邏輯分區的概念。但每個分區項仍用16個位元組存儲。
另外最關鍵的是MBR分區方案無法支持超過2TB容量的磁碟。因為這一方案用4個位元組存儲分區的總扇區數,最大能表示2的32次方的扇區個數,按每扇區512位元組計算,每個分區最大不能超過2TB。磁碟容量超過2TB以後,分區的起始位置也就無法表示了。在硬碟容量突飛猛進的今天,2TB的限制將很快被突破。由此可見,MBR分區方案已經無法滿足需要了。
關於GPT
GUID分區表(簡稱GPT。使用GUID分區表的磁碟稱為GPT磁碟)是源自EFI標準的一種較新的磁碟分區表結構的標準。與傳統使用的主引導記錄(MBR)分區方案相比,GPT提供了更加靈活的磁碟分區機制。它具有如下優點:
1.支持2TB以上的大硬碟。
2.每個磁碟的分區個數幾乎沒有限制。為什麼說「幾乎」呢?是因為Windows系統最多只允許劃分128個分區。不過也完全夠用了。
3.分區大小几乎沒有限制。又是一個「幾乎」。因為它用64位的整數表示扇區號。誇張一點說,一個64位整數能代表的分區大小已經是個「天文數字」了,若干年內你都無法見到這樣大小的硬碟,更不用說分區了。
4.分區表自帶備份。在磁碟的首尾部分分別保存了一份相同的分區表。其中一份被破壞後,可以通過另一份恢復。
5.每個分區可以有一個名稱(不同於卷標)。
2.分區管理:parted
Parted 具有豐富的功能,它除了能夠進行分區的添加、刪除等常見操作外,還可以進行移動分區、創建文件系統、調整文件系統大小、複製文件系統等操作。接下來著重介紹分區的添加、刪除等常見操作。
parted 同時還支持 fdisk 所不支持的 GUID分區表(GUID Partition Table), 這在IA64平台上管理磁碟時非常有用。
必須安裝了 parted 軟體包才能使用 parted 工具。如果你的系統沒有安裝,請使用rpm或者是yum先安裝。
parted的語法
parted 有兩種運行模式:命令行模式和交互模式。
parted 與 fdisk 的交互模式不同,在 parted 的交互模式下執行命令,一旦按回車鍵確認,命令就馬上執行,對磁碟的更改就立刻生效。
parted 命令的常用格式是:
(1)# parted [選項]
(2)# parted [選項] []
格式(1)用於進入parted 的交互模式,在該模式下輸入 parted 的子命令對指定的硬碟進行分區等操
作。quit 命令用於退出交互模式。
格式(2)直接在命令行方式下對指定的硬碟進行分區等操作。
其中常用的選項為:
-h, ––help — 顯示求助信息
-i, ––interactive — 在必要時提示用戶
-l, ––list — 顯示所有磁碟設備的分區表
-s, ––script — 從不提示用戶
-v, ––version — 顯示版本
無論哪種模式,在parted中都可以使用若干子命令,見下表。
命令
說明
help [COMMAND]
列印命令的幫助信息,或指定命令的幫助信息。
print [free|NUMBER|all]
顯示分區表, 指定編號的分區, 或所有設備的分區表。
mkpart PART-TYPE [FSTYPE]
START END
創建新分區。PART-TYPE 是以下類型之一:primary(主分區)、extended(擴展分區)、logical(邏輯分區)。START 和 END 是新分區開始和結束的具體位置。
rm NUMBER
刪除指定編號 NUMBER 的分區。
set NUMBER FLAG STATE
對指定編號 NUMBER 的分區設置分區標記 FLAG。對於 PC 常用的 msdos 分區表來說,分區標記 FLAG 可有如下取值:」boot」(引導), 「hidden」(隱藏), 「raid」(軟RAID磁碟陣), 「lvm」(邏輯卷), 「lba」 (LBA,Logic Block Addressing模式)。 狀態STATE 的取值是:on 或 off 。
unit UNIT
設置默認輸出時表示磁碟大小的單位為 UNIT,UNIT 的常用取值可以為:『MB』、『GB』、『%』(占整個磁碟設備的百分之多少)、『compact』(人類易讀方式,類似於 df 命令中 -h 參數的作用)、『s』(扇區)、『cyl』 (柱面)、『chs』 (柱面cylinders:磁頭 heads:扇區 sectors 的地址) 。
mkfs NUMBER FS-TYPE
對指定編號 NUMBER 的分區創建指定類型 FS-TYPE 的文件系統。
mkpartfs PART-TYPE FSTYPE
START END
創建新分區同時創建文件系統。FS-TYPE 是以下類型之一:ext2、fat16、fat32、linuxswap、NTFS、reiserfs、ufs 等。
cp [FROM-DEVICE]
FROM-NUMBER TONUMBER
將分區 FROM-NUMBER 上的文件系統完整地複製到分區TO-NUMBER 中,作為可選項還可以指定一個來源硬碟的設備名稱 FROM-DEVICE,若省略則在當前設備上進行複製。
move NUMBER START END
將指定編號 NUMBER 的分區移動到從 START 開始 END 結束的位置上。注意:(1)只能將分區移動到空閑空間中。(2)雖然分區被移動了,但它的分區編號是不會改變的。
resize NUMBER START END
對指定編號 NUMBER 的分區調整大小。分區的開始位置和結束位置由 START 和 END 決定。
check NUMBER
檢查指定編號 NUMBER 分區中的文件系統是否有什麼錯誤。
rescue START END
恢復靠近位置 START 和 END 之間的分區。
mklabel,mktable LABELTYPE
創建一個新的 LABEL-TYPE 類型的空磁碟分區表,對於PC而言 msdos 是常用的 LABELTYPE。若是用 GUID 分區表,LABEL-TYPE 應該為 gpt。
quit
退出分區程序
name NUMBER NAME
為指定編號 NUMBER 的分區命名為 NAME。
select DEVICE
選擇另一個設備來配置
查看分區:print
在使用parted /dev/sda 命令進行分區提示符後,可以使用print 命令來查看當前磁碟的分區情況:
# parted
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type "help" to view a
list of commands.
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 344GB ①
Sector size (logical/physical): 512B/512B
Partition Table: msdos ②
Number Start End Size Type File system Flags ③
1 1049kB 525MB 524MB primary ext4 boot
2 525MB 344GB 343GB primary lvm
(parted)
① 顯示了磁碟的大小
② 顯示了磁碟標籤類型
③ 顯示了分區表。在分區表中,Number標籤是分區號碼。例如,次要號碼為1 的分區和 /dev/sda1 相對。Start(開始)和 End(結束)值以MB 為單位。Type(類型)是 primary、extended、logical 中的一個。Filesystem(文件系統)是文件系統的類型,它可以是 ext2、ext3、FAT、hfs、jfs、linux-swap、ntfs、reiserfs、hp-ufs、sun-ufs 或 xfs 之一。Flags(標誌)列列出了分區被設置的標誌。可用的標誌有:boot、root、swap、hidden、raid、lvm 或 lba。
選擇設備:select
在parted 命令提示符中,如果想對另一塊磁碟進行操作,首先使用 select 命令,再緊跟設備名,如 /dev/sdb。然後,你便可以查看或配置它的分區表:
(parted) select /dev/sdb
Using /dev/sdb
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
互動式創建分區:mkpart
當你查看分區資料時,fdisk會先顯示下面的信息,這些是該磁碟的基本信息:
(parted) mkpart ①
Partition type? primary/extended? p ②
File system type? [ext2]? ③
Start? 0 ④
End? 1024 ⑤
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) print ⑥
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 1024MB 1024MB primary
① 創建分區
② 輸入 p 表示創建主分區
③ 文件系統類型選擇默認的 ext2,直接回車
④ 輸入 0 表示從磁碟開始處創建
⑤ 輸入1024代表1個G。
⑥ 顯示當前分區表。
非互動式創建分區
例如,要在某個硬碟驅動器上從 1024 MB 到 2048 MB 間創建一個文件系統為 ext2 的主分區,鍵入以下命令:
(parted) mkpart primary ext3 1024 2048
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 1024MB 1024MB primary
2 1024MB 2048MB 1023MB primary
如果使用 mkpartfs 命令,分區創建後文件系統也會被創建。然而,parted 不支持創建 ext3 文件系統。因此,如果想創建一個 ext3 文件系統,請使用 mkpart,然後使用稍後會說明的 mkfs 命令來創建文件系統。mkpartfs 可以在 linux-swap文件系統類型上使用。
只要一按[Enter]鍵,改變就會發生,因此在執行前請檢查一下命令。
創建了分區後,使用 print 命令來確認所建分區在分區表中,並具備正確的分區類型、文件系統類型和大小。 你還需要記住新分區的次要號碼,這樣你才可以給它注以標籤。你應該查看/proc/partitions 文件的輸出來確定內核能夠識別這個新分區。
刪除分區
如果要刪除分區,在parted 命令提示,使用rm 命令即可,後面跟上要刪除的分區號(次要設備號):
(parted) rm 2
(parted) rm 1
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
上面的rm 2就是刪除sdb的第二個分區。
使用parted創建GPT分區
(parted) mklabel ①
New disk label type? 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
(parted) p ②
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) mkpart
Partition name? []? gpt3t ③
File system type? [ext2]? ④
Start? 0 ⑤
End? -1s ⑥
Warning: You requested a partition from 0.00B to
3299GB.
The closest location we can manage is 17.4kB to
3299GB.
Is this still acceptable to you?
Yes/No? yes
Warning: The resulting partition is not properly
aligned for best performance.
Ignore/Cancel? i
(parted) print ⑦
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 3299GB 3299GB gpt3t
① 創建磁碟標籤。
② 查看分區狀態。
③指定分區名稱
④ 指定分區類型
⑤ 指定開始位置
⑥指定結束位置
⑦顯示分區信息
重新劃分分區大小
parted 工具可以不必重新分區而該變分區的大小,但是新分區要比舊分區大,而且只支持ext2 文件系統的分區:
(parted) p
Disk geometry for /dev/sda: 0.000-10000.000 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 6997.060 primary ext3 boot
2 6997.061 8024.655 primary linux-swap
3 8024.656 8801.235 primary ext2
(parted) resize 3 8000 9500
上面的例子就是修改/dev/sda3 分區的大小。
關注我們
雲運維聯盟
專註Linux雲平台運維


TAG:雲運維聯盟 |