Search Posts

如何格式化超出 4TB 限制的 Ext4 文件系统

所有文件系统都有限制

Ext 系列的文件系统也不例外。使用标准 4KiB 块大小,32 位 Ext3 的卷限制为 16TB。随着存储介质的进步和容量增加的更大可用性,Ext4 的开发是为了克服这一限制。Ext4 现在将支持高达 1 EB (EiB) 的卷。

这是一个了不起的改进,但是当您实际格式化其中一个卷时会发生什么?如果您的系统运行一些较旧的 fs 工具(如 Debian Squeeze),那么在尝试格式化大型卷时可能会遇到这种情况(假设我们在此示例中在 /dev/vg0/lv_data 处有一个 19TB 的分区)。

# mkfs -t ext4 /dev/vg0/lv_data 
mke2fs 1.42.7 (21-Jan-2013) 
mkfs.ext4: Size of device (0x131a47800 blocks) /dev/vg0/lv_data too big to be expressed in 32 bits using a block-size of 4096.

解决方式

解决方式1:使用 e2fsprogs 工具

尽管 Ext4 文件系统已更新为支持 64 位卷,但这些工具可能不支持。这里的解决方案是获取最新版本的 e2fsprogs 实用程序并自己构建它们。

首先,从sourceforge获取实用程序:

# cd /opt/
# wget -O e2fsprogs-1.42.7.tar.gz 
http://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.42.7/e2fsprogs-1.42.7.tar.gz?r=http%3A%2F%2Fe2fsprogs.sourceforge.net%2F&ts=1361548232&use_mirror=superb-dca3

然后,提取文件并为您的构建进行设置

# tar -xzvf e2fsprogs-1.42.7.tar.gz
# cd e2fsprogs-1.42.7
# mkdir build
# cd build

如果您没有开发工具(如编译器和make),请立即安装它们

# apt-get install build-essential

现在,您已准备好构建工具:

# ../configure
# make
# make install

但是,在实际创建文件系统之前,您需要编辑 /etc/mke2fs.conf 文件,并为大磁盘自动启用 64 位功能标志。它应该看起来像这样:

[fs_types]
    ext4 = {
        features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
        auto_64-bit_support = 1 # <—- add this line
        inode_size = 256
    }

最后,您已准备好创建卷!如果您在使用标准工具时遇到问题,可以运行以下命令来手动指定选项:

# mke2fs -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -i 4194304 /dev/vg0/lv_data

现在,您应该能够挂载卷并使用它!

# mount /dev/vg0/lv_data /mnt
# cd /mnt

好啦!使用最新的实用程序,在 Linux 中创建和使用超过 4TB 的 Ext16 文件系统应该轻而易举。

解决方式2:使用 gdisk 工具

在 Linux 中,可以使用 `gdisk` 工具来格式化大于 4TB 的磁盘。以下是使用 `gdisk` 工具格式化大于 4TB 磁盘的步骤:

1. 安装  gdisk 工具。如果你使用的是 Ubuntu 或 Debian 等基于 Debian 的发行版,可以使用以下命令来安装:

sudo apt-get install gdisk

如果你使用的是其他发行版,则可以使用相应的包管理工具来安装。

2. 打开终端,并使用 sudo 命令以超级用户权限运行 `gdisk` 工具。例如:

sudo gdisk /dev/sdb

在这个示例中,我们将使用 `gdisk` 工具格式化 `/dev/sdb` 设备上的分区。请注意,使用 `gdisk` 工具来格式化分区将会删除分区上的所有数据,请确保你已经备份了重要的数据。

3. 在 `gdisk` 提示符下,输入 `o` 命令以创建一个新的 GPT 分区表。例如:

Command (? for help): o

4. 输入 n 命令以创建一个新的分区。例如:

Command (? for help): n

5. 按照提示输入分区的起始和结束扇区。请注意,由于大于 4TB 的分区需要使用 64 位 LBA 扇区地址,因此你需要输入起始和结束的扇区号的 64 位表示,例如 `start=2048s end=8796093022207s`。结束扇区号可以使用 `gdisk` 工具的 `END` 命令来自动计算。例如:

Command (? for help): 2048s
Command (? for help): END

6. 输入 `w` 命令以保存分区表并退出 `gdisk` 工具。例如:

Command (? for help): w

在这样操作完成后,你可以使用 `mkfs` 命令来创建文件系统,例如:

sudo mkfs.ext4 /dev/sdb1

这将在 `/dev/sdb` 设备的第一个分区上创建一个 ext4 文件系统。请注意,使用 `mkfs`开始的命令将会格式化分区并删除上面的所有数据,请确保你已经备份了重要的数据。

加好友请备注:chinaoss
您可以在微信公众号联系我们
我们将24小时内回复。
取消