當前位置:
首頁 > 最新 > Linux大分區利器parted

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雲平台運維


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲運維聯盟 的精彩文章:

Linux服務管理
10分鐘Linux-用戶管理

TAG:雲運維聯盟 |