『學了就忘』Linux文件系統管理 — 61、使用parted命令進行分區
- 2021 年 12 月 3 日
- 筆記
- 測試基礎必會技能 - Linux系統
1、parted
命令介紹
我們Linux系統中有兩種常見的分區表,MBR分區表(主引導記錄分區表)和GPT分區表(GUID分區表,也叫全局唯一標識分區表),其中:
- MBR分區表:支援的最大分區是2TB(
1TB=1024GB
)(超過2TB不識別多出來的空間);最多支援4個主分區,或3個主分區1個擴展分區。 - GPT分區表:支援最大18EB的分區(
1EB=1024PB=1024*1024TB
);最多支援128個分區,其中1個系統保留分區,127個用戶自定義分區。
我們前邊所說的fdisk
命令,只識別MBR分區表。如果需要對GPT分區表進行分區,需要使用parted
命令。
注意:
parted
命令也有點小問題,就是命令自身分區的時候只能格式化成ext2
文件系統,不支援ext3
文件系統,那就更不用說ext4
文件系統了(截止到CentOS6.8
還是這樣,這裡只是指不能用parted
命令把分區格式化成ext4
文件系統,但是parted
命令還是可以識別ext4
文件系統的)。不過這沒有太多的影響,因為我們可以先用parted
命令分區格式化,再退出parted
命令,用mkfs
命令進行格式化成ext4
文件系統。
parted
命令感覺還不是太成熟,命令看文檔會用就可以了。
一個硬碟的分區表改變了,原來的分區就會全部消失,該硬碟在/etc/fstab
文件中配置的自動掛載的配置要提前全部刪除掉,否則下次啟動系統的時候就會報錯。
這裡要注意一點:刪除分區和建立分區是完全相反的流程。
- 建立分區:先加入一個新硬碟,
fdisk
命令進行分區設置,mkfs
命令對分區進行格式化,之後mount
命令進行分區掛載,最後修改/etc/fstab
文件進行分區自動掛載。- 刪除分區:先取消掉
/etc/fstab
文件的分區自動掛載,在umount
命令取消分區掛載,卸載沒有格式化,之後把分區刪除掉,然後在移除硬碟。
所以執行parted
命令前一定要刪除分區的自動掛載。(這個練習只進行新添加的硬碟用parted
命令分區,對創建Linux系統初始的硬碟不用parted
命令分區,所以只刪除新增硬碟的自動掛載就可以。)
2、parted
交互模式
執行命令:[root@localhost ~]# parted /dev/sdb(不用寫分區號)
命令結果如下,會開啟一個交互模式,並告知你可以通過help
查看命令列表。
# 用`parted`命令劃分/dev/sdb 硬碟
[root@localhost ~]# parted /dev/sdb
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted!Type'help'to view a list of commands.
(parted)(等待輸入交互命令的位置)
輸入help
。結果如下:
parted交互命令說明:
check NUMBER
:做一次簡單的文件系統檢測。cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER
:複製文件系統到另外一個分區。help [COMMAND]
:顯示所有的命令幫助。mklabel,mktable LABEL-TYPE
:創建新的磁碟卷標(分區表)。mkfs NUMBER FS-TYPE
:在分區上建立文件系統。mkpart PART-TYPE [FS-TYPE] START END
:創建一個分區。mkpartfs PART-TYPE FS-TYPE START END
:創建分區,並建立文件系統。move NUMBER START END
:移動分區。name NUMBER NAVME
:給分區命名。print [devices|free|list,all|NUMBER]
:顯示分區表,活動設備,空閑空間,所有分區。quit
:退出。rescue START END
:修復丟失的分區。resize NUMBER START END
:修改分區大小。rm NUMBER
:刪除分區。select DEVICE
:選擇需要編輯的設備。set NUMBER FLAG STATE
:改變分區標記。toggle [NUMBER [FLAG]]
:切換分區表的狀態。unit UNIT
:設置默認的單位。Version
:顯示版本。
3、建立分區
(1)查看分區
命令: print [devices|free|list,all|NUMBER]
:使用print
命令可以查看分區表資訊,包括硬碟參數,硬碟大小,扇區大小,分區表類型和分區資訊。
結果如下:
可以看到sdb
硬碟大小是21.5GB,文件系統是msdos
(msdos
文件系統是Windows下的文件系統,在parted
命令交互中就是表示MBR分區表)。
分區資訊總共七列,分別是:
Number
:分區號。Start
:分區起始位置,這裡不再像fdisk
用柱面表示,而是使用Byte更加直觀。End
:分區結束位置。Size
:分區大小。Type
:分區類型。File system
:文件系統類型。我不是說parted
不支援ext4
文件系統嗎?注意,我一直都是說parted
不能直接把分區,直接格式化成ext4
文件系統,但是它是可以識別的。- 標誌:
Flags
,就是分區的標記。
(2)修改成GPT分區表
把硬碟由MBR分區表,改成GPT分區表,使用的命令如下:
mklabel,mktable LABEL-TYPE
:創建新的磁碟卷標(分區表)。
(如果要由GPT分區表改成MBR分區表,命令為mklabel msdos
)
修改了分區表,如果這塊硬碟已經有分區了,那麼原有分區和分區中的數據都會消失,而且需要重啟系統才會生效。
我們在查看一下當前硬碟分區表情況,如下圖所示:
可以看到分區表已經變成GPT分區表,並且之前硬碟的分區資訊已經沒有了。
注意:在說一下,一定要把
/etc/fstab
文件中和原有分區的內容刪除掉(就是修改的硬碟的分區的自動掛載),才能重啟動,要不系統啟動就一定會報錯的。
之後quit
退出parted
命令交互,執行reboot
命令重啟電腦。
重啟完電腦才能執行之後的操作。(不重啟後續操作是無法完成的)
(3)建立分區
因為修改過了分區表,所以/dev/sdb
硬碟中的所有數據都消失了,所以我們可以重新對這塊硬碟分區了。
執行parted
命令,進入硬碟分區。
執行分區命令,對硬碟進行分區,命令如下:
mkpart PART-TYPE [FS-TYPE] START END
:創建一個分區。
注意:建立分區時,默認文件系統就只能建立成
ext2
了。
查看硬碟的分區情況,如下圖所示:
已顯示剛剛創建好的分區disk1
。因為沒有格式化,所以File system:文件系統類型
是空著的。
不知道大家注意到了嗎?
我們現在的
Type
這個欄位,也就是分區類型的欄位,多了Name
分區名欄位。分區類型是標識主分區、擴展分區和邏輯分區的,不過這種標識只在MBR分區表中使用,我們現在已經變成了GPT分區表了,所以就不再有Type
類型了。也就說折磨我們很久的主分區、擴展分區和邏輯分區的概念不再用了(其實就是突破一個硬碟只有四個分區的限制)。
(4)建立文件系統(格式化)
分區分完了,我們還需要對分區進行格式化。不過我們已經知道如果使用parted
交互命令格式化的話,只能格式化成ext2
文件系統。我們這裡是要演示下parted
命令的格式化方法。
parted
交互命令的格式化命令為mkfs
,命令如下:
mkfs NUMBER FS-TYPE
:在分區上建立文件系統。
再查看硬碟的分區情況,如下圖所示:
退出,執行quit
命令。
上圖提示你,如果需要讓分區自動掛載,需要手動修改etc/fstab
文件。
如果要把硬碟格式化成ext4
文件系統,需要執行mkfs
命令,重新對硬碟進行格式化。(注意不是parted
交互命令中的mkfs
命令,而是系統命令mkfs
)!
執行[root@localhost ~]# mkfs -t ext4 /dev/sdb1
將sdb1
分區格式化為ext4
文件系統之後,就可以進行分區的掛載了。
如下圖:
如果你需要開機自動掛載,手動修改etc/fstab
文件即可。
(5)調整分區大小
parted
命令還有一大優勢,就是可以調整分區的大小(Windows中也可以實現,不過需要轉換成動態磁碟,要不就需要依賴第三方工具,如硬碟分區魔術師)。起始Linux中LVM和RAID是可以支援分區調整的,不過這兩種方法也可以看成是動態磁碟方法。使用parted
命令調整分區大小要更加簡單。
注意:
parted
調整已經掛載使用的分區時,是不會影響分區中的數據的,也就是說數據不會丟失。但是一定要先卸載分區,再調整分區大小,否則數據是會出現問題的(有一定幾率)。還有要調整大小的分區必須已經建立了文件系統(格式化),否則會報錯。
- 卸載硬碟分區
sdb1
[root@localhost ~]# umount /dev/sdb1
- 使用
parted
命令調整分區大小,執行resize
命令。
resize NUMBER START END
:修改分區大小。
[root@localhost ~]# parted /dev/sdb(parted 命令不能加分區號)
注意:使用
parted
命令調整分區大小,文件系統必須是ext2
,否則命令執行不了。我們上邊把sdb1
分區格式化成ext4
,是不行的。(這個知道就可以了,如果需要調整分區大小,用LVM調整就好。)
(6)刪除分區
刪除分區前提,要先把分區的自動掛載在/etc/fstab
文件刪除,然後用umount
卸載掉分區的掛載。在執行parted
命令的刪除分區命令。
rm NUMBER
:刪除分區。
還有件事要注意,parted
中所有的操作都是立即生效,沒有保存生效的概念。這點和fdisk
交互命令明顯不同,所以所做的所有操作大家要倍加小心。
那麼到底使用fdisk
命令進行分區,還是parted
命令進行分區呢?這個完全看個人習慣,我更加習慣fdisk
命令。