格式化时对 Ext4 (crc32c-intel) 进行校验和(5TB 外部硬盘)

格式化时对 Ext4 (crc32c-intel) 进行校验和(5TB 外部硬盘)

我从希捷购买了一块新的2.5英寸5TB外置硬盘。

现在在我的 Linux Mint 21.1 上,我需要使用以下命令格式化新创建的分区gdisk

Model: Expansion HDD   
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 52CB8F84-EFAF-4EC9-B65D-6F8541A65F53
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 9767541133
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      9767541133   4.5 TiB     8300  Seagate_5TB_Ext4

现在可见fdisk

Disk /dev/sdb: 4.55 TiB, 5000981077504 bytes, 9767541167 sectors
Disk model: Expansion HDD   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 52CB8F84-EFAF-4EC9-B65D-6F8541A65F53

Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 9767541133 9767539086  4.5T Linux filesystem

我想使用 Ext4 作为文件系统。

问题是,默认情况下是否有一些数据校验和,或者我是否需要显式使用某些选项:

mkfs.ext4 -O metadata_csum,64bit /dev/path/to/disk

如上所述Ext4 元数据校验和 Linux 内核页?

谢谢。

请注意,到目前为止,我对 Ext4 使用了以下命令行选项:

mkfs.ext4 -L Seagate_5TB_Ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sdX

答案1

默认值会随着时间的推移而变化,并且可能还取决于您的发行版。

您可以自己检查一下tune2fs -l。以不同方式格式化并比较tune2fs输出。

仅出于测试目的,您还可以创建相同大小的稀疏文件。这避免了必须格式化现有文件系统以进行测试。

大小应与您预期的目标设备大小相似(或相同),因为某些标志也可能取决于大小。

truncate -s 1T a.img b.img

使用不同的标志格式化它们。

mkfs.ext4 a.img
mkfs.ext4 -O metadata_csum,64bit b.img

比较tune2fs -l输出diff -u

tune2fs -l a.img > a.img.tune2fs
tune2fs -l b.img > b.img.tune2fs
diff -u a.img.tune2fs b.img.tune2fs

结果:

# diff -U 0 a.img.tune2fs b.img.tune2fs
--- a.img.tune2fs   2023-02-19 14:08:59.338434366 +0100
+++ b.img.tune2fs   2023-02-19 14:09:03.321859687 +0100
@@ -4 +4 @@
-Filesystem UUID:          88952b27-467d-4232-a310-030eaf463d7c
+Filesystem UUID:          b6720761-1fd9-45e6-afd4-2ec7fe63cafb
@@ -29 +29 @@
-Filesystem created:       Sun Feb 19 14:08:35 2023
+Filesystem created:       Sun Feb 19 14:08:39 2023
@@ -31 +31 @@
-Last write time:          Sun Feb 19 14:08:35 2023
+Last write time:          Sun Feb 19 14:08:39 2023
@@ -34 +34 @@
-Last checked:             Sun Feb 19 14:08:35 2023
+Last checked:             Sun Feb 19 14:08:39 2023
@@ -45 +45 @@
-Directory Hash Seed:      efda347d-032b-4d84-81f0-8e86591be3c4
+Directory Hash Seed:      30a3a1b1-682f-4bcc-87f1-909fd577e2fa
@@ -48,2 +48,2 @@
-Checksum:                 0x2fbbf9c2
-Checksum seed:            0x683d2fee
+Checksum:                 0x40316d8f
+Checksum seed:            0x58dc22cf

在本例中,除了 UUID、时间戳、哈希/校验和之外没有任何区别。这些总是不同的,所以这是预期的。因此,就我的系统而言,指定-O metadata_csum,64bit似乎没有必要。

-m 0 -E lazy_itable_init=0,lazy_journal_init=0结果添加到:

@@ -15 +15 @@
-Reserved block count:     13421772
+Reserved block count:     0

使用mkfs.ext2代替mkfs.ext4(只是为了说明它确实在有不同的标志处于活动状态时显示):

@@ -7 +7 @@
-Filesystem features:      has_journal ext_attr resize_inode dir_index orphan_file filetype extent 64bit flex_bg metadata_csum_seed sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
+Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
(and many other changes)

这是一个如何使用tune2fsmke2fs 来检查 mke2fs 实际为您创建的文件系统类型的示例。

为了最终确认,您还必须检查实际设备,而不是如上所示的测试文件(mkfs 可能会根据设备类型选择一些设置)。

如果事实证明您在 mkfs 时选择了错误的标志,其中一些标志也可以即时更改(使用tune2fs 或 resize2fs),而无需重新格式化。

相关内容