Parted命令

本文介绍如何使用Parted命令在Linux系统中管理磁盘分区,包括安装Parted、创建和调整分区、格式化分区等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 中的 Parted 命令是一个用来管理磁盘分区的工具,但凡对磁盘分区的新增、删除、大小的变更等动作都可以用这个工具来处理。

传统上 Linux 系统中若要管理磁盘分区,最常用的工具就是 Parted。fdisk 只适合于用容量较小的硬盘,容量太大的硬盘就无法使用 fdisk 进行处理。

fdisk 所能处理的的磁盘容量上限是2TB,若磁盘的容量大于 2TB就无法使用 fdisk,这时候就要改用支持GPT的格式的Parted,以现在最新的硬盘来说,容量通常都是在2TB以上,所以学习使用Parted来管理磁盘分区是很重要的。

由于 Parted 的执行效果会立即生效,所有磁盘分区的变更都会马上写入硬盘中,如果您没有使用过 Parted  的经验,建议可以找一台米有用的电脑来练习,或是使用虚拟机 (VirtualBox),以免不小心造成磁盘的资料损毁。

安装 Parted 磁盘分区工具

在 Debian 系列的 Linux 中(如 Ubuntu、Linux Mint 等),可以使用 apt 安装 Parted:

sudo apt-get install parted

在 RHEL、CentOS 或 Fedora 中,則使用 yum 安裝:

sudo yum install parted

在 Fedora 22 以上的版本则使用 dnf 安裝:

dnf install parted

Parted 命令分为两种模式:命令行模式和交互模式。

  1. 命令行模式: parted [option] device [command],该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。
  2. 交互模式:parted [option] device 类似于使用fdisk /dev/xxx
MBR:MBR分区表(即主引导记录)大家都很熟悉。所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区

GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。突破MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。

parted是一个可以分区并进行分区调整的工具,他可以创建,破坏,移动,复制,调整ext2 linux-swap fat fat32 reiserfs类型的分区,可以创建,调整,移动Macintosh的HFS分区,检测jfs,ntfs,ufs,xfs分区。

使用方法:parted [options] [device [command [options…]…]]

options

-h  --help 显示帮助信息
-s   --script  从不提示用户
-v   --version  显示版本
-i    --interactive  在必要时,提示用户
-l     --list  显示所有块设备上的分区

device

对哪个块设备进行操作,如果没有指定则使用第一个块设备

command [options…]

  1. check partition
    对分区做一个简单的检测
  2. cp [source-device] source dest
    复制source-device设备上的source分区到当前设备的dest分区
  3. mklabel label-type
    创建新分区表类型,label-type可以是:”bsd”, “dvh”, “gpt”, “loop”,”mac”, “msdos”, “pc98”, or “sun”一般的pc机都是msdos格式,如果分区大于2T则需要选用gpt格式的分区表。
  4. mkfs partition fs-type
    在partition分区上创建一个fs-type文件系统,fs-type可以是:”fat16”, “fat32”, “ext2”, “linux-swap”,”reiserfs” 注意不支持ext3格式的文件系统,只能先分区然后用专有命令进行格式化。
  5. mkpart part-type [fs-type] start end
    创建一个part-type类型的分区,part-type可以是:”primary”, “logical”, or “extended” 如果指定fs-type则在创建分区的同时进行格式化。start和end指的是分区的起始位置,单位默认是M。eg:mkpart primary 0 -1 0表示分区的开始 -1表示分区的结尾 意思是划分整个硬盘空间为主分区
  6. name partition name
    给分区设置一个名字,这种设置只能用在Mac, PC98, and GPT类型的分区表,设置时名字用引号括起来
  7. select device
    在机器上有多个硬盘时,选择操作那个硬盘
  8. resize partition start end
    调整分区大小
  9. rm partition
    删除一个分区
  10. rescue start end
    拯救一个位于stat和end之间的分区
  11. unit unit
    在前面分区时,默认分区时数值的单位是M,这个参数卡伊改变默认单位,”kB”, “MB”, “GB”, “TB”
  12. move partition start end
    移动partition分区
  13. print
    显示分区表信息 quit 退出parted

基本 Parted 使用方式

使用 root 管理者权限执行 parted:

sudo parted

这样就会进入到 Parted 的操作环境中,这时候终端机上会提示 parted 的版本资讯,并且出现(parted)的提示字样,类似这样:

GNU Parted 2.3 Using /dev/sda Welcome to GNU Parted! Type ‘help’ to
view a list of commands.

(parted)

在 Parted 的操作环境中执行 help 指令可以提示简单的指令列表与操作说明:

(parted) help

如果要离开 Parted 操作环境,可以執行 quit

(parted) quit

列出 Linux 磁盘分区表

在 Parted 的操作环境中,执行 print 指令可以列出目前的磁盘分区表信息:

(parted) print

输出类似这样:

Model: ATA TOSHIBA MQ01ACF0 (scsi) Disk /dev/sda: 500GB Sector size
(logical/physical): 512B/4096B Partition Table: gpt

Number Start End Size File system Name
Flags 1 1049kB 420MB 419MB ntfs Basic data
partition hidden, diag 2 420MB 735MB 315MB fat32
EFI system partition boot 3 735MB 869MB 134MB
Microsoft reserved partition msftres 4 869MB 216GB 215GB
ntfs Basic data partition msftdata 8 216GB
316GB 100GB ext4 5 316GB 468GB 152GB fat32
msftdata 6 468GB 470GB 1979MB linux-swap(v1) 7 470GB
500GB 30.5GB ntfs Basic data partition hidden,diag

