如何提高linux中的EXT4时间戳精度?(How to increase the EXT4 timestamp precision in linux?)
Linux中EXT4文件系统的时间戳精度或准确度为1秒( Windows时间戳精度为100纳秒 )。 但是我们在云上运行的应用程序需要更高的文件系统精度。 如何提高Linux中的时间戳精度?
Timestamp precision or accuracy of EXT4 filesystem in Linux is one second ( Windows timestamp precision is 100 nano second ). But our application which is running on cloud requires more precision for the filesystem . How to increase the timestamp precision in Linux ?
原文:https://stackoverflow.com/questions/30142971
更新时间:2020-01-03 19:07
最满意答案
ext4应该支持更精细的时间戳; 它可以取决于系统的格式:
ext4 is supposed to support finer timestamps; it can depend on how the system was formatted:
2017-05-23
相关问答
一般安装LINUX时,不需要提前分区,而且多数情况下,提前分区的并不适合。 直接用LINUX安装盘安装,在安装时,会有一步分区,此时再详细分区即可。
了解了这些内容,您大概想体验一下 ext4。但在体验之前您必须重新编译内核并添加必要的支持。我推荐使用最新的内核(撰写本文时的最新版本为 2.6.24.4)。先解压缩内核源代码并手动设置所有选项或复制旧版本内核的 .config 文件,接着输入 make oldconfig 复制以前的设置,最后输入首选配置命令(如 make xconfig)查看内核选项。您将在主 File Systems 区域看到 ext4 选项,Ext4dev/ext4 extended fs support developm
...
1. 看你具体安装设置,不好说 2. btrfs资料还是很多的,有用的功能也不少,例如snapshot做增量备份。。 不熟悉建议不要折腾,老老实实ext4吧
要回答这个新修改过的问题,下面是一个如何使用e2fsck可以修复的损坏创建文件系统的示例: {/u1/xfstests-bld/build-64} (master)
521% debugfs -w /tmp/foo.img
debugfs 1.43.1 (08-Jun-2016)
debugfs: write /dev/null file-to-clri
Allocated inode: 12
debugfs: clri file-to-clri
debug
...
安装时提供类型为ext4。 否则它将采用/etc/fstab提到的默认类型(或)类型。 # mount -o dax -t ext4 /dev/xxx0 /mnt/ext4-xxx0
Provide the type as ext4 while mounting. Or else it will take default type (or) type mentioned in /etc/fstab. # mount -o dax -t ext4 /dev/xxx0 /mnt/ext4-xxx0
ext4应该支持更精细的时间戳; 它可以取决于系统的格式: EXT4上的时间戳精度(亚毫秒) 确定文件系统时间戳准确性 ext4 is supposed to support finer timestamps; it can depend on how the system was formatted: timestamp accuracy on EXT4 (sub millsecond) Determine file system timestamp accuracy
我最终使用了NFS(包含在Vagrant和OS X中)并且它已经运行了几个月了。 I ended up using NFS (included within Vagrant and OS X) and it's been working well for a couple months now.
如果inode足够大以支持扩展时间信息(256字节或更大),ext4文件系统确实支持存储时间的纳秒分辨率。 在您的情况下,由于大于第二分辨率,这不是问题。 在内部,ext4文件系统代码调用current_fs_time() ,这是当前缓存的内核时间被截断为文件系统超级块中指定的时间粒度,对于ext4是1ns。 Linux内核中的当前时间被缓存,并且通常仅在定时器中断时更新。 因此,如果您的定时器中断以10毫秒运行,则缓存时间将仅每10毫秒更新一次。 发生更新时,结果时间的准确性将取决于硬件上可用的
...
根据这个OpenGroup Link , 文件系统中文件的时间戳分辨率是实现定义的 ,但不应超过一秒分辨率。 三个时间戳应始终具有文件系统支持的值。 每当根据本节前面段落的规则将文件的时间戳中的任何一个设置为值V时,实现应立即将时间戳设置为文件系统支持的最大值,该值不大于V. 所以你保证它至少有一秒钟。 另外,根据stat(2)上的这个Linux手册页: 从内核2.5.48开始,stat结构支持三个文件时间戳字段的纳秒分辨率。 As far as I know, it can't be done.
...
好吧,你正确地想象有一个带磁盘I / O的瓶颈。 “普通”SATA磁盘可能具有大约100 MB / s的BW(用于顺序IO)。 将其与现代x86处理器内核的算术速率进行比较,假设时钟速度为2.5 GHz,“真实”代码每个时钟约2条指令,这可能会或可能不接近现实,但应该在球场。 因此,在从磁盘读取单个字节所花费的时间内,CPU内核执行大约50条指令[*]。 除非您的比较例程效率极低,否则每个字节不会花费50条指令来检查线路上是否存在“x”。 通过多个线程添加更多核心,这个比例变得更加不平衡。 其次,
...