当前位置: 代码网 > 服务器>服务器>Linux > Linux parted 分区命令使用解读

Linux parted 分区命令使用解读

2024年05月26日 Linux 我要评论
一、概述通常我们用的比较多的分区工具是fdisk命令,但由于fdisk只支持mbr分区,mbr分区表最大支撑2t的磁盘,所以无法划分大于2t的分区。而parted工具可以划分单个分区大于2t的gpt格

一、概述

通常我们用的比较多的分区工具是fdisk命令,但由于fdisk只支持mbr分区,mbr分区表最大支撑2t的磁盘,所以无法划分大于2t的分区。而parted工具可以划分单个分区大于2t的gpt格式的分区,也可以划分普通的mbr分区。

parted命令是由gnu组织开发的一款功能强大的磁盘分区和分区大小调整工具。gpt格式的磁盘相当于原来mbr磁盘中原来保留4个partition table的4 16个字节,只留第一个16个字节,类似于扩展分区,真正的partition table在512字节之后,gpt分区方式没有四个主分区的限制,** 最多可达到128个主分区 **。下面我们看下parted命令的用法。

1.1 语法结构

parted [选项]… [设备 [命令 [参数]…]…]

二、选项

选项    描述

  • -h    –help 显示此求助信息
  • -l    –list 列出所有设别的分区信息
  • -i    –interactive 在必要时,提示用户
  • -s    –script 从不提示用户
  • -v    –version 显示版本

三、操作命令

parted交互命令	                        说 明
check number	                        做一次简单的文件系统检测
cp [from-device] from-number to-number	复制文件系统到另一个分区
help [command]	                        显示所有的命令帮助
mklabel,mktable label-type	            创建新的磁盘卷标(分区表)
mkfs number fs-type	                    在分区上建立文件系统
mkpart part-type [fs-type] start end	创建一个分区
mkpartfs part-type fs-type start end	创建分区,并建立文件系统
move number start end	                移动分区
name number name	                    给分区命名
print [devices|free|list,all|number]	显示分区表、活动设备、空闲空间、所有分区
quit	                                退出
rescue start end	                    修复丢失的分区
resize number start end	                修改分区大小
rm number	                            删除分区
select device	                        选择需要编辑的设备
set number flag state	                改变分区标记
toggle [number [flag]]	                切换分区表的状态
unit unit	                            设置默认的单位
version	                                显示版本

四、交互操作实例

4.1 选择分区硬盘

首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdb: ((parted)表示在parted中输入的命令,其他为自动打印的信息)

[root@my-linux ~]# parted /dev/hdb
gnu parted 1.8.1
using /dev/hdb
welcome to gnu parted! type 'help' to view a list of commands.

4.2 创建分区

选择了/dev/hdb作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):

(parted) mklabel
new disk label type? gpt    (我们要正确分区大于2tb的磁盘,应该使用gpt方式的分区表,输入gpt后回车)

4.3 完成分区操作

创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区的起止位置

(parted) mkpart
partition name? []? dp1
file system type? [ext2]? xfs
start? 0           (可以用百分比表示,比如start? 0% , end? 50%)
end? 500gb

4.4 验证分区信息

分好区后可以使用print命令打印分区信息,下面是一个print的样例

(parted) print
model: vbox harddisk (ide)
disk /dev/hdb: 3841gb
sector size (logical/physical): 512b/512b
partition table: gpt
number start end size file system name flags
1 17.4kb 500gb 500gb dp1

4.5 删除分区示例

如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果

(parted)rm 1               #rm后面使用分区的号码,就是用print打印出来的number
(parted) print
model: vbox harddisk (ide)
disk /dev/hdb: 3841gb
sector size (logical/physical): 512b/512b
partition table: gpt
number start end size file system name flags

4.6 格式化操作

在交互状态下,完成以后我们可以使用quit命令退出parted并使用系统的mkfs命令对分区进行格式化。

[root@my-linux ~]# fdisk -l
warning: gpt (guid partition table) detected on '/dev/hdb'! the util fdisk doesn't support gpt. use gnu parted.
disk /dev/hdb: 3841.0 gb, 3841022206976 bytes
255 heads, 63 sectors/track, 267349 cylinders
units = cylinders of 16065 * 512 = 8225280 bytes
device boot start end blocks id system
/dev/hdb1 1 267350 2147482623+ ee efi gpt
[root@my-linux ~]# mkfs.xfs /dev/hdb1
[root@my-linux ~]# mkfs.xfs /dev/hdb2
[root@my-linux ~]# mkdir /data1 /data2
[root@my-linux ~]# mount /dev/hdb1 /data1
[root@my-linux ~]# mount /dev/hdb2 /data2

4.7 交互创建分区的完整示示例

按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例

(parted) mkpart
partition name? []? dp1
file system type? [ext2]? xfs
start? 0
end? 500gb
(parted) mkpart
partition name? []? dp2
file system type? [ext2]? xfs
start? 500gb
end? 3841gb
(parted) print
model: vbox harddisk (ide)
disk /dev/hdb: 3841gb
sector size (logical/physical): 512b/512b
partition table: gpt
number start end size file system name flags
1 17.4kb 500gb 500gb dp1
2 500gb 3841gb 1699gb dp2

五、非交互方式

5.1 创建分区表

parted /dev/sdl mklabel gpt

5.2 将硬盘所有容量分给主分区

parted /dev/sdl mkpart primary 0% 100%

5.3 查询磁盘的已有分区

parted /dev/sdl print

5.4 查询硬盘分区

fdisk -l
or
lsblk

5.5 格式化分区

