一个 3T 大小的硬盘(不是挂载到根目录),最近要下载一个 500G 左右的数据集,大概 37w 张 JPEG 图片。寻思挂了个 Aria2 慢慢下就行了,但结果今天一看提示磁盘没有空间。df -h /data
一看空间不是还剩很多吗,转念一想应该是 inode 索引被干爆了。
现在已经在把下载好的文件导出备份了,准备重新格式化一下这个硬盘,有几个问题想要请教:
mkfs.ext4 -T largefile4 -m 0
格式化的。是不是 largefile4
为大文件设计而降低了 inode 的数量上限?默认设置能不能解决 inode 不够的问题? 1
defunct9 2023-12-28 10:18:46 +08:00
|
2
dog82 2023-12-28 10:23:32 +08:00
我还以为说的是 extjs 呢
|
3
hefish 2023-12-28 10:32:26 +08:00
我是跑 docker ,把 ext4 撑死了,后来所有系统都换成了 xfs 。
|
4
lsylsy2 2023-12-28 10:36:29 +08:00
https://wiki.archlinux.org/title/ext4
To specify a different bytes-per-inode ratio, you can use the -T usage-type option which hints at the expected usage of the filesystem using types defined in /etc/mke2fs.conf. Among those types are the bigger largefile and largefile4 which offer more relevant ratios of one inode every 1 MiB and 4 MiB respectively. It can be used as such: 确实是 largefile4 的问题。 |
5
billccn 2023-12-28 10:38:01 +08:00
推荐 largefile 就是减少每单位空间分配的 inode 数量来减少额外开销,毕竟储存各种分配表都需要按照最大 inode 数量来规划空间。Btrfs 等文件系统用树代替了表,所以不受这个问题干扰。Btrfs 有一个可以把 Ext 直接转换的工具,你可以试试。
|
7
F7TsdQL45E0jmoiG 2023-12-28 10:45:20 +08:00
xfs 可以
|
8
OysterQAQ 2023-12-28 10:52:30 +08:00
小文件使用 seaweedfs ,从应用层解决问题
|
9
june4 2023-12-28 10:58:09 +08:00
3t 的盘,被区区 37w 个文件把 inode 耗尽了?默认设置应该都能有过亿个 inode 了吧?
可以用 df -i 看一下是不是 inode 的问题 |
10
luxor 2023-12-28 11:03:51 +08:00
mkfs.ext4 -N 可以指定 inode 最大数量
|
11
google2023 2023-12-28 12:49:29 +08:00
@june4 赞同!我觉得楼主的问题不太可能是 ext4 文件系统的原因
|
12
lsylsy2 2023-12-28 13:09:10 +08:00
|
13
009694 2023-12-28 13:17:04 +08:00 via iPhone
largefile4 每 4MB 预留一个 inode 。 也就是说你的所有文件平均大小不足 4MB 的话, 就会出现 inode 不足的情况
|
14
BeautifulSoap 2023-12-28 13:20:21 +08:00 via Android
largefile 。。。。这参数我只有在我 nas 的硬盘上格式化时才会用。。。因为 nas 里存的文件平均都是几十 mb ,几 gb
|
15
des 2023-12-28 13:35:05 +08:00 via iPhone
seaweedfs +1 ,小文件要复制也麻烦
|
16
Ariake265 OP @lsylsy2 对的,每两三个图片上面都顶着两个目录,平摊下来一个图片也就 2M ,largefile4 真的吃不消了
|
17
Ariake265 OP @BeautifulSoap 哈哈本来这块硬盘我就是当 NAS 硬盘在用的,在下载这个数据集的时候没多想,没想到就出问题了
|
19
ice000 2023-12-28 15:45:39 +08:00
有些 Android 版本编译和 xfs 有冲突,报 node 长度过长 ,也是没办法
|
20
kenneth104 2023-12-28 16:21:07 +08:00
用 xfs 就行了,最容易过渡
|
21
google2023 364 天前
@lsylsy2 看了半天才明白,谢谢!
奇怪 OP 为什么要设这个参数 |