Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11294170
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-07-15 15:58:25

讨论多os共享lun,以及文件系统数据库方面的问题
os不会对raw lun写什么信息吧,没有哪个os会自动对他认到的raw lun格式化
既然这样,为什么不能多个os共享一个raw lun?
在oracle rac环境下,oracle会对raw lun 写他自己的fs,比如cluster fs,os不认这fs,仍然会认为是个raw lun
读写的仲裁由oracel来做,不需要os来做,os可以共享raw lun

实际不可以,那么就是我的理解有问题
请大侠们指出小弟的问题,谢谢!


next
其实我的理解是这样的,不管是有fs也好,raw也好,你最终共享的的时候势必要跟共享的设备进行通讯,这就涉及到一个共享独占性的问题,假如有两个os同时进行访问共享设备,那此时,共享设备到底是响应谁的请求了,在没有软件对这两个os进行协商的时候,势必有一个os会io超时出错,这是一个硬件的问题,应该不是说对什么fs操作才出现的问题而已。

个人意见,欢迎拍砖

next
裸设备本身不管任何meta data和权限的问题,啥时候都可以共享,不能共享的是FS。
普通文件系统对meta data和权限的管理都在本机上进行,多个机器之间不能互相通知,你写的数据我看不见,我写的你也看不见,当然就不能共享啦。
解决的办法是:让机器每次I/O之前都去盘上刷新一遍meta data,或者用网络互相通知。具有这些机制的FS就叫Cluster FS。
Oracle自己的那个文件系统本身有点cluster FS的意思,所以可以支持并行。Oracle最新的一个文件系统号称要做generic cluster fs,不过现在大家都觉得不太稳定,不怎么看好。

next
楼上的两位兄弟说的是大相径庭,2楼说是硬件有冲突,3楼说是系统本身造成的。

pekics兄的一番指导就是暗指我说的是正确的,也就是说:多个os可以共享raw lun,是么?

而anifer兄说的是因为多个系统同时读写会造成io冲突,但是没有格式化fs的raw,好像不会主动对磁盘进行什么读写操作把,除非用什么pc3000之类的,或者直接格式化时候会读写磁盘,os对raw应该不会读写什么东西。这样理解,就不会造成底层io冲突。话又说回来,就算这个lun已经有了文件系统,那么多个系统同时对他进行io,似乎也不是不可能,磁盘会缓冲这些io,即便同一时刻来了多个io,那么也不会造成冲突,磁盘控制器一般没有准入机制,没有access control list(盘阵控制器会有lun mask之类的准入机制),如果控制器把lun显现给了主机,那么他就不会管是那个主机来的io,而且也不会管io的上下文,这些都由文件系统来管。

所以我比较统一pekics兄的第一句话中的一部分:“啥时候都可以共享,不能共享的是FS”


但是对pekics兄说的一些知识,不太理解:“普通文件系统对meta data和权限的管理都在本机上进行,多个机器之间不能互相通知”,meta data好像都是放在磁盘上的吧?除非象svc那样会在客户机上有cache。改变了文件,一定会同时改变meta data吧?“解决的办法是:让机器每次I/O之前都去盘上刷新一遍meta data”,这个好像不用“解决”吧,本来也是这么做的啊,不理解,请拍玉

next
meta data是放在硬盘上,可是meta data的处理都在主机里。
比如windows吧,启动的时候去磁盘上读出分区表,此后分区表的修改就基本在内存里倒腾了。直到关机的时候,主机才会统一把分区表的修改写到磁盘上。

next
P兄果然强,pfpf,这个贴收藏一下。
如果是在内存中捣鼓,那么说只要这台不关机,那另一台机器永远也不会得到刷新的meta data是么?也就是说连文件大小都和实际不符合了是么?如果在大小和原来都不符合的情况下,让另一台机器读这个文件,那不乱了套了。

或者是这么一种机制:meta data会还存一段时间,然后统一destage到磁盘,是么?

咨询了一个搞代码的人说:“文件句柄关闭时必然写入到硬盘中,前提是文件打开后做了更改 如果不更改当然不存在存盘问题,也就不写硬盘了”


如果是都在内存中捣鼓了,那么万一断电,os怎么来恢复mata data?是不是扫描所有文件,重新生成mata data?

jfs是每次都会写日志,那么他这个日志是往磁盘上写,会不会造成io延迟?

请P兄继续赐教,谢谢了!

next
2 raw lun 不能共享,如果主机端没有软件来控制读写的锁的话。
A主机读出一块数据,要修改,但是还没有写回去;
B主机也读出这一块数据,要修改,但是还没有写回去;
这时A主机写回去;
然后B主机也写回去;
这样数据就有问题了。A写的数据被B修改了,但是A还是认为他写的数据还在。

如果有软件,比如Veritas Cluster Volume Manger来控制的话,其中一台机器就是Master,由这台机器负责读写锁的控制。


2 普通文件系统更是不能共享,除非用分布式文件系统。
A机器在这个lun上建立文件系统,内存里有了这个文件系统的映像
B机器认识到这个文件系统,然后写了一个文件进去。
A机器内存的影响和这个LUN上的文件系统不一致,可能导致A机器Panic

next
1. 几个主机当然可以同时访问一组LUN
2. 除非是在某些特定软件的管理下,比如Oracle RAC,否则数据一致性会有问题。如果是FS,就是corruption
3. 为了避免几个主机同时访问LUN,往往Cluster软件会使用SCSI Reservation只允许一台主机访问,阻止其他主机
阅读(1173) | 评论(0) | 转发(0) |
0

上一篇:虚拟磁带库

下一篇:关于双控制器的问题

给主人留下些什么吧!~~