fdisk是一个对话驱动的程序,用于创建和操作分区表。它支持GPT、MBR、SUN、SGI和BSD分区表。
块设备可以分为一个或多个称为分区的逻辑磁盘。此分区记录在分区表中,通常位于磁盘的扇区0中。(在BSD世界中,我们谈论的是“磁盘片”和“磁盘标签”。)
默认情况下,所有分区都由设备I/O限制(拓扑)驱动。 fdisk能够针对4K扇区大小优化磁盘布局,并在现代设备上使用MBR和GPT的对齐偏移。 遵循fdisk的默认值作为默认值(例如,第一个和最后一个分区扇区),并且+/- <size> {M,G,…}表示法指定的分区大小始终根据 设备属性。
请注意,partx(8)为脚本提供了丰富的界面来打印磁盘布局,fdisk主要是为人类设计的。 不保证fdisk输出的向后兼容性。 输入(命令)应始终向后兼容。
<!-- more -->
fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device fdisk -l [-u] [device...] fdisk -s partition... fdisk -v fdisk -h
-b, --sector-size <大小> 指定扇区大小(512、1024、2048或4096) -B, --protect-boot 创建新磁盘标签时,请勿擦除第一个磁盘扇区的开头。 GPT和MBR支持此功能。 -c, --compatibility=<模式> 兼容模式:“dos”或“nondos”(默认) -h, --help 打印此帮助文本 -l, --list 列出指定设备的分区表,然后退出。 如果没有给出设备,则使用/proc/partitions中提到的那些设备(如果该文件存在)。 -o, --output 指定要打印的输出列 -t, --type 仅支持指定类型的磁盘标签,并禁用对所有其他类型的支持 -u, --units[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认) -C, --cylinders <数字> 指定柱面数 -H, --heads <数字> 指定磁头数 -S, --sectors <数字> 指定每个磁道的扇区数 -w, --wipe [when] 擦除设备上的文件系统,RAID和分区表签名, 以避免可能的冲突。 when的值可以是`auto`,`never`,`always` 如果未指定此选项,则默认为auto,在这种情况下, 仅在交互模式下才会擦除签名。 在所有情况下,在创建新分区表之前, 警告消息会报告检测到的签名。 另请参见[wipefs\(8\)](/w/wipefs.html)命令。 -V, --version 打印程序版本
首先选择要进行操作的磁盘:
[root@localhost ~]# fdisk /dev/sdb
输入m
列出可以执行的命令:
command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
输入p
列出磁盘目前的分区情况:
Command (m for help): p Disk /dev/sdb: 3221 MB, 3221225472 bytes 255 heads, 63 sectors/track, 391 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 1 8001 8e Linux LVM /dev/sdb2 2 26 200812+ 83 Linux
输入d
然后选择分区,删除现有分区:
Command (m for help): d Partition number (1-4): 1 Command (m for help): d Selected partition 2
查看分区情况,确认分区已经删除:
Command (m for help): print Disk /dev/sdb: 3221 MB, 3221225472 bytes 255 heads, 63 sectors/track, 391 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System Command (m for help):
输入n
建立新的磁盘分区,首先建立两个主磁盘分区:
Command (m for help): n Command action e extended p primary partition (1-4) p //建立主分区 Partition number (1-4): 1 //分区号 First cylinder (1-391, default 1): //分区起始位置 Using default value 1 last cylinder or +size or +sizeM or +sizeK (1-391, default 391): 100 //分区结束位置,单位为扇区 Command (m for help): n //再建立一个分区 Command action e extended p primary partition (1-4) p Partition number (1-4): 2 //分区号为2 First cylinder (101-391, default 101): Using default value 101 Last cylinder or +size or +sizeM or +sizeK (101-391, default 391): +200M //分区结束位置,单位为M
确认分区建立成功:
Command (m for help): p Disk /dev/sdb: 3221 MB, 3221225472 bytes 255 heads, 63 sectors/track, 391 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 100 803218+ 83 Linux /dev/sdb2 101 125 200812+ 83 Linux
再建立一个逻辑分区:
Command (m for help): n Command action e extended p primary partition (1-4) e //选择扩展分区 Partition number (1-4): 3 First cylinder (126-391, default 126): Using default value 126 Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): Using default value 391
确认扩展分区建立成功:
Command (m for help): p Disk /dev/sdb: 3221 MB, 3221225472 bytes 255 heads, 63 sectors/track, 391 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 100 803218+ 83 Linux /dev/sdb2 101 125 200812+ 83 Linux /dev/sdb3 126 391 2136645 5 Extended
在扩展分区上建立两个逻辑分区:
Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l //选择逻辑分区 First cylinder (126-391, default 126): Using default value 126 Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +400M Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (176-391, default 176): Using default value 176 Last cylinder or +size or +sizeM or +sizeK (176-391, default 391): Using default value 391
确认逻辑分区建立成功:
Command (m for help): p Disk /dev/sdb: 3221 MB, 3221225472 bytes 255 heads, 63 sectors/track, 391 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 100 803218+ 83 Linux /dev/sdb2 101 125 200812+ 83 Linux /dev/sdb3 126 391 2136645 5 Extended /dev/sdb5 126 175 401593+ 83 Linux /dev/sdb6 176 391 1734988+ 83 Linux Command (m for help):
从上面的结果我们可以看到,在硬盘sdb我们建立了2个主分区(sdb1,sdb2),1个扩展分区(sdb3),2个逻辑分区(sdb5,sdb6)
注意:主分区和扩展分区的磁盘号位1-4,也就是说最多有4个主分区或者扩展分区,逻辑分区开始的磁盘号为5,因此在这个实验中试没有sdb4的。
最后对分区操作进行保存:
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
建立好分区之后我们还需要对分区进行格式化才能在系统中使用磁盘。
在sdb1上建立ext2分区:
[root@localhost ~]# mkfs.ext2 /dev/sdb1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 100576 inodes, 200804 blocks 10040 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=209715200 7 block groups 32768 blocks per group, 32768 fragments per group 14368 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
在sdb6上建立ext3分区:
[root@localhost ~]# mkfs.ext3 /dev/sdb6 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 217280 inodes, 433747 blocks 21687 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=444596224 14 block groups 32768 blocks per group, 32768 fragments per group 15520 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]#
建立两个目录/oracle
和/web
,将新建好的两个分区挂载到系统:
[root@localhost ~]# mkdir /oracle [root@localhost ~]# mkdir /web [root@localhost ~]# mount /dev/sdb1 /oracle [root@localhost ~]# mount /dev/sdb6 /web
查看分区挂载情况:
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 6.7G 2.8G 3.6G 44% / /dev/sda1 99M 12M 82M 13% /boot tmpfs 125M 0 125M 0% /dev/shm /dev/sdb1 773M 808K 733M 1% /oracle /dev/sdb6 1.7G 35M 1.6G 3% /web
如果需要每次开机自动挂载则需要修改/etc/fstab
文件,加入两行配置:
[root@localhost ~]# vim /etc/fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 /dev/sdb1 /oracle ext2 defaults 0 0 /dev/sdb6 /web ext3 defaults 0 0