所有文件系统都有限制
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`开始的命令将会格式化分区并删除上面的所有数据,请确保你已经备份了重要的数据。