怎样用 parted 管理硬盘分区 | Linux 中国

2018 年 4 月 12 日 Linux中国 译者:zyk
parted 是一个操作硬盘分区的程序。它支持多种分区表类型,包括 MS-DOS 和 GPT。
-- Magesh Maruthamuthu

致谢
编译自 | https://www.2daygeek.com/how-to-manage-disk-partitions-using-parted-command/ 
 作者 | Magesh Maruthamuthu
 译者 | zyk (zyk2290) 🌟 共计翻译:1 篇 贡献时间:7 天

众所周知,对硬盘分区是 Linux 管理员一项最重要的管理任务之一,他们不能不知道这个。

在最糟糕的时候,你至少每周会收到一次依赖小组的请求,而在更大的环境里会更加频繁 。

你可能会问为什么我们要用 parted 而不是 fdisk? 它们有什么区别?好问题,我会告诉你这两者的区别。

◈  parted 支持用户在大于 2TB 的硬盘上创建硬盘分区, 但  fdisk 命令不支持
◈ 对比  fdisk 来说, parted 是一个更高级的工具
◈ 支持更多的分区表类型,包括 GPT (LCTT 译注:全局唯一标识分区表)
◈ 它允许用户调整分区大小, 但当缩减分区空间的时候,它没有如我意料的工作,多数情况下我会得到错误消息。所以我会建议用户不要用  parted 来缩减分区大小。

什么是 parted

parted 是一个操作硬盘分区的程序。它支持多种分区表类型,包括 MS-DOS 和 GPT。

它允许用户创建、删除、调整、缩减、移动和复制分区,以及重新组织硬盘的使用,复制数据到新的硬盘上。gparted 是 parted 的图形界面前端。

怎样安装 parted

大部分发行版已经预安装了 parted。如果没有,用下列命令来安装 parted

对于 Debian/Ubuntu 用户, 使用 APT-GET 命令[1] 或者 APT 命令[2] 来安装 parted

   
     
     
     
  1. $ sudo apt install parted

对于 RHEL/CentOS 用户,用 YUM 命令[3] 来安装 parted

   
     
     
     
  1. $ sudo yum install parted

对于 Fedora 用户,用 DNF 命令[4] 来安装 parted

   
     
     
     
  1. $ sudo dnf install parted

对于 Arch Linux 用户,用 Pacman 命令[5]来安装 parted

   
     
     
     
  1. $ sudo pacman -S parted

对于 openSUSE 用户, 用 Zypper 命令[6]来安装 parted

   
     
     
     
  1. $ sudo zypper in parted

怎样启动 parted

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

   
     
     
     
  1. $ sudo parted

  2. GNU parted 3.2

  3. Using /dev/sda

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted)

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

   
     
     
     
  1. (parted) select /dev/sdb

  2. Using /dev/sdb

  3. (parted)

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

   
     
     
     
  1. $ sudo parted [Device Name]

   
     
     
     
  1. $ sudo parted /dev/sdb

  2. GNU parted 3.2

  3. Using /dev/sdb

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted)

怎样用 parted 列出所有可用的硬盘

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

   
     
     
     
  1. $ sudo parted -l

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sda: 32.2GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 32.2GB 32.2GB primary ext4 boot

  9. Error: /dev/sdb: unrecognised disk label

  10. Model: ATA VBOX HARDDISK (scsi)

  11. Disk /dev/sdb: 53.7GB

  12. Sector size (logical/physical): 512B/512B

  13. Partition Table: unknown

  14. Disk Flags:

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

