签到成功

知道了

CNDBA社区CNDBA社区

Linux 磁盘分区超过2T 工具 -- parted

2022-04-16 20:49 1308 0 转载 Linux
作者: dave

1 概述

通常我们用的比较多的分区工具是fdisk命令,但由于fdisk只支持MBR分区,MBR分区表最大支撑2T的磁盘,所以无法划分大于2T的分区。而parted工具可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区。http://www.cndba.cn/dave/article/107928

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

http://www.cndba.cn/dave/article/107928
http://www.cndba.cn/dave/article/107928

parted 默认没有安装,需要安装yum 后独立安装:

[root@www.cndba.cn~]# yum install parted.x86_64 -y

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    显示版本

2 交互操作实例

1、选择分区硬盘http://www.cndba.cn/dave/article/107928

parted /dev/hdb
GNU Parted 1.8.1
Using /dev/hdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

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

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

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

(parted) mkpart
Partition name? []? dp1
File system type? [ext2]? xfs
Start? 4096s           (s代表的是扇区而不是字节。 可以用百分比表示,比如Start? 0% , End? 50%)
End? 500GB

4、验证分区信息
分好区后可以使用print命令打印分区信息,下面是一个print的样例http://www.cndba.cn/dave/article/107928

(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

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

http://www.cndba.cn/dave/article/107928

(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

6、交互创建分区的完整示示例

[root@www.cndba.cn ~]# parted /dev/sdb
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
错误: /dev/sdb: unrecognised disk label                                   
(parted) mklabel gpt                                                      
(parted) p                                                                
Model: AVAGO MR9361-8i (scsi)
Disk /dev/sdb: 11.5TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  标志

(parted) mkpart                                                           
分区名称?  []? sdb1
文件系统类型?  [ext2]? ext4                                              
起始点? 4096s                                                            
结束点? 100%                                                             
(parted) p                                                                
Model: AVAGO MR9361-8i (scsi)
Disk /dev/sdb: 11.5TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name  标志
 1      2097kB  11.5TB  11.5TB               sdb1

(parted) quit                                                             
信息: You may need to update /etc/fstab.                                  

[root@www.cndba.cn ~]# mkfs.ext4 /dev/sdb
sdb   sdb1  
[root@www.cndba.cn ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=64 blocks, Stripe width=64 blocks
703062016 inodes, 2812230912 blocks
140611545 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
85823 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
    2560000000

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@www.cndba.cn ~]#

3 注意问题

在创建分区的时候其实点如果选择0,会提示如下:

(parted) mkpart                                                           
分区名称?  []? sdb1                                                      
文件系统类型?  [ext2]? xfs                                               
起始点? 0                                                                
结束点? 100%                                                             
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? cancel

这里提示没有对齐,性能会有影响。

http://www.cndba.cn/dave/article/107928
http://www.cndba.cn/dave/article/107928

网上搜了下,说是使用如下公式计算得出开始点: http://www.cndba.cn/dave/article/107928

[root@www.cndba.cn~]# cat /sys/block/sdb/queue/optimal_io_size 
262144
[root@www.cndba.cn~]# cat /sys/block/sdb/queue/minimum_io_size 
262144
[root@www.cndba.cn~]# cat /sys/block/sdb/alignment_offset 
0
[root@www.cndba.cn~]# cat /sys/block/sdb/queue/physical_block_size 
4096
[root@www.cndba.cn~]# 

(optimal_io_size + alignment_offset) /  physical_block_size

在这个环境下是:
(262144+0) /4096 = 64

带入并不能得到最优值,所以我直接写了4096s

parted 工具中没有问题,校验也是对齐的:

Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) align-check optimal 1                                            
1 aligned
(parted)

但是在fdisk 中还是会有个提示:Partition 1 does not start on physical sector boundary。 这个我们可以忽略。 因为和Sector size (logical/physical): 512 bytes / 4096 bytes 有一定关系。只要在parted 工具里对齐即可。http://www.cndba.cn/dave/article/107928

[root@www.cndba.cn~]# fdisk -l /dev/sdb

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdb: 11518.9 GB, 11518900961280 bytes
255 heads, 63 sectors/track, 1400426 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      267350  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.
[root@www.cndba.cn~]#
用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2261
    原创
  • 3
    翻译
  • 578
    转载
  • 191
    评论
  • 访问:7965951次
  • 积分:4346
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