fdisk是Linux/Unix系统中的一款交互式磁盘分区工具,尤其适合新手用户(除非明确发出w指令存盘,否则不会真的修改磁盘结构;即使不小心做了错误的分区操作,也可以使用q退出程序)。
较新版本的fdisk支持典型的GPT、MBR分区表,以及Sun、SGI和BSD分区表。gdisk与fdisk的作用类似,用法也基本一样,主要区别在于:
fdisk主要用于MBR分区(早期的fdisk不支持GPT)
gdisk主要用于GPT分区(如果是操作GPT分区,推荐使用gdisk)
一、磁盘分区基本知识
++ 操作系统使用磁盘的典型过程
1)内核识别到磁盘(启动时自动识别,可通过lsblk、fdisk -l等方式检查)
2)为磁盘分区(系统安装时,或者后续使用fdisk、gdisk、parted等工具)
3)格式化分区(使用mkfs.*、mkswap等工具)
4)将格式化好的分区挂载到目录(使用mount手动挂载,或者配置/etc/fstab开机挂载、autofs自动挂载)
5)访问挂载点目录(使用cp、vim、cat、…… 等文档管理命令存入/读出数据)
++ 磁盘分区表类型
1)MBR(Master Boot Record,主引导记录)
使用磁盘的第一个扇区(512字节)存储分区边界、类型、启动标识等信息。最多支持4个主分区(或3个主分区+1个扩展分区),使用扩展分区可以容纳更多数量的逻辑分区;MBR分区表通常也称为msdos分区表、dos分区表,支持的最大磁盘容量为2.2TB。【注:部分硬盘厂家将扇区容量升级为4KB,这样的话MBR最大支持的磁盘容量允许提升到16TB】
2)GPT(GUID Partition Table,全局唯一标识分区表)
使用磁盘的前33个LBA逻辑区块(默认512字节/块)和最后33个LBA备份区块来记录分区信息,其中LBA0的512字节用于兼容MBR的保护性区块,方便升级转换。GPT分区表支持2.2TB以上的大容量磁盘,可管理的硬盘大小达到了18EB(1EB=1024PB=1,048,576TB);GPT模式的每一个分区都是主分区,不再有扩展分区、逻辑分区。
++ Linux系统中的磁盘表示
++ 内核识别的磁盘类型:hd(IDE硬盘)、sd(SCSI硬盘/U盘/移动硬盘)、vd(虚拟硬盘)
++ 每块磁盘按字母编序(sda、sdb、sdc、……)
++ 每个分区按数字编序(sda1、sda2、sda3、……)
++ 操作磁盘或分区时,可指定设备位置(/dev/sda、/dev/sda1)
二、分区前,检查磁盘及分区列表
1)使用lsblk工具(比较简洁)
[]NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 80G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 79G 0 part├─centos-root 253:0 0 50G 0 lvm /├─centos-swap 253:1 0 2G 0 lvm [SWAP]└─centos-home 253:2 0 27G 0 lvm /homesdb 8:16 0 20G 0 disk //无任何有效分区
2)使用fdisk的-l选型(比较详细)
[root@svr7 ~]# fdisk -l磁盘 /dev/sda:85.9 GB, 85899345920 字节,167772160 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x000cef1b设备 Boot Start End Blocks Id System/dev/sda1 * 2048 2099199 1048576 83 Linux/dev/sda2 2099200 167772159 82836480 8e Linux LVM磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节.. ..
三、fdisk分区操作
1)进入分区操作界面
[root@svr7 ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0x9bcb848a 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):
2)获取分区操作帮助(使用m指令,gdisk还可使用?号)
命令(输入 m 获取帮助):m命令操作a toggle a bootable flag //标记为启动分区b edit bsd disklabelc toggle the dos compatibility flagd delete a partition //删除分区g create a new empty GPT partition table //创建全新的GPT分区表G create an IRIX (SGI) partition tablel list known partition types //列出已知的分区类型及ID编码m print this menu //显示这个指令帮助菜单n add a new partition //新建分区o create a new empty DOS partition table //创建全新的DOS分区表(缺省)p print the partition table //列出现有的分区表q quit without saving changes //不保存退出s create a new empty Sun disklabelt change a partition's system id //更改分区ID编码u change display/entry unitsv verify the partition tablew write table to disk and exit //保存退出x extra functionality (experts only)
3)MBR分区操作示例
目标:2个主分区(1GiB、2GiB)、1个扩展分区(全部剩余空间)、2个逻辑分区(3GiB、4GiB,其中一个标记为交换分区)
[root@svr7 ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。.. ..命令(输入 m 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p):Using default response p分区号 (1-4,默认 1):起始 柱面 (1-2610,默认为 1):将使用默认值 1Last 柱面, +柱面 or +size{K,M,G} (1-2610,默认为 2610):+1G分区 1 已设置为 Linux 类型,大小设为 1 GiB命令(输入 m 获取帮助):nPartition type:p primary (1 primary, 0 extended, 3 free)e extendedSelect (default p): //选择p表示要创建主分区Using default response p分区号 (2-4,默认 2):起始 柱面 (132-2610,默认为 132):将使用默认值 132Last 柱面, +柱面 or +size{K,M,G} (132-2610,默认为 2610):+2G //通过 +大小表示结束位置分区 2 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):nPartition type:p primary (2 primary, 0 extended, 2 free)e extendedSelect (default p): e //选择e表示要创建扩展分区分区号 (3,4,默认 3):起始 柱面 (394-2610,默认为 394):将使用默认值 394Last 柱面, +柱面 or +size{K,M,G} (394-2610,默认为 2610):将使用默认值 2610分区 3 已设置为 Extended 类型,大小设为 17 GiB命令(输入 m 获取帮助):nPartition type:p primary (2 primary, 1 extended, 1 free)l logical (numbered from 5)Select (default p): l //选择l表示要创建逻辑分区添加逻辑分区 5起始 柱面 (394-2610,默认为 394):将使用默认值 394Last 柱面, +柱面 or +size{K,M,G} (394-2610,默认为 2610):+3G分区 5 已设置为 Linux 类型,大小设为 3 GiB命令(输入 m 获取帮助):nPartition type:p primary (2 primary, 1 extended, 1 free)l logical (numbered from 5)Select (default p): l //选择l表示要创建逻辑分区添加逻辑分区 6起始 柱面 (787-2610,默认为 787):将使用默认值 787Last 柱面, +柱面 or +size{K,M,G} (787-2610,默认为 2610):+4G分区 6 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):t //更改分区ID编码分区号 (1-3,5,6,默认 6):6Hex 代码(输入 L 列出所有代码):82 //82对应SWAP类型,83对应EXT4/3类型已将分区Linux的类型更改为Linux swap / Solaris命令(输入 m 获取帮助):p //查看分区表信息,确认操作结果磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 柱面 of 16065 * 512 = 8225280 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xc5f8558e设备 Boot Start End Blocks Id System/dev/sdb1 1 132 1058816 83 Linux/dev/sdb2 132 394 2097152 83 Linux/dev/sdb3 394 2610 17807833 5 Extended/dev/sdb5 394 787 3155968 83 Linux //逻辑分区从编号5开始(1~4预留给主分区和扩展分区)/dev/sdb6 787 1309 4199424 82 Linux swap / Solaris
4)退出分区操作界面(如果不需要保存分区结果,使用q退出)
命令(输入 m 获取帮助):q[root@svr7 ~]#
5)GPT分区操作示例(推荐GPT,只有主分区,操作/理解都更简单)
目标:2个主分区(5GiB、10GiB)
~]# fdisk /dev/sdbfdisk (util-linux 2.23.2)。..m 获取帮助):g //创建GPT分区表Building a new GPT disklabel (GUID: E382208C-4113-4A54-86EA-F1F4574109A1)命令(输入 m 获取帮助):n(1-128,默认 1):(2048-41943006,默认 2048):Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006,默认 41943006):+5G1m 获取帮助):n(2-128,默认 2):(10487808-41943006,默认 10487808):Last sector, +sectors or +size{K,M,G,T,P} (10487808-41943006,默认 41943006):+10G2m 获取帮助):p //查看分区表信息,确认操作结果/dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes字节 / 512 字节大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:gptDisk identifier: E382208C-4113-4A54-86EA-F1F4574109A1# Start End Size Type Name1 2048 10487807 5G Linux filesyste2 10487808 31459327 10G Linux filesyste
6)退出分区操作界面(如果需要保存分区结果,使用w退出)
命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。[root@svr7 ~]#
四、分区后,刷新分区表
++ 对新的空磁盘作分区操作,一般只需要使用partprobe检测、刷新分区表即可
++ 如果是更改已经使用的磁盘的分区表,建议最好reboot重启一次,以便完全识别更改后的分区表
[][]NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb 8:16 0 20G 0 disk├─sdb1 8:17 0 5G 0 part└─sdb2 8:18 0 10G 0 part
五、格式化分区
++ 根据需要的格式选择分区工具,执行格式化操作
1)将分区/dev/sdb1格式化成XFS文件系统
[root@svr7 ~]# mkfs.xfs /dev/sdb1meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data = bsize=4096 blocks=1310720, imaxpct=25= sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@svr7 ~]# blkid /dev/sdb1 //确认结果/dev/sdb1: UUID="cbfb1e19-79b4-4576-91ec-de228220cc53" TYPE="xfs" PARTUUID="e91cf9ec-7087-42b1-9f40-7fe6ed8c7ab5"
2)将分区/dev/sdb2格式化成EXT4文件系统
[]mke2fs 1.42.9 (28-Dec-2013)文件系统标签=.. ..Allocating group tables: 完成正在写入inode表: 完成Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成[root@svr7 ~]# blkid /dev/sdb2 //确认结果/dev/sdb2: UUID="cf6f0e56-e910-4d8b-91aa-7854b280ddc6" TYPE="ext4" PARTUUID=
本文为原创,转载请注明原网址:https://fq.yiwodisk.com/qtjc/201.html
本文关键词: