
一个 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 2023-12-29 23:47:22 +08:00 @lsylsy2 看了半天才明白,谢谢! 奇怪 OP 为什么要设这个参数 |