选择磁盘

print 指令会列出系統上第一个硬盘的分区信息,如果您的系統中有多块硬盘,可以使用 select 指令來选择要操作的硬盘,例如选择 /dev/sdb 则执行:
(parted) select /dev/sdb

输出为:

Using /dev/sdb

接着就可以使用 print 列出 /dev/sdb 的磁盘分区信息。令一个选择磁盘的方式是在执行 parted 指令时用参数指定:

sudo parted /dev/sdb

建立磁盘分区表

Parted 可以用來建立磁盘的主分区表与逻辑分区表,两种分区的建立方式是相同的,这里师范主分区表的建立步驟。
在建立分区表之前,请先执行 print 确认一下目前所选择的硬盘是否正确:
(parted) print

如果是沒有任何资料的硬盘,可能會出現类似这样的信息:

Error: /dev/sdb: unrecognised disk label

请小心确认目前的磁盘,若改动错误的磁盘,可能会造成磁盘中的资料全部损毁!

建立磁盘分区之前,要先建立磁盘分区表,一般的硬盘最常使用的是msdos:

(parted) mklabel msdos

如果是大于 2TB 的硬盘,可以使用 gpt:

(parted) mklabel gpt

如果硬盘中已经存在有磁盘分区表的信息,就会出现这样的警告:

Warning: The existing disk label on /dev/sdb will be destroyed and all
data on this disk will be lost. Do you want to continue? Yes/No?

若确定无误,则输入 y 继续。
(parted) print

输出会类似:

Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size
(logical/physical): 512B/512B Partition Table: gpt

Number Start End Size File system Name Flags

接着家里磁盘分区,建立分区可以使用 mkpart 指令来建立:

(parted) mkpart

接着输入一些设定参数:

Partition name? []? my_part 1
File system type? [ext2]? 2
Start? 1 3
End? 10000 4

1 输入分区名称
2 分区系统格式,使用预设即可,之后格式化的时候可以再改。
3 输入起始位置。
4 输入結束位置。

如果是使用 msdos 的磁盘分区表,在建立磁盘分区时会有不同的选项:

Partition type? primary/extended? primary
File system type? [ext2]?
Start? 1
End? 10000

主要的差异是要选择分区表的类型,primary 是主分区,而 extended 则是扩展分区。

建立好分区之后,使用 print 确认:

(parted) print

输出为:

Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size
(logical/physical): 512B/512B Partition Table: gpt

Number Start End Size File system Name Flags 1
1049kB 10.0GB 9999MB my_part

接着离开 Parted 的操作环境。

(parted) quit

在 shell 中使用 mkfs.ext4 格式化分区:

mkfs.ext4 /dev/sdb1

输出为:

mke2fs 1.42.9 (4-Feb-2014) Filesystem label= OS type: Linux Block
size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe
width=0 blocks 610800 inodes, 2441216 blocks 122060 blocks (5.00%)
reserved for the super user First data block=0 Maximum filesystem
blocks=2499805184 75 block groups 32768 blocks per group, 32768
fragments per group 8144 inodes per group Superblock backups stored on
blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736,
1605632

Allocating group tables: done Writing
inode tables: done Creating journal (32768
blocks): done Writing superblocks and filesystem accounting
information: done

如果需要将分区格式化成其他的文件系统,可以使用其他的 mkfs.* 工具。

虽然 Parted 操作环境之中也有格式化分区的功能,但是它的稳定性不如一般专门的格式化工具(如 mkfs 系列的工具),所以建议在建立好分区之后,离开 Parted 环境再用一般的工具格式化。

这样新的磁盘分区就完成了,接着就可以用 mount 將分区挂载起來使用:

sudo mkdir /mnt/my_part
sudo mount /dev/sdb1 /mnt/my_part/

用 df 查看一下挂在后的磁盘状况:

sudo df -h

输出为:

Filesystem Size Used Avail Use% Mounted on /dev/sda1 5.8G
2.4G 3.2G 44% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 986M 4.0K 986M 1% /dev tmpfs 201M 928K
200M 1% /run none 5.0M 0 5.0M 0% /run/lock none
1001M 136K 1001M 1% /run/shm none 100M 28K 100M 1%
/run/user /dev/sdb1 9.1G 21M 8.6G 1% /mnt/my_part

调整磁盘分区大小

Parted 的 resizepart 指令可以用来更改 Linux 的磁盘分区大小,在变更磁盘分区之前,要先用 print 指令查询磁盘分区编号:
(parted) print

在 print 的输出中,可以查到每个磁盘分区的编号:

Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size
(logical/physical): 512B/512B Partition Table: gpt

Number Start End Size File system Name Flags 1
1049kB 10.0GB 9999MB ext4 my_part

第一列Number 就是磁盘分区的编号,以这个 my_part 分区而言,它的编号就是 1。接着执行 resizepart:

(parted) resizepart

接着输入编号和大小: Partition number? 1 1
End? [10.0GB]? 5G 2
Warning: Shrinking a partition can cause data loss, are you sure you want to
continue? Yes/No? y 3
1 输入分区编号;
2 输入分区结束位置。
3 如果是缩小分区,可能会造成资料的损失,若确认要执行,则输入 y。

用 print 确认:

(parted) print

输出为:

Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size
(logical/physical): 512B/512B Partition Table: gpt

Number Start End Size File system Name Flags 1
1049kB 5000MB 4999MB ext4 my_part

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值