MFen: Resync with the English version of the handbook

Obtained from: FreeBSD Mongolian Documentation project
This commit is contained in:
Ganbold Tsagaankhuu 2011-03-10 15:09:23 +00:00
parent b630eadde6
commit 3af0e91144
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=37051

View file

@ -1,7 +1,7 @@
<!--
The FreeBSD Mongolian Documentation Project
Original revision 1.302
Original revision 1.305
$FreeBSD$
-->
@ -3893,6 +3893,656 @@ Device 1K-blocks Used Avail Capacity
</screen>
</sect2>
</sect1>
<sect1 id="disks-hast">
<sect1info>
<authorgroup>
<author>
<firstname>Даниел</firstname>
<surname>Гэрзо</surname>
<contrib>Хувь нэмэр болгон оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Фредди</firstname>
<surname>Кэш</surname>
<contrib>Зарим нэг зүйлс нэмэрлэсэн </contrib>
</author>
<author>
<firstname>Павел Жакуб</firstname>
<surname>Давидек</surname>
</author>
<author>
<firstname>Майкл В.</firstname>
<surname>Лукас</surname>
</author>
<author>
<firstname>Виктор</firstname>
<surname>Петерсон</surname>
</author>
</authorgroup>
<!-- Date of writing: 26 February 2011 -->
</sect1info>
<title>Highly Available Storage (HAST)</title>
<indexterm>
<primary>HAST</primary>
<secondary>high availability</secondary>
</indexterm>
<sect2>
<title>Ерөнхий зүйл</title>
<para>Байнгын бэлэн ажиллагаатай байх (High-availability) нь
бизнесийн чухал програм хангамжуудын хувьд хамгийн гол
шаардлага бөгөөд тийм хадгалалтын төхөөрөмж нь уг орчны
түлхүүр хэсэг юм. Highly Available STorage буюу
<acronym>HAST<remark role="acronym">Highly Available
STorage</remark></acronym>-г &a.pjd; хөгжүүлсэн бөгөөд
энэ нь өгөгдлийг TCP/IP сүлжээнд холбогдсон хэд хэдэн
тусдаа байгаа машинууд дээр тунгалгаар хадгалах боломжийг
бүрдүүлдэг. <acronym>HAST</acronym>-г сүлжээний RAID1 (толь) гэж
ойлгож болох бөгөөд GNU/&linux; тавцангийн хувьд байдаг
DRBD&reg; хадгалалтын системтэй төстэй юм. <acronym>CARP</acronym>
зэрэг &os;-н бусад байнгын бэлэн ажиллагааг хангагч боломжуудын хамтаар
<acronym>HAST</acronym> нь тоног төхөөрөмжийн эвдрэлээс ангид
байнгын бэлэн ажиллагаатай хадгалалтын кластер бүтээх боломжийг
бүрдүүлдэг.</para>
<para>Энэ хэсгийг уншаад та дараах зүйлсийг мэдэх болно:</para>
<itemizedlist>
<listitem>
<para><acronym>HAST</acronym> гэж юу болох, хэрхэн ажилладаг болон
ямар боломжуудыг хангадаг талаар.</para>
</listitem>
<listitem>
<para>&os; дээр <acronym>HAST</acronym>-г хэрхэн тохируулж
ашиглах талаар.</para>
</listitem>
<listitem>
<para><acronym>CARP</acronym> болон &man.devd.8;-г
хэрхэн тохируулж уян хатан хадгалалтын систем бүтээх талаар.</para>
</listitem>
</itemizedlist>
<para>Энэ хэсгийг уншихаасаа өмнө та дараах зүйлсийг мэдсэн байх шаардлагатай:</para>
<itemizedlist>
<listitem>
<para>&unix; болон &os;-ийн үндсийг ойлгосон байх
(<xref linkend="basics">).</para>
</listitem>
<listitem>
<para>Сүлжээний интерфэйсүүд болон &os;-н бусад гол дэд системүүдийг хэрхэн
тохируулах талаар мэддэг байх (<xref
linkend="config-tuning">).</para>
</listitem>
<listitem>
<para>&os;-н сүлжээний талаар сайн мэддэг байх
(<xref linkend="network-communication">).</para>
</listitem>
<listitem>
<para>&os;&nbsp;8.1-RELEASE буюу түүнээс хойшхи хувилбарыг ашиглах.</para>
</listitem>
</itemizedlist>
<para><acronym>HAST</acronym> төслийг &os; сан <ulink
url="http://www.omc.net/">OMCnet Internet Service GmbH</ulink>
болон <ulink url="http://www.transip.nl/">TransIP BV</ulink>-н дэмжлэгтэйгээр
санхүүжүүлжээ.</para>
</sect2>
<sect2>
<title>HAST-н боломжууд</title>
<para><acronym>HAST</acronym> системийн гол
боломжуудад:</para>
<itemizedlist>
<listitem>
<para>Локал хатуу дискний хөтчүүд дээрх I/O алдаануудыг
халхлахад ашиглаж болох боломж.</para>
</listitem>
<listitem>
<para>&os;-н дэмждэг дурын файлын системийг ашиглах боломжийг
бүрдүүлдэг файлын системээс үл хамаарсан байдал.</para>
</listitem>
<listitem>
<para>Тухайн цэг унасан байх үед зөвхөн өөрчлөгдсөн блокуудыг синхрончлох замаар
үр ашигтай, хурдан дахин синхрончлох боломж.</para>
</listitem>
<!--
<listitem>
<para>Has several synchronization modes to allow for fast
failover.</para>
</listitem>
-->
<listitem>
<para>Нэмэлт нөөц бололцоог нэмэхийн тулд
аль хэдийн бий болгосон орчинд ашиглах боломж.</para>
</listitem>
<listitem>
<para><acronym>CARP</acronym>,
<application>Heartbeat</application> эсвэл бусад
хэрэгслүүдийн хамтаар уян хатан, бөх бат хадгалалтын
системийг бүтээхэд цуг ашиглаж боломж.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>HAST-н ажиллагаа</title>
<para><acronym>HAST</acronym> нь дурын хадгалалтын төхөөрөмжийн
хувьд блок түвшний синхрон олшруулалтыг хэд хэдэн машин уруу
хийдэг болохоор хамгийн багадаа хоёр цэг (физик машинууд) шаарддаг
&mdash; Эдгээр нь <literal>анхдагч</literal> (бас
<literal>мастер</literal> гэгддэг) цэг болон
<literal>хоёрдогч</literal> (<literal>боол</literal>) цэг юм.
Энэ хоёр машиныг хамтад нь кластер гэж дуудах болно.</para>
<note>
<para>HAST нь одоогоор хоёр кластерын цэгээр
хязгаарлагдсан байгаа.</para>
</note>
<para><acronym>HAST</acronym> нь анхдагч-хоёрдогч тохиргоогоор
ажилладаг болохоор тухайн үед зөвхөн нэг кластерын цэгийг
идэвхтэй байхыг зөвшөөрдөг. <literal>анхдагч</literal> цэг буюу
<literal>актив</literal> нь <acronym>HAST</acronym>-р удирдуулсан
төхөөрөмжүүдэд хандах I/O хүсэлтүүдтэй ажилладаг цэг юм.
<literal>хоёрдогч</literal> цэг нь дараа нь <literal>primary</literal>
цэгээсээ автоматаар синхрончлогддог.</para>
<para><acronym>HAST</acronym> системийн
физик хэсгүүд нь:</para>
<itemizedlist>
<listitem>
<para>локал диск (анхдагч цэг дээрх)</para>
</listitem>
<listitem>
<para>алсын машин дээрх диск (хоёрдогч цэг)</para>
</listitem>
</itemizedlist>
<para><acronym>HAST</acronym> нь блок түвшинд синхроноор
ажилладаг бөгөөд энэ нь файлын системүүд болон програм хангамжуудын
хувьд тунгалаг болгодог. <acronym>HAST</acronym> нь
бусад хэрэгслүүд эсвэл програм хангамжуудад ашиглах боломжтойгоор
<filename class="directory">/dev/hast/</filename> санд ердийн
GEOM үйлчилгээ үзүүлэгчдээр хангадаг бөгөөд ингэснээр
<acronym>HAST</acronym>-р хангагдсан төхөөрөмжүүд болон
түүхий дискнүүд, хуваалтууд гэх зэргүүдийн хооронд ялгаа байхгүй
болдог байна.</para>
<para>Бичих, устгах, эсвэл flush үйлдэл бүрийг локал диск болон
алсын диск рүү TCP/IP ашиглан илгээдэг. Унших үйлдэлд
локал диск дээрх мэдээлэл шинэ биш эсвэл I/O алдаа гараагүй л бол
локал дискнээс хариу өгдөг. Хэрэв тийм тохиолдол байвал
унших үйлдлийг хоёрдогч цэг рүү илгээдэг.</para>
<sect3>
<title>Синхрончлол ба Олшруулалтын горимууд</title>
<para><acronym>HAST</acronym> нь унасан байдлаас хурдан сэргээх
боломжийг бий болгохыг оролддог. Энэ зорилгоор цэг унасны дараа
синхрончлох хугацааг багасгах нь хамгийн чухал юм. Синхрончлолыг
хурдан хангахын тулд <acronym>HAST</acronym> нь диск дээрх
бохир өгөгдлүүдийн битмапыг зохицуулж байдаг бөгөөд ердийн
синхрончлолын үед зөвхөн тэдгээрийг синхрончилдог (эхний синхрончлолыг
тооцолгүйгээр).</para>
<para>Синхрончлолтой ажиллах олон аргууд байдаг.
<acronym>HAST</acronym> нь янз бүрийн синхрончлолын аргуудтай (доор дурдсан)
ажиллахын тулд хэд хэдэн олшруулалтын горимыг хийдэг:</para>
<itemizedlist>
<listitem>
<para><emphasis>memsync</emphasis>: локал бичих үйлдэл
дууссан ба алсын цэг өгөгдөл ирснийг баталгаажуулсан бөгөөд
өгөгдлийг яг хадгалахаас өмнөх үед бичих үйлдэл дууссан гэж үздэг.
Алсын цэг дээрх өгөгдөл баталгаажуулалт илгээгдсэний дараа
хадгалагддаг. Энэ горим нь саатлыг багасгах зориулалттай
бөгөөд маш сайн найдвартай байдлыг хангадаг.
<emphasis>memsync</emphasis> олшруулалтын горим нь одоогоор
хийгдээгүй байгаа.</para>
</listitem>
<listitem>
<para><emphasis>fullsync</emphasis>: локал болон алсын бичих
үйлдэл хийгдэж дууссаны дараа бичих үйлдэл дууссан гэж үздэг. Энэ нь
хамгийн найдвартай бөгөөд удаан горим юм. Энэ горим нь анхдагч
байдаг.</para>
</listitem>
<listitem>
<para><emphasis>async</emphasis>: локал бичих үйлдэл дууссан үед
бичих үйлдлийг дууссан гэж үздэг. Энэ нь хамгийн хурдан бөгөөд
аюултай олшруулалтын горим юм. Энэ горимыг бусад горимын хувьд
саатал хэтэрхий өндөр байгаа алсын цэг рүү олшруулахдаа
ашиглах ёстой. <emphasis>async</emphasis> олшруулалтын горим
одоогоор хийгдээгүй байгаа.</para>
</listitem>
</itemizedlist>
<warning>
<para>Зөвхөн <emphasis>fullsync</emphasis> олшруулалтын горим
одоогоор дэмжигдсэн.</para>
</warning>
</sect3>
</sect2>
<sect2>
<title>HAST-н тохиргоо</title>
<para><acronym>HAST</acronym> нь ажиллахын тулд
<literal>GEOM_GATE</literal> дэмжлэгийг шаарддаг.
<literal>GENERIC</literal> цөм нь анхдагчаар
<literal>GENERIC</literal>-г <emphasis>агуулдаггүй</emphasis>
боловч &os;-н анхдагч суулгацад дуудагдах боломжтой
<filename>geom_gate.ko</filename> модуль байдаг.
Мөн дараах мөрийг цөмийн тохиргооны файлд нэмэн
<acronym>GEOM_GATE</acronym> дэмжлэгийг цөмд оруулан бүтээж
болдог:</para>
<programlisting>options GEOM_GATE</programlisting>
<para><acronym>HAST</acronym> тогтолцоо нь үйлдлийн
системийн өнцгөөс харахад хэд хэдэн хэсгээс тогтдог:</para>
<itemizedlist>
<listitem>
<para>өгөгдлийн синхрончлолд зориулсан &man.hastd.8;
демон,</para>
</listitem>
<listitem>
<para>хэрэглэгчийн талбарын удирдлагын хэрэгсэл &man.hastctl.8;,</para>
</listitem>
<listitem>
<para>&man.hast.conf.5; тохиргооны файл.</para>
</listitem>
</itemizedlist>
<para>Дараах жишээ хоёр цэгийг
<literal>мастер</literal>-<literal>боол</literal> /
<literal>анхдагч</literal>-<literal>хоёрдогч</literal>
үйлдлийн хувьд өгөгдлийг уг хоёр цэгийн хооронд олшруулахын
тулд <acronym>HAST</acronym> ашиглан тохируулах талаар
тайлбарлана. Цэгүүдийг <replaceable>172.16.0.1</replaceable> IP
хаягтай <literal><replaceable>hasta</replaceable></literal> болон
<replaceable>172.16.0.2</replaceable> IP хаягтай
<literal><replaceable>hastb</replaceable></literal> гэж нэрлэе.
Эдгээр цэгүүд нь <acronym>HAST</acronym> үйлдлийн хувьд ижил хэмжээтэй
өөр өөрийн <devicename>/dev/<replaceable>ad6</replaceable></devicename>
хатуу дисктэй байна. <acronym>HAST</acronym> нөөцийг (заримдаа
эх үүсвэр гэгддэг, өөрөөр хэлбэл <filename
class="directory">/dev/hast/</filename> дахь GEOM үйлчилгээ
үзүүлэгч) <filename><replaceable>test</replaceable></filename>
гэж нэрлэнэ.</para>
<para><acronym>HAST</acronym>-н тохиргоог
<filename>/etc/hast.conf</filename> файлд хийнэ. Энэ файл нь
хоёр цэг дээр ижил байх ёстой. Боломжит хамгийн хялбар
тохиргоо дараах байдалтай байна:</para>
<programlisting>resource test {
on hasta {
local /dev/ad6
remote 172.16.0.2
}
on hastb {
local /dev/ad6
remote 172.16.0.1
}
}</programlisting>
<para>Илүү дэлгэрэнгүй тохиргооны талаар
&man.hast.conf.5; гарын авлагаас үзнэ үү.</para>
<tip>
<para>Мөн <literal>remote</literal> гэсэн хэсэгт хостын
нэрийг ашиглаж бас болно. Тэр тохиолдолд тэдгээр хостуудыг
таних боломжтой байх ёстойг анхаараарай, өөрөөр хэлбэл
тэдгээр нь <filename>/etc/hosts</filename> файл юм уу эсвэл
локал <acronym>DNS</acronym> дээр тодорхойлогдсон байх
ёстой.</para>
</tip>
<para>Одоо хоёр цэг дээр тохиргоо байгаа болохоор
<acronym>HAST</acronym> нөөцийг үүсгэх боломжтой. Хоёр
цэг дээр дараах тушаалыг ажиллуулж эхний мета өгөгдлийг
локал диск дээр байрлуулж &man.hastd.8; демонг ажиллуулна:</para>
<screen>&prompt.root; <userinput>hastctl create test</userinput>
&prompt.root; <userinput>/etc/rc.d/hastd onestart</userinput></screen>
<note>
<para>GEOM үйлчилгээ үзүүлэгчдийг одоо байгаа файлын
систем дээр ашиглаж <emphasis>болохгүй</emphasis>
(жишээ нь <acronym>HAST</acronym>-р удирдуулсан нөөц рүү
одоо байгаа хадгалалтын төхөөрөмжийг хувиргах). Учир нь
энэ процедур нь ямар нэг мета өгөгдлийг үйлчилгээ
үзүүлэгч дээр хадгалах хэрэгтэй байдаг бөгөөд шаардлагатай
зай хангалттай байхгүй байх болно.</para>
</note>
<para>HAST нь цэгийн үүргийг сонгох үүрэггүй
(<literal>анхдагч</literal> эсвэл <literal>хоёрдогч</literal>).
Цэгийн үүргийг администратор тохируулах юм уу эсвэл
&man.hastctl.8; хэрэгсэл ашиглан <application>Heartbeat</application>
зэрэг бусад програмаар тохируулж болно. Анхдагч цэг рүү
(<literal><replaceable>hasta</replaceable></literal>) шилжээд
дараах тушаалыг өгнө:</para>
<screen>&prompt.root; <userinput>hastctl role primary test</userinput></screen>
<para>Үүнтэй адилаар хоёрдогч цэг дээр
(<literal><replaceable>hastb</replaceable></literal>)
дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>hastctl role secondary test</userinput></screen>
<caution>
<para>Хоёр цэг хоорондоо холбогдож чадахгүй бөгөөд
хоёулаа анхдагч гэж тохируулагдсан байж болно. Энэ
нөхцлийг <literal>split-brain</literal> гэж нэрлэдэг.
Энэ тохиолдолд алдааг олж засварлахын тулд <xref
linkend="disks-hast-sb"> хэсэгт зааснаар ажиллана.</para>
</caution>
<para>Үр дүнг хоёр цэг дээр &man.hastctl.8; хэрэгсэл
ашиглан шалгаж болно:</para>
<screen>&prompt.root; <userinput>hastctl status test</userinput></screen>
<para>Гаралтаас хамгийн чухал текст нь <literal>status</literal>
мөр бөгөөд хоёр цэг дээр <literal>complete</literal> гэж
байх ёстой. Хэрэв энэ нь <literal>degraded</literal>
гэж байх юм бол ямар нэг юм болохоо больсныг илтгэнэ.
Энэ үед цэгүүдийн хооронд синхрончлол явагдаад эхэлчихсэн
байна. <command>hastctl status</command> тушаал
<literal>dirty</literal> гэдэг дээр 0 байт харуулж байвал
синхрончлол дууссан гэсэн үг юм.</para>
<para>Эцсийн алхам бол <devicename>/dev/hast/<replaceable>test</replaceable></devicename>
GEOM үйлчилгээ үзүүлэгч дээр файлын систем үүсгэж холбох явдал юм.
Үүнийг <literal>анхдагч</literal> цэг (учир нь
<filename>/dev/hast/<replaceable>test</replaceable></filename>
зөвхөн <literal>primary</literal> цэг дээр харагдана) дээр
хийх ёстой бөгөөд хатуу дискийн хэмжээнээс хамаарч хэдэн
минут үргэлжилж болох юм:</para>
<screen>&prompt.root; <userinput>newfs -U /dev/hast/test</userinput>
&prompt.root; <userinput>mkdir /hast/test</userinput>
&prompt.root; <userinput>mount /dev/hast/test /hast/test</userinput></screen>
<para><acronym>HAST</acronym> тогтолцоог зөв тохируулсны дараа
хамгийн сүүлийн алхам бол <acronym>HAST</acronym> систем
ачаалах үед автоматаар эхэлсэн байхыг шалгах явдал юм.
Дараах мөрийг <filename>/etc/rc.conf</filename> файлд
нэмж өгөх шаардлагатай:</para>
<programlisting>hastd_enable="YES"</programlisting>
<sect3>
<title>Нэгээс нөгөөд шилжих тохиргоо</title>
<para>Энэ жишээний зорилго нь өгөгдсөн дурын цэг ажиллахаа
больсон тохиолдолд ажиллаж байх уян хатан хадгалалтын
систем бүтээх явдал юм. Энд хамгийн түлхүүр ажил бол
кластерын <literal>анхдагч</literal> цэг ажиллахаа болих
тохиолдлыг байхгүй болгох юм. Хэрэв боллоо гэхэд
<literal>хоёрдогч</literal> цэг сааталгүйгээр авч
ажиллан файлын системийг шалган холбож өгөгдлийн нэг
ч битийг алдалгүйгээр үргэлжлүүлэн ажиллах ёстой.</para>
<para>Энэ зорилтод хүрэхийн тулд &os;-ийн өөр нэг боломж
болох IP давхарга дээр автоматаар шилжих боломжийг
бүрдүүлдэг <acronym>CARP</acronym>-г ашиглах шаардлагатай
байдаг. <acronym>CARP</acronym> нь Common Address Redundancy Protocol
гэсэн үг бөгөөд ижил сүлжээнд олон хостууд IP хаяг
хуваалцаж хэрэглэх боломжийг бүрдүүлдэг. <acronym>CARP</acronym>-г
кластерын цэг бүр дээр <xref linkend="carp"> хэсэгт зааснаар
тохируулна. Үүнийг хийснийхээ дараа цэг бүр
хуваалцсан IP <replaceable>172.16.0.254</replaceable> гэсэн
хаягтай <devicename>carp0</devicename> гэсэн интерфэйстэй байх
болно. Мэдээж кластерын анхдагч <acronym>HAST</acronym> цэг
мастер <acronym>CARP</acronym> цэг байх ёстой.</para>
<para>Өмнөх хэсэгт үүсгэсэн <acronym>HAST</acronym> нөөц
сүлжээн дэх бусад хостууд руу экспорт хийгдэхэд
бэлэн болсон байна. Үүнийг <acronym>NFS</acronym>,
<application>Samba</application> гэх мэтүүдийн тусламжтайгаар
хуваалцсан IP хаяг <replaceable>172.16.0.254</replaceable>
ашиглан экспорт хийх замаар хийнэ. Шийдэгдээгүй цор
ганц асуудал бол анхдагч цэг унахад автоматаар шилжих
асуудал юм.</para>
<para>Хэрэв <acronym>CARP</acronym> интерфэйсүүд унаж босоод
байвал &os; үйлдлийн систем &man.devd.8; үйл явдал гаргах
бөгөөд энэ нь <acronym>CARP</acronym> интерфэйсүүд дээр
төлвийг харах боломжийг бүрдүүлдэг. <acronym>CARP</acronym>
интерфэйс дээрх төлвийн өөрчлөлт нь аль нэг цэг ажиллахаа
байсан эсвэл ажиллаж эхэлснийг харуулна. Энэ тохиолдолд
шилжилтийг автоматаар зохицуулах тусгай скриптийг
ажиллуулах боломжтой юм.</para>
<para><acronym>CARP</acronym> интерфэйсүүд дээрх төлвийн өөрчлөлтүүдийг
барьж чадахын тулд дараах тохиргоог цэг бүр дээр
<filename>/etc/devd.conf</filename> файлд хийж өгөх ёстой:</para>
<programlisting>notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_UP";
action "/usr/local/sbin/carp-hast-switch master";
};
notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_DOWN";
action "/usr/local/sbin/carp-hast-switch slave";
};</programlisting>
<para>Шинэ тохиргоог идэвхтэй болгохын тулд
дараах тушаалыг цэг бүр дээр ажиллуулна:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/devd restart</userinput></screen>
<para><devicename>carp0</devicename> интерфэйс унаж босож байгаа
тохиолдолд (өөрөөр хэлбэр интерфэйсийн төлөв өөрчлөлгдсөн тохиолдолд)
систем мэдээлэл өгөх бөгөөд энэ нь &man.devd.8; дэд системд
скрипт ажиллуулах боломжийг бүрдүүлэх бөгөөд энэ тохиолдолд
<filename>/usr/local/sbin/carp-hast-switch</filename> байна. Энэ скрипт нь
автоматаар шилжих шилжилтийг зохицуулах юм. Дээрх &man.devd.8;
тохиргооны талаар дэлгэрэнгүйг &man.devd.conf.5; гарын авлагаас
үзнэ үү.</para>
<para>Ийм скриптийн жишээ дараах байдлаар байж болох юм:</para>
<programlisting>#!/bin/sh
# Original script by Freddie Cash &lt;fjwcash@gmail.com&gt;
# Modified by Michael W. Lucas &lt;mwlucas@BlackHelicopters.org&gt;
# and Viktor Petersson &lt;vpetersson@wireload.net&gt;
# The names of the HAST resources, as listed in /etc/hast.conf
resources="test"
# delay in mounting HAST resource after becoming master
# make your best guess
delay=3
# logging
log="local0.debug"
name="carp-hast"
# end of user configurable stuff
case "$1" in
master)
logger -p $log -t $name "Switching to primary provider for ${resources}."
sleep ${delay}
# Wait for any "hastd secondary" processes to stop
for disk in ${resources}; do
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
sleep 1
done
# Switch role for each disk
hastctl role primary ${disk}
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
exit 1
fi
done
# Wait for the /dev/hast/* devices to appear
for disk in ${resources}; do
for I in $( jot 60 ); do
[ -c "/dev/hast/${disk}" ] && break
sleep 0.5
done
if [ ! -c "/dev/hast/${disk}" ]; then
logger -p $log -t $name "GEOM provider /dev/hast/${disk} did not appear."
exit 1
fi
done
logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."
logger -p $log -t $name "Mounting disks."
for disk in ${resources}; do
mkdir -p /hast/${disk}
fsck -p -y -t ufs /dev/hast/${disk}
mount /dev/hast/${disk} /hast/${disk}
done
;;
slave)
logger -p $log -t $name "Switching to secondary provider for ${resources}."
# Switch roles for the HAST resources
for disk in ${resources}; do
if ! mount | grep -q "^/dev/hast/${disk} on "
then
else
umount -f /hast/${disk}
fi
sleep $delay
hastctl role secondary ${disk} 2>&1
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to switch role to secondary for resource ${disk}."
exit 1
fi
logger -p $log -t $name "Role switched to secondary for resource ${disk}."
done
;;
esac</programlisting>
<para>Товчхондоо скрипт нь цэг <literal>мастер</literal> /
<literal>анхдагч</literal> болох үед дараахийг хийнэ:</para>
<itemizedlist>
<listitem>
<para>Өгөгдсөн цэг дээр <acronym>HAST</acronym> нөөцийг анхдагч
болгоно.</para>
</listitem>
<listitem>
<para><acronym>HAST</acronym> нөөц доор байгаа файлын системийг
шалгана.</para>
</listitem>
<listitem>
<para>Тохирох газарт нь нөөцүүдийг холбоно.</para>
</listitem>
</itemizedlist>
<para><literal>нөөц</literal> /
<literal>хоёрдогч</literal> болсон тохиолдолд:</para>
<itemizedlist>
<listitem>
<para><acronym>HAST</acronym> нөөцүүдийг салгана.</para>
</listitem>
<listitem>
<para><acronym>HAST</acronym> нөөцүүдийг хоёрдогч болгож
бууруулна.</para>
</listitem>
</itemizedlist>
<caution>
<para>Энэ нь зөвхөн боломжой шийдэл байдаг гэдгийг харуулсан
жишээ скрипт гэдгийг санаарай. Энэ нь бүх л боломжит
нөхцлийг тооцоогүй бөгөөд шаардлагатай үйлчилгээг эхлүүлэх/зогсоох
гэх мэтээр сайжруулж өргөтгөх юм уу эсвэл
дураараа өөрчлөх боломжтой юм.</para>
</caution>
<tip>
<para>Энэ жишээн дээр бид стандарт UFS файлын системийг
ашигласан. Сэргээхэд шаардлагатай цагийг багасгахын
тулд журнал дэмжигдсэн UFS эсвэл ZFS файлын системийг
ашиглаж болох юм.</para>
</tip>
<para>Нэмэлт жишээнүүд бүхий илүү дэлгэрэнгүй мэдээллийг
<ulink
url="http://wiki.FreeBSD.org/HAST">HAST Wiki</ulink> хуудаснаас
олж болно.</para>
</sect3>
</sect2>
<sect2>
<title>Алдааг олж засварлах</title>
<sect3>
<title>Алдааг олж засварлах ерөнхий аргууд</title>
<para><acronym>HAST</acronym> ерөнхийдөө асуудалгүй ажиллах
ёстой боловч бусад програмуудын нэгэн адил ажиллах ёстойгоосоо
өөрөөр ажиллах тохиолдол байдаг. Асуудлын шалтгаан өөр өөр
байж болох боловч гол шалгах юм нь кластерын цэгүүдийн
хооронд цаг синхрончлогдсон байгаа эсэхийг мэдэх явдал
юм.</para>
<para><acronym>HAST</acronym>-н асуудлуудыг шалгаж байхдаа
&man.hastd.8;-н дибаг түвшинг ихэсгэж үзэх ёстой.
Ингэхдээ &man.hastd.8;-г <literal>-d</literal> өгөгдөлтэйгээр
ажиллуулах хэрэгтэй. Дибаг түвшинг дахин дахин ихэсгэхийн
тулд энэ аргументыг олон удаа тавьж өгч болно. Энэ замаар
маш их хэрэгтэй мэдээллийг олж авч болно.
Мөн <literal>-F</literal> аргументыг ашиглан &man.hastd.8;
демонг ил ажиллуулах нь зүйтэй байдаг.</para>
</sect3>
<sect3 id="disks-hast-sb">
<title>Split-brain нөхцлөөс сэргэж гарах</title>
<para>Хоёр цэг нэг нэгэнтэйгээ холбогдож чадахгүй бөгөөд
хоёул анхдагч цэг гэж тохируулагдсан үеийн нөхцлийг
<literal>split-brain</literal> гэдэг. Энэ нь аюултай нөхцөл
бөгөөд учир нь энэ тохиолдолд өгөгдөлд хоёр цэг хоёул
нийцгүй өөрчлөлтийг хийх боломжийг олгодог. Энэ нөхцлийг
системийн администратор гараар зохицуулах шаардлагатай.</para>
<para>Энэ тохиолдлыг засварлахын тулд администратор
аль цэг хамгийн чухал өөрчлөлттэй байгаа дээр шийдвэр
гаргаж (эсвэл гараар нийлүүлэн) <acronym>HAST</acronym>-д
эвдэрсэн өгөгдөл бүхий цэгийн бүтэн синхрончлол хийх
боломжийг олгох ёстой. Ингэхийн тулд дараах тушаалуудыг
дахин синхрончлол шаардлагатай байгаа цэг дээр ажиллуулна:</para>
<screen>&prompt.root; <userinput>hastctl role init &lt;resource&gt;</userinput>
&prompt.root; <userinput>hastctl create &lt;resource&gt;</userinput>
&prompt.root; <userinput>hastctl role secondary &lt;resource&gt;</userinput></screen>
</sect3>
</sect2>
</sect1>
</chapter>
<!--