如何在ext4上存储10亿个文件?

red*_*ice 25 linux inode ext4

我只创建了大约800万个文件,然后在/ dev/sdb1中没有自由的inode.

[spider@localhost images]$ df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb1            8483456 8483456       0  100% /home
Run Code Online (Sandbox Code Playgroud)

有人说可以在格式化分区时指定inode计数.

例如mkfs.ext4 -N 1000000000.

我试过但得到了一个错误:

"inode_size(256)*inodes_count(1000000000)太大了......指定更高inode_ratio(-i)或更低的inode数(N)."

什么是合适的inode_ratio值?

我听说ext4的min inode_ratio值是1024.

是否可以在一个分区上存储十亿个文件?如何?有人说它会很慢.

Chr*_*ier 37

创建ext4文件系统时,可以指定使用类型:

mkfs.ext4 -T usage-type /dev/something
Run Code Online (Sandbox Code Playgroud)

可用的使用类型列在/etc/mke2fs.conf中.使用类型之间的主要区别是inode比率.inode比率越低,您在文件系统中创建文件的次数就越多.

mke2fs.conf中用于在文件系统中分配最大数量的inode的使用类型是"news".在1 TB硬盘驱动器上使用此类型,ext4创建了2.44亿个inode.

# tune2fs -l /dev/sdb1 | grep -i "inode count"
Inode count:              244219904
# sgdisk --print /dev/sdb
Disk /dev/sdb: 1953525168 sectors, 931.5 GiB
Run Code Online (Sandbox Code Playgroud)

这意味着需要超过4 TB才能创建一个带有"-Tnews"的ext4文件系统,该系统可能拥有10亿个inode.

  • 是的,这需要很长时间。例如,在我的台式机上,在单个目录中创建 10000 个文件需要 14 秒,创建 100000 个文件需要 2 分钟以上,因此创建 10 亿个文件可能需要几天或几周的时间。 (2认同)
  • btrfs可以轻松创建10亿个文件。使用btrfs```在我的笔记本电脑上创建100,000个文件需要3秒`c #include <stdio.h> #include <sys / types.h> #include <sys / stat.h> #include <fcntl.h> #include < stdint.h> #include <unistd.h> int main(){char buf [10 + 1]; //需要11表示终止的NULL字符10亿。for(uint_fast32_t i = 0; i <100000; ++ i){sprintf(buf,“%i”,i); 关闭(打开(buf,O_CREAT)); }}`` (2认同)