磁盘文件系统问题

 

 

Red Hat 6扩容超过16T,导致磁盘无法正常识别:https://www.cnblogs.com/llwxhn/p/14163320.html
使用parted解决大于2T的磁盘分区:https://wsgzao.github.io/post/parted/
在 Linux 中,为磁盘分区通常使用 fdisk 和 parted 命令。通常情况下,使用 fdisk 可以满足日常的使用,但是它仅仅支持 2 TB 以下磁盘的分区,超出 2 TB 部分无法识别。而随着科技的进步,大容量硬盘已经步入我们的生活,10 TB 的 HDD 和 30 TB 的 SSD 也已面世,无论是家用还是商用领域 SSD 的容量和价格都更加充满吸引力。仅仅能识别 2 TB 的 fdisk 很明显无法满足需求了,于是乎 parted & GPT 磁盘成为了绝佳的搭配。本文主要介绍使用 parted 为 MBR 以及 GPT 磁盘分区的方法,也算是作为备忘

 

磁盘分区信息存储的两种形式

常见磁盘分区存储形式类型有两种:MBR(MSDOS) 和 GPT

什么是 MBR

MBR(Master Boot Record,主引导记录)。
MBR 是存在于驱动器最开始部分的一个特殊的启动扇区,一般叫它 0 扇区。它由 446B 的启动加载器(Windows 和 Linux 的不同),64B 的分区表,和 2B 用来存放区域的有效性标识 55AA,共 512B。

MBR 分区最大只支持 2T

分区表每 16B 标识一个分区,包括分区的活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目 (4 个字节)、分区总扇区数目(4 个字节) 等信息。
分区总扇区数目决定了这一分区的大小,一个扇区一般 512B,所以 4 个字节,32 位所能表示的最大扇区数为 2 的 32 次方,也就决定了一个分区的大小最大为 2T( 2**32 * 512 / 1024 / 1024 / 1024 /1024)。

MBR 只支持最多 4 个主分区

16B 标识一个分区,64B 就一共只能有 4 个分区,所以主分区最多只能有 4 个。一块磁盘如果要分多于 4 个分区,必须要分一个扩展分区,然后在扩展分区中再去划分逻辑分区。

什么是 GPT

GPT(GUID Partition Table),这是最近几年逐渐流行起来的一种分区形式,如果要将使用 GPT 分区格式的磁盘作为系统盘,需要 UEFI BIOS 的支持,它才可以引导系统启动。UEFI 一种称为 Unified Extensible Firmware Interface(统一的可扩展的固件接口,它最终是为了取代 BIOS,目前市面上的 BIOS 大多已支持 UEFI。GPT 也是为了最终取代 MBR 的。
GPT 相比 MBR 的优点:

  • 分区容量可以大于 2T
  • 可以支持无限个主分区
  • 更为健壮。MBR 中分区信息和启动信息保存在一起而且只有一份,GPT 在整个磁盘上保存多份这个信息,并为它们提供 CRC 检验,当有数据损坏时,它能够进行恢复。

小于 2T 的分区的管理

因为传统的 MBR 分区,支持的最大分区为 2T,也可以一定程度上等同于磁盘大小,必定 2T 以上的硬盘不是非常普及。在 CentOS 中可以使用fdisk指令进行管理。详细过程不在赘述。

LVM 逻辑卷管理配置小结 - https://wsgzao.github.io/post/lvm/

超过 2T 的分区的管理

当 CentOS 中识别到有磁盘容量超过 2T 时,如果试图使用fdisk指令对其分区会有相应的警告提示,大致如下:

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

明确提示需要使用parted进行管理,如果系统中没有这一指令,使用yum install -y parted进行安装即可。

查看磁盘的分区情况parted -l 会打印出系统识别到的所有磁盘的分区情况

指定分区类型 parted /dev/sdb 先进入那块超过 2T 的磁盘的管理界面中。
mklabel gpt parted 指令支持的分区类型选项:{aix|amiga|bsd|dvh|gpt|loop|mac|msdos|pc98|sun},这里需要选择 gpt,msdos 即为传统的 MBR 分区方式。

创建分区
mkpart {primary|extended|logical| [fs-type] start end GPT 分区没有主分区数的限制,这里一般选择 primary 这一类型。GPT 支持的 fs-type 没有 fdisk 那么多,它支持的有:ext2、ext3、ext4、fat16、fat32、NTFSReiserFS、JFS、XFS、UFS、HFS、swap 这些文件系统格式。

 

 

16T以上容量的分区使用ext4文件系统的方法:https://blog.51cto.com/zhukeqiang/1793969

 

 

flag|=EXT2_FLAG_64BITS
ext2fs_open()

 

使用 e2fsprogs 编译 dumpe2fs 遇到的问题:

dumpe2fs.c

flag|=EXT2_FLAG_64BITS
ext2fs_open()

 

如果 ext2fs_has_feature_metadata_csum 无法找到,可以:
检查 e2fsprogs 版本并升级到最新版本(推荐 1.43 或更高)。
确保包含正确的头文件并链接 libext2fs。
手动检查超级块中的 EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 标志位作为替代方案。

 

 

posted @   redrobot  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示