linux - 了解 tmpfs 大小
问题描述
我需要在 linux 上使用 tmpfs。我有一些文件要玩,我知道我有多少个文件,我知道每个文件的大小。如何确定 tmpfs 的大小?
我正在使用安装程序:mount -t tmpfs -o size=?? name_tmpfs /mnt/mountpoint_tmpfs
我试图了解大小使用什么值。我做了一个测试,通过创建一个 4096(页面大小)字节的 tmpfs,我在其中创建了一个文件,但是如果我想填充它(每个示例只有一个字节)我有一个“错误写入交换”......我不明白存储一个 1 字节的文件需要多大的大小,所以对于我的“工作文件”,我完全迷失了!
我发现的每个教程都为他们的示例使用了一个随机的大尺寸,但我真的很想了解机制并了解我的工作文件需要多少 tmpfs 大小(我知道有多少,每种大小,我都能找到解决方案吗? )。
感谢您阅读:)
解决方案
文件系统包含数据和元数据。元数据的大小通常是固定的,并在 fs 创建期间分配(nr_inodes
tmpfs 挂载选项)。无论实际文件大小如何,数据也占用固定大小的块。要查看实际的数据使用情况,du -s
会做得很好:
root@localhost:/run/shm# echo > x; du -sh x
4.0K x
如您所见,在我的内核上,tmpfs 使用 4096 字节的块来存储文件,因此每个文件的大小将四舍五入为 4096 或它的倍数。我创建了一个大小为 4k 的 tmpfs,我能够创建一个 1 字节的文件,但仅此而已,这是预期的。我还能够创建 960k 空文件,这是我系统上 tmpfs 的默认 inode 限制,证明数据和元数据的存储是分开的。
推荐阅读
- c# - 超链接中的@@@ @@@ 部分呈现
- sql - 排序运算符需要更多的查询成本
- node.js - 无法让路由在 Nodejs 中工作
- .net - 在两个特定日期之间在名义账户中过帐的 Xero 交易
- angularjs - AngularJS ng-change 不适用于 Angularjs $compile
- python - Python单词翻译器代码
- css - 仅使用 CSS 的 Google Chrome 下载文件
- ace-editor - Ace 编辑器多个光标
- c++ - 编写一个将 LLVM IR 文件作为命令行参数的程序
- vuejs2 - 在 Vue2 中以另一种方法检索 e.target.files