User: 我有个500G移动硬盘,需要格式化成ext4格式用于immich存储备份相片跟个人视频。
请给出最优化的inode参数避免硬盘有效存储数据效率低下,同时根据这个情况给出armbian下生成ext4分区的详细命令和步骤。卷标(LABEL)设为 ARMBIAN_DATA。
Kimi: 针对你的需求(500GB移动硬盘,用于存储Immich备份的照片和个人视频,格式化为ext4,卷标为ARMBIAN_DATA),我们需要重点关注如何优化inode参数,以避免存储效率低下。
User: 看了一下immich储存目录里有许多小文件比如缩略图等,且我的照片许多是低于1MB的,缩略图一般只有30-50KB,这些信息可以优化inode设置吗?
Kimi: Immich 的实际目录结构里既有 30-50 kB 的缩略图、人脸向量、JSON 边车,也有 1-几十 MB 的原图和 GB 级视频。
“每 1 MB 一个 inode” 的 largefile 会把 ≤1 MB 的文件强行塞进 1 MB 的“大块”里,内部碎片高达 50 % 以上;缩略图平均 40 kB 时,浪费 96 % 空间。
因此 -T largefile / largefile4 在这里是负优化,必须退回“多 inode、小粒度”策略,并改用其他手段减少浪费。
一、重新定 inode 粒度
- 预测文件尺寸分布
- 缩略图、向量、JSON:≤100 kB
- 原图:0.5-10 MB
- 视频:>50 MB
加权后“中位”大小 ≈256 kB。
- 按“每 256 kB 一个 inode”计算:
500 GB × 1024 MB/GB × 1024 KB/MB ÷ 256 KB ≈ 2 000 000 个 inode。
既比默认 30 M 少 15 倍,又比 largefile 多 16 倍,能兼顾小文件与大文件。 - 块大小仍用 4 kB(默认值),保证 40 kB 缩略图只占 10 个块,碎片可控。
二、单条命令(Armbian 通用)
sudo umount /dev/sdb1 # 如已挂载先卸载
sudo mkfs.ext4 \
-L ARMBIAN_DATA \
-m 0 \ # 数据盘不留预留空间
-b 4096 \ # 4 kB 块
-i 262144 \ # 每 256 kB 一个 inode
-I 256 \ # inode 记录大小 256 B(足以存扩展属性)
-O sparse_super,lazy_itable_init,extent,huge_file,dir_nlink,extra_isize \
/dev/sdb1
三、挂载调优(/etc/fstab 示例)
# 末尾添加一行
LABEL=ARMBIAN_DATA /mnt/immich ext4 noatime,nodiratime,errors=remount-ro,commit=120 0 2
然后执行
sudo mount -a
四、后续可再做的“轻量级”优化
- 定期
fstrim -v /mnt/immich
(SSD 场景) - 年度
e4defrag -c /mnt/immich
查看碎片率,>15 % 再真正 defrag - 如果后期视频比例激增,可用
tune2fs -i 524288 /dev/sdb1
把空闲 inode 再调稀(无需重新格式化)
结论
- 放弃 largefile/largefile4;
- 手工指定 -i 256k 左右,是 500 GB Immich 混合数据盘的最均衡方案;
- 上面一行
mkfs.ext4
命令直接照抄即可。祝使用愉快!
User: 如此预计500G硬盘,可以储存多少张大小在200KB - 3MB大小的iphone拍摄的照片,跟多少个平均100MB-200MB的视频?
Kimi: 先算“理论可用空间”,再按文件尺寸分布掐头去尾即可。
- 500 GB → 实际可写容量
硬盘厂标 500 GB = 500 × 1000³ B ≈ 465.7 GiB(1024³)
格式化损耗 <1 %,再留 5 GB 给 Immich 数据库/临时文件,取整 460 GiB 可用。
- 照片区间 200 kB – 3 MB
取几何中位更贴近真实:√(0.2 × 3) ≈ 0.77 MB
460 GiB ÷ 0.77 MB ≈ 610 000 张
按极限值估算:- 全部 200 kB → 460 GiB / 0.2 MB ≈ 2.3 M 张
- 全部 3 MB → 460 GiB / 3 MB ≈ 157 000 张
结论:日常混合使用约 60 – 150 万张照片区间。
- 视频区间 100 – 200 MB
平均 150 MB
460 GiB ÷ 150 MB ≈ 3 100 条
极限值:- 全部 100 MB → 4 600 条
- 全部 200 MB → 2 300 条
结论:大约 2 000 – 4 500 条 iPhone 视频。
一句话速记
- 照片:60 k~1.5 M 张(看平均大小)
- 视频:2 k~4 k 条(100-200 MB/条)
在 460 GiB 可用空间里,按自己拍摄比例套算即可。
User: 考虑以下inode方案后呢?
sudo mkfs.ext4
-L ARMBIAN_DATA
-m 0 \ # 数据盘不留预留空间
-b 4096 \ # 4 kB 块
-i 262144 \ # 每 256 kB 一个 inode
-I 256 \ # inode 记录大小 256 B(足以存扩展属性)
-O sparse_super,lazy_itable_init,extent,huge_file,dir_nlink,extra_isize
/dev/sdb1
Kimi: 把 inode 开销算进去,容量几乎不变,还是原来那组数字。
-
500 GB 盘实际 465.7 GiB
-
你给的参数
-i 262144 → 每 256 KiB 一个 inode
465.7 GiB ÷ 256 KiB ≈ 1.94 M 个 inode
每个 inode 256 B,合计
1.94 M × 256 B ≈ 496 MiB ≈ 0.5 GiB -
可用空间
465.7 GiB – 0.5 GiB ≈ 465.2 GiB
再扣掉 Immich 自身少量系统文件/数据库,仍按 460 GiB 估算即可。
结论
- 照片:60 k – 1.5 M 张(200 kB – 3 MB)
- 视频:2 k – 4 k 条(100 – 200 MB)
inode 新方案只吃掉约 0.1 % 空间,对可存数量没有可感知的影响。