不管是matadata也好,raw lun也好,我的理解是,在没有软件来协调两个os操作时,肯定会出现硬件的冲突或者其他的问题,试想,当一个os对raw lun进行操作时,他是怎么来进行操作的了,他其实认为此时的raw lun只有自己一个在访问操作,假使这时os写了一个1,在这种情况下,因为没有文件系统的缓存,是不是1就直接写入到raw lun上了,假设这时第二个os也来写数据1,他又会写到什么地方了,因为2个os之间没有协调的软件,我认为,第二个os也是认为raw lun是他所有,这样2个os都会操作raw lun,那raw lun到底要听从谁的的,是都写还是不写,如果同时的io又怎么办了。所以,我自己认为,如果没有软件来协调的话,raw lun是谁都可写的,谁都可读的,要做到共享,也是非常危险的,除非有个控制机制。
这个问题就像早期的单CPU单任务一样,把CPU当成RAW LUN, 把任务当作OS。如果没有设计多任务处理调度的机制,这是mission impossible。就像“人不能在同一时间踏入同一河流”一样,单一资源基本上在某一时间点都具有独占性的。因此一定要设计相关的管理,同步互斥机制。
IXDBA.NET社区论坛
多个OS共享raw lun,在上面加上一定的模块并非不可能。比如在一个raw Lun上面装一个NFS或者CIFS,可以实现甚至异构环境的数据共享;在HA设计中,比如gfs,gpfs中加入lock机制来实现对SAN环境中LUN的共享用;以及SAN FS中的Metadata Server。无不是进行这样的管理,来实现对LUN的共享访问或者说分时访问。
那些直接使用裸设备的应用,也是有文件系统的,只不过放弃了操作系统提供的文件系统而已。
OSD是个有趣的话题,它把文件系统跟设备间的界限重新定义了。
文件系统分两种,本地文件系统和网络文件系统。而文件系统的功能包括两个层次:
一是命名空间、目录结构、访问权限管理等。这些是上层一点儿的功能,两种文件系统都具备。
二是块组织,设备管理。这些功能比较底层,只有本地文件系统管,网络文件系统是不管的。
而诸如OSD、DAFS以及google实验室搞的NASD,这些技术都是试图把块组织的功能包含在设备之中,让文件系统更向上层靠拢。用个不太恰当的比喻,这些技术的方向大致是想把一个NAS做成今天硬盘一样的设备。如果从这个意义上讲,那么的确是可以共享设备的。