1. 程式人生 > >linux parted分區

linux parted分區

parted

導讀Linux 中,為磁盤分區通常使用 fdisk 和 parted 命令。通常情況下,使用 fdisk 可以滿足日常的使用,但是它僅僅支持 2 TB 以下磁盤的分區,超出 2 TB 部分無法識別。而隨著科技的進步,僅僅能識別 2 TB 的fdisk 很明顯無法滿足需求了,於是乎,parted & GPT 磁盤成為了絕佳的搭配。這裏主要講解下使用 parted 為 MBR 以及 GPT 磁盤進行分區。

技術分享圖片

GPT 磁盤分區:

首先,你得有一塊 GPT 分區的硬盤。小於 2 TB 的磁盤也可以轉為 MBR 磁盤,但是大於 2 TB 的磁盤則需要使用 GPT 分區,否則大於 2 TB 的部分將被你封印。

掛載硬盤後,打開系統並以 root 身份登陸。這裏博主以 CentOS 6.7 為例,其他 Linux 發行版也是支持 parted 命令的。

我們可以使用 ll /dev/ | grep sd 命令查看當前已掛載的硬盤,如下:

[root@localhost ~]# ll /dev/ | grep sd
lrwxrwxrwx 1 root root 4 Jan 21 03:55 root -> sda3
brw-rw---- 1 root disk 8, 0 Jan 21 04:21 sda

brw-rw---- 1 root disk 8, 1 Jan 21 03:55 sda1
brw-rw---- 1 root disk 8, 2 Jan 21 03:55 sda2
brw-rw---- 1 root disk 8, 3 Jan 21 03:55 sda3
brw-rw---- 1 root disk 8, 4 Jan 21 03:55 sda4
brw-rw---- 1 root disk 8, 5 Jan 21 03:55 sda5
brw-rw---- 1 root disk 8, 6 Jan 21 03:55 sda6
brw-rw---- 1 root disk 8, 7 Jan 21 03:55 sda7
brw-rw---- 1 root disk 8, 8 Jan 21 03:55 sda8
brw-rw---- 1 root disk 8, 9 Jan 21 03:55 sda9
brw-rw---- 1 root disk 8, 16 Jan 21 03:55 sdb
#可以看出,當前系統掛載了兩塊硬盤,分別被標識為sda和sdb,其中sda包含了9個
分區,sdb沒有分區

#之前的Linux,會將IDE類型的磁盤命名為hda、hdb...將SATA和SCSI類型的磁盤命名
為sda、sdb...
#但是自從2.6.19內核開始,Linux統一將掛載的磁盤命名為sda、sdb...
之後,再使用 fdisk -l 命令查看這兩塊硬盤,如下。
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f1e9d

Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 942 7357440 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3 942 1725 6291456 83 Linux
/dev/sda4 1725 2611 7116800 5 Extended
/dev/sda5 1726 1987 2097152 82 Linux swap / Solaris
/dev/sda6 1987 2248 2097152 83 Linux
/dev/sda7 2248 2379 1048576 83 Linux
/dev/sda8 2379 2509 1048576 83 Linux
/dev/sda9 2509 2611 819200 83 Linux

WARNING: GPT (GUID Partition Table) detected on ‘/dev/sdb‘! The util fdisk
doesn‘t support GPT. Use GNU Parted.

Disk /dev/sdb: 4398.0 GB, 4398046511104 bytes
256 heads, 63 sectors/track, 532610 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c613c22

Device Boot Start End Blocks Id System
/dev/sdb1 1 266306 2147483647+ ee GPT
#警告說fdisk不支持GPT磁盤,請使用GNU Parted

#可以使用“fdisk 磁盤名”進入交互模式,之後輸入字母i查看Id含義
#82表示Linux Swap;83表示Linux;ee表示GPT

之後,我們就選用 Parted 為 GPT 磁盤分區。

Parted 和 fdisk 一樣擁有兩種模式:

命令行模式: parted [option] device [command]

交互模式: parted [option] device

以下為具體分區方式

