您的位置:

linux磁盘分区工具parted命令


父目录:linux磁盘管理

利用 GNU 的 parted 进行分区行为(Optional)
虽然你可以使用 gdisk/fdisk 很快速的将你的分区槽切割妥当,不过 gdisk 主要针对 GPT 而 fdisk 主要支持 MBR ,对 GPT 的支持还不够! 所以使用不同的分区时,得要先查询到正确的分区表才 能用适合的指令,好麻烦!有没有同时支持的指令呢?有的!那就是 parted 啰! Tips
老实说,若不是后来有推出支持 GPT 的 gdisk,其实已经爱用 parted 来进行分 区行为了!虽然很多指令都需要同时开一个终端机去查 man page, 不过至少所有的分区表都能够支持哩! ^_^parted 可以直接在一行指令列就完成分区,是一个非常好用的指令!它常用的语法如下:

              [root@initroot ~]# parted [装置] [指令 [参数]]
              
选项与参数:
指令功能: 新增分区:mkpart [primary|logical|extended] [ext4|vfat|xfs] 开始 结束 显示分区:print 删除分区:rm [partition]
范例一:以 parted 列出目前本机的分区表资料
              [root@initroot ~]# parted /dev/vda print
              Model: Virtio Block Device (virtblk) #磁盘接口与型号
              Disk /dev/vda: 42.9GB #磁盘文件名与容量
              Sector size (logical/physical): 512B/512B #每个扇区的大小
              Partition Table: gpt #是 GPT 还是 MBR 分区
              Disk Flags: pmbr_boot
              Number
              [
              Start End 1 1049kB 3146kB 2097kB 2 3146kB 1077MB 1074MB 3 1077MB 33.3GB 32.2GB 4 33.3GB 34.4GB
              1074MB xfs Linux filesystem
              5 34.4GB 35.4GB 1074MB ext4 Microsoft basic data
              6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap
              [ [
              1 ]
              2 ]
              3
              Size
              ] [
              4
              File system
              Name
              Flags
              bios_grub
              xfs
              lvm
              ] [
              5
              ]
              [
              6
              ]
              
上面是最简单的 parted 指令功能简介,你可以使用『 man parted 』,或者是『 parted /dev/vda help mkpart 』去查询更详细的数据。比较有趣的地方在于分区表的输出。我们将上述的分区表示意拆成 六部分来说明:
1. Number:这个就是分区槽的号码啦!举例来说,1 号代表的是 /dev/vda1 的意思;
2. Start:分区的起始位置在这颗磁盘的多少 MB 处?有趣吧!他以容量作为单位喔!
3. End:此分区的结束位置在这颗磁盘的多少 MB 处?
4. Size:由上述两者的分析,得到这个分区槽有多少容量;
5. File system:分析可能的文件系统类型为何的意思!
6. Name:就如同 gdisk 的 System ID 之意。
不过 start 与 end 的单位竟然不一致!好烦~如果你想要固定单位,例如都用 MB 显示的话,可以 这样做:
              [root@initroot ~]# parted /dev/vda unit mb print
              
如果你想要将原本的 MBR 改成 GPT 分区表,或原本的 GPT 分区表改成 MBR 分区表,也能使 用 parted ! 但是请不要使用 vda 来测试!因为分区表格式不能转换!因此进行底下的测试后,在该磁盘的系统应该是会损毁的! 所以拿一颗没有使用的随身碟来测试,所以档名会变成 /dev/sda 喔!再讲一次!不要恶搞喔! 范例二:将 /dev/sda 这个原本的 MBR 分区表变成 GPT 分区表!(危险!危险!勿乱搞!无法复原!)
              [root@initroot ~]# parted /dev/sda print
              Model: ATA QEMU HARDDISK (scsi)
              Disk /dev/sda: 2148MB
              Sector size (logical/physical): 512B/512B
              # 确实显示的是 MBR 的 msdos 格式喔!
              Partition Table: msdos
              [root@initroot ~]# parted /dev/sda mklabel gpt
              Warning: The existing disk label on /dev/sda will be destroyed and all data on
              this disk will be lost. Do you want to continue?
              Yes/No? y
              [root@initroot ~]# parted /dev/sda print
              
# 你应该就会看到变成 gpt 的模样!只是...后续的分区就全部都死掉了! 接下来我们尝试来建立一个全新的分区槽吧!再次的建立一个 512MB 的分区来格式化为 vfat,且 挂载于 /data/win 喔! 范例三:建立一个约为 512MB 容量的分区槽
              [root@initroot ~]# parted /dev/vda print
              .....(前面省略).....
              Number
              Start
              End
              Size
              File system
              Name
              Flags
              .....(中间省略).....
              6
              35.4GB
              36.0GB 537MB
              linux-swap(v1) Linux swap
              
# 要先找出来下一个分区的起始点! [root@initroot ~]# parted /dev/vda mkpart primary fat32 36.0GB 36.5GB # 由于新的分区的起始点在前一个分区的后面,所以当然要先找出前面那个分区的 End 位置! # 然后再请参考 mkpart 的指令功能,就能够处理好相关的动作! [root@initroot ~]# parted /dev/vda print .....(前面省略)..... Number 7 Start End Size 36.0GB 36.5GB 522MB File system Name primary [root@initroot ~]# partprobe [root@initroot ~]# lsblk /dev/vda7 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda7 252:7 498M 0 0 part # 要确定它是真的存在才行! [root@initroot ~]# mkfs -t vfat /dev/vda7 [root@initroot ~]# blkid /dev/vda7 Flags/dev/vda7: SEC_TYPE="msdos" UUID="6032-BF38" TYPE="vfat" [root@initroot ~]# nano /etc/fstab UUID="6032-BF38" /data/win vfat defaults 0 0 [root@initroot ~]# mkdir /data/win [root@initroot ~]# mount -a [root@initroot ~]# df /data/win Filesystem 1K-blocks /dev/vda7 509672 Used Available Use% Mounted on 0 509672 0% /data/win 事实上,你应该使用 gdisk 来处理 GPT 分区就好了!不过,某些特殊时刻,例如你要自己写一只脚 本,让你的分区全部一口气建立, 不需要 gdisk 一条一条指令去进行时,那么 parted 就非常有效 果了!因为他可以直接进行 partition 而不需要跟用户互动!这就是它的最大好处! 还是建议, 至少你要操作过几次 parted ,知道这家伙的用途!未来有需要再回来查!或使用 man parted 去处理 喔!

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读