mac_xuyi 发表于 2011-12-22 11:28

Solaris SVM的majority consensus算法

Solaris SVM的majority consensus算法








SVM的state database中包含了卷的配置和状态等重要信息,一旦state database全部损坏,理论上将丢失卷上的所有数据。为了保证state database的安全,SVM使用了冗余机制。即维护多个state database replica.

在有多个state database replica的情况下,如果部分replica损坏,SVM难以判断究竟哪些是好的,哪些是坏的。为了解决这个问题,SVM采用了majority consensus算法。即:当多于半数的replica可用且一致,则认为这些replica是有效的。

The majority consensus algorithm provides the following:

The system continues to run if at least half of the state database replicas are available.
The system panics if fewer than half of the state database replicas are available.
The system cannot reboot into multiuser mode unless a majority (half + 1) of the total number of state database replicas is available. If insufficient state database replicas are available, you must boot into single-user mode and delete enough of the corrupted or missing replicas to achieve a quorum.
从上述机制可以看出,如果半数或以上replica不可用,将导致Solaris无法启动到多用户模式下。此时解决办法是启动到单用户下,然后删除损坏的replica.

另一种解决方法是事先在/etc/system中设置set md:mirrored_root_flag = 1,此参数将让SVM在启动时忽略Quorum规则。但文档明确说明,Solaris不建议修改此参数,因为忽略Quorum规则的话,无法保证replica是有效的,因而无法确保卷的配置信息和状态信息准确,这意味着卷中的数据有损坏或丢失的风险。

财版 发表于 2011-12-22 16:53

学习了

东方蜘蛛 发表于 2011-12-22 17:44

收藏,谢谢分享:victory:

雪剑20 发表于 2011-12-22 21:57

学习。
你图像的“姐”哪去了?:D

answer_sun 发表于 2012-01-18 15:00

日,这个是基础嘛。
查看状态数据库副本状态:metadb -i,如果有标志大写的,表示异常,具体的可以看大小字母标志的含义;如果有大写的,则删除数据库状态副本,metadb -d -f
;对于LZ所的如果有一半的状态数据库副本不一致,不能启动到多用户模式,书上是这样说的,但是我遇到的,实际也启动起来了。添加数据库状态副本,metadb -a -f.
楼下继续补充。
页: [1]
查看完整版本: Solaris SVM的majority consensus算法