Linux - 分区命令fdisk与parted

磁盘分区形式

msdos分区

Linux系统为了兼容Windows的磁盘,使用支持windows的MBR的方式来处理开机管理程序与分区表,这些记录在第一个扇区,这个扇区通常为512bytes大小,所以第一个扇区会有两个数据:主要启动记录区(MBR):可以按照开机管理程序的地方,有446bytes;分区表(partition table):记录整个硬盘分区的状态,有64bytes。由于分区表所在区块仅有64bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的起始与结束的磁柱号码。

由于第一个扇区的大小只支持四个主分区,为了容纳更多的分区,就有了扩展分区,可以将四个主分区扩展成多个扩展分区,然后就可以分区更多的分区。

¥59.9
购买

GPT分区

为了兼容与所有的磁盘,在扇区的定义上面,大多会使用所谓的逻辑区块地址(LBA)来处理,GPT将磁盘所有区块以LBA来规划,而第一个LBA称为LBA0,与MBR仅使有一个区块不同,GPT除了前面的34个LBA之外,整个磁盘的最后33个LBA也拿来作为另一个备份。

LBA0(MBR相容区块)与MBR模式相似;

LBA1(GPT表头记录) 记录分区本身位置与大小,同时记录了备份用的GPT分区放置位置以及分区表的检验机制码(CRC32);

LBA2-33(实际记录分区信息);

从LBA2区块开时,每个LBA都可以记录4笔分区记录,所以默认情况下可以有4×32=128笔分区记录,因为每个LBA有512bytes,因此每个记录用到128bytes的空间,除了每个记录所需要的标识符和相关记录外,GPT在每个记录中分别提供64bits来记录开始/结束的扇区号码,因此,GPT分区表对于单一分区来说,他的最大容量限制就是8ZB。

Linux - 分区命令fdisk与parted


分区工具:fdisk与parted

fdisk只支持msdos分区,如果磁盘容量大于2T,需要分区,fdisk就不支持了;如果是直接使用整块磁盘比如(/dev/sda)不需要分区的话是支持大于2T的。

parted支持msdos和gpt,可以支持大硬盘,也支持小硬盘。不区分主分区,扩展分区,逻辑分区,也没有4个分区数量的限制。

注:使用dd命令创建可以file文件进行模拟分区操作

dd if=/dev/zero of=file bs=5M count=500

fdisk:

fdisk file
欢迎使用 fdisk (util-linux 2.33.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
Disk file:2.5 GiB,2621440000 字节,5120000 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x92459b64
命令(输入 m 获取帮助):n
分区类型
 p 主分区 (0个主分区,0个扩展分区,4空闲)
 e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1): 
第一个扇区 (2048-5119999, 默认 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-5119999, 默认 5119999): 
创建了一个新分区 1,类型为“Linux”,大小为 2.5 GiB。
命令(输入 m 获取帮助):print
Disk file:2.5 GiB,2621440000 字节,5120000 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x92459b64
设备 启动 起点 末尾 扇区 大小 Id 类型
file1 2048 5119999 5117952 2.5G 83 Linux
命令(输入 m 获取帮助):w
分区表已调整。
正在同步磁盘。

parted:

parted file 
WARNING: You are not superuser. Watch out for permissions.
GNU Parted 3.2
使用 /tmp/file
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
错误: /tmp/file: unrecognised disk label
Model: (file) 
Disk /tmp/file: 2621MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 
(parted) mklabel msdos #修改分区类型
(parted) print 
Model: (file)
Disk /tmp/file: 2621MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 
Number Start End Size Type File system 标志
(parted) mkpart #创建分区
分区类型? primary/主分区/extended/扩展分区? primary #指定为主分区 
文件系统类型? [ext2]? ext4 #指定文件系统
起始点? 1 
结束点? 1G 
(parted) print 
Model: (file)
Disk /tmp/file: 2621MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 
Number Start End Size Type File system 标志
 1 1049kB 1000MB 999MB primary ext4 lba

注:如果需要格式化成gpt分区,只要执行maklabe gpt ,注意数据会没掉哦。

Linux - 分区命令fdisk与parted


总结

目前磁盘容量都是比较大,因此一般都是使用parted命令进行分区。

Linux - 分区命令fdisk与parted

相关推荐