怎样用 parted 创建硬盘分区

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

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

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

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

   
     
     
     
  1. $ sudo parted /dev/sdb

  2. GNU parted 3.2

  3. Using /dev/sdb

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted) mklabel msdos

  6. (parted) unit GB

  7. (parted) mkpart

  8. Partition type? primary/extended? primary

  9. File system type? [ext2]? ext4

  10. Start? 0.00GB

  11. End? 10.00GB

  12. (parted) print

  13. Model: ATA VBOX HARDDISK (scsi)

  14. Disk /dev/sdb: 53.7GB

  15. Sector size (logical/physical): 512B/512B

  16. Partition Table: msdos

  17. Disk Flags:

  18. Number Start End Size Type File system Flags

  19. 1 0.00GB 10.0GB 10.0GB primary ext4 lba

  20. (parted) quit

  21. Information: You may need to update /etc/fstab.

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

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

   
     
     
     
  1. $ sudo parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]

   
     
     
     
  1. $ sudo parted /dev/sdb mkpart primary ext4 10.0GB 20.0GB

  2. Information: You may need to update /etc/fstab.

怎样使用所有剩余空间创建分区

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

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

   
     
     
     
  1. $ sudo parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]

  2. $ sudo parted /dev/sdb mkpart primary ext4 20.0GB 100%

  3. Information: You may need to update /etc/fstab.

怎样用 parted 列出所有的分区

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

   
     
     
     
  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4

  10. 3 20.0GB 53.7GB 33.7GB primary ext4

怎样用 mkfs 格式化分区

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

   
     
     
     
  1. $ sudo mkfs.ext4 /dev/sdb1

  2. mke2fs 1.43.4 (31-Jan-2017)

  3. Creating filesystem with 2621440 4k blocks and 656640 inodes

  4. Filesystem UUID: 415cf467-634c-4403-8c9f-47526bbaa381

  5. Superblock backups stored on blocks:

  6.    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

  7. Allocating group tables: done

  8. Writing inode tables: done

  9. Creating journal (16384 blocks): done

  10. Writing superblocks and filesystem accounting information: done

同样的。

   
     
     
     
  1. $ sudo mkfs.ext4 /dev/sdb2

  2. $ sudo mkfs.ext4 /dev/sdb3

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

   
     
     
     
  1. $ sudo mkdir /par1 /par2 /par3

   
     
     
     
  1. $ sudo mount /dev/sdb1 /par1

  2. $ sudo mount /dev/sdb2 /par2

  3. $ sudo mount /dev/sdb3 /par3

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

   
     
     
     
  1. $ df -h /dev/sdb[1-3]

  2. Filesystem Size Used Avail Use% Mounted on

  3. /dev/sdb1 9.2G 37M 8.6G 1% /par1

  4. /dev/sdb2 9.2G 37M 8.6G 1% /par2

  5. /dev/sdb3 31G 49M 30G 1% /par3

怎样检查硬盘空闲空间

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

   
     
     
     
  1. $ sudo parted /dev/sdb print free

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 32.3kB 1049kB 1016kB Free Space

  9. 1 1049kB 10.0GB 9999MB primary ext4

  10. 2 10.0GB 20.0GB 9999MB primary ext4

  11. 3 20.0GB 28.0GB 8001MB primary ext4

  12. 28.0GB 53.7GB 25.7GB Free Space

怎样使用 parted 命令来重新调整分区大小

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

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

   
     
     
     
  1. $ sudo parted /dev/sdb print free

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 32.3kB 1049kB 1016kB Free Space

  9. 1 1049kB 10.0GB 9999MB primary ext4

  10. 2 10.0GB 20.0GB 9999MB primary ext4

  11. 3 20.0GB 28.0GB 8001MB primary ext4

  12. 28.0GB 53.7GB 25.7GB Free Space

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

   
     
     
     
  1. $ sudo parted [Disk Name] [resizepart] [Partition Number] [Partition New End Size]

  2. $ sudo parted /dev/sdb resizepart 3 33.0GB

  3. Information: You may need to update /etc/fstab.

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

   
     
     
     
  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4

  10. 3 20.0GB 33.0GB 13.0GB primary ext4

