怎样用 parted 管理硬盘分区

本文详细介绍如何使用parted工具进行硬盘分区的创建、调整、删除和格式化等操作,包括安装、启动parted,列出硬盘信息,创建、调整分区大小,格式化分区,以及设置分区标志等。

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

什么是 parted
    parted 是一个操作硬盘分区的程序。它支持多种分区表类型,包括 MS-DOS 和 GPT。
    它允许用户创建、删除、调整、缩减、移动和复制分区,以及重新组织硬盘的使用,复制数据到新的硬盘上。gparted 是 parted 的图形界面前端。

怎样安装 parted
    大部分发行版已经预安装了 parted。如果没有,用下列命令来安装 parted。
    对于 Debian/Ubuntu 用户, 使用 APT-GET 命令 或者 APT 命令 来安装 parted。

$ sudo apt install parted
对于 RHEL/CentOS 用户,用 YUM 命令 来安装 parted。

$ sudoyum install parted
对于 Fedora 用户,用 DNF 命令 来安装 parted。

$ sudo dnf install parted
对于 Arch Linux 用户,用 Pacman 命令来安装 parted。

$ sudo pacman -S parted
对于 openSUSE 用户, 用 Zypper 命令来安装 parted。

$ sudo zypper inparted

怎样启动 parted
    下面的 parted 命令会自动选择 /dev/sda ,因为这是系统的第一个硬盘。

$ sudoparted
GNU parted3.2
Using/dev/sda
Welcome to GNU parted!Type’help’ to view a list of commands.
(parted)

同时我们也可以用下面的命令来重新选择对应的的硬盘。

(parted) select /dev/sdb
Using/dev/sdb
(parted)

    如果你想选择特定的硬盘, 用下列的格式来输入命令。 这次 ,我们将选择 /dev/sdb。

$ sudoparted[DeviceName]
$ sudoparted/dev/sdb
GNU parted3.2
Using/dev/sdb
Welcome to GNU parted!Type'help' to view a list of commands.
(parted)

怎样用 parted 列出所有可用的硬盘
    如果你不知道你的电脑上有什么硬盘,只需要运行下列命令,该命令会显示所有可用硬盘的名字,以及其它的有用信息比如储存空间、型号、扇区大小、硬盘标志以及分区信息。

$ sudoparted-l
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sda:32.2GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
11049kB32.2GB32.2GB primary ext4 boot
Error:/dev/sdb: unrecognised disk label
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: unknown
DiskFlags:

    上面的错误信息清晰地显示出硬盘 /dev/sdb 没有有效的磁盘标签disk label。 它不会自动得到磁盘标签,所以, 我们便要自己设置硬盘标签。

怎样用 parted 创建硬盘分区
    parted 允许用户创建主分区或者拓展分区。创建这两种类型的分区的步骤还是一样,但请确保你已经指定了需要的分区类型,比如 primary (主分区)或者 extended (扩展分区)。

    为了演示这项操作 ,我们安装了一个新的 50 GB 的硬盘到到电脑上,挂载在 /dev/sdb 上。

    有两种方法创建分区,第一种是更详细的方法,另一种只是一个命令。 在下面的例子中,我们将用更详细的方法添加一个主分区。提醒一下, 我们应该先设置磁盘标签,因为它不会自动设置任何标签。

在下面的例子中,我们将要创建一个 10 GB 的分区

$ sudoparted/dev/sdb
GNU parted3.2
Using/dev/sdb
Welcome to GNU parted!Type'help' to view a list of commands.
(parted) mklabel msdos
(parted) unit GB
(parted) mkpart
Partition type? primary/extended? primary
File system type?[ext2]? ext4
Start?0.00GB
End?10.00GB
(parted)print
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
10.00GB10.0GB10.0GB primary ext4 lba
(parted) quit
Information:You may need to update /etc/fstab.

同时,我们也可以使用单条 parted 命令

在下面的例子中,我们将在硬盘上创建一个 10 GB 的分区。

$ sudoparted[DiskName][mkpart][PartitionType][FilesystemType][PartitionStartSize][PartitionEndSize]
$ sudoparted/dev/sdb mkpart primary ext4 10.0GB20.0GB
Information:You may need to update /etc/fstab.

怎样使用所有剩余空间创建分区
    你已经创建了除了 /home 之外等所有要求的分区,而且你想要用硬盘上所有剩余的空间来创建 /home 分区,要怎样做?可以使用下面的命令来创建分区。

    下面的命令创建了一个 33.7 GB 的分区,从 20 GB 开始到 53 GB 结束。 100% 使用率允许用户用硬盘上所有剩余的空余空间。

$ sudoparted[DiskName][mkpart][PartitionType][FilesystemType][PartitionStartSize][PartitionEndSize]
$ sudoparted/dev/sdb mkpart primary ext4 20.0GB100%
Information:You may need to update /etc/fstab.

怎样用 parted 列出所有的分区
    你也许注意到了,我们已经在上述步骤中创建了三个分区,如果你想要列出所有在硬盘上可用的分区,可以使用 print 命令。

$ sudoparted/dev/sdb print
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
11049kB10.0GB9999MB primary ext4
210.0GB20.0GB9999MB primary ext4
320.0GB53.7GB33.7GB primary ext4

怎样用 mkfs 格式化分区
    用户可以用 mkfs 命令格式化分区。下面的步骤会用 mkfs 来格式化分区。

$ sudomkfs.ext4 /dev/sdb1
mke2fs1.43.4(31-Jan-2017)
Creating filesystem with26214404k blocks and656640 inodes
Filesystem UUID:415cf467-634c-4403-8c9f-47526bbaa381
Superblock backups stored on blocks:
32768,98304,163840,229376,294912,819200,884736,1605632
Allocating group tables:done
Writing inode tables:done
Creating journal (16384 blocks):done
Writing superblocks and filesystem accounting information:done

