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: gptNumber  Start   End    Size    File system     Name                          Flags1      1049kB  420MB  419MB   ntfs            Basic data partition          hidden, diag2      420MB   735MB  315MB   fat32           EFI system partition          boot3      735MB   869MB  134MB                   Microsoft reserved partition  msftres4      869MB   216GB  215GB   ntfs            Basic data partition          msftdata8      216GB   316GB  100GB   ext45      316GB   468GB  152GB   fat32                                         msftdata6      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: gptNumber  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: gptNumber  Start   End     Size    File system  Name     Flags1      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, 1605632Allocating 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: gptNumber  Start   End     Size    File system  Name     Flags1      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: gptNumber  Start   End     Size    File system  Name     Flags1      1049kB  5000MB  4999MB  ext4         my_part

Linux 的 Parted 指令相关推荐

  1. Linux Command parted 创建分区

    Linux Command parted 创建分区 tags: lvm 文章目录 Linux Command parted 创建分区 1. 简介 2. 交互模式 2.1 常见命令 2.2 查看分区表 ...

  2. Linux - 网络相关指令

    系统时间与开关机 查看系统时间 date 查看硬件日期 hwclock 学习Linux不必全部指令都会,只要记住主要常用的几个就可以了.--MK 关机命令 shutdown init reboot p ...

  3. 鸟哥的Linux私房菜(服务器)- 第五章、 Linux 常用网络指令

    第五章. Linux 常用网络指令 最近更新日期:2011/07/18 Linux 的网络功能相当的强悍,一时之间我们也无法完全的介绍所有的网络指令,这个章节主要的目的在介绍一些常见的网络指令而已. ...

  4. linux显示界面指令规范,linux的常规操作命令

    linux的高版本推出了用户界面,但今天我们还是来学习一下命令. 一. linux的基本命令 1. whoami //查询当前操作用户 who am I //查询当前的登录用户 我是谁 2. pwd ...

  5. Linux中基础指令

    Linux中基础指令

  6. linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

    1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...

  7. 查看linux硬核上的线程,给大家分享一点基础硬核知识哦 Linux的基础指令操作Lin...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 给大家分享一点基础硬核知识哦 Linux的基础指令操作L inux的基础指令操作 Linux的指令下达方式很简单,只需要记得几个重要的概念就可以 l: c ...

  8. linux 树状结构图,linux下tree指令的用法, 树状图列出目录, 树状图逐级列出目录...

    tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来 linux下的tree就比较强大了,但一般系统并不自带这个命令,需要手动下载安装, 安装 sudo apt install tree ...

  9. linux常用基本指令汇总备忘

    linux常用基本指令汇总备忘 vi编辑界面中可以使用三种不同的工作模式. 分别是命令模式(Command mode):控制光标移动,字符,字或者行的删除,进入其他两个模式 输入模式(Insert m ...

最新文章

  1. 2015大型互联网公司校招都开始了,薪资你准备好了嘛?
  2. Spring Boot + Elasticsearch
  3. VisualStudio2013 如何打开之前版本开发的(.vdproj )安装项目
  4. JAVA虚拟机关闭钩子(Shutdown Hook)
  5. JavaScript实现希尔密码 算法(附完 整源码)
  6. Linux 查找目录下大于*M的文件
  7. BP神经网络(手写数字识别)
  8. 低温linux内核启动readl,Linux内核启动流程分析(一)
  9. [渝粤教育] 同济大学 线性代数学习指导 参考 资料
  10. 微服务学习之Gateway服务网关【Hoxton.SR1版】
  11. Protel网络教程
  12. 得物(毒)加密算法解析 得物逆向
  13. 视觉技术再赋能,深眸科技一体化解决方案引领工业视觉机器人落地应用
  14. Thinkpad E450 黑苹果OpenCore引导驱动包(macOS BigSur 99%完美版)
  15. xshell调用js脚本开发
  16. 96微信编辑器如何将样式中的二维码替换成自己的?
  17. 2020年3月31日 生活思考 ~ 子贡论时
  18. 行列式某一行的元素与另一行对应元素的代数余子式的乘积之和等于0
  19. 大规模部署lxc容器遇到的若干问题
  20. 关于音乐歌词下载到MP3里乱码问题的解决

热门文章

  1. ue4 发射子弹功能
  2. Google Earth Engine(GEE)——图像位移与配准!
  3. 应届生报考MEM时要注意了!非全不是你的菜!
  4. 百度知道引流规则,这个方法对于精准营销很有效果
  5. Android listView item之间调整间距,listView去掉下滑线
  6. Python+Vue计算机毕业设计安康学院教师职称评定考核系统0n8mq(源码+程序+LW+部署)
  7. 科汛kesioncms系统参数配置”中的网址会自动加上:443如何解决
  8. 暴风影音使用的小技巧
  9. IOS开发环境 Xcode 下载 安装
  10. 【用户头像】功能实现学习记录