重现步骤:
- 使用带有 LUKSv2 并使用 ext4 默认格式化的单个 USB HDD(仅有 10 个保留块除外,而不是 5%);
- 使用带有 Gnome 的 Ubuntu 或 Debian 可以解锁 HDD;
- 尝试打开目录、打开文件或写入时速度非常慢。我能听到硬盘因随机寻道而发出的刮擦声;
- 该命令
dstat
显示在不接触计算机的情况下,读取速度约为 3 MB/s,持续约 3 分钟。
内核日志中没有出现任何相关内容。
是否可以禁用此功能?它似乎是一个检查,在哪里?
提前致谢。
重现步骤:
dstat
显示在不接触计算机的情况下,读取速度约为 3 MB/s,持续约 3 分钟。内核日志中没有出现任何相关内容。
是否可以禁用此功能?它似乎是一个检查,在哪里?
提前致谢。
我很惊讶最近格式化的文件系统竟然会用完 inode。当我将其与使用旧版 Debian 格式化的另一个文件系统(遗憾的是我不知道使用的确切版本)进行比较时,旧版文件系统的 inode 数量是后者的两倍多,尽管大小只有后者的三分之二。
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 274661376 274661376 0 100% /18tb
/dev/sdb1 732430336 127388618 605041718 18% /12tb
我不记得手动指定文件系统的 inode 密度,默认值是否发生了变化?是否存在触发不同策略的神奇尺寸边界?
我让系统在每次重启时都对所有文件系统进行 fsck。现在又强制进行了 fsck。但我仍然得到:
$ sudo fsck -vn /dev/lvmroot/root
fsck from util-linux 2.40.2
e2fsck 1.47.1 (20-May-2024)
Warning! /dev/mapper/lvm/root is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
root has been mounted 1 times without being checked, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (12783960, counted=12783944).
Fix? no
Free inodes count wrong (5263640, counted=5263625).
Fix? no
Feature orphan_present is set but orphan file is clean.
Clear? no
503528 inodes used (8.73%, out of 5767168)
271 non-contiguous files (0.1%)
237 non-contiguous directories (0.0%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth histogram: 448994/96
10284712 blocks used (44.58%, out of 23068672)
0 bad blocks
5 large files
409720 regular files
37767 directories
0 character device files
0 block device files
0 fifos
4248 links
56022 symbolic links (54421 fast symbolic links)
24 sockets
------------
507781 files
我是否应该特意去修复它?
我刚刚读到了EXT4 中的“内联数据”功能,更具体地说是关于如何启用它的答案。
EXT4 中默认未启用此功能的原因是什么?我想这是为了让 FS 与旧内核兼容,但旧内核还不支持此功能。还有其他原因吗?
如果我知道我永远不会使用较旧的内核,那么在使用 EXT4 格式化分区时是否有任何理由不始终启用此功能?
太长了;
在 EXT4 术语中,“块组”和“范围”是同一件事吗?
[编辑] 建议的“范围”功能在 Linux 的 ext4 文件系统中做什么?讨论并不能回答这个问题。虽然它清楚地解释了“范围”是什么,但它没有谈论“块组”,以及它是否是同一件事(它不是:请参阅下面的答案)。
细节
在这篇文章中,他们讨论了块组的结构:
根据维基百科,范围是块的范围。
这两个概念是同一件事,只是使用不同的名称吗?
已经有Nimbus ExaDrive 100TB SSD,200TB SSD即将推出。正如您在此处所读到的, ext4 最多支持 256 TB。硬件达到这个限制只是时间问题。
他们会更新 ext4 还是会有 ext5?会发生什么?
根据mount
手册页,
仅当先前的访问时间早于当前的修改或更改时间时,才更新访问时间。
但是,如果我这样做(带有relatime
选项(*)的 ext4):
> date +%T.%N ; dd if=/dev/random of=random.dat bs=1 count=4096 ; date +%T.%N ; stat random.dat
18:52:00.616084761
4096+0 records in
4096+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.0319383 s, 128 kB/s
18:52:00.651183318
File: random.dat
Size: 4096 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 28313073 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ me) Gid: ( 1000/ me)
Access: 2022-09-26 18:52:00.616297607 +0200
Modify: 2022-09-26 18:52:00.648297639 +0200
Change: 2022-09-26 18:52:00.648297639 +0200
Birth: -
访问时间似乎停留在创建时间上,如果我重新运行它(所以现在random.dat
存在,并且它与更新的 inode 相同)我得到:
> date +%T.%N ; dd if=/dev/random of=random.dat bs=1 count=4096 ; date +%T.%N ; stat random.dat
18:52:43.014712313
4096+0 records in
4096+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.0633748 s, 64.6 kB/s
18:52:43.081174320
File: random.dat
Size: 4096 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 28313073 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ me) Gid: ( 1000/ me)
Access: 2022-09-26 18:52:00.616297607 +0200
Modify: 2022-09-26 18:52:43.076338407 +0200
Change: 2022-09-26 18:52:43.076338407 +0200
Birth: -
...尽管完全重写了文件内容,但访问时间根本没有改变。
我错过了什么/误解了什么?访问时间不应该与修改和更改一起更新吗?
(*)/dev/mapper/vgkubuntu-root on / type ext4 (rw,relatime,errors=remount-ro)
(**)dd if=/dev/random
用于演示目的(缓慢输出)
最近我电脑的电源坏了。我不知道这到底是怎么发生的,但我恢复了计算机的功能。我运行 PopOS 22.04 LTS Linux,我的操作系统也无法启动。我用可启动的 USB 修复了它。但是在启动时,我发现我的 2TB 数据硬盘也不见了。
它的分区已被替换为近 2TB 的“未分配空间”和一个 18MB 的 FAT12 Windows 分区(我忘记了它的实际名称,但我认为它类似于“Windows 磁盘管理”)。我确实在修复 Linux 之前意外启动了一次 Windows,因为我有一个双启动设置,我不知道 Windows 是否对它做了任何事情。
我之前的分区是 2TB 的 ext4 分区,仅此而已。它充满了数据,我认为数据仍然存在。从那以后我尝试的是(也许很愚蠢,我对此一无所知)添加一个分区,但是在看到我必须格式化分区以使其正常工作时,我停止了。我还尝试了 testdisk,它找到了一堆标记为 [Data] 的旧 Linux 分区,但当它报告分区太大而无法放入磁盘时最终失败。分区有通知''此分区在磁盘限制之后结束。''。这是我的 testdisk 日志文件的 hastebin:https ://www.toptal.com/developers/hastebin/ahetuwuquv.yaml
有什么方法可以恢复我的文件,或者让 testdisk 能够恢复我的分区或读取文件?提前致谢,如果我需要添加任何日志或信息,请告诉我。
我只有一个硬盘。我想使用一个可以减少存储空间的文件系统,但作为权衡,给我校验和或任何其他方法来帮助保持数据完整性。
据我了解,像 ext4 或 xfs 之类的东西不会这样做,因此您可能会遭受静默数据损坏,也就是 bitrot。
zfs 看起来是个不错的选择,但我读到的所有内容都表明您需要多个磁盘才能使用它。为什么是这样?我意识到只有一个磁盘不会容忍单个磁盘故障,但这就是多个备份方案的用途。备份无济于事的是 bitrot 之类的东西。
那么我可以在单个硬盘驱动器上使用 zfs 来防止比特腐烂吗?如果没有,你有什么推荐的?