qdisk(5) Linux man page
QDisk 1.2 - a disk-based quorum daemon for CMAN / Linux-Cluster
1. Overview
1.1 Problem
In some situations, it may be necessary or desirable to sustain a majority node failure of a cluster without introducing the need for asymmetric cluster configurations (e.g. client-server, or heavily-weighted voting nodes).
1.2. Design Requirements
* Ability to sustain 1..(n-1)/n simultaneous node failures, without the danger of a simple network partition causing a split brain. That is, we need to be able to ensure that the majority failure case is not merely the result of a network partition.
* Ability to use external reasons for deciding which partition is the the quorate partition in a partitioned cluster. For example, a user may have a service running on one node, and that node must always be the master in the event of a network partition. Or, a node might lose all network connectivity except the cluster communication path - in which case, a user may wish that node to be evicted from the cluster.
* Integration with CMAN. We must not require CMAN to run with us (or without us). Linux-Cluster does not require a quorum disk normally - introducing new requirements on the base of how Linux-Cluster operates is not allowed.
* Data integrity. In order to recover from a majority failure, fencing is required. The fencing subsystem is already provided by Linux-Cluster.
* Non-reliance on hardware or protocol specific methods (i.e. SCSI reservations). This ensures the quorum disk algorithm can be used on the widest range of hardware configurations possible.
* Little or no memory allocation after initialization. In critical paths during failover, we do not want to have to worry about being killed during a memory pressure situation because we request a page fault, and the Linux OOM killer responds...
1.3. Hardware Considerations and Requirements
1.3.1. Concurrent, Synchronous, Read/Write Access
This quorum daemon requires a shared block device with concurrent read/write
Ïà¹ØÎĵµ£º
Ê×ÏÈ£¬ÄÚ´æµÄ´óСÔÚlinuxÄÚºËÖеĻñÖª·½·¨
1.ͨ¹ýbootloader µÄ tag mem´«Èë¡£
Setup.c Öеĺ¯ÊýÈçÏ£º
static int __init parse_tag_mem32(const struct tag *tag)
{
if (meminfo.nr_banks >= NR_BANKS) {
printk(KERN_WARNING
"Ignoring memory bank 0x%08x size %dKB\n",
tag->u.mem.start, tag->u.mem ......
§1£®PCI×ÜÏßÌåϵ½á¹¹¸ÅÊö
PCI×ÜÏßÌåϵ½á¹¹ÊÇÒ»ÖÖ²ã´ÎʽµÄ£¨Hierarchical£©Ìåϵ½á¹¹¡£ÔÚÕâÖÖ²ã´ÎʽÌåϵ½á¹¹ÖУ¬PCIÇÅÉ豸ռ¾Ý×ÅÖØÒªµÄµØÎ»£¬Ëû½«¸¸×ÜÏߺÍ×Ó×ÜÏßÁ¬½ÓÔÚÒ»Æð£¬´Ó¶øÊ¹Õû¸öϵͳ¿´ÆðÀ´ÏñÒ»¿Åµ¹ÖõÄÊ÷Ðͽṹ¡£Ê÷µÄ¶¥¶ËÊÇϵͳµÄCPU£¬Ëûͨ¹ýÒ»¸ö½ÏÎªÌØ±ðµÄPCIÇÅÉ豸??Host£¯PCIÇÅÉ豸ºÍ¸ùPCI×ÜÏߣ¨root pci bus ......
1.×î¼òµ¥µÄ°ì·¨ÐÞ¸Ä/etc/rc.d/rc.localÎļþ(Õâ¸ö·½·¨ÊÇÔÚ²»ÐèÒªloginµÄÇé¿öϾÍÄÜ×Ô¶¯ÔËÐеÄ)
2.»¹ÓÐÐ޸IJ»Í¬Óû§µÄÓû§Ä¿Â¼ÏµÄ.bashrcÎļþ¿ÉÒÔʵÏÖµ±¸ÃÓû§µÇ½µÄʱºò×Ô¶¯ÔËÐÐһЩ½Å±¾(¼ÇµÃ/etcÏÂÒ²ÓÐÒ»¸ö.bashrcÎļþ,Ð޸ĺó¿ÉÒÔÈÃÈκÎÓû§µÇ½¶¼×Ô¶¯Ö´ÐÐһЩ½Å±¾µÄ)
3.»¹ÓÐÒ»¸öºÜºÃµÄ·½·¨,×öÒ»¸öÊôÓÚ×Ô¼ºµÄrcÆô¶¯½Å± ......
ÓÐʱsystem.mapÎļþ¿ÉÒÔ°ïÖúÎÒÃÇÀí½âÄں˱àÒ룬Ëü¼Ç¼ÁËËùÓдúÂëµÄÔËÐеØÖ·¡£
system.mapÄÚÈݸñʽΪ£ºÏßÐÔµØÖ· ÀàÐÍ ·ûºÅ
¾ßÌåÄÚÈÝÈçÏ£º
00100000 A phys_startup_32
c0100000 T startup_32
c0100000 A _text &nbs ......
Ò»¡¢Ê²Ã´ÊÇ modules£¿
¡¡¡¡modules µÄ×ÖÃæÒâ˼¾ÍÊÇÄ£¿é£¬ÔÚ´ËÖ¸µÄÊÇ kernel modules£»¼òµ¥À´Ëµ£¬ Ò»¸öÄ£¿éÌṩÁËÒ»¸ö¹¦ÄÜ£¬Èç isofs¡¢minix¡¢nfs¡¢lp µÈµÈ¡£´«Í³À´½²£¬Ä£¿é»¯ÓÐÁ½¸ö·½·¨½â¾ö£º Éè¼ÆÕß¿ÉÒ԰Ѹ÷ÏÄÜ·ÖÀëµ½µ¥¶ÀµÄ½Ð×öÏ̵߳Ĵ¦ÀíÖÐÈ¥£¬»òÕßÊǽ«ÄÚºËÒÔ°üº¬/ÅųýһЩ¹¦Äܵķ½Ê½ÖØÐ±àÒë¡£Èç¹û°Ñ¹¦ÄÜ·ÖÀëµ½Ïß³ ......