对于磁盘的分区表 MBR与GPT区别。

MBR:MBR分区表(即主引导记录)大家都很熟悉,是过去我们使用windows时常用的。

所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区

GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。

突破MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。

对于 GPT 的分区,建议使用 parted 工具进行分区,fdisk 在 GPT 这块不是很好。

Parted 介绍

Parted 命令分为两种模式:命令行模式和交互模式。

命令行模式

parted [option] device [command] ,该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。如:

显示磁盘/dev/sdb分区。

parted /dev/sdb print

交互模式

parted [option] device 进入交互模式。尤其是对 parted 命令不是很熟悉的情况下建议使用交互模式。

parted /dev/sdb

parted命令常用选项

进入 交互模式下, 输入 help 可以看到如下提示,本文基于 Parted 3.2 进行说明。

test@test01:~$ sudo parted /dev/sdb
GNU Parted 3.2
使用 /dev/sdb
欢迎使用 GNU Parted! 输入 'help'可获得命令列表.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart 分区类型 [文件系统类型] 起始点 终止点 创建一个分区
name NUMBER 名称 将编号为NUMBER 的分区命名为“名称”
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space,
all found partitions, or a particular partition
quit 退出程序
rescue 起始点 终止点 挽救临近“起始点”、“终止点”的遗失的分区
resizepart NUMBER END resize partition NUMBER
rm MINOR 删除编号为 MINOR 的分区
选择设备 选择要编辑的设备
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]] 切换分区 NUMBER 的 FLAG 标记
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU
Parted
(parted)

比较常用的几个选项是

  • help 打印帮助信息
  • print 输出分区信息
  • mklabel 创建分区表, 即是使用msdos(MBR)还是使用gpt,或者是其他方式分区表
  • mkpart 创建新分区

    格式:mkpart PART-TYPE START END

    PART-TYPE类型主要有primary(主分区), extended(扩展分区), logical(逻辑区). 扩展分区和逻辑分区只对msdos。
  • rm 删除一个分区
  • resizepart 调整指定的分区的大小
  • quit 退出该交互界面

对磁盘进行分区

首先对于容量较大的磁盘使用 fdisk 工具会得到如下提示:

test@test01:~$ sudo fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.31.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 设备不包含可识别的分区表。
The size of this disk is 3.7 TiB (4000787030016 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT). 创建了一个磁盘标识符为 0x9f682389 的新 DOS 磁盘标签。 命令(输入 m 获取帮助):

这个时候我们就需要更新 parted 来对磁盘进行分区。

更改分区表

操作如下:

(parted) mklabel gpt
(parted) print
Model: ATA ST4000DM004-2CV1 (scsi)
磁盘 /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
分区表:gpt
Disk Flags: 数字 开始: End 大小 文件系统 Name 标志 (parted)

创建分区

使用 mkpart 创建自己需要的大小的分区

(parted) mkpart primary 0 4TB
(parted) p
Model: ATA ST4000DM004-2CV1 (scsi)
磁盘 /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
分区表:gpt
Disk Flags: 数字 开始: End 大小 文件系统 Name 标志
1 1049kB 4001GB 4001GB primary (parted)

创建好以后退出。

parted 的每一个操作都是即时生效,和 fdisk 不同,fdisk 只有在最后使用 w 进行保存以后才会生效 。

格式化分区

格式化成你需要的文件系统。

mkfs.ext4 /dev/sdb1

整个分区创建过程就结束了。

对齐分区以得到最优性能

当分区不对齐时,parted 会提示如下

警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel?

对于这个提示,只要分区对齐就好。如果你的设计,就是要不对齐,那么可以忽略这个提示。

对齐分区有两个方法,

方法一,使用百分比来表示要分区的的空间大小,那么到100%的时候自然是对齐的。示例如下:

(parted) mkpart primary 0% 100%
(parted) p
Model: ATA ST4000DM004-2CV1 (scsi)
磁盘 /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
分区表:gpt
Disk Flags: 数字 开始: End 大小 文件系统 Name 标志
1 1049kB 4001GB 4001GB primary (parted)

方法二,如果是使用容量来进行空间大小的话,那么 -1 这个值代表的是最后的位置。示例如下:

(parted) mkpart primary 0TB -1
(parted) p
Model: ATA ST4000DM004-2CV1 (scsi)
磁盘 /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
分区表:gpt
Disk Flags: 数字 开始: End 大小 文件系统 Name 标志
1 1049kB 4001GB 4001GB primary (parted)

方法三,手动进行计算。

下边这篇博客的作者描述了如何计算磁盘的扇区来保证分区对齐。

https://rainbow.chard.org/2013/01/30/how-to-align-partitions-for-best-performance-using-parted/

Parted 创建 GPT 分区的更多相关文章

  1. 使用parted创建gpt大分区例子

    [root@VM000000518 ~]# parted /dev/xvde GNU Parted 2.1 Using /dev/xvde Welcome to GNU Parted! Type 'h ...

  2. parted创建磁盘分区并创建LVM(Linux合并多块大于2T的磁盘并合并到一个分区)

    文章转载自:https://blog.csdn.net/likemebee/article/details/85630808

  3. 2T以上的盘怎么分区, 利用parted创建 linuxTB硬盘GPT分区

    parted创建GPT分区(fdisk不支持创建GPT分区,GPT支持大于2TB分区,MBR不支持) 介绍2种分区表: MBR分区表:(MBR含义:主引导记录) 所支持的最大卷:2T (T; tera ...

  4. [RHEL 6]GPT分区--parted

    对于2T以上的硬盘,划分分区表需要GPT分区,RHEL 6中使用parted进行分区 用法:parted [选项]... [设备 [命令 [参数]...]...] 将带有“参数”的命令应用于“设备”. ...

  5. GPT分区基础知识及如何在GPT分区上安装WIN7

    大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...

  6. 预装WIN8的电脑是GPT分区模式,无法安装WIN7

    本人的笔记本自带的是WIN8系统,现在想安装WIN7的系统,但是安装不了,提示"windows无法安装到这个磁盘.选中的磁盘采用GPT分区形式". 通过上网搜索得知WIN7一般安装 ...

  7. 磁盘挂载问题:Fdisk最大只能创建2T分区的盘,超过2T使用parted

    需求说明:云服务器上买了一块8T的磁盘,准备挂载到服务器上的/data目录下. ===================================parted命令说明=============== ...

  8. Linux下的GPT分区,使用parted命令

    Linux下的GPT分区,这是另外一种分区,针对MBR分区,它有很多优点: (1)几乎突破了分区个数的限制. 在GPT分区表中最多可以支持128个主分区. (2)单个分区容量几乎没有限制. 单个分区最 ...

  9. 使用parted 创建一个大于2T的分区

    1.查看现有分区 parted -l fdisk   -l     2.对/dev/sdb分一个区 [root@test ~]# parted /dev/sdb   (parted) mkpart  ...

随机推荐

  1. Python sys.setdefaultencoding('utf-8') 后就没输出

    为了解决Python的 UnicodeDecodeError: 'ascii' codec can't decode byte ,我们可以加入以下代码. import sys reload(sys) ...

  2. Java面试----01.JavaSE

    1.面向对象和面向过程的区别 面向过程:面向过程性能比面向对象高. 因为类调用时需要实例化,比较消耗资源,所以当性能是最重要的考虑因素时,比如单片机.嵌入式开发.Linux/Unix等一般采用面向对象 ...

  3. restTemplate getForObject中map传参问题

    在使用restTemplate中getForObject的map传参形式时: 开始时我是这么调用的: RestTemplate rest = new RestTemplate(); Map<St ...

  4. appium-doctor报错“JAVA_HOME is set but does not exist on the file system at "D:\work\eclipse\Java\jdk1.7.0_67;"”解决办法

    卸载了jdk重新安装,重新配置环境就可以了

  5. Spring Cloud Gateway的动态路由怎样做?集成Nacos实现很简单

    一.说明 网关的核心概念就是路由配置和路由规则,而作为所有请求流量的入口,在实际生产环境中为了保证高可靠和高可用,是尽量要避免重启的,所以实现动态路由是非常有必要的:本文主要介绍 Spring Clo ...

  6. .net工作流引擎ccflow开发平台属性功能的隐藏显示介绍

    关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明  工作流设计 工作流快速开发平台   业务流程管理   bpm工作流系统  java工 ...

  7. Python之单例模式的多种实现

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  8. 2019.4.22 python_Flag

    想了很久  最后觉得还是对编程的知识点好好重新的拉一边 回炉重造并不可笑 虽然从C到java到php到python 有两年的时间了 但是很多知识点都是零零碎碎,没有花时间复习和记录 所以决定从pyth ...

  9. PHP key_exists

    此函数同array_key_exsits(). 1.函数的作用:判断一个数组是否含有某个键值 2.函数的参数: @param string  $key @param array $haystack 3 ...

  10. 中国.NET开发者峰会特别活动-基于k8s的微服务和CI/CD动手实践报名

    2019.11.9 的中国.NET开发者峰会将在上海举办,到目前为止,大会的主题基本确定,这两天就会和大家会面,很多社区的同学基于对社区的信任在我们议题没有确定的情况下已经购票超过了300张,而且分享 ...