- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个文件 a.dat
,大小为 1GB,位于磁盘上。出于性能原因,我重用了这个文件并根据需要简单地覆盖它的内容,而不是创建一个新文件并让它增长(每个增长操作都必须更新它在 inode 中的大小)。
我试图挤出更多的性能,并在手册页中搜索了 open和 mount试图找出文件的 mtime 和 ctime 何时更新。据我了解,每次更改文件内容时,mtime 和/或 ctime 都会更新。这是 xfs 的工作方式吗?
如果是这样,有没有办法在 Linux 上禁用它?我不关心 mtime 和 ctime,也不想承担每次写操作更新它们的成本。
最终,我将完全摆脱文件系统并直接写入设备,但与此同时我希望有一种方法可以使用文件系统来实现这一点。
根据答案进行编辑
为澄清起见,我正在写入 SSD,并且从 SSD 中挤出我能做的每一个操作是非常重要的。 SSD 理论上每秒可以处理大约 25K 次操作,其中每一项对我来说都很重要。除了写入我的文件之外,我不希望它们中的任何一个被浪费在任何事情上。关于这一点,实际上我的磁盘上有 200 个 1GB 的文件要写入。我试图用上面的问题简化问题。
此外,每次写入都必须是同步的,并且我的程序将不会继续,直到我确定这些位在磁盘上(这是可能的)。但我认为这个注释与问题无关。
最佳答案
有关 mtime 和 ctime 的语义,请参见 man 2 stat
。实际上,mtime 和 ctime 将在 inode 的内存副本中更新并异步刷新到磁盘。
如果没有主要的内核 hackery,你不能跳过 inode 中的 mtime 更新,如果你真的认为从一个 32 位计数器到另一个内存位置的副本正在减慢你的速度,你就错误地试图优化 写(2)
。
想要提高 1GB 文件的文件写入性能?为 block 缓存添加更多内存以使用并忘记 mtime。
为回应评论而添加
同步写入不会提供任何有意义的安全性,因为同步不会帮助在磁盘写入过程中拉下电源线;这就是使用 xfs 和 ext3+ 等日志文件系统的原因。你所能期望的最好的结果就是面对失败时的一致性。
您似乎希望确定所记录的数据是一成不变的,这从根本上是不可能的,即使您使用电池支持的 SRAM 写入缓冲区构建 RAID,因为在提交位之前某些事情总是失败。与日志文件系统相比,写入原始卷为您提供的保护更少。
如果您在问题中阐明您的设计意图,可能会有更好的答案。在直觉层面上,即使写入时间更长,但对于一个 1GB 的小文件来说,闪存给我的印象是比旋转氧化物更不容易发生故障,但这不是正式声明。
关于linux - xfs - 如何在写入文件时不修改 mtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478622/
使用 XFS 接口(interface)的好处是我可以编写一个与设备(pin-pads、读卡器)互操作的程序,我一般是对的吗?结果(理想情况下)是我可以更改设备并且不需要对我的软件进行任何更改。这是可
我要为我自己的硬件(可能是虚拟的)实现一个 SPI。正如我发现(也许我弄错了)当应用程序调用 WFSOpen 时,XFS 在 SPI 中调用 WFPOpen。但是这个“in SPI”指的是哪里呢?也许
有人可以提供(或给我指出一个列表)XFS 文件系统中的所有非法字符吗?我正在编写一个需要清理文件名的应用程序。 编辑: 好的,所以 POSIX 文件系统应该允许除 NUL 字符、正斜杠和“.”之外的所
所以我有以下设置: [ec2-user@ip-172-31-9-177 ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202
我在 LVM 上有一个 XFS 分区的服务器设置。将文件复制到主分区时,显示“设备上没有剩余空间”。 df -h 显示足够的空间: /dev/mapper/prod--vg-home 35G
我有一个特殊用途的 12 磁盘卷,总共 48 TB。 mkfs 使用默认参数后,使用 inode_64 挂载,报告的文件可用空间为 44 TB。因此有 4 TB 的元数据开销,几乎是 10%。 我认为
这个问题已经存在: where can i find XFS API reference and samples? [closed] 关闭 8 年前。 我想开发一个可以处理密码键盘 (EPP) 的示
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有一个文件 a.dat,大小为 1GB,位于磁盘上。出于性能原因,我重用了这个文件并根据需要简单地覆盖它的内容,而不是创建一个新文件并让它增长(每个增长操作都必须更新它在 inode 中的大小)。
我正在编写一个简单的 EC2 快照脚本,需要确定是否有办法知道文件系统是否被卡住。按照目前的情况,尝试对卡住的文件系统执行任何操作都会挂起脚本(并且也会卡在 bash shell 中)。 是否有命令或
关闭。这个问题是not about programming or software development .它目前不接受答案。 这个问题似乎不是关于 a specific programming
当我在 Docker 1.13.0 中进行卷映射时,某些文件已损坏。 在 docker 容器中,当“ls -l”文件夹时,它显示如下: “???????????? ? ? ? ? ? file_cor
我必须在我的 java 应用程序中使用 j/XFS 实现。我不知道 j/xfs 是什么?在谷歌上我也只找到了一份15页的小文档。那么有人可以给我一些链接吗? 最佳答案 添加一些评论,J/XFS 背后的
1.一开始 mount | grep home /dev/sdb1 on /home type xfs (rw,relatime,attr2,inode64,noquota) 2.尝试修改 mount
根据维基百科,XFS 能够保证 IO 的速率。我如何在 Linux(更具体地说是 Centos 5.5)下设置它?还是仅适用于 IRIX? 最佳答案 Quoting戴夫·钦纳: Linux do
我想知道是否有一种方法可以在连续范围内写入文件,从而完全避免文件系统中某些文件出现碎片。 我的意思是,Linux 下的 XFS 文件系统。 最佳答案 一般来说,不——您无法直接控制分配器。 您可以使用
我在设置 Docker 以使用 XFS 文件系统构建容器时遇到困难。我的存储驱动程序正确设置为 overlay2,但我的后备文件系统是 extfs。 我要在我的 docker 守护程序文件中为 sto
我使用 Xlwt 编写 excel 文件。它的单元格有一些样式(颜色、对齐方式、边框、...) 当我使用 XFStyle 并设置边框和其他样式属性时,在某些情况下会出错:超过 4094 个 XF(
由于挂载时出错,我无法在我的服务器上挂载设备,该设备类型为 XFS。挂载命令返回消息:“挂载:结构需要清理” 我试过使用 xfs_check,它只返回一条消息,说日志中有条目需要中继,你需要运行 xf
我可以在 ext 文件系统中使用 debugfs 命令获取文件创建日期/时间,但如何在 XFS 文件系统中检查/获取相同的日期/时间。 最佳答案 XFS does not support creati
我是一名优秀的程序员,十分优秀!