浅谈在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分区表结构:

                wKiom1bkHXTRnxHcAAAijEwbArs895.png

    GPT分区表结构:

            wKioL1bkGZGwlhp4AAFigXu1d8A014.png


    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个分区项的大小)

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

            wKiom1bkHxqwvVX0AABJUIv036M697.png


    LBA 2-33

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

                   GPT分区表项的格式

        wKiom1bkH57TxXS5AAAV2KdfuLM707.png

    

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

    

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

    wKioL1bkwjKB0BsZAABp7fScs3c470.png

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

    下面开始介绍parted

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

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

            -h 帮助信息

            -v查看版本信息

            -s免交互式

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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"

1
2
3
4
5
6
7
8
(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会自动更改分区类型)
wKioL1bkysDAryKbAABRyqfDQtE948.png

            

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

1
2
3
4
5
6
7
8
9
(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".

1
2
3
4
5
6
7
8
9
(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:取消或者开启分区标志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  (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".(完整检查和最小化检查)

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

wKiom1bk0AOR_2pOAAAzpKtiRiA609.png

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

wKiom1bk0CLiUx-0AABCZ3AvvRw398.png

            

            rm partition:删除分区

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

wKiom1bk0jLwHmhSAABBOO4H4DE143.png

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

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










本文转自 赵大鑫 51CTO博客,原文链接:http://blog.51cto.com/xinzong/1750472,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Ubuntu Linux Shell
Linux系统中如何查看磁盘情况
【9月更文挑战第3天】在Linux系统中,有多种方式查看磁盘情况。可通过命令行工具`df`查看文件系统磁盘使用情况,选项`-h`以人类可读格式显示,`-T`显示文件系统类型;`du`命令显示目录或文件磁盘使用情况,`-h`以人类可读格式显示,`-s`仅显示总计;`fdisk -l`列出磁盘和分区信息。此外,图形界面的磁盘管理工具和文件管理器也可用于查看磁盘使用情况。这些方法有助于更好地管理磁盘空间。
449 4
|
3月前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
30天前
|
Unix Linux 对象存储
Linux 磁盘管理
Linux 磁盘管理
31 1
|
2月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
30天前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
51 0
|
30天前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
36 0
|
3月前
|
存储 监控 Linux
|
3月前
|
Prometheus 监控 Ubuntu
在Linux中,如何进行磁盘性能监控?
在Linux中,如何进行磁盘性能监控?
|
3月前
|
存储 监控 Linux
在Linux中,如何管理磁盘配额?
在Linux中,如何管理磁盘配额?
|
3月前
|
监控 Linux
在Linux中,如何监控磁盘I/O性能?
在Linux中,如何监控磁盘I/O性能?