问题和风险:
青云目前提供的 Linux 主机映像,在挂载根分区时使用了 barrier=0
参数,这样可以在一定程度上提高操作系统的写性能。但是我们在测试过程中发现,在极端情况下,例如当物理主机突发掉电时,有一定概率会造成 Linux 主机文件系统损坏。
青云的物理主机有双路电源和 Raid 卡电池保护,但是也不能完全避免硬件突发故障。在这种情况发生时,用户主机会做离线迁移,通过异地副本恢复数据。但是如果此时主机文件系统损坏,则有可能会以只读方式加载,系统不能正常启动运行。
解决方案:
- 对于正在运行的主机,登陆到主机上,使用 vi 工具编辑
/etc/fstab
文件,找到”barrier=0
“,将其改成”barrier=1
“,然后重启系统。 - 对于路由器和负载均衡器,可以通过先关闭,再重启的方式自动获得安全更新。
- 对于用户的自有映像,则需要用这个映像创建新主机,按上述的方式修改
barrier
参数。然后将主机关机,捕获成新映像,最后将旧映像删除。
注:
- 现在系统映像都已经升级,新建的主机已经设置了
barrier=1
,不需要再次设置。 - 对于数据盘,如果文件系统是 ext3,则需要在 mount 的时候显式的指定”
barrier=1
“选项,例如”mount -t ext3 -o barrier=1 /dev/sdc1 /mnt/point
“; ext4 与 xfs 文件系统默认打开了barrier
选项,不需要显式指定。 barrier=0
对于性能提升有限,我们近期会提供一个新的方式在不损害数据安全的前提下优化硬盘的读写性能。