Ext4 的默认日志模式是data=ordered,根据文档,这意味着
“在将元数据提交到日志之前,所有数据都被直接强制输出到主文件系统。”
但是,还有一个data=journal选项,这意味着
“所有数据在写入主文件系统之前都会提交到日志中。启用此模式将禁用延迟分配和 O_DIRECT 支持。”
我对此的理解是,该data=journal模式将记录所有数据以及元数据,从表面上看,这似乎意味着这是就数据完整性和可靠性而言最安全的选择,尽管对于性能而言可能不是那么多。
如果可靠性是最重要的,但性能要低得多,我应该选择这个选项吗?使用此选项有什么注意事项吗?
作为背景,有问题的系统在 UPS 上,并且驱动器上的写缓存被禁用。
我tune2fs -l /dev/sda今天在生产服务器上运行并得到以下输出:
tune2fs 1.42.9 (4-Feb-2014)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: a5b1c696-aa59-43db-a252-88b2e6d8212c
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: journal_data user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 60923904
Block count: 243670272
Reserved block count: 12183513
Free blocks: 223441953
Free inodes: 60799595
First …Run Code Online (Sandbox Code Playgroud) 我有 smartctl -a 命令的输出;其中一行如下所示:
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 301
Run Code Online (Sandbox Code Playgroud)
我已将其放入我的 bash 脚本中的一个变量中(如果这是正确的术语),如下所示:
$SMARTCTL_OUTPUT=`smartctl -a /dev/sda`
Run Code Online (Sandbox Code Playgroud)
我想对此进行解析,以便仅将行尾的数字返回给变量,因此在上面的示例中将其301放入变量中$POWER_ON_HOURS。
我试过使用 grep:
$SMARTCTL_OUTPUT=`smartctl -a /dev/sda | grep "Power_On_Hours"`
Run Code Online (Sandbox Code Playgroud)
但这会返回9 Power_On_Hours 0x0032 100 100 000 Old_age Always -我不感兴趣的其他文本 ( )。
我可以只返回行尾的数字吗?