002、parted命令
本文最后更新于 66 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

一、概述

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

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

#扫描新磁盘

echo "- - -" >  /sys/class/scsi_host/host0/scan

1.语法结构#

yum install  -y                              #没有parted命令的话安装即可
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]

二、选项

选项  描述
-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 显示版本

四、交互操作实例:

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.
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? 0           (可以用百分比表示,比如Start? 0% , End? 50%)
End? 500GB
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
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
7、格式化操作

在交互状态下,完成以后我们可以使用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
8、交互创建分区的完整示示例

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

(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

五、非交互方式

1、创建分区表
parted /dev/sdl mklabel gpt
2、将硬盘所有容量分给主分区
parted /dev/sdl mkpart primary 0% 100%
3、查询磁盘的已有分区
parted /dev/sdl print
4、查询硬盘分区
fdisk -l
or
lsblk
5、格式化分区
mkfs -t xfs /dev/sdl1
6、查询/dev/sdl1的blkid
blkid /dev/sdl1
7、修改/etc/fstab
vi /etc/fstab
编辑/etc/fstab使开机可知道挂载文件系统。
8、挂载文件系统,查询
mount -a
df -h

六、非交互方式示例

创建gpt分区表
[root@my-linux ~]# parted /dev/sdb mklabel gpt
Information: You may need to update /etc/fstab.
划分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.
打印分区
[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
删除分区
删除分区的命令是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 ~]# 

七、使用实战

[root@kubernetes ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    3T  0 disk 
sr0              11:0    1 1024M  0 rom  
sda               8:0    0   20G  0 disk 
├─sda2            8:2    0   19G  0 part 
│ ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
│ └─centos-root 253:0    0   17G  0 lvm  /
└─sda1            8:1    0    1G  0 part /boot

查看帮助信息

[root@kubernetes ~]# parted --help
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run in
interactive mode.
OPTIONs:
  -h, --help                      显示帮助信息
  -l, --list                      列出全部块设备的分区表信息
  -m, --machine                   displays machine parseable output
  -s, --script                    never prompts for user intervention
  -v, --version                   显示版本
  -a, --align=[none|cyl|min|opt]  alignment for new partitions
COMMANDs:
  align-check TYPE N                       check partition N for TYPE(min|opt)   alignment
  help [COMMAND]                           打印帮助信息
  mklabel,mktable LABEL-TYPE               创建新的磁盘标签 (分区表)
  mkpart PART-TYPE [FS-TYPE] START END    创建一个分区
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table,available devices, free space, all found partitions, or a particular  partition
  quit                                     退出
  rescue START END                         rescue a lost partition near START  and END
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected   device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition   NUMBER
  unit UNIT                                设置unit单位
  version                                  显示版本信息

开始对3T的磁盘分区

[root@kubernetes ~]#parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mkpart                                #想分一个区                                                         
Error: /dev/sdb: unrecognised disk label    #由于我们这是一个新的硬盘,硬盘还没有分区表,所以这里报错了,所以我们需要先创建一个gpt分区表
(parted) mklabel                           #输入mklabel
New disk label type? gpt                    #输入gpt,这里如果有警告说要销毁数据,请自己确认。
(parted) mkpart                               #输入mkpart开始分区                                              
Partition name?  []? part1                  #给分区命名,随便输入一个分区名称即可,不输入直接回车也可以                    
File system type?  [ext2]? ext4             #分区被格式化的文件系统,可以按两次Tab键查看支持的文件系统
affs0            affs4            amufs            amufs3           apfs2            ext3             hfs              jfs              linux-swap(v0)   reiserfs
affs1            affs5            amufs0           amufs4           asfs             ext4             hfs+             linux-swap       linux-swap(v1)   sun-ufs
affs2            affs6            amufs1           amufs5           btrfs            fat16            hfsx             linux-swap(new)  nilfs2           swsusp
affs3            affs7            amufs2           apfs1            ext2             fat32            hp-ufs           linux-swap(old)  ntfs             xfs
File system type?  [ext2]? ext4                #一般可以使选ext4和xfs,这里输入ext4
Start? 0%                  #分区的开始位置,如果是一块新的磁盘,这里要输入0%或2048s或1M都可以但是不要输入别的。建议输入0%。                                             
End? 100%                  #分区的结束位置
(parted) print             #打印分区信息,可以看到已经有一个分区了                                                    
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  3299GB  3299GB

删除分区

(parted)  rm 1       #删除分区,1是分区的Number号      

删除分区了,下面看下已经没有任何分区了

(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start  End  Size  File system  Name  Flags

重新来多创建几个分区

(parted) mkpart 
Partition name?  []? part1          #给分区命名                                         
File system type?  [ext2]? ext4        #文件系统格式                                                                                                                                 
Start? 0%                          #输入0%表示从磁盘开始位置开启                                                              
End? 10G                           #结束位置可以指定多少G                                              
(parted) print                     #查看分区信息,现在就有了一个10G的分区,叫part1                                             
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name   Flags
 1      1049kB  10.0GB  9999MB               part1
(parted) mkpart                        #继续分区                                                        
Partition name?  []? part2          #分区名称                                        
File system type?  [ext2]? xfs     #分区文件系统类型。                                      
Start? 10G                          #这里输入分区开始位置,因为我们上一个分区是10G结束的,所以这里10G开始                                  
End? 20G                            #指定结束分区                                  
(parted) print                      #查看分区信息  ,现在有两个分区了,大小都是10G                               
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name   Flags
 1      1049kB  10.0GB  9999MB               part1
 2      10.0GB  20.0GB  9999MB               part2
(parted) mkpart                        #继续分第三个分区
Partition name?  []? part3                                                
File system type?  [ext2]? ext4                                           
Start? 20G                         #开始位置从20G开始,因为我们上一个分区是20G结束的                                       
End? 100%                           #这里100%表示,分配磁盘的剩余全部空间                                 
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name   Flags
 1      1049kB  10.0GB  9999MB               part1
 2      10.0GB  20.0GB  9999MB               part2
 3      20.0GB  3299GB  3279GB               part3
(parted) quit                      #分区完成,退出即可。

Start? 如果Start位置输入的不是0%或2048s或1M或0G的数值,分区结束会有这个的提示,Warning: The resulting partition is not properly aligned for best performance.Ignore/Cancel? (意思是说警告:生成的分区没有正确对齐以获得最佳性能。忽略/取消? 我们可以输入Ignore以忽略,但是这样并不好)
这是因为在512B扇区的磁盘驱动器上,Parted希望分区从2048的倍数(即1 MiB对齐)扇区开始
创建文件系统,挂载分区

[root@kubernetes ~]# lsblk  /dev/sdb            #查看设备,分区已经出来了
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0    3T  0 disk 
├─sdb2   8:18   0  9.3G  0 part 
├─sdb3   8:19   0    3T  0 part 
└─sdb1   8:17   0  9.3G  0 part 

下面的命令就是创建lvm

pvcreate /dev/sdb1                         #将磁盘分区格式化为pv
vgcreate vggpt /dev/sdb1                  #创建vg卷组
lvcreate -n lvgpt -l +100%FREE vggpt       #在vg卷组上面创建lv
mkfs.ext4 /dev/vggpt/lvgpt                 #格式化lv,创建文件系统
mkdir /gpt                                 #创建挂载点
mount /dev/vggpt/lvgpt /gpt/              #挂载
[root@kubernetes ~]# df -h /gpt/            #查看,正常
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/vggpt-lvgpt  9.1G   37M  8.6G   1% /gpt
[root@kubernetes ~]# touch /gpt/test && ls /gpt/  #创建文件、查看文件正常
lost+found  test

八、MBR & GPT

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

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

查看内核是否已经识别新的分区
cat /proc/partations

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