mkfs -t xfs /dev/sdl1

文件系统ext3,ext4和xfs的区别:

ext3

  • (1)最多只能支持32tb的文件系统和2tb的文件,实际只能容纳2tb的文件系统和16gb的文件
  • (2)ext3目前只支持32000个子目录
  • (3)ext3文件系统使用32位空间记录块数量和i-节点数量
  • (4)当数据写入到ext3文件系统中时,ext3的数据块分配器每次只能分配一个4kb的块

ext4

ext4是linux系统下的日志文件系统,是ext3文件系统的后继版本。

  • (1)ext4的文件系统容量达到1eb,而文件容量则达到16tb
  • (2)理论上支持无限数量的子目录
  • (3)ext4文件系统使用64位空间记录块数量和i-节点数量
  • (4)ext4的多块分配器支持一次调用分配多个数据块

xfs

  • (1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
  • (2)采用优化算法,日志记录对整体文件操作影响非常小
  • (3) 是一个全64-bit的文件系统,它可以支持上百万t字节的存储空间
  • (4)能以接近裸设备i/o的性能存储数据

5.6 查询/dev/sdl1的blkid

blkid /dev/sdl1

5.7 修改/etc/fstab

vi /etc/fstab

编辑/etc/fstab使开机可知道挂载文件系统。

5.8 挂载文件系统,查询

mount -a
df -h

六、非交互方式示例

6.1 创建gpt分区表

[root@my-linux ~]# parted /dev/sdb mklabel gpt
information: you may need to update /etc/fstab.

6.2 划分3个分区

[root@my-linux ~]# parted /dev/sdb mkpart primary 0% 27%
information: you may need to update /etc/fstab.
 
[root@my-linux ~]# parted /dev/sdb mkpart primary 27% 54%
information: you may need to update /etc/fstab.
 
[root@my-linux ~]# parted /dev/sdb mkpart primary 54% 81%
information: you may need to update /etc/fstab.

6.3 打印分区

[root@my-linux ~]# parted /dev/sdb print
model: hp logical volume (scsi)
disk /dev/sdb: 3841gb
sector size (logical/physical): 512b/4096b
partition table: gpt
disk flags: 
 
number  start   end     size    file system  name     flags
 1      2097kb  1037gb  1037gb               primary
 2      1037gb  2074gb  1037gb               primary
 3      2074gb  3111gb  1037gb               primary

6.4 删除分区

删除分区的命令是parted /dev/sdb rm 1其中最后的数字 1 表示分区编号。

[root@my-linux ~]# parted /dev/sdb rm 1
information: you may need to update /etc/fstab.
 
[root@my-linux ~]# parted /dev/sdb rm 2
information: you may need to update /etc/fstab.
 
[root@my-linux ~]# parted /dev/sdb rm 3
information: you may need to update /etc/fstab.
 
[root@my-linux ~]# parted /dev/sdb print        
model: hp logical volume (scsi)
disk /dev/sdb: 3841gb
sector size (logical/physical): 512b/4096b
partition table: gpt
disk flags: 
 
number  start  end  size  file system  name  flags
 
[root@my-linux ~]# 

七、mbr & gpt

mbr:mbr分区表(即主引导记录)大家都很熟悉。所支持的最大卷:2t,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区

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

八、parted 分区对齐报错

在使用parted创建分区时产生告警信息

"warning: the resulting partition is not properly aligned for best performance."

这个问题redhat官网有解析:https://access.redhat.com/mt/zh-hans/solutions/184143

8.1 问题

(parted) mkpart primary 128 1048575
warning: you requested a partition from 128s to 1048575s.                 
the closest location we can manage is 128s to 1048542s.
is this still acceptable to you?
yes/no? yes                                                               
warning: the resulting partition is not properly aligned for best performance.          <-----
ignore/cancel? c  

忽略这个告警分区可以正常创建,只不过会影响磁盘性能。那么该如何创建一个正确对齐的分区呢?

8.2 解决方案

8.2.1 百分比

一般来说只要正确的选择分区开始的位置就可以解决这个问题,但需要查询和计算一下相应的参数。通常相较于使用明确的开始和结束位置使用百分比可以更容易使分区对齐。

mkpart primary 0% 100% or mkpart primary 0% 320gb 创建单个分区, 或

mkpart primary 0% 50% and mkpart primary 50% 100% 创建两个大小相等的分区。

8.2.2 1mib偏移量

一般情况下,很大一部分磁盘的默认对齐粒度为1mib,因此在大多数情况下,使用mib作为mkpart中的单元就可以创建一个对齐的分区。由于磁盘空间上的第一个mib包括0扇区中的遗留主引导记录(mbr)和紧随其后的gpt主表(如果是gpt类型),因此需要跳过磁盘上的第一个mib,并从1mib开始分区:

mkpart primary 1mib 100% 例如,创建单个分区。

8.2.3 计算偏移量#

如果使用百分比或1mib偏移量不起作用,可以通过查询设备相应的sysfs条目来直接计算所需的对齐

获取如下值:

# cat /sys/block/sdb/queue/optimal_io_size
# cat /sys/block/sdb/alignment_offset
# cat /sys/block/sdb/queue/physical_block_size

获取正确的偏移扇区数是将 optimal_io_size 和 alignment_offset 相加然后除以 physical_block_size.

for example:

optimal_io_size = 1310720
alignment_offset = 0
physical_block_size = 512
 
i.e 1310720+0/512 = 2560

现在创建分区的命令可以是:

(parted)  mkpart primary 2560 100%    or
(parted)  mkpart primary 2560 1000g

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com