You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux虚拟机间共享磁盘数据无法实时同步问题求助

问题:Azure共享磁盘多Linux VM挂载后数据无法实时同步
  • 已将单个SSD通过Azure Shared Disk功能附加到多台Linux VM,成功创建ext4/xfs/ntfs分区并执行sudo mount /dev/sdc1 /data完成挂载,磁盘原有数据在所有VM中可见
  • 某台VM写入数据后,仅执行写入操作的本机可见变更,其他VM需手动执行卸载再挂载才能看到更新:
    sudo umount /data
    sudo mount /dev/sdc1 /data
    
  • 尝试过更换机器配置、重建共享磁盘、更换文件系统、在/etc/fstab中添加nosync选项挂载,问题依旧
  • 需求:实现多VM同时读写共享磁盘,且数据变更实时同步
  • 补充说明:仅在一台VM上按官方步骤完成磁盘格式化与分区创建,其他VM仅执行挂载命令

解决方案

核心原因

ext4、xfs、ntfs这类普通文件系统不支持多节点并发读写的元数据与缓存同步,它们的设计目标是单主机挂载场景。多VM直接挂载时,每个节点会维护独立的文件系统缓存,导致数据视图不一致,你遇到的就是典型的缓存未同步问题。

可行解决路径

1. 采用集群感知型共享文件系统(基于Azure Shared Disk)

必须使用专门为多节点共享设计的文件系统,配合集群锁机制实现同步:

  • 推荐使用OCFS2或GFS2,需额外配置Pacemaker + Corosync集群管理组件,确保多节点间的元数据锁同步
  • 操作步骤示例(以OCFS2为例):
    1. 在所有VM上安装OCFS2工具包与集群组件:apt install ocfs2-tools pacemaker corosync
    2. 配置Corosync集群通信,建立节点间的心跳机制
    3. 在共享磁盘上创建OCFS2分区:mkfs.ocfs2 /dev/sdc1
    4. 配置Pacemaker资源,管理共享磁盘的集群挂载
    5. 在所有VM上通过集群资源挂载OCFS2分区,实现实时同步

2. 切换至Azure托管共享存储方案(更省心)

直接使用Azure NetApp Files或Azure Files(SMB/NFS协议):

  • Azure NetApp Files:原生支持多VM并发读写,提供企业级可靠性与性能,无需自行维护集群组件
  • Azure Files:通过NFS 4.1或SMB协议挂载,天然支持多节点共享,配置简单,适合中小规模场景

关键注意事项

  • 禁止在多VM上直接挂载普通文件系统的共享磁盘,即使临时能看到数据,长期运行会导致元数据损坏、数据丢失
  • 若坚持使用Azure Shared Disk,必须搭配集群文件系统与锁机制,否则无法实现安全的实时同步

内容的提问来源于stack exchange,提问作者Gaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:52:39