『學了就忘』Linux檔案系統管理 — 61、使用parted命令進行分割槽

繁華似錦Fighting發表於2021-12-03

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。結果如下:

image

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命令可以檢視分割槽表資訊,包括硬碟引數,硬碟大小,扇區大小,分割槽表型別和分割槽資訊。

結果如下:

image

可以看到sdb硬碟大小是21.5GB,檔案系統是msdosmsdos檔案系統是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:建立新的磁碟卷標(分割槽表)。

image

(如果要由GPT分割槽表改成MBR分割槽表,命令為mklabel msdos

修改了分割槽表,如果這塊硬碟已經有分割槽了,那麼原有分割槽和分割槽中的資料都會消失,而且需要重啟系統才會生效。

我們在檢視一下當前硬碟分割槽表情況,如下圖所示:

image

可以看到分割槽表已經變成GPT分割槽表,並且之前硬碟的分割槽資訊已經沒有了。

注意:在說一下,一定要把/etc/fstab檔案中和原有分割槽的內容刪除掉(就是修改的硬碟的分割槽的自動掛載),才能重啟動,要不繫統啟動就一定會報錯的。

之後quit退出parted命令互動,執行reboot命令重啟計算機。

image

重啟完計算機才能執行之後的操作。(不重啟後續操作是無法完成的)

(3)建立分割槽

因為修改過了分割槽表,所以/dev/sdb硬碟中的所有資料都消失了,所以我們可以重新對這塊硬碟分割槽了。

執行parted命令,進入硬碟分割槽。

image

執行分割槽命令,對硬碟進行分割槽,命令如下:

mkpart PART-TYPE [FS-TYPE] START END :建立一個分割槽。

image

注意:建立分割槽時,預設檔案系統就只能建立成ext2了。

檢視硬碟的分割槽情況,如下圖所示:

image

已顯示剛剛建立好的分割槽disk1。因為沒有格式化,所以File system:檔案系統型別是空著的。

不知道大家注意到了嗎?

我們現在的print檢視的分割槽,和第一次檢視MBR分割槽表的分割槽時有些不一樣了,少了Type這個欄位,也就是分割槽型別的欄位,多了Name分割槽名欄位。分割槽型別是標識主分割槽、擴充套件分割槽和邏輯分割槽的,不過這種標識只在MBR分割槽表中使用,我們現在已經變成了GPT分割槽表了,所以就不再有Type型別了。也就說折磨我們很久的主分割槽、擴充套件分割槽和邏輯分割槽的概念不再用了(其實就是突破一個硬碟只有四個分割槽的限制)。

(4)建立檔案系統(格式化)

分割槽分完了,我們還需要對分割槽進行格式化。不過我們已經知道如果使用parted互動命令格式化的話,只能格式化成ext2檔案系統。我們這裡是要演示下parted命令的格式化方法。

parted互動命令的格式化命令為mkfs,命令如下:

mkfs NUMBER FS-TYPE:在分割槽上建立檔案系統。

image

再檢視硬碟的分割槽情況,如下圖所示:

image

退出,執行quit命令。

image

上圖提示你,如果需要讓分割槽自動掛載,需要手動修改etc/fstab檔案。

如果要把硬碟格式化成ext4檔案系統,需要執行mkfs命令,重新對硬碟進行格式化。(注意不是parted互動命令中的mkfs命令,而是系統命令mkfs)!

執行[root@localhost ~]# mkfs -t ext4 /dev/sdb1

image

sdb1分割槽格式化為ext4檔案系統之後,就可以進行分割槽的掛載了。

如下圖:

image

如果你需要開機自動掛載,手動修改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 命令不能加分割槽號)
    image

    注意:使用parted命令調整分割槽大小,檔案系統必須是ext2,否則命令執行不了。我們上邊把sdb1分割槽格式化成ext4,是不行的。(這個知道就可以了,如果需要調整分割槽大小,用LVM調整就好。)

(6)刪除分割槽

刪除分割槽前提,要先把分割槽的自動掛載在/etc/fstab檔案刪除,然後用umount解除安裝掉分割槽的掛載。在執行parted命令的刪除分割槽命令。

rm NUMBER:刪除分割槽。

image

還有件事要注意,parted中所有的操作都是立即生效,沒有儲存生效的概念。這點和fdisk互動命令明顯不同,所以所做的所有操作大家要倍加小心。

那麼到底使用fdisk命令進行分割槽,還是parted命令進行分割槽呢?這個完全看個人習慣,我更加習慣fdisk命令。

相關文章