在我的 Debian sid 上,在我的新(< 1 个月)SSD nvme WD SN850 上安装了自定义 5.17.0-rc1 内核,我的根分区格式化为 f2fs(v 1.14)
我明白了fstrim: /: FITRIM ioctl failed: Structure needs cleaning
fsck 正常,没有发现问题,操作系统运行没有问题
sudo fsck.f2fs /dev/nvme0n1p2
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 976566287 (476839 MB)
Info: MKFS version
"Linux version 5.5.0-rc6 (u1@jeanordi) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 SMP PREEMPT Thu Jan 16 00:24:17 CET 2020"
Info: FSCK version
from "Linux version 5.5.0-rc6 (u1@jeanordi) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 SMP PREEMPT Thu Jan 16 00:24:17 CET 2020"
to "Linux version 5.5.0-rc6 (u1@jeanordi) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 SMP PREEMPT Thu Jan 16 00:24:17 CET 2020"
Info: superblock features = 0 :
Info: superblock encrypt level = 0, salt = 00000000000000000000000000000000
Info: total FS sectors = 976566280 (476839 MB)
Info: CKPT version = 1d9fb4bd
Info: checkpoint state = 55 : crc fsck compacted_summary unmount
[FSCK] Unreachable nat entries [Ok..] [0x0]
[FSCK] SIT valid block bitmap checking [Ok..]
[FSCK] Hard link checking for regular file [Ok..] [0xb]
[FSCK] valid_block_count matching with CP [Ok..] [0x44993b]
[FSCK] valid_node_count matching with CP (de lookup) [Ok..] [0x16c2c]
[FSCK] valid_node_count matching with CP (nat lookup) [Ok..] [0x16c2c]
[FSCK] valid_inode_count matched with CP [Ok..] [0x15d7c]
[FSCK] free segment_count matched with CP [Ok..] [0x374d7]
[FSCK] next block offset is free [Ok..]
[FSCK] fixing SIT types
[FSCK] other corrupted bugs [Ok..]
Done: 2.975766 secs
答案1
默认情况下,F2FS 使用混合 TRIM 模式安装,其行为类似于连续 TRIM。此实现创建异步丢弃线程以减轻 RW IO 之间较长的丢弃延迟。它将候选者保留在内存中,线程在空闲时间发出它们[8]。因此,想要定期 TRIM 的用户将需要隐式设置
nodiscard
安装选项,或者如果手动安装则将/etc/fstab
其传递给。mount
换句话说,除非您nodiscard
为根文件系统指定了挂载选项(大概是在 initramfs 中),否则您将无法运行fstrim
-f2fs
并且不需要,因为f2fs
只要系统不运行,它就会自动在后台运行有更重要的事情要做。
如果您希望能够使用fstrim
on f2fs
,则需要使用nodiscard
mount 选项来停止连续的后台 TRIM 操作并允许您手动执行此操作fstrim
。
但FITRIM ioctl failed: Structure needs cleaning
结果确实很奇怪。fstrim
这似乎是产生错误的源中的位置。
该错误Structure needs cleaning
意味着该errno
值为EUCLEAN
。根据Elixir 交叉引用器,它出现在f2fs
驱动程序中只在一处:
#define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */
呃哦...貌似f2fs定义EUCLEAN
为同义词EFSCORRUPTED
,可以查到在 f2fs 驱动程序内的许多位置,无论是什么原因造成的,都可能是坏消息。
您的f2fs
文件系统可能已损坏。