同样的。

$ sudomkfs.ext4 /dev/sdb2
$ sudomkfs.ext4 /dev/sdb3

创建必要的文件夹然后将这些分区挂载在上面。

$ sudomkdir/par1 /par2 /par3
$ sudomount/dev/sdb1 /par1
$ sudomount/dev/sdb2 /par2
$ sudomount/dev/sdb3 /par3

运行下列命令来检查是否成功挂载上新创建的分区。

$ df-h /dev/sdb[1-3]
FilesystemSizeUsedAvailUse%Mounted on
/dev/sdb1 9.2G37M8.6G1%/par1
/dev/sdb2 9.2G37M8.6G1%/par2
/dev/sdb3 31G49M30G1%/par3

怎样检查硬盘空闲空间
    运行下列命令来检查硬盘上的空闲空间,这块硬盘上有 25.7 GB 的空闲空间。

$ sudoparted/dev/sdb print free
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
32.3kB1049kB1016kBFreeSpace
11049kB10.0GB9999MB primary ext4
210.0GB20.0GB9999MB primary ext4
320.0GB28.0GB8001MB primary ext4
28.0GB53.7GB25.7GBFreeSpace

怎样使用 parted 命令来重新调整分区大小
    parted 允许用户重新调整分区大小。不过我已在文章的开头说了,不要缩小分区大小,不然会有许多错误。

    运行下列命令来检查硬盘分区以及所有可用空间。 可以看到硬盘上有 25.7GB 的可用空间。

$ sudoparted/dev/sdb print free
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
32.3kB1049kB1016kBFreeSpace
11049kB10.0GB9999MB primary ext4
210.0GB20.0GB9999MB primary ext4
320.0GB28.0GB8001MB primary ext4
28.0GB53.7GB25.7GBFreeSpace

    运行下列命令来重新调整分区大小。 我们将要重新调整(增加)分区 3 的结束位置,从 28GB 到 33GB。

$ sudoparted[DiskName][resizepart][PartitionNumber][PartitionNewEndSize]
$ sudoparted/dev/sdb resizepart 333.0GB
Information:You may need to update /etc/fstab.

    运行下列命令来确认分区是否已经扩容。可以看到,分区 3 已经从 8GB 增加到 13GB。

$ sudoparted/dev/sdb print
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
11049kB10.0GB9999MB primary ext4
210.0GB20.0GB9999MB primary ext4
320.0GB33.0GB13.0GB primary ext4

重新调整文件系统大小。

$ sudo resize2fs /dev/sdb3
resize2fs 1.43.4(31-Jan-2017)
Resizing the filesystem on /dev/sdb3 to 3173952(4k) blocks.
The filesystem on /dev/sdb3 is now 3173952(4k) blocks long.

最后,确认分区是否已经扩容。

$ df-h /dev/sdb[1-3]
FilesystemSizeUsedAvailUse%Mounted on
/dev/sdb1 9.2G5.1G3.6G59%/par1
/dev/sdb2 9.2G2.1G6.6G24%/par2
/dev/sdb3 12G1.1G11G10%/par3

怎样用 parted 删除分区
    我们用 rm 命令方便地删除未使用的分区(如果该分区不会再被用到了)。下列步骤中,我们将会删除分区 3 (/dev/sdb3)。

$ sudoparted[DiskName][rm][PartitionNumber]
$ sudoparted/dev/sdb rm3
Warning:Partition/dev/sdb3 is being used.Are you sure you want to continue?
Yes/No?Yes
Error:Partition(s)3 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are inuse.As a result, the old partition(s) will remain inuse.
You should reboot now before making further changes.
Ignore/Cancel?Ignore
Information:You may need to update /etc/fstab.

我们也可以用下列的命令检查。可以看到,分区 3 已经被成功移除。

$ sudoparted/dev/sdb print
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
11049kB10.0GB9999MB primary ext4
210.0GB20.0GB9999MB primary ext4

怎样用 parted 命令设置/更改分区标志
    我们可以用下列的命令来轻易更改分区的标志。 我们将对 /dev/sdb2 设置 lvm 标志。

$ sudoparted[DiskName][set][PartitionNumber][FlagsName][FlagOn/Off]
$ sudoparted/dev/sdb set2lvm on
Information:You may need to update /etc/fstab.

我们可以列出分区来验证这次的更改。

$ sudoparted/dev/sdb print
Model: ATA VBOX HARDDISK (scsi)
Disk/dev/sdb:53.7GB
Sectorsize(logical/physical):512B/512B
PartitionTable: msdos
DiskFlags:
NumberStartEndSizeTypeFile system Flags
11049kB10.0GB9999MB primary ext4
210.0GB20.0GB9999MB primary ext4 lvm

如果你想知道可用的标志,只需要用如下的命令。

$ (parted) help set
set NUMBER FLAG STATE change the FLAG on partition NUMBER
NUMBER is the partition number used by Linux.On MS-DOS disk labels, the primary partitions number from1 to 4, logical partitions from5 onwards.
FLAG is one of: boot, root, swap, hidden, raid,lvm, lba, hp-service, palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, msftdata, irst, esp
STATE is one of: on, off

如果你想知道 parted 的其它可用命令, 只需要去到 help 页面。

$ sudoparted
GNU parted3.2
Using/dev/sda
Welcome to GNU parted!Type'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND]print general help,or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START ENDmake a partition
name NUMBER NAME name partition NUMBER as NAME
print[devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions,or a particular partition
quit exit program
rescue START ENDrescue a lost partition near START andEND
resizepart NUMBER END resize partition NUMBER
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU parted
(parted) quit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值