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
Ïà¹ØÎĵµ£º
from: http://yangsq.javaeye.com/blog/162649
ƽʱµÄÍŶӿª·¢£¬ÉÙ²»ÁËÒªÓÃÒ»¸öÐ×÷¹¤¾ß¡£¶ÔÓÚÒÔǰ£¬ÎÞÒÉcvsÊǸöÎÞ´íµÄÑ¡Ôñ£¨ÏñIBMµÄÈ«Çò´úÂëά»¤£©¡£µ«ÊÇ£¬¿Æ¼¼ÔÚ·¢Õ¹Âð£¬ÏÖÔÚÓÐÁ˸üºÃµÄsvnÁË£¬ËùÒÔÖ±½Ó¾ÍÊÇsvn°É¡£ÓйØsvnµÄ¾ßÌåÐÅÏ¢¿ÉÒÔÉÏËüµÄ¹ÙÍø»òwww.subversion.org.cn
ÍøÉϹØÓÚsvnµÄÒ²²»ÉÙ£¬²»¹ý¸Ð¾õ´ó¶¼³ö× ......
1.¶¨Ò庯ÊýÖ¸ÕëÀàÐÍ
Òª¸ù¾Ý¶¯Ì¬¿âÖÐҩʹÓõĺ¯Êý£¬ÔÚÍâÃæ¶¨ÒåͬÑùÀàÐ͵ĺ¯ÊýÖ¸ÕëÀàÐÍ£¬¹©ÒÔºóʹÓÃ
typedef unsigned long(*POpenDev)(IN unsigned long int);
2. ¶¨Ò庯ÊýÖ¸Õë
POpenDev OpenDev;
3.¶¯Ì¬¼ÓÔØ¶¯Ì¬¿â
HANDLE sohandle = NULL;
sohandle = dlopen("libNiKeyDll.so", RTLD_NOW);
......
......
LinuxÖеĽø³ÌͨÐÅ
1.¹ÜµÀ
º¯ÊýÔÐÍ£ºint pipe(int filedes[2]);
º¯Êý·µ»ØÖµ£º ÕýÈ··µ»Ø0£»´íÎó·µ»Ø-1
ÆäÖеÄÎļþÃèÊö·ûfiledes[0]ÊÇÓÃÀ´¶ÁÈ¡Êý¾ÝµÄ£¬filedes[1]ÊÇÓÃÀ´Ð´Êý¾ÝµÄ¡£
Àý×Ó1£º
#include<stdio.h>
#include<stdlib.h>
#include<u ......