传统分区工具fdisk虽然很好用,但是是一个交互式操作工具,如果要在脚本中调用的话,就有困难了。所以我们需要一个非交互式工具,那么就可以用gnu parted分区工具,而且此工具可以管理大于2TB的磁盘,而fdisk则不可以。
Fdisk命令对于大于2T的分区无法划分,而parted命令可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区.这是为什么呢.下面得首先了解MBR和GPT.
MBR 是英文Master Boot Record的缩写, 又叫做主引导扇区 。是计算机开机后访问硬盘时所必须要读取的首个扇区,所以硬盘的0柱面0磁道的第一个扇区称为MBR,它的大小是512字节,而这个区域可以分为两个部分。第一部分为pre- boot区(预启动区),占446字节;第二部分是Partition table区(分区表),占66个字节,其中64字节是分区表,最后两个字节是分区结束标记,该区相当于一个小程序,作用是判断哪个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码。
MBR是由分区程序(如Fdisk,Parted)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而能够实现多系统引导。
GPT全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是EFI(可扩展固件接口标准)的一部分,用来替代BIOS中的主引导记录分区表。但因为MBR分区表不支持容量大于2.2TB(2.2 × 1012字节)的分区,所以也有一些BIOS系统为了支持大容量硬盘而用GPT分区表取代MBR分区表。在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。与支持最大卷为2 TB(Terabytes)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑驱动器)的MBR磁盘分区的样式相比,GPT磁盘分区样式支持最大卷为18 EB(Exabytes)并且每磁盘的分区数没有上限。
Parted 命令分为两种模式:命令行模式和交互模式。
1. 命令模式 parted [options] [device [command [options...]...]]
2、交互模式:parted [option] device
Parted是一个磁盘分区和分调整程序,它允许你创建,销毁,调整,移动,复制ext2,ext3,linux-swap, FAT, FAT32,reiserfs分区,它可以创建、调整, 移动Macintosh HFS分区,以及检测jfs,ntfs,ufs, xfs分区。这有助于创建新的操作系统的空间,重组磁盘使用情况,和复制数据到新硬盘。
OPTIONS
-h 输出帮助信息
-i, --interactive 给用户输出提示信息
-l, --list 列出分区在所有块设备
-m, --machine 显示机器可解析输出
-s, --script 不给用户输出提示信息
-v, --version 显示版本
COMMANDS
[device] 对哪个块设备进行操作,如果没有指定则使用第一个块设备
[command [options]]
check partition 做一个简单的检查分区
.
cp [source-device] source dest 复制源分区文件系统所在设备到目标分区设备
mkfs partition fs-type 创建一个文件系统在分区上,文件系统类型可以是,"fat16", "fat32","ext2""linux-swap", or "reis‐erfs".
mklabel label-type 创建一个新磁盘分区表类型,该类型可以是"bsd", "dvh", "gpt", "loop","mac", "msdos", "pc98", or "sun" 一般的pc机都是msdos格式,如果分区大于2T则需要选用gpt格式的分区表。
mkpart part-type [fs-type] start end 创建一个part-type类型的分区,part-type可以是:"primary", "logical", or "extended" 如果指定fs-type则在创建分区的同时进行格式化。start和end指的是分区的起始位置,单位默认是M。
mkpartfs part-type fs-type start end 创建一个fs-type类型的part-type分区
move partition start end 移动partition分区
name partition name 设置一个分区的名字,这个选项只工作在Mac, PC98, and GPT的分区表,这个名字可以放在引号中.
print 显示分区表信息
quit 退出parted
rescue start end 拯救一个位于stat和end之间的分区
rm partition 删除一个分区
select device 选择要编辑的设备
unit unit 在前面分区时,默认分区时数值的单位是M,这个参数卡伊改变默认单位,"kB", "MB", "GB", "TB"
下面使用parted命令模式给2T硬盘分区
这里使用了msdos 分区标签类型,如果大于2T,使用gpt.
parted -s /dev/sda mklabel msdos parted -s /dev/sda mkpart primary 1 30G
[email protected]:~# parted -l Model: DELL PERC H700 (scsi) Disk /dev/sda: 1797GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 30.0GB 30.0GB primary ext3
[email protected]:~# parted -s /dev/sda mkpart extended 30G 1797G [email protected]:~# parted -l Model: DELL PERC H700 (scsi) Disk /dev/sda: 1797GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 30.0GB 30.0GB primary ext3 2 30.0GB 1797GB 1767GB extended lba [email protected]:~# parted -s /dev/sda mkpart logic 30G 38G [email protected]:~# parted -s /dev/sda mkpart logic 38G 1380G [email protected]:~# parted -s /dev/sda mkpart logic 1380G 1588G [email protected]:~# parted -s /dev/sda mkpart logic 1588G 1797G [email protected]:~# parted -l Model: DELL PERC H700 (scsi) Disk /dev/sda: 1797GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 30.0GB 30.0GB primary ext3 2 30.0GB 1797GB 1767GB extended lba 5 30.0GB 38.0GB 7995MB logical 6 38.0GB 1380GB 1342GB logical 7 1380GB 1588GB 208GB logical 8 1588GB 1797GB 209GB logical 由于使用的是msdos,所以fdisk是可以看到分区情况,如果使用gpt,fdisk会看不到. [email protected]:~# fdisk -l Disk /dev/sda: 1796.6 GB, 1796638507008 bytes 255 heads, 63 sectors/track, 218428 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000538b6 Device Boot Start End Blocks Id System /dev/sda1 1 3648 29295616 83 Linux /dev/sda2 3649 218428 1725220350 f W95 Ext'd (LBA) /dev/sda5 3649 4620 7807558+ 83 Linux /dev/sda6 4621 167775 1310542506 83 Linux /dev/sda7 167776 193063 203125828+ 83 Linux /dev/sda8 193064 218428 203744331 83 Linux
之后进行格式化挂载
[email protected]:~# mkswap /dev/sda5 Setting up swapspace version 1, size = 7994933 kB no label, UUID=b1637a79-6bda-40f8-97d3-92c8a358e31d [email protected]:~# mkfs.ext3 /dev/sda6 mke2fs 1.41.3 (12-Oct-2008) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 81911808 inodes, 327635626 blocks 16381781 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 9999 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 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.