首页 > 解决方案 > 在不超过 inode 或硬盘空间的情况下存储大量 jpeg 图像(Python)

问题描述

我正在处理数百万个不同尺寸的小图像(~100x100)。

  1. 如果我将它们以 jpg 格式存储在硬盘上,它们将超过我磁盘的 inode 限制。

  2. 如果我将它们存储为像 HDF5 这样的二进制文件,即使我应用压缩,它们也会占用 >100GB(h5py 的 gzip 无损压缩远不如 jpeg 的压缩那么紧凑)。

是否有任何标准方法将这些图像存储为具有 jpeg 压缩的单个文件,这样它既不会占用大量 inode 或硬盘空间?我还想通过 python 轻松阅读这些图像。

标签: pythonhdf5inode

解决方案


Ext4 的每节点字节数

如果图像大部分大小相同,则可以为每个 inode 选择最佳字节数。您需要小于默认 16384 的值才能更好地匹配您的图像尺寸。

循环装置

如果重新格式化磁盘不是一个选项,您可以挂载一个“循环”设备:

dd if=/dev/zero of=./single-file bs=512 count=2M  # 1G
mkfs.ext4 -i 1024 ./single-file                   # 1K per inode

mkdir /mnt/small-images/
mount ./single-file /mnt/small-images

mv 01.jpg /mnt/small-images/

推荐阅读