(parted)後字符為輸入字符
[root@localhost ~]# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type ‘help‘ to view a list of commands.
(parted) p #p=print,查看所有分區
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt #磁盤類型,為GPT

Number Start End Size File system Name Flags #這裏為空,表示沒有分區

(parted) mkpart #只輸入mkpart開始交互式分區
Partition name? []? primary
File system type? [ext2]? ext4
Start? 0
End? 1024G
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
(parted) mkpart primary 1024G 3072G #通過命令新建分區,mkpart PART-TYPE
[FS-TYPE] START END,表示新建一個從1024G開始到3072G結束的大小為2TB的主分區
(parted) mkpart extended ext4 3072G 3500G #中間加入ext4,表示文件系統,
分區類型為擴展分區,然並卵,反正他也不會自動格式化
(parted) mkpart primary 3500G -1 #-1表示結束位置在磁盤末尾
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
1 17.4kB 1024GB 1024GB primary
2 1024GB 3072GB 2048GB primary
3 3072GB 3500GB 428GB extended
4 3500GB 4398GB 898GB primary
#此時發現“文件系統”一欄為空,表示尚未格式化,之後將進行格式化
(parted) quit #退出parted工具

[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
62504960 inodes, 249999995 blocks
12499999 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
7630 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#按同樣語句執行mkfs -t ext4 /dev/sdb2、mkfs -t ext4 /dev/sdb3、mkfs -t
ext4 /dev/sdb4
之前不在 Parted 工具內執行 mkfs 是因為 Parted 無法將文件系統格式為 ext4 格式。

此時如果使用 fdisk -l 命令,是無法查看到 GPT 磁盤的分區的,而需要使用 parted -l。

[root@localhost ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
1 17.4kB 1024GB 1024GB ext4 primary
2 1024GB 3072GB 2048GB ext4 primary
3 3072GB 3500GB 428GB ext4 extended
4 3500GB 4398GB 898GB ext4 primary

此時磁盤已經成功格式化了,但是沒有為其指定掛載點,需要查看如何設定掛載點,請看文章末尾

技術分享圖片

MBR 磁盤分區:

MBR 磁盤分區方法和 GPT 磁盤可謂是一模一樣…MBR 磁盤不能大於 2 TB,否則將會強制只使用 2 TB。

主要步驟和 GPT 磁盤分區一樣,但是 MBR 磁盤分區有一點需要註意下:

(parted) p
Error: /dev/sdb: unrecognised disk label
#若出現以上錯誤,表示MBR磁盤沒有主引導記錄,需要將磁盤轉換為MBR,命令為:
(parted) mklabel msdos
#msdos就是MBR磁盤,此時(parted) p將不會報錯

掛載磁盤:

格式化硬盤後,需要為每個分區設置掛載點,有兩種方式:一種是臨時掛載,重啟失效;另一種開機自動掛載。

請分別為所有分區設置掛載點。

mkdir /build
#掛載前先建立需要掛載的文件夾名,可以自行定義

#臨時掛載,重啟失效
mount /dev/sdb1 /build
#掛載,根據實際情況自行修改

#開機自動掛載,以下兩種方式二選一
#第一種,麻煩
blkid | grep /dev/sdb1
#查看分區的UUID
echo ‘UUID=XXXXXXXXXXXX /build ext4 defaults 1 2‘ >> /etc/fstab
#將分區的UUID填充在XXXXX位置
#第二種,簡單
echo ‘/dev/sdb1 /build ext4 defaults 1 2‘ >> /etc/fstab

umount /dev/sdb1
#此命令用於取消掛載
#註意:有時候會遇到無法卸載的情況,遇到這種情況的原因是因為有其他用戶或
進程正在訪問該文件系統導致的。在Linux系統中,只有當該文件系統上所有訪問的用戶
或進程完成操作並退出後,這個文件系統才能被正常卸載
#使用命令“lsof 掛載點”查看哪些進程正在訪問該文件系統,之後使用kill命令將
進程殺死來進行卸載

此時,掛載已經設置完成,重啟後,可以通過 df 命令查看掛載狀態。


linux parted分區