浅谈在Linux中磁盘超出2T的管理方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈在Linux中磁盘超出2T的管理方式相关的知识,希望对你有一定的参考价值。

    在介绍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/sdc
GNU Parted 3.1
Using /dev/sdc
Welcome 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) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  2000GB  2000GB               mageedu  boot

        

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

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

 (parted) toggle 1 boot

 (parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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://xinzong.blog.51cto.com/10018904/1750472

以上是关于浅谈在Linux中磁盘超出2T的管理方式的主要内容,如果未能解决你的问题,请参考以下文章

linux磁盘管理

前端知识 | 浅谈在React中使用echarts

浅谈在Unity3D中实现Finite State Machine System有限状态机框架系统

浅谈在网页中你所不知道的css背景属性

CentOS中管理大于2T的磁盘分区

Linux 运维基础:磁盘管理