Linux 的 Parted 指令

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

    check partition      对分区做一个简单的检测

    cp [source-device] source dest     复制source-device设备上的source分区到当前设备的dest分区

    mklabel label-type   创建新分区表类型,label-type可以是:"bsd", "dvh", "gpt",  "loop","mac", "msdos", "pc98", or "sun" 一般的pc机都是msdos格式,如果分区大于2T则需要选用gpt格式的分区表。

   mkfs partition fs-type   在partition分区上创建一个fs-type文件系统,fs-type可以是:"fat16", "fat32", "ext2", "linux-swap","reiserfs" 注意不支持ext3格式的文件系统,只能先分区然后用专有命令进行格式化。

   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表示分区的结尾  意思是划分整个硬盘空间为主分区

    name partition name   给分区设置一个名字,这种设置只能用在Mac, PC98, and GPT类型的分区表,设置时名字用引号括起来

    select device   在机器上有多个硬盘时,选择操作那个硬盘

    resize partition start end   调整分区大小

    rm partition     删除一个分区

    rescue start end    拯救一个位于stat和end之间的分区

    unit unit    在前面分区时,默认分区时数值的单位是M,这个参数卡伊改变默认单位,"kB", "MB",  "GB",  "TB"

    move partition start end    移动partition分区

    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

你可能感兴趣的:(Linux 的 Parted 指令)