用 16KB 块格式化 ext4 分区,可以吗?

用 16KB 块格式化 ext4 分区,可以吗?

我一直在寻找这个。我需要用 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) 

我继续创建文件系统,但由于错误而无法挂载它,所以答案是不,它不起作用,除非你用一些特殊方法安装它。

相关内容