当前位置: 首页 > 面试题库 >

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

韩宏朗
2023-03-14
问题内容

我只创建了大约800万个文件,然后/ dev / sdb1中没有免费的索引节点。

[spider@localhost images]$ df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb1            8483456 8483456       0  100% /home

有人说可以在格式化分区时指定索引节点数。

例如mkfs.ext4 -N 1000000000。

我尝试过但出现错误:

“ inode_size(256)*
inodes_count(1000000000)太大…指定更高的inode_ratio(-i)或更低的inode计数(-N)。”。

合适的inode_ratio值是多少?

我听说ext4的最小inode_ratio值为1024。

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


问题答案:

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

mkfs.ext4 -T usage-type /dev/something

可用的用法类型在/etc/mke2fs.conf中列出。用法类型之间的主要区别是索引节点比率。 索引节点比率 越低,可以在文件系统中创建文件的越多。

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

这意味着使用“ -Tnews”创建一个可能容纳10亿个索引节点的ext4文件系统需要超过4 TB的空间。



 类似资料:
  • 我的程序询问用户的姓名和年龄。用户名是他们的姓名和年龄,最后加上一个随机字符。我想将该用户名存储到一个新的文本文件中,但是每当我运行代码时,它一次只写入一个用户名,它不包括我之前添加的用户名。这是我的代码请帮助我,我是新来的。

  • 我正在创建一个不使用数据库的服务。 我将所有的请求数据存储在文件系统中。 我正在使用spring Boot开发服务。

  • null 搜索的要求如下: 应该能够为(任何)单个或多个字符使用占位符/通配符(如、或); 应该能够指示短语在搜索文本中的位置(开头、任意位置、结尾:、、); 结果应完全匹配。 我已经试过了: null 如果在MongoDB中拥有所有功能并使用它的内置功能,那就太好了; 或使用solr,因为它将用于其他搜索功能,它是可靠的、可伸缩的,等等; 或使用lucene,与solr相同,但必须自己处理可伸缩

  • 问题内容: 我有一个AuthService,用于登录用户,它返回一个用户json对象。我要做的是设置该对象,并使所有更改都反映在整个应用程序中(登录/注销状态),而无需刷新页面。 我将如何使用AngularJS做到这一点? 问题答案: 完成此操作的最简单方法是使用服务。例如: 然后,您可以在任何控制器中引用它。以下代码监视服务中值的更改(通过调用指定的函数),然后将更改的值同步到作用域。 然后,当

  • 我有大约6个设置文件(xml或json ),我想存储在Azure中,但在我的Windows客户端应用程序中使用。我计划将它们存储在blob存储中,并使用以下代码下载它们: 设置文件不会经常更改。如何在本地缓存文件,以避免每次下载? 有更好的方法吗?我应该使用的其他Azure服务?

  • 我正在保存一个excel文件到设备(Android7)的存储,现在我想当用户点击按钮时打开excel文件,但现在当按钮点击应用程序会崩溃,而当im到我的存储和im打开文件直接在我的应用程序之外没有问题!!如果我的代码行错了,请帮忙,谢谢 日志:Android.os.FileUriExposedException:file:///storage/emulated/0/MessangerApp/Mes