在具有多个磁盘和跨越慢速 (HDD) 和快速 (SSD) 驱动器的软件 RAID 的现代 Linux 系统上,如何缓存对文件系统的写入?
对于 md-raid RAID1,阵列可以配置磁盘--write-mostly
,--write-behind
这表明读取是从较快的磁盘执行的,而写入较慢的磁盘可能会滞后。但是它是如何在内核级别缓存的呢?内核在md-raid层之前还是之后缓存磁盘写入?在 write() 调用结束时,是否保证将数据写入非--write-behind
磁盘之一?
对于btrfs
RAID1,同样的情况会如何发生?没有--write-behind
功能,那么脏页是在设备级别还是文件系统级别计算的?write() 会在什么时候返回?
vm.dirty_*ratio
可调参数如何影响这些设置?
我使用systemd-cron
它在 /lib/systemd 下创建单元文件。单位文件cron-daily.timer
有
[Timer]
OnCalendar=daily
Run Code Online (Sandbox Code Playgroud)
这会在午夜触发脚本。我希望它们在凌晨 3 点触发。
如果我override.conf
在cron-daily.timer.d
目录下创建/etc/systemd/system
有
[Timer]
OnCalendar=*-*-* 03:00:00
Run Code Online (Sandbox Code Playgroud)
并运行daemon-reload,重新启动计时器并运行systemctl list-timers
它仍然想在00:00:00运行。但是,如果我改变我override.conf
的有
[Timer]
OnCalendar=hourly
Run Code Online (Sandbox Code Playgroud)
然后它想按预期每小时运行一次。为什么我不能覆盖服务以在特定时间运行?
我想设置一个 Linux 系统来使用一个主存储设备,但将该设备的所有写入复制到另一个辅助设备,而不会阻塞每次写入 - 例如,将 NVMe SSD 作为主存储设备,将旋转 rust 作为辅助设备。
目前我能想到的唯一方法是在后台运行频繁的操作rsync
,或者类似btrfs-send
磁盘写入的实时流。