![用 16KB 块格式化 ext4 分区,可以吗?](https://linux22.com/image/1154018/%E7%94%A8%2016KB%20%E5%9D%97%E6%A0%BC%E5%BC%8F%E5%8C%96%20ext4%20%E5%88%86%E5%8C%BA%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%90%97%EF%BC%9F.png)
我一直在寻找这个。我需要用 16KB AUS 格式化我的 6TB 驱动器,以实现最大重复数据删除。这可能吗?
我尝试使用 mkfs 并收到以下警告:
mkfs.ext4: 16384-byte blocks too big for system (max 4096)
Proceed anyway? (y,n) n
它应该是安全的吗?
答案1
您需要将 mkfs.ext4 与-C 16384
和 一起使用-O bigalloc
。来自man mkfs.ext4
:
-C 簇大小 使用 bigalloc 功能指定文件系统的簇大小(以字节为单位)。有效的簇大小值为每簇 2048 到 256M 字节。只有启用 bigalloc 功能后才能指定。(有关 bigalloc 的更多详细信息,请参阅 ext4 (5) 手册页。)如果启用 bigalloc,则默认簇大小是块大小的 16 倍。
这默认如果使用 4096 字节块,簇大小将为 64KiB (16x4),如 所示/etc/mke2fs.conf
。这仅在bigalloc
启用 时才适用;否则簇大小就是块大小。
根据您预期的文件数量,您可能还希望设置-i inode_ratio
。大多数系统上的默认值为 16KiB+,因此您不会用完;但如果平均文件大得多,则效率可能会低下。
系统内核中的 ext4 版本必须支持该bigalloc
功能,在 Linux 3.2 中添加。
答案2
根据man mkfs.ext4
,
OPTIONS
-b block-size
Specify the size of blocks in bytes. Valid block-size values
are 1024, 2048 and 4096 bytes per block. If omitted, block-size
is heuristically determined by the filesystem size and the
expected usage of the filesystem (see the -T option). If block-
size is preceded by a negative sign ('-'), then mke2fs will use
heuristics to determine the appropriate block size, with the
constraint that the block size will be at least block-size
bytes. This is useful for certain hardware devices which
require that the blocksize be a multiple of 2k.
在我看来,只有块大小值 1024、2048 和 4096 字节是有效的,但这些值可能只是示例。您可以尝试使用选项
sudo mkfs.ext4 -b 16384 /dev/sdxn
其中 x 是驱动器号,n 是分区号。我在 16.04 中使用 xenial 内核(linux 4.4 系列)进行了测试,并mkfs.ext4
抱怨
mkfs.ext4: 16384-byte blocks too big for system (max 4096)
Proceed anyway? (y,n)
我继续创建文件系统,但由于错误而无法挂载它,所以答案是不,它不起作用,除非你用一些特殊方法安装它。