云硬盘 EVS-共享云硬盘:共享云硬盘的数据共享原理和常见的使用误区
共享云硬盘的数据共享原理和常见的使用误区
共享云硬盘本质是将同一块云硬盘挂载给多个云服务器使用,类似于将一块物理硬盘挂载给多台物理服务器,每一台服务器均可以对该硬盘任意区域的数据进行读取和写入。如果这些服务器之间没有相互约定读写数据的规则,比如读写次序和读写意义,将会导致这些服务器读写数据时相互干扰或者出现其他不可预知的错误。
共享云硬盘为云服务器提供共享访问的块存储设备,但其本身并不具备集群管理能力,因此需要您自行部署集群系统来管理共享云硬盘,如企业应用中常见的Windows MS CS 集群、Linux RHCS集群、Veritas VCS集群和CFS集群应用等。
- 读写冲突导致数据不一致
当一个共享云硬盘同时挂载给两台云服务器时,云服务器A和云服务器B相互之间无法感知另一个云服务器已使用的存储空间,云服务器A可能会对该云硬盘上已被云服务器B使用的空间进行重复分配,从而发生空间分配冲突导致数据出错的情况。
比如,将一块共享云硬盘格式化为ext3文件系统后挂载给云服务器A和云服务器B,云服务器A在某一时刻向云硬盘上的区域R和区域G写了文件系统的元数据,下一时刻云服务器B又向区域E和区域G写了自己的元数据,则云服务器A写入的数据将会被替换,随后读取区域G的元数据时即会出现错误。
- 数据缓存导致数据不一致
当一个共享云硬盘同时挂载给两台云服务器时,如果云服务器A上的应用读取区域R和区域G的数据后将数据记录在缓存中,此时云服务器A上的其他进程或线程访问该部分数据时,直接访问缓存中的数据即可。如果此时云服务器B上的应用修改区域R和区域G中的数据,则云服务器A上的应用无法感知该部分数据已被修改,依旧从缓存中读取数据,用户通过云服务器A无法看到已修改的新数据。
比如,将一块共享云硬盘格式化为ext3文件系统后挂载给云服务器A和云服务器B,两台云服务器均将文件系统的元数据进行了缓存,此后用户在云服务器A中创建了一个新的文件F,但云服务器B并无法感知该修改,依旧从缓存中读取数据,导致用户在云服务器B中无法看到文件F。
如果您将共享云硬盘挂载到多个云服务器,首先请根据不同的应用选择不同的磁盘模式,包括VBD和SCSI。SCSI类型的共享云硬盘支持SCSI锁,但是需要在云服务器系统中安装驱动并保证镜像在兼容性列表中。
直接将共享云硬盘挂载给多台云服务器无法实现文件共享功能,如需在多台云服务器之间共享文件,需要搭建共享文件系统或类似的集群管理系统。