|
最初由 iamlargelove 发布
[B]1. 这个问题 本身有毛病
ASM可以使用裸设备(就是你说的原始设备),也可以使用LINUX分区,你问ASMLIB有什么优势?
不管是用裸设备还是LINUX分区都是通过ASMLIB,何来优势和缺点之分别?
2.ASM实例的存在只是管理ASM磁盘组,没有其他任何功能。 它为什么需要redo? 掉电了,数据库本身有redo放在ASM磁盘组中。怕什么?
3。这个问题没有意义。
4.不知道, 不过我看见过的RAC系统都是用ASM+OCFS来做的。 [/B]
好长时间没人回, 没想到后来有人回了, 现在才发现, 罪过 
1. 可能是我描述的不够清楚.
我说的原始分区就是/dev/sda这样的文件(或者是LV), 这些是块设备; 原始设备就是/dev/raw/raw1这样的文件, 是字符设备. 通常要把disk或partition或LV绑定到RAW设备, 才能给数据库使用, 不过如果装ASMLib的话, 就无需这种绑定, 或者说ASMLib做了这个工作(本来是OS做的).
Linux平台下ASM可以直接用/dev/raw/raw1这样的文件做ASM Disk, 要在OS做一些配置才会有/dev/raw/raw1这样的文件, 如:
[PHP] CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY
FAILGROUP fgroup1
DISK '/dev/raw/raw1'
FAILGROUP fgroup2
DISK '/dev/raw/raw2'
;
[/PHP]
或者可以选择安装ASMLib, 把原始分区标记(绑定)为ASM Disk, 然后使用, 如:
[PHP] # /etc/init.d/oracleasm createdisk ASML1 /dev/sde
# /etc/init.d/oracleasm createdisk ASML2 /dev/sdf
CREATE DISKGROUP dgroup2 NORMAL REDUNDANCY
FAILGROUP fgroup1
DISK 'ORCL:ASML1'
FAILGROUP fgroup2
DISK 'ORCL:ASML2'
;
[/PHP]
这2种方式显然是不同的, 大概某一种方式会比另一种更好吧?
2. ASM实例会在盘组上维护一些元数据吧? 比如盘组里各个文件的地址或者文件的镜像情况等(到底有哪些我不知道, 呵呵). 普通文件系统有超级块, 索引节点, 日志等元数据, 有时候崩了, 也有可能会造成文件系统损坏(我以前碰到过, EXT2的文件系统, 停电后就出问题了, fsck也过不去). 我觉得ASM就是Oracle的一个LVM+特殊的文件系统, 总归会有元数据的, 要不然怎么确定你的数据文件在盘组里的什么位置? 数据库有redo没错, 如果掉电了, 盘组的元数据损坏, 你一个盘组里有好多个数据文件, 如何确定这些文件分别从哪个偏移开始? 哪个是哪个数据文件? Oracle采用什么方式保护这些结构? 是否有足够的保护?
3. 为何没有意义? 如果给你一个PC Server, 4块硬盘. 这些技术都提供条带化和镜像, 你如何选择? 为什么要这么选择?
如果RAC的环境, LVM先排除了(Linux平台), raid和ASM你如何选择? 或者2种技术一起用?
如果非RAC的环境, raid+LVM或者raid+asm或者LVM或者ASM你如何选择? WHY?
4. 后来看到其他的讨论, 有些朋友已经在生产环境使用ASM了, 据说还是挺稳定的. 不过OCFS现在还很不稳定吧? 不论是版本1还是2.(我是看其他人的讨论, 自己没有用过) |
|