这两天一直在摸索virtual scsi的高可用性。要用到生产环境的话,这是必须的。
一个vios能提供lv和pv给client作为pv使用,这在前面已经实现了。两个vios的情况呢?
这里分开两种方式来讨论:
1。lvm mirror
2。mpio
第一种情况:LVM MIRROR
如果是vios提供lv给client,那么,我们在另外一个vios上建立同样的lv提供给同一个client。
因为实际上是在两个vios上面的资源,所以在client端你会见到两个hdisk,然后,这两个hdisk通过lvm mirror的方式,做成镜像。当一个vios失效的时候,我们还有一个lv copy可以正常使用,所以并不影响生产。这跟普通的镜像原理是一样的。
恢复的时候,要重新sync一下。
但,它有缺点。首先,我们要在vios上建立lv,然后再到client端使用,所以,这里增加了vios上lvm的处理过程,虽然当裸设备那样处理,但始终会影响性能。
然后,如果这个lv超过了一个物理硬盘的大小,我觉得不如直接用物理硬盘。但如果lv太小,又有要扩大的可能,增加了风险。
最后,恢复的时候,要同步,这样也有影响性能的一段时间。
题外话,比较狠的,万一两个vios都完蛋了,你的数据要恢复的话,需要时间,并且步骤繁复,还要看运气。
笨猪提到,client的rootvg别做得太小,否则扩大的时候很痛苦。
我原来不理解,现在想通了。
在client端看来,所有虚拟出来的都是一个pv,既然是pv,就有固定的大小,固定的pp数。
假如我在vios端扩大了lv,client端会变成怎样呢?一个pv突然大了?pp突然多了?aix不会承认的。
一定要把盘彻底删了重新认,才能产生变化。
rootvg怎样彻底删除呢?这就是麻烦所在。
当然,直接加盘是最快捷的办法,但通常应用在其它vg,至于rootvg,你如果有3块盘的话,做个mksysb也会记住你有3块盘,然后恢复的时候也麻烦。所以最好做到一块盘上。
解决办法是有的,利用lvm mirror来实现。
1. mirror rootvg, two hdisks belongs to two vios servers
2. unmirror rootvg, reducevg hdisk0
3. extend lv on vios server1
4. extendvg rootvg, mirrorvg rootvg
5. unmirror rootvg, reducevg hdisk1
6. extendlv on vios server2
7. extendvg rootvg, mirrorvg rootvg
这样,就可以扩大rootvg了,步骤比较多,但在vio的环境下,这方法是有效的。
这种做virtual disk的方法也有好处,就是管理的时候很直观。
一个client你就建一个vg,里面放若干个lv,就对应着client的若干pv。
有多少个client,你就建多少个vg。这样很直观,清晰。
[
本帖最后由 炸鸡 于 2007-8-16 00:08 编辑 ]