重新调整文件系统大小。

   
     
     
     
  1. $ sudo resize2fs /dev/sdb3

  2. resize2fs 1.43.4 (31-Jan-2017)

  3. Resizing the filesystem on /dev/sdb3 to 3173952 (4k) blocks.

  4. The filesystem on /dev/sdb3 is now 3173952 (4k) blocks long.

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

   
     
     
     
  1. $ df -h /dev/sdb[1-3]

  2. Filesystem Size Used Avail Use% Mounted on

  3. /dev/sdb1 9.2G 5.1G 3.6G 59% /par1

  4. /dev/sdb2 9.2G 2.1G 6.6G 24% /par2

  5. /dev/sdb3 12G 1.1G 11G 10% /par3

怎样用 parted 删除分区

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

   
     
     
     
  1. $ sudo parted [Disk Name] [rm] [Partition Number]

  2. $ sudo parted /dev/sdb rm 3

  3. Warning: Partition /dev/sdb3 is being used. Are you sure you want to continue?

  4. Yes/No? Yes

  5. 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 in use. As a result, the old partition(s) will remain in use.

  6. You should reboot now before making further changes.

  7. Ignore/Cancel? Ignore

  8. Information: You may need to update /etc/fstab.

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

   
     
     
     
  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4

怎样用 parted 命令设置/更改分区标志

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

   
     
     
     
  1. $ sudo parted [Disk Name] [set] [Partition Number] [Flags Name] [Flag On/Off]

  2. $ sudo parted /dev/sdb set 2 lvm on

  3. Information: You may need to update /etc/fstab.

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

   
     
     
     
  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4 lvm

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

   
     
     
     
  1. $ (parted) help set

  2. set NUMBER FLAG STATE change the FLAG on partition NUMBER

  3.    NUMBER is the partition number used by Linux. On MS-DOS disk labels, the primary partitions number from 1 to 4, logical partitions from 5 onwards.

  4. 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

  5. STATE is one of: on, off

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

   
     
     
     
  1. $ sudo parted

  2. GNU parted 3.2

  3. Using /dev/sda

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted) help

  6. align-check TYPE N check partition N for TYPE(min|opt) alignment

  7. help [COMMAND] print general help, or help on COMMAND

  8. mklabel,mktable LABEL-TYPE create a new disklabel (partition table)

  9. mkpart PART-TYPE [FS-TYPE] START END make a partition

  10. name NUMBER NAME name partition NUMBER as NAME

  11. print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition

  12. quit exit program

  13. rescue START END rescue a lost partition near START and END

  14. resizepart NUMBER END resize partition NUMBER

  15. rm NUMBER delete partition NUMBER

  16. select DEVICE choose the device to edit

  17. disk_set FLAG STATE change the FLAG on selected device

  18. disk_toggle [FLAG] toggle the state of FLAG on selected device

  19. set NUMBER FLAG STATE change the FLAG on partition NUMBER

  20. toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER

  21. unit UNIT set the default unit to UNIT

  22. version display the version number and copyright information of GNU parted

  23. (parted) quit


via: https://www.2daygeek.com/how-to-manage-disk-partitions-using-parted-command/

作者:Magesh Maruthamuthu[8] 译者:zyk2290 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


登录查看更多
0

相关内容

Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
106+阅读 · 2020年5月3日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
177+阅读 · 2020年1月1日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
.NET Core 环境下构建强大且易用的规则引擎
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
手把手教你安装深度学习软件环境(附代码)
数据派THU
4+阅读 · 2017年10月4日
从零开始:深度学习软件环境安装指南
机器之心
6+阅读 · 2017年10月2日
Arxiv
6+阅读 · 2018年3月31日
Arxiv
3+阅读 · 2018年3月29日
VIP会员
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
.NET Core 环境下构建强大且易用的规则引擎
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
手把手教你安装深度学习软件环境(附代码)
数据派THU
4+阅读 · 2017年10月4日
从零开始:深度学习软件环境安装指南
机器之心
6+阅读 · 2017年10月2日
Top
微信扫码咨询专知VIP会员