博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈在Linux中磁盘超出2T的管理方式
阅读量:7077 次
发布时间:2019-06-28

本文共 5807 字,大约阅读时间需要 19 分钟。

    在介绍2T以上硬盘的管理方式之前,先给大家介绍一下GPT。

    

    GPT全局唯一标识分区表(GUID Partition Table,缩写:GPT),其出现的目的是为了替代旧式的MBR,对于扇区为512字节的磁盘不支持2.2TB的分区,一些硬盘厂商注意到了这个局限性,比如:希捷和西部数据。并且他们将容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了8.8TB,看似“正确的”解决方案,在临时地降低了人们对GPT的需求的同时,也给市场带来了在有较大的块(block)的设备上从BIOS启动时,如何最佳的划分磁盘分区的困惑。

    且作为MBR的继承者,GPT正是为了解决MBR的诸多限制.

    GPT修复MBR的限制:

1、磁盘指针大小为64位,假设扇区为512字节,这意味着GPT可以处理的磁盘大小高达86亿TiB

2、GPT数据结构在磁盘上存储两次,开始和结束各一次,在因师傅或扇区导致损坏的情况下,这种重复提高了恢复的几率。

3、GPT将所有分区存储在单个分区表中(带有备份),因此扩展分区或逻辑分区没有存在的必要。GPT默认支持128个分区,当然也可以更改分区表的大小,如果分区软件支持这种更改的话。

4、MBR使用1字节分区类型代码,GPT使用一个16字节的全局唯一标识符(GUID)值来表示分区类型,这使分区类型更不容易冲突。

5、GPT支持存储人类可读的分区名称。(例如/home,/usr)

    MBR分区表结构:

                

    GPT分区表结构:

    LBA-0:

        在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR也叫做保护MBR(Protective MBR)。

        保护性MBR可以保护GPT磁盘不受MBR(fdisk)磁盘工具的危害。这些工具不能感知GPT,也无法正确地访问GPT磁盘。这就是用传统的fdisk工具为什么不能管理GPT分区的原因。

        另外GPT需要在内核中支持,但好在Linux一直都支持!

    LBA-1:

        分区表头(LBA-1):定义了硬盘的可用空间及组成分区表的项的大小和数量。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)

            分区表头记录的具体内容可以看下表

            

    LBA 2-33

        LBA 2–33的位置存放的是分区表项。GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

                   GPT分区表项的格式

        

    

    看完这些基本概念是不是已经懵了,没关系,我也没有理解的特别透彻,你只要记住GPT的优点就好了,接下来介绍在Linux下面如何管理GPT分区。

    

    首先我们来用fdisk来试一下对2.2T以上的磁盘分区:

    

    从上面可以看到,fdisk警告最大可用仅为2199023255040 bytes,可以用parted分区管理工具管理GPT。

    下面开始介绍parted

        命令使用格式:    parted [options] [device [command [options...]...]]

        命令参数[options]:此处几个参数比较简单,不过多演示。

            -h 帮助信息

            -v查看版本信息

            -s免交互式

        交互式时的参数[command [options...]

            help(可以用简写h):帮助

# parted /dev/sdcGNU Parted 3.1Using /dev/sdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) h                                                                  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 PART-TYPE [FS-TYPE] START END     make a partition  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                                     exit program  rescue START END                         rescue a lost partition near START and END  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                                set the default unit to UNIT  version                                  display the version number and copyright        information of GNU Parted(parted)

            p(print):列出分区表

            mklabel 设置标签类型:可选项有"aix", "amiga", "bsd", "dvh", "gpt", "loop", "mac","msdos", "pc98", or "sun"

(parted) mklabel gpt(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3221GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start  End  Size  File system  Name  Flags

            

            mkpart创建分区mkpart part-type [fs-type] start end

                part-type:分区类型,可选:"primary", "logical", or "extended".

                fs-type:与fdisk不同,parted是专门为linux设计的一种工具,所以支持的文件系统类型没有fdisk支持的那么多,但是也支持大部分linux文件系统:ext2、ext3、ext4、fat16、fat32、NTFSReiserFS、JFS、XFS、UFS、HFS、swap。(此选项可以省略,在格式化时指定文件系统类型后,parted会自动更改分区类型)

            

            name partition name:设置分区名字,仅用于Mac,PC98,and GPT disklabels.

(parted) name 1 mageedu                                                   (parted) p                                                                Model: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3221GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name     Flags 1      17.4kB  2000GB  2000GB               mageedu

            

            set partition flag state:设置分区标志

                # 注意,此处flag得值,仅限:"boot",  "root",  "swap",  "hidden",  "raid",  "lvm",  "lba", "legacy_boot" and "palo".

                # stat的值:"on" or "off".

(parted) set 1 boot on                                                    (parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3221GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name     Flags 1      17.4kB  2000GB  2000GB               mageedu  boot

        

            toggle partition flag:取消或者开启分区标志

 (parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3221GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name     Flags 1      17.4kB  2000GB  2000GB               mageedu  boot (parted) toggle 1 boot (parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3221GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name     Flags 1      17.4kB  2000GB  2000GB               mageedu (parted) toggle 1 boot                                                     (parted) p                                                                Model: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3221GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name     Flags 1      17.4kB  2000GB  2000GB               mageedu  boot

            

            align-check type partition检查分区类型是否满足类型的约束;

                    type 必须是 "minimal" or "optimal".(完整检查和最小化检查)

                    # 此处注意:一般是检查分区的文件系统类型是否满足,一般在格式化后操作

# 这里之前我做了一次格式化(mkfs.ext4 /dev/sdc1)

            

            rm partition:删除分区

                # 次处于fdisk有一个不同之处,parted删除分区1后,分区2不会变成1

        好了,对parted的介绍就到这里了!

        在这里提醒一下各位,数据无价,对磁盘进行操作时,必须慎重慎重再慎重!!

转载地址:http://ikpml.baihongyu.com/

你可能感兴趣的文章
4827 妹子[快速乘法]
查看>>
Ubuntu的一些使用记录
查看>>
DataBase Connection Failed的一点解决办法(PHP项目)
查看>>
SilverLight控件之ContextMenu和RadContextMenu(菜单)
查看>>
css3背景颜色渐变属性 兼容性测试基础环境为:windows系统;IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+...
查看>>
word怎么删除空白页
查看>>
2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
查看>>
探索SpringBoot中的SpringMVC
查看>>
memcpy的用法总结
查看>>
HDU 4027 Can you answer these queries?
查看>>
jq购物车结算功能
查看>>
leetcode725
查看>>
Android WebRTC 音视频开发总结(三)-- 信令服务和媒体服务
查看>>
EntityFramework IEnumerable,IQueryable ,Include
查看>>
memtrack: Couldn't load memtrack module (No such file or directory) 的问题解决
查看>>
Visio画图(一):UML用例图
查看>>
Docker入门(五):Swarms
查看>>
盘点:#AzureChat - 虚拟机和自动伸缩
查看>>
【PHP设计模式 04_GongChang.php】 工厂方法
查看>>
架构阅读笔记8
查看>>