Add new chapters' translations

Obtained from: FreeBSD Mongolian Documentation project
This commit is contained in:
Ganbold Tsagaankhuu 2008-09-30 06:15:15 +00:00
parent 1a04b60e4f
commit b0bb8078c9
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=32982
6 changed files with 1549 additions and 0 deletions

View file

@ -0,0 +1,18 @@
#
# The FreeBSD Mongolian Documentation Project
#
# Original revision 1.1
#
# Build the Handbook with just the content from this chapter.
#
# $FreeBSD$
CHAPTERS= dtrace/chapter.sgml
VPATH= ..
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
DOC_PREFIX?= ${.CURDIR}/../../../..
.include "../Makefile"

View file

@ -0,0 +1,377 @@
<!--
The FreeBSD Mongolian Documentation Project
Original revision 1.1
$FreeBSD$
-->
<chapter id="dtrace">
<chapterinfo>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Рөүдс</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>DTrace</title>
<para>DTrace буюу Dynamic Tracing (Динамик Мөрдөлт) нь
үйлдвэрлэлд ашиглаж байгаа болон ашиглахын өмнөх системүүдэд
үйл ажиллагааны саад тотгоруудыг олоход зориулагдсан &sun;-с
хөгжүүлсэн хэрэгсэл юм. Энэ нь ямар ч тохиолдолд дибаг хийгч хэрэгсэл
биш боловч үйл ажиллагаа болон бусад асуудлуудыг цаг тухайд нь олох
системийн анализ хийхэд зориулагдсан хэрэгсэл юм.</para>
<para>DTrace нь системийн асуудлуудыг оношлоход зориулагдсан
сэтгэл хөдлөм боломжуудтай гайхамшигтай профиль хийгч хэрэгсэл юм.
Энэ нь өөрийн боломжуудыг ашиглахын тулд өмнө нь бичигдсэн скриптүүдийг
ажиллуулж бас болдог. Хэрэглэгчид нь тусгай зориулалтаар өөрсдийн профиль
хийлтийг өөрчлөх боломжтой DTrace D хэлийг ашиглан бүр өөрсдийн
хэрэгслүүдийг зохиож болох юм.</para>
<sect1 id="dtrace-synopsis">
<title>Ерөнхий агуулга</title>
<indexterm><primary>DTrace</primary></indexterm>
<indexterm>
<primary>DTrace support</primary>
<see>DTrace</see>
</indexterm>
<para>Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:</para>
<itemizedlist>
<listitem>
<para>DTrace гэж юу болох ямар ямар боломжуудаар хангадаг талаар.</para>
</listitem>
<listitem>
<para>&solaris;-ийн DTrace шийдэл болон &os;-д байгаа хоёрын хоорондын
ялгаанууд.</para>
</listitem>
<listitem>
<para>&os; дээр DTrace-ийг хэрхэн идэвхжүүлж ашиглах талаар.</para>
</listitem>
</itemizedlist>
<para>Энэ бүлгийг уншихаасаа өмнө та дараах зүйлсийг гүйцэтгэх хэрэгтэй:</para>
<itemizedlist>
<listitem>
<para>&unix; болон &os;-ийн үндсүүдийг
(<xref linkend="basics">) ойлгох.</para>
</listitem>
<listitem>
<para>Цөмийн тохиргоо/эмхэтгэлтийн
(<xref linkend="kernelconfig">) үндсийг мэддэг байх.</para>
</listitem>
<listitem>
<para>Аюулгүй байдлын талаар болон энэ нь &os;-д хэрхэн хамааралтай
байх талаар зарим ойлголттой байх (<xref linkend="security">).</para>
</listitem>
<listitem>
<para>&os; эхийг хэрхэн авч дахин бүтээх талаар ойлгох
(<xref linkend="cutting-edge">).</para>
</listitem>
</itemizedlist>
<!--
Temporary warning to avoid listing experimental versions
and production versions of FreeBSD with this technology.
-->
<warning>
<para>Энэ боломж нь туршилтын гэж тооцогддог. Зарим тохиргоонууд
ажиллагааны хувьд дутуу, зарим хэсэг нь ерөөсөө ажиллахгүй
байж болох юм. Цагийн явцад энэ боломж нь үйлдвэрлэлд ашиглагдахад
бэлэн гэж тооцогдох бөгөөд энэ баримт нь тэр тохиолдолд таарахаар
өөрчлөгдөх болно.</para>
</warning>
</sect1>
<sect1 id="dtrace-implementation">
<title>Шийдлийн ялгаанууд</title>
<para>&os; дээрх DTrace нь &solaris;-д байдагтай маш төстэй
боловч цааш үргэлжлүүлэхээсээ өмнө тайлбарлах ёстой ялгаанууд
байдаг. Хэрэглэгчдийн мэдрэх үндсэн ялгаа нь &os; дээр DTrace нь
тусгайлан идэвхжүүлэх ёстой байдаг. DTrace нь зөв ажиллахын
тулд идэвхжүүлсэн байх ёстой цөмийн тохиргоонууд болон модулиуд
байдаг. Эдгээрийг дараа тайлбарлах болно.</para>
<para><acronym>CTF</acronym> өгөгдлийг цөмийн модуль болон цөмөөс
өөрөөс нь дуудахад зориулсан дэмжлэгийг идэвхжүүлэх цөмийн
<literal>DDB_CTF</literal> тохиргоо байдаг.
<acronym>CTF</acronym> нь &solaris;-ийн Compressed C Type
буюу Шахсан C Төрөл бөгөөд <acronym>DWARF</acronym> болон
venerable stab-уудтай (хүндтэй хатгалтууд) адил дибаг мэдээллийн
багасгасан хэлбэрийг агуулдаг. Энэ <acronym>CTF</acronym> өгөгдөл нь
<command>ctfconvert</command> болон <command>ctfmerge</command>
гэсэн бүтээх хэрэгслүүдээр хоёртын файлуудад нэмэгддэг.
<command>ctfconvert</command> хэрэгсэл нь эмхэтгэгчийн үүсгэсэн
<acronym>DWARF</acronym> дибаг <acronym>ELF</acronym> хэсгүүдийг
задлан ялгаж <command>ctfmerge</command> нь обьектуудын
<acronym>CTF</acronym> <acronym>ELF</acronym> хэсгүүдийг
ажилладаг файлууд юм уу эсвэл хуваалцсан сангууд руу нийлүүлдэг.
Цөм болон &os; бүтээлтэд зориулж үүнийг хэрхэн идэвхжүүлэх талаар
дэлгэрэнгүй тайлбар удахгүй бичигдэх болно.</para>
<para>&solaris;-д байдгаас өөр хангагчид &os;-д байдаг.
Хамгийн алдартай нь <literal>dtmalloc</literal> хангагч бөгөөд
&os; цөмд <function>malloc()</function>-ийг төрлөөр нь мөрдөх
боломжийг бүрдүүлдэг.</para>
<para>Зөвхөн <username>root</username> DTrace-ийг &os; дээр ашиглаж болно.
Энэ нь аюулгүй байдлын ялгаатай холбоотой бөгөөд &os;-д байдаггүй хэдэн
доод түвшний аюулгүй байдлын шалгалтууд &solaris;-д байдаг. Тийм болохоор
<devicename>/dev/dtrace/dtrace</devicename> нь зөвхөн
<username>root</username> хэрэглэгчээр хатуу хязгаарлагдсан байдаг.</para>
<para>Төгсгөлд нь DTrace програм хангамж нь &sun;-ий <acronym>CDDL</acronym>
лицензийн доор байдаг. <literal>Common Development
and Distribution License</literal> буюу Нийтлэг Хөгжүүлэлт ба Түгээлтийн
Лиценз нь &os;-тэй цуг ирдэг бөгөөд
<filename>/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE</filename>
юм уу эсвэл онлайн хэлбэрээр
<ulink url="http://www.opensolaris.org/os/licensing">
http://www.opensolaris.org/os/licensing</ulink> хаягаас харж болно.</para>
<para>Энэ лиценз нь DTrace тохиргоотой &os; цөм нь <acronym>BSD</acronym>
лицензтэй хэвээр гэсэн үг боловч модулиуд нь хоёртын хэлбэрээр түгээгдэх үед
юм уу эсвэл хоёртын файлууд дуудагдсан үед <acronym>CDDL</acronym> нь
хүчин төгөлдөр болдог.</para>
</sect1>
<sect1 id="dtrace-enable">
<title>DTrace дэмжлэгийг идэвхжүүлэх</title>
<para>DTrace-д зориулсан дэмжлэгийг идэвхжүүлэхийн
тулд дараах мөрүүдийг цөмийн тохиргооны файлд нэмнэ:</para>
<programlisting>options KDTRACE_HOOKS
options DDB_CTF</programlisting>
<note>
<para>AMD64 архитектурын хэрэглэгчид өөрсдийн цөмийн тохиргооны
файлдаа дараах мөрийг нэмэхийг хүсэх болно:</para>
<programlisting>options KDTRACE_FRAME</programlisting>
<para>Энэ тохиргоо нь <acronym>FBT</acronym> боломжид зориулсан
дэмжлэгийг хангадаг. DTrace нь энэ тохиргоогүйгээр ажилладаг боловч
функцийн хязгаарын мөрдөлтөд зориулсан дэмжлэг хязгаарлагдмал байх болно.</para>
</note>
<para>Бүх эх CTF тохиргоонуудтай дахин бүтээгдэж суулгагдсан байх ёстой.
Ингэхийн тул &os;-ийн эхийг доорх тушаалуудыг ашиглан дахин бүтээнэ:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make WITH_CTF=1 buildworld</userinput>
&prompt.root; <userinput>make WITH_CFT=1 kernel</userinput>
&prompt.root; <userinput>make WITH_CFT=1 installworld</userinput>
&prompt.root; <userinput>mergemaster -Ui</userinput></screen>
<para>Системийг дахин ачаалах хэрэгтэй.</para>
<para>Дахин ачаалж шинэ цөмийг санах ойд дуудагдсаны дараа Korn бүрхүүлийн
дэмжлэгийг нэмэх хэрэгтэй. DTrace хэрэгслүүд нь <command>ksh</command>
дээр бичигдсэн хэд хэдэн хэрэгслүүдтэй болохоор энэ нь хэрэгтэй юм.
<filename role="package">shells/ksh93</filename>-г суулгах хэрэгтэй.
Эдгээр хэрэгслүүдийг <filename role="package">shells/pdksh</filename> эсвэл
<filename role="package">shells/mksh</filename> дээр
ажиллуулж бас болно.</para>
<para>Төгсгөлд нь одоогийн DTrace хэрэгслүүдийг олж авах хэрэгтэй. Одоогийн
хувилбар нь <ulink url="http://www.opensolaris.org/os/community/dtrace/dtracetoolkit/">
http://www.opensolaris.org/os/community/dtrace/dtracetoolkit/</ulink> хаягт
байрладаг. Суулгах арга зам цуг байдаг боловч суулгалт нь багцалсан хэрэгслүүдийг
ашиглахыг шаарддаггүй.</para>
</sect1>
<sect1 id="dtrace-using">
<title>DTrace-г ашиглах</title>
<para>DTrace боломжийг ашиглахаас өмнө DTrace төхөөрөмж байх хэрэгтэй.
Төхөөрөмжийг дуудахын тулд дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>kldload dtraceall</userinput></screen>
<para>DTrace дэмжлэг одоо боломжтой болсон байх ёстой. Бүх шалгалтыг
харахын тулд администратор дараах тушаалыг одоо ажиллуулж болно:</para>
<screen>&prompt.root; <userinput>dtrace -l | more</userinput></screen>
<para>Дэлгэцийн буфферийг түргэн дүүргэх болохоор бүх гаралтыг
<command>more</command> хэрэгсэл рүү дамжуулдаг. Энд хүрэхэд
DTrace-ийг ажиллаж байна гэж үзнэ. Одоо уг хэрэгслийг шалгаж үзэх
цаг боллоо.</para>
<para>Уг хэрэгсэл нь системийн мэдээллийг цуглуулахын тулд DTrace-тэй цуг
ажиллуулж болох ашиглахад бэлэн скриптүүдийн цуглуулга юм. Нээлттэй
файлууд, санах ой,<acronym>CPU</acronym>-ийн хэрэглээ болон өөр олон
зүйлсийг шалгах скриптүүд байдаг. Скриптүүдийг дараах тушаалаар
задалж болно:</para>
<screen>&prompt.root; <userinput>gunzip -c DTraceToolkit* | tar xvf -</userinput></screen>
<para><command>cd</command> ашиглан тэр сан руу өөрчилж жижиг үсгээр бичигдсэн
нэртэй бүх файлууд дээр ажиллуулах зөвшөөрлүүдийг <literal>755</literal>
руу өөрчлөх хэрэгтэй.</para>
<para>Эдгээр бүх скриптүүдийн агуулгад өөрчлөлт хийх хэрэгтэй
болно. <filename>/usr/bin/ksh</filename> гэснийг
<filename>/usr/local/bin/ksh</filename> болгох ёстой
бөгөөд <filename>/usr/bin/sh</filename>-ийг
<filename>/bin/sh</filename> болгон ашиглахаар, төгсгөлд нь
<filename>/usr/bin/perl</filename>-г
<filename>/usr/local/bin/perl</filename> болгон
ашиглахаар болгож өөрчлөх хэрэгтэй.</para>
<important>
<para>&os; дээрх DTrace дэмжлэг нь <emphasis>бүрэн бус</emphasis>
бөгөөд <emphasis>туршилтын</emphasis> гэдгийг уншигчид
сануулах нь ухаалаг болох юм. Эдгээр скриптүүдийн олонхи нь
ажиллахгүй бөгөөд тэдгээр нь хэтэрхий &solaris;-д тусгайлан
зориулсан эсвэл одоо дэмжигдээгүй байгаа шалгалтуудыг
ашигладаг.</para>
</important>
<para>Үүнийг бичиж байх үед DTrace хэрэгслийн зөвхөн хоёр скрипт
&os; дээр бүрэн дэмжигдсэн: эдгээр нь <filename>hotkernel</filename>
болон <filename>procsystime</filename> скриптүүд юм.
Эдгээр хоёрыг бид энэ бүлгийн дараагийн хэсгүүдэд авч үзэх
болно.</para>
<para><filename>hotkernel</filename> нь аль функц цөмийн ихэнх хугацааг
ашиглаж байгааг илрүүлэхээр хийгдсэн. Хэвийнээр ажиллуулахад
энэ нь дараахтай төстэй гаралтыг харуулах болно:</para>
<screen>&prompt.root; <userinput>./hotkernel</userinput>
localhost# ./hotkernel
Sampling... Hit Ctrl-C to end.</screen>
<para>Системийн администратор процессийг зогсоохын тулд
<keycombo action="simul"><keycap>Ctrl</keycap><keycap>C</keycap>
</keycombo> товчлуурын хослолыг ашиглах ёстой. Зогсоосны дараа скрипт нь
цөмийн функцуудын жагсаалт болон хугацааны мэдээллийг харуулах бөгөөд
гаралтыг хугацааны ихэссэн дарааллаар эрэмбэлж харуулна:</para>
<screen>kernel`_thread_lock_flags 2 0.0%
0xc1097063 2 0.0%
kernel`sched_userret 2 0.0%
kernel`kern_select 2 0.0%
kernel`generic_copyin 3 0.0%
kernel`_mtx_assert 3 0.0%
kernel`vm_fault 3 0.0%
kernel`sopoll_generic 3 0.0%
kernel`fixup_filename 4 0.0%
kernel`_isitmyx 4 0.0%
kernel`find_instance 4 0.0%
kernel`_mtx_unlock_flags 5 0.0%
kernel`syscall 5 0.0%
kernel`DELAY 5 0.0%
0xc108a253 6 0.0%
kernel`witness_lock 7 0.0%
kernel`read_aux_data_no_wait 7 0.0%
kernel`Xint0x80_syscall 7 0.0%
kernel`witness_checkorder 7 0.0%
kernel`sse2_pagezero 8 0.0%
kernel`strncmp 9 0.0%
kernel`spinlock_exit 10 0.0%
kernel`_mtx_lock_flags 11 0.0%
kernel`witness_unlock 15 0.0%
kernel`sched_idletd 137 0.3%
0xc10981a5 42139 99.3%</screen>
<!-- XXXTR: I attempted to use objdump and nm on /boot/kernel/kernel
to find 0xc10981a5, but to no avail. It would be nice to know
how we should look that up. -->
<para>Энэ скрипт нь цөмийн модулиудтай бас ажилладаг. Энэ боломжийг
ашиглахын тулд скриптийг <option>-m</option> өгөгдөлтэй ажиллуулах хэрэгтэй:</para>
<screen>&prompt.root; <userinput>./hotkernel -m</userinput></screen>
<screen>localhost# <userinput>./hotkernel -m</userinput>
Sampling... Hit Ctrl-C to end.
^C
MODULE COUNT PCNT
0xc107882e 1 0.0%
0xc10e6aa4 1 0.0%
0xc1076983 1 0.0%
0xc109708a 1 0.0%
0xc1075a5d 1 0.0%
0xc1077325 1 0.0%
0xc108a245 1 0.0%
0xc107730d 1 0.0%
0xc1097063 2 0.0%
0xc108a253 73 0.0%
kernel 874 0.4%
0xc10981a5 213781 99.6%</screen>
<!-- XXXTR: I was unable to match these up with output from
kldstat and kldstat -v and grep. Maybe I'm missing something
seriously obvious. It is 5AM btw. -->
<para><filename>procsystime</filename> скрипт нь өгөгдсөн
<acronym>PID</acronym> эсвэл процессийн хувьд системийн дуудлагын
цагийн хэрэглээг авч хэвлэн харуулдаг. Дараах жишээн дээр
<filename>/bin/csh</filename>-ийн шинэ хуулбар ажиллуулсан.
<filename>procsystime</filename>-ийг ажиллуулсан бөгөөд
өөр нэг <command>csh</command> дээр цөөн хэдэн тушаалыг бичтэл
энэ нь хүлээх горимд орсон. Энэ тестийн үр дүн энд байна:</para>
<screen>&prompt.root; <userinput>./procsystime -n csh</userinput>
Tracing... Hit Ctrl-C to end...
^C
Elapsed Times for processes csh,
SYSCALL TIME (ns)
getpid 6131
sigreturn 8121
close 19127
fcntl 19959
dup 26955
setpgid 28070
stat 31899
setitimer 40938
wait4 62717
sigaction 67372
sigprocmask 119091
gettimeofday 183710
write 263242
execve 492547
ioctl 770073
vfork 3258923
sigsuspend 6985124
read 3988049784</screen>
<para>Энд үзүүлснээр read системийн дуудлага ихэнх цагийг,
<function>getpid()</function> системийн дуудлага хамгийн
бага хугацааг ашигласныг наносекундаар харуулж байна.</para>
</sect1>
<sect1 id="dtrace-language">
<title>D хэл</title>
<para>DTrace хэрэгсэл нь DTrace-ийн тусгай хэл дээр байдаг олон скриптүүдийг
агуулдаг. Энэ хэл нь &sun;-ийн баримтаар <quote>D хэл</quote> гэгддэг
бөгөөд C++ хэлтэй тун төстэй юм. Энэ хэлний талаарх гүнзгий хэлэлцүүлэг нь
энэ баримтаас хүрээнээс гадна юм. Энэ нь
<ulink url="http://wikis.sun.com/display/DTrace/Documentation"></ulink>
хаяг дээр дэлгэрэнгүй хэлэлцэгдсэн байдаг.</para>
</sect1>
</chapter>
<!-- XXXTR: Should probably put links and resources here. I'm
nervous about this chapter as it may require a partial
re-write and large modification once DTrace is complete, but
at least we can get everyone started ... -->

View file

@ -0,0 +1,17 @@
# The FreeBSD Mongolian Documentation Project
#
# Original revision 1.1
#
# Build the Handbook with just the content from this chapter.
#
# $FreeBSD$
CHAPTERS= filesystems/chapter.sgml
VPATH= ..
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
DOC_PREFIX?= ${.CURDIR}/../../../..
.include "../Makefile"

View file

@ -0,0 +1,611 @@
<!--
The FreeBSD Mongolian Documentation Project
Original revision 1.2
$FreeBSD$
-->
<chapter id="filesystems">
<chapterinfo>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Рөүдс</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>Файлын системийн дэмжлэг</title>
<sect1 id="filesystems-synopsis">
<title>Ерөнхий агуулга</title>
<indexterm><primary>File Systems</primary></indexterm>
<indexterm>
<primary>File Systems Support</primary>
<see>File Systems</see>
</indexterm>
<para>Файлын системүүд нь үйлдлийн системийн бүрэлдэхүүн хэсэг юм.
Тэдгээр нь хэрэглэгчдэд файл хуулж хадгалах, өгөгдөлд хандах боломжийг
бүрдүүлэх, тэгээд мэдээж хатуу хөтчүүдийг ашигтай болгодог. Өөр өөр
үйлдлийн системүүд нь нийтлэг нэг гол үзэлтэй бөгөөд тэр нь тэдгээрийн
эх файлын систем юм. &os; дээр энэ файлын систем нь бас
<acronym>UFS</acronym> гэгддэг эх Unix&trade; Файлын Систем дээр
бүтээгдсэн Түргэн Файлын Систем буюу <acronym>FFS</acronym> юм.
Энэ нь өгөгдөлд хандахад зориулж хатуу дискүүд дээр байрлуулагддаг
&os; дээрх эх файлын систем юм.</para>
<para>&os; нь бас бусад үйлдлийн системийн өгөгдөлд өөр дээрээсээ
өөрөөр хэлбэл холбогдсон <acronym>USB</acronym> хадгалалтын төхөөрөмжүүд,
флэш хөтчүүд болон хатуу дискүүд дээр хадгалагдсан өгөгдөлд хандах боломжийг
бүрдүүлэх зорилгоор төрөл бүрийн олон файлын системийг дэмждэг. Бас зарим эх бус
файлын системүүдэд зориулсан дэмжлэг байдаг. Эдгээр нь &linux;-ийн Extended
буюу Өргөтгөсөн Файлын Систем (<acronym>EXT</acronym>), болон &sun;-ий Z
Файлын Систем (<acronym>ZFS</acronym>) зэрэг өөр үйлдлийн системүүд
дээр хөгжүүлэгдсэн файлын системүүд юм.</para>
<para>&os; дээр төрөл бүрийн файлын системүүдэд зориулсан дэмжлэгийн
янз бүрийн түвшингүүд байдаг. Зарим нь цөмийн модулийг дуудахыг
шаарддаг бол зарим нь хэрэгслүүд суулгахыг шаардаж болох юм. Энэ бүлэг нь
&os;-ийн хэрэглэгчдэд өөрийн систем дээрээ &sun;-ий Z файлын системээс эхлээд
бусад файлын системүүдэд хандахад туслах зорилгоор хийгдсэн.</para>
<para>Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:</para>
<itemizedlist>
<listitem>
<para>Эх болон дэмжигдсэн файлын системүүдийн ялгаа.</para>
</listitem>
<listitem>
<para>&os; дээр ямар файлын системүүд дэмжигдсэн талаар.</para>
</listitem>
<listitem>
<para>Эх бус файлын системүүдийг хэрхэн идэвхжүүлж, тохируулж
хандан ашиглах талаар.</para>
</listitem>
</itemizedlist>
<para>Энэ бүлгийг уншихаасаа өмнө та дараах зүйлсийг гүйцэтгэх хэрэгтэй:</para>
<itemizedlist>
<listitem>
<para>&unix; болон &os;-ийн үндсүүдийг
(<xref linkend="basics">) ойлгох.</para>
</listitem>
<listitem>
<para>Цөмийн тохиргоо/эмхэтгэлтийн
(<xref linkend="kernelconfig">) үндсийг мэддэг байх.</para>
</listitem>
<listitem>
<para>&os; дээр гуравдагчдын програм хангамжийг суулгаж
(<xref linkend="ports">) чаддаг байх.</para>
</listitem>
<listitem>
<para>&os; дээрх диск, хадгалалт болон төхөөрөмжийн нэрстэй
танилцсан байх (<xref linkend="disks">).</para>
</listitem>
</itemizedlist>
<!--
Temporary warning to avoid listing experimental versions
and production versions of FreeBSD with this technology.
-->
<warning>
<para><acronym>ZFS</acronym> боломж нь туршилтын гэж тооцогддог.
Зарим тохиргоонууд ажиллагааны хувьд дутуу, зарим хэсэг нь ерөөсөө ажиллахгүй
байж болох юм. Цагийн явцад энэ боломж нь үйлдвэрлэлд ашиглагдахад
бэлэн гэж тооцогдох бөгөөд энэ баримт нь тэр тохиолдолд таарахаар
өөрчлөгдөх болно.</para>
</warning>
</sect1>
<sect1 id="filesystems-zfs">
<title>Z Файлын Систем</title>
<para>&sun;-ий хөгжүүлсэн Z&nbsp; файлын систем нь цөөрөм хэлбэрийн
хадгалалтын аргыг ашиглахаар хийгдсэн шинэ технолог юм. Энэ нь
зай зөвхөн өгөгдөл хадгалалтад хэрэгтэй нөхцөлд ашиглагдана гэсэн
үг юм. Энэ нь өгөгдлийн хормын хувилбарууд, олон хуулбарууд, болон
өгөгдлийн хяналтын нийлбэрийг дэмжин өгөгдлийн максимум бүрэн бүтэн
байдалд зориулагдан бас хийгдсэн юм. <acronym>RAID</acronym>-Z
гэгддэг өгөгдлийн шинэ хуулбарлах загвар нэмэгдсэн.
<acronym>RAID</acronym>-Z загвар нь <acronym>RAID</acronym>5-тай
төстэй боловч өгөгдлийн бичилтийн эвдрэлтээс хамгаалахаар
хийгдсэн.</para>
<sect2>
<title>ZFS тааруулалт</title>
<para><acronym>ZFS</acronym> дэд систем нь системийн эх үүсвэрүүдийн
ихэнхийг хэрэглэгдэг учир өдөр тутмын хэрэглээнд максимум үр ашгийг
хангахад шаардлагатай зарим нэг тааруулалт шаардлагатай байдаг. &os; дээр
туршилтын боломж гэгдэж байгаа боловч энэ нь ойрын ирээдүйд өөрчлөгдөж
болох юм. Гэхдээ одоогоор дараах алхмуудыг зөвлөдөг.</para>
<sect3>
<title>Санах ой</title>
<para>Нийт системийн санах ой хамгийн багаа бодоход нэг гигабайт
байх ёстой бөгөөд хоёр болон түүнээс дээшхийг зөвлөдөг. Энд байгаа
бүх жишээнүүдэд систем нь нэг гигабайт санах ойтой, хэд хэдэн бусад
тааруулах аргын хамтаар байх болно.</para>
<para>Зарим хүмүүс нэг гигабайт санах ойгоос бага санах ойг амжилттай ашиглаж
чадсан боловч тийм хязгаарлагдмал физик санах ойтой систем ачаалал ихтэй
үед &os; нь санах ойн шавхалтаас болж үймэх нь маш боломжийн байх
болно.</para>
</sect3>
<sect3>
<title>Цөмийн тохиргоо</title>
<para>Хэрэгцээгүй драйверууд болон тохиргоонуудыг цөмийн тохиргооны
файлаас устгахыг зөвлөдөг. Ихэнх төхөөрөмжүүд модуль хэлбэрээр
байдаг болохоор тэдгээрийг <filename>/boot/loader.conf</filename>
файлын тусламжтай дуудаж болно.</para>
<para>i386 архитектурын хэрэглэгчид өөрсдийн цөмийн тохиргооны файлдаа
дараах тохиргоог нэмж цөмөө дахин бүтээж дахин ачаалах хэрэгтэй:</para>
<programlisting>options KVA_PAGES=512</programlisting>
<para>Энэ тохиргоо нь <varname>vm.kvm_size</varname> тохируулгыг
одоо байгаа 1&nbsp;GB (<acronym>PAE</acronym>-ийн хувьд 2&nbsp;GB)
хязгаарыг давах боломжийг бүрдүүлж цөмийн хаягийн талбарыг
өргөтгөх болно. Энэ тохиргооны хувьд хамгийн тохиромжтой утгыг
олохын тулд мегабайтаар хүссэн хаягийн талбараа дөрөвт (4) хуваана.
Энэ тохиолдолд 2&nbsp;GB-ийн хувьд <literal>512</literal>
байна.</para>
</sect3>
<sect3>
<title>Дуудагчийн тохируулгууд</title>
<para><devicename>kmem</devicename> хаягийн талбарыг &os;-ийн бүх
архитектур дээр ихэсгэх ёстой. Нэг гигабайт физик санах ойтой тест
систем дээр <filename>/boot/loader.conf</filename> файлд хийсэн
дараах тохируулгууд болон системийг дахин ачаалсны дараа амжилттай
болсон:</para>
<programlisting>vm.kmem_slze="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"</programlisting>
<para>ZFS-тэй холбоотой тохируулгуудын талаар илүү дэлгэрэнгүй
зөвлөмжүүдийн жагсаалтыг
<ulink url="http://wiki.freebsd.org/ZFSTuningGuide"></ulink> хаягаас үзнэ үү.</para>
</sect3>
</sect2>
<sect2>
<title><acronym>ZFS</acronym>-г ашиглах нь</title>
<para><acronym>ZFS</acronym> цөөрмүүдийг систем эхлэх
үед холбох боломжийг &os;-д олгох эхлүүлэх арга зам
байдаг. Үүнийг тохируулахын тулд дараах тушаалуудыг
ажиллуулна:</para>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' &gt;&gt; /etc/rc.conf</userinput>
&prompt.root; <userinput>/etc/rc.d/zfs start</userinput></screen>
<para>Энэ баримтын үлдсэн хэсэг <acronym>SCSI</acronym> дискүүд байна
гэж үзэх бөгөөд тэдгээр төхөөрөмжийн нэрс нь
<devicename><replaceable>da0</replaceable></devicename>
болон <devicename><replaceable>da1</replaceable></devicename>
юм. <acronym>IDE</acronym> тоног төхөөрөмжийн хэрэглэгчид
<acronym>SCSI</acronym>-ийн оронд
<devicename><replaceable>ad</replaceable></devicename> төхөөрөмжүүдийг
ашигладаг.</para>
<sect3>
<title>Ганц дискийн цөөрөм</title>
<para>Ганц диск төхөөрөмж дээр <acronym>ZFS</acronym> үүсгэхийн
тулд <command>zpool</command> тушаалыг ашиглана:</para>
<screen>&prompt.root; <userinput>zpool create example /dev/da0</userinput></screen>
<para>Шинэ цөөрмийг харахын тулд <command>df</command>
тушаалын гаралтыг үзнэ:</para>
<screen>&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235230 1628718 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032846 48737598 2% /usr
example 17547136 0 17547136 0% /example</screen>
<para>Энэ гаралт нь <literal>example</literal> цөөрөм
зөвхөн үүсгэгдээд зогсохгүй бас <emphasis>холбогдсон</emphasis>
гэдгийг тодорхой харуулж байна. Энэ нь энгийн файлын систем
шиг хандах боломжтой, үүн дээр файлууд үүсгэж хэрэглэгчид
дараах жишээн дээрх шиг үзэх боломжтой байна:</para>
<screen>&prompt.root <userinput>cd /example</userinput>
&prompt.root; <userinput>ls</userinput>
&prompt.root; <userinput>touch testfile</userinput>
&prompt.root; <userinput>ls -al</userinput>
total 4
drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .
drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile</screen>
<para>Харамсалтай нь энэ цөөрөм <acronym>ZFS</acronym>-ийн
боломжуудын давуу талыг ашиглахгүй байна. Файлын системийг
энэ цөөрөм дээр үүсгэж түүн дээр шахалтыг идэвхжүүлнэ:</para>
<screen>&prompt.root; <userinput>zfs create example/compressed</userinput>
&prompt.root; <userinput>zfs set compression=gzip example/compressed</userinput></screen>
<para><literal>example/compressed</literal> нь одоо
<acronym>ZFS</acronym> шахагдсан файлын систем боллоо. Зарим нэг том файлуудыг
<filename class="directory">/example/compressed</filename>
хуулан түүн рүү хуулж үз.</para>
<para>Шахалтыг дараах тушаалаар болиулж болно:</para>
<screen>&prompt.root; <userinput>zfs set compression=off example/compressed</userinput></screen>
<para>Файлын системийг салгахын тулд дараах тушаалыг ажиллуулж
<command>df</command> хэрэгслээр шалгана:</para>
<screen>&prompt.root; <userinput>zfs umount example/compressed</userinput>
&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235232 1628716 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example</screen>
<para>Файлын системийг дахин холбож дахин хандах боломжтой
болгоод <command>df</command> тушаалаар шалгана:</para>
<screen>&prompt.root; <userinput>zfs mount example/compressed</userinput>
&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235234 1628714 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressed</screen>
<para>Цөөрөм болон файлын системийг <command>mount</command>
тушаалын гаралтыг шалган бас ажиглаж болно:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /usr (ufs, local, soft-updates)
example on /example (zfs, local)
example/data on /example/data (zfs, local)
example/compressed on /example/compressed (zfs, local)</screen>
<para>Ажигласнаар <acronym>ZFS</acronym> файлын системүүд нь
үүсгэгдсэнийхээ дараагаар жирийн файлын системүүд шигээр
ашиглагдаж болно, гэхдээ өөр бусад олон боломжууд бас
байдаг. Дараах жишээн дээр шинэ файлын систем <literal>data</literal>
үүсгэгдэж байна. Чухал файлууд энд хадгалагдах учир файлын
систем нь өгөгдлийн блок бүрийн хоёр хуулбарыг хадгалахаар
тохируулагдсан:</para>
<screen>&prompt.root; <userinput>zfs create example/data</userinput>
&prompt.root; <userinput>zfs set copies=2 example/data</userinput></screen>
<para>Одоо <command>df</command>-г дахин ажиллуулж
өгөгдөл болон зайн хэрэглээг харах боломжтой:</para>
<screen>&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235234 1628714 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressed
example/data 17547008 0 17547008 0% /example/data</screen>
<para>Цөөрөм дээрх файлын систем бүр ижил хэмжээтэй зайтай байгааг
хараарай. Файлын системүүд нь зөвхөн хэрэгцээтэй зайгаа ашиглаж
ижил цөөрмөөс авч байгааг харуулахын тулд <command>df</command> тушаалыг энэ
жишээнүүд дээр ашигласан шалтгаантай юм. <acronym>ZFS</acronym>
файлын систем нь эзлэхүүн болон хуваалтууд гэх мэт ойлголтуудаас
ангид байж хэд хэдэн файлын систем нэг цөөрмийг эзлэхийг зөвшөөрдөг.
Файлын системүүдийг устгаад дараа нь цөөрмийг хэрэгцээгүй болсон
болохоор устгана:</para>
<screen>&prompt.root; <userinput>zfs destroy example/compressed</userinput>
&prompt.root; <userinput>zfs destroy example/data</userinput>
&prompt.root; <userinput>zpool destroy example</userinput></screen>
<para>Дискүүд муудаж эвдрэх нь тойрох боломжгүй нөхцөл юм. Энэ диск
муудсан үед өгөгдөл алдагдах болно. Эвдэрсэн хатуу дискээс болоод
өгөгдлийн алдагдлаас хамгаалах нэг арга нь <acronym>RAID</acronym>-г
ашиглах явдал юм. <acronym>ZFS</acronym> нь энэ боломжийг
дараагийн хэсэгт тайлбарлах өөрийн цөөрмийн дизайндаа дэмжсэн
байдаг.</para>
</sect3>
<sect3>
<title><acronym>ZFS</acronym> RAID-Z</title>
<para>Өмнө хэлсэнчлэн энэ хэсэг нь хоёр
<acronym>SCSI</acronym> байх бөгөөд
<devicename>da0</devicename> болон
<devicename>da1</devicename> гэж тооцно.
<acronym>RAID</acronym>-Z цөөрөм үүсгэхийн тулд
дараах тушаалыг өгнө:</para>
<screen>&prompt.root; <userinput>zpool create storage raidz da0 da1</userinput></screen>
<para><literal>storage</literal> zpool үүсгэгдсэн байх ёстой.
Өмнөх шиг &man.mount.8; болон &man.df.1; тушаалуудыг ашиглан
үүнийг шалгаж болно. Дээрх жагсаалтын төгсгөлд өөр илүү дискийн
төхөөрөмжүүдийг нэмэн хуваарилж болно. Хэрэглэгчийн файлууд удахгүй
байрлах <literal>home</literal> гэгдсэн шинэ файлын системийг
цөөрөмд хийнэ:</para>
<screen>&prompt.root; <userinput>zfs create storage/home</userinput></screen>
<para>Одоо шахалтыг идэвхжүүлж хэрэглэгчийн гэрийн сангууд болон файлуудын
илүү хуулбаруудыг хадгалах боломжтой. Үүнийг өмнөх шиг дараах тушаалуудыг
ашиглан хийж болно:</para>
<screen>&prompt.root; <userinput>zfs set copies=2 storage/home</userinput>
&prompt.root; <userinput>zfs set compression=gzip storage/home</userinput></screen>
<para>Үүнийг хэрэглэгчдийн шинэ гэрийн сан болгохын тулд
хэрэглэгчийн өгөгдлийг энэ сан руу хуулж тохирох тэмдэгт
холбоосуудыг үүсгэнэ:</para>
<screen>&prompt.root; <userinput>cp -rp /home/* /storage/home</userinput>
&prompt.root; <userinput>rm -rf /home /usr/home</userinput>
&prompt.root; <userinput>ln -s /storage/home /home</userinput>
&prompt.root; <userinput>ln -s /storage/home /usr/home</userinput></screen>
<para>Одоо хэрэглэгчдийн хувьд шинээр үүсгэгдсэн
<filename class="directory">/storage/home</filename> файлын
систем дээр тэдний өгөгдөл хадгалагдсан байх болно. Шинэ хэрэглэгч
нэмж тэр хэрэглэгчээр нэвтэрч үзээрэй.</para>
<para>Дараа нь буцааж болох хормын хувилбар үүсгэж үзээрэй:</para>
<screen>&prompt.root; <userinput>zfs snapshot storage/home@08-30-08</userinput></screen>
<para>Хормын хувилбар тохиргоо нь гэрийн сан ч биш эсвэл файл ч
биш зөвхөн жинхэнэ файлын системийг авахыг анхаараарай.
<literal>@</literal> тэмдэгт нь файлын системийн нэр эсвэл
эзлэхүүний нэрийн хооронд ашиглагдсан зааглагч юм. Хэрэглэгчийн
гэрийн сан устгагдах үед түүнийг доорх тушаалаар сэргээнэ:</para>
<screen>&prompt.root; <userinput>zfs rollback storage/home@08-30-08</userinput></screen>
<para>Байгаа хормын хувилбаруудын жагсаалтыг авахын тулд
<command>ls</command>-г файлын системийн
<filename class="directory">.zfs/snapshot</filename>
сан дотор ажиллуулна. Жишээ нь өмнө нь авсан хормын хувилбарыг
харахын тулд дараах тушаалыг гүйцэтгэнэ:</para>
<screen>&prompt.root; <userinput>ls /storage/home/.zfs/snapshot</userinput></screen>
<para>Хэрэглэгчийн өгөгдөл дээр сар бүрийн хормын хувилбар үүсгэх
скрипт бичих боломжтой боловч хожим хормын хувилбарууд нь
ихээхэн хэмжээний дискийн хэмжээ эзлэх болно. Түрүүчийн
хормын хувилбарыг дараах тушаал ашиглан устгаж болно:</para>
<screen>&prompt.root; <userinput>zfs destroy storage/home@08-30-08</userinput></screen>
<para>Энэ бүх тестийн дараагаар
<filename class="directory">/storage/home</filename>
санг бид одоо байгаа төлөвт нь байлгаад байх шалтгаан байх
ёсгүй юм. Үүнийг жинхэнэ
<filename class="directory">/home</filename> файлын систем
болгох хэрэгтэй:</para>
<screen>&prompt.root; <userinput>zfs set mountpoint=/home storage/home</userinput></screen>
<para><command>df</command> болон
<command>mount</command> тушаалуудыг ажиллуулснаар систем бидний
файлын системийг жинхэнэ <filename class="directory">/home</filename>
сан гэж үзэж байгааг харуулна:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /usr (ufs, local, soft-updates)
storage on /storage (zfs, local)
storage/home on /home (zfs, local)
&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235240 1628708 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032826 48737618 2% /usr
storage 17547008 0 17547008 0% /storage
storage/home 17547008 0 17547008 0% /home</screen>
<para>Ингэснээр <acronym>RAID</acronym>-Z тохиргоо дуусаж
байна. Шөнө бүрийн &man.periodic.8; ажиллах үед үүссэн
файлын системүүдийн талаар төлвийн шинэчлэлтүүдийг авахын тулд
дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>echo 'daily_status_zfs_enable="YES"' &gt;&gt; /etc/periodic.conf</userinput></screen>
</sect3>
<sect3>
<title><acronym>RAID</acronym>-Z-г сэргээх нь</title>
<para>Програм хангамжийн <acronym>RAID</acronym> бүр
өөрсдийн <literal>төлвийг</literal> хянах аргатай байдаг.
<acronym>ZFS</acronym> нь ч мөн адил.
<acronym>RAID</acronym>-Z төхөөрөмжүүдийн төлвийг дараах
тушаалаар харж болно:</para>
<screen>&prompt.root; <userinput>zpool status -x</userinput></screen>
<para>Хэрэв бүх цөөрмүүд эрүүл ба бүгд хэвийн бол дараах
мэдэгдэл гарна:</para>
<screen>all pools are healthy</screen>
<para>Хэрэв асуудал байвал магадгүй диск холболтгүй болчихвол
цөөрмийн төлөв иймэрхүү харагдах болно:</para>
<screen> pool: storage
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
da0 ONLINE 0 0 0
da1 OFFLINE 0 0 0
errors: No known data errors</screen>
<para>Энэ нь төхөөрөмжийг администратор салгасан гэдгийг
харуулж байна. Ялангуяа энэ жишээний хувьд энэ нь үнэн юм.
Дискийг салгахын тулд дараах тушаалыг ашиглажээ:</para>
<screen>&prompt.root; <userinput>zpool offline storage da1</userinput></screen>
<para>Одоо системийг унтраасны дараа <devicename>da1</devicename>-г
солих боломжтой. Систем буцаж ассаны дараа дараах тушаалыг ажиллуулж
дискийг солино:</para>
<screen>&prompt.root; <userinput>zpool replace storage da1</userinput></screen>
<para>Эндээс төлвийг дахин шалгаж болох бөгөөд энэ удаад
төлвийн мэдээллийг авахын тулд <option>-x</option> өгөгдөлгүйгээр
үзнэ:</para>
<screen>&prompt.root; <userinput>zpool status storage</userinput>
pool: storage
state: ONLINE
scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
errors: No known data errors</screen>
<para>Энэ жишээнээс харахад бүгд хэвийн харагдаж байна.</para>
</sect3>
<sect3>
<title>Өгөгдлийн шалгалт</title>
<para>Өмнө дурдсанчлан <acronym>ZFS</acronym> нь
хадгалагдсан өгөгдлийн бүрэн бүтэн байдлыг шалгахдаа
<literal>хяналтын нийлбэрийг</literal> ашигладаг.
Тэдгээр нь файлын системүүдийг үүсгэхэд автоматаар
идэвхждэг бөгөөд дараах тушаалыг ашиглан болиулж болно:</para>
<screen>&prompt.root; <userinput>zfs set checksum=off storage/home</userinput></screen>
<para>Энэ нь ухаалаг санаа биш боловч хяналтын нийлбэрүүд нь
маш бага хадгалалтын зай эзэлдэг бөгөөд идэвжсэн байхдаа илүү
ашигтай байдаг. Бас тэдгээрийг идэвхжүүлснээр мэдэгдэхээр зардал
бас ажиглагддаггүй. Идэвхжсэн байх үед өгөгдлийн бүрэн бүтэн байдлыг
хяналтын нийлбэрийн шалгалт ашиглан <acronym>ZFS</acronym>
шалгах боломжтой байдаг. Энэ процессийг <quote>цэвэрлэх</quote>
гэж хэлдэг. <literal>storage</literal> цөөрмийн өгөгдлийн
бүрэн бүтэн байдлыг шалгахын тулд дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>zpool scrub storage</userinput></screen>
<para>Энэ процесс хадгалагдсан өгөгдлийн хэмжээнээс хамаарч
ихээхэн хэмжээний хугацаа шаардаж болох юм. Энэ нь бас
эдгээр үйлдлүүдийн зөвхөн нэг нь тухайн үед ажиллаж болохоор тийм
ихээр <acronym>I/O</acronym>-г ашигладаг байна. Цэвэрлэлт
дууссаны дараа төлөв шинэчлэгдэж төлвийн хүсэлтийг илгээн
харж болно:</para>
<screen>&prompt.root; <userinput>zpool status storage</userinput>
pool: storage
state: ONLINE
scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
errors: No known data errors</screen>
<para>Дууссан хугацаа энэ жишээн дээр цэврээр харуулагдаж байна.
Энэ боломж нь өгөгдлийн бүрэн бүтэн байдлыг урт хугацааны
турш хадгалахад баталгаа болж тусалдаг.</para>
<para>Z&nbsp; файлын системд зориулсан өөр олон тохиргоонууд
байдаг бөгөөд &man.zfs.1; болон &man.zpool.1; гарын авлагын
хуудсуудыг үзнэ үү.</para>
</sect3>
</sect2>
</sect1>
<!--
XXXTR: stub sections (added later, as needed, as desire,
after I get opinions from -doc people):
Still need to discuss native and foreign file systems.
<sect1>
<title>Device File System</title>
</sect1>
<sect1>
<title>DOS and NTFS File Systems</title>
<para>This is a good section for those who transfer files, using
USB devices, from Windows to FreeBSD and vice-versa. My camera,
and many other cameras I have seen default to using FAT16. There
is (was?) a kde utility, I think called kamera, that could be used
to access camera devices. A section on this would be useful.</para>
<para>XXXTR: Though! The disks chapter, covers a bit of this and
devfs under it's USB devices. It leaves a lot to be desired though,
see:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/usb-disks.html
It may be better to flesh out that section a bit more. Add the
word "camera" to it so that others can easily notice.</para>
</sect1>
<sect1>
<title>Linux EXT File System</title>
<para>Probably NOT as useful as the other two, but it requires
knowledge of the existence of the tools. Which are hidden in
the ports collection. Most Linux guys would probably only use
Linux, BSD guys would be smarter and use NFS.</para>
</sect1>
<sect1>
<title>HFS</title>
<para>I think this is the file system used on Apple OSX. There are
tools in the ports collection, and with Apple being a big
FreeBSD supporter and user of our technologies, surely there
is enough cross over to cover this?</para>
</sect1>
-->
</chapter>

View file

@ -0,0 +1,17 @@
# The FreeBSD Mongolian Documentation Project
#
# Original revision 1.1
#
# Build the Handbook with just the content from this chapter.
#
# $FreeBSD$
CHAPTERS= updating/chapter.sgml
VPATH= ..
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
DOC_PREFIX?= ${.CURDIR}/../../../..
.include "../Makefile"

View file

@ -0,0 +1,509 @@
<!--
The FreeBSD Mongolian Documentation Project
Original revision 1.1
$FreeBSD$
-->
<chapter id="updating">
<chapterinfo>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Рөүдс</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Колин</firstname>
<surname>Персивал</surname>
<contrib>Тэмдэглэгээ бичсэн </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>&os;-г шинэчлэх нь</title>
<sect1 id="updating-synopsis">
<title>Ерөнхий агуулга</title>
<indexterm><primary>Updating FreeBSD</primary></indexterm>
<indexterm>
<primary>freebsd-update</primary>
<see>Updating</see>
</indexterm>
<para>Цаг хугацааны туршид &os; үйлдлийн системийн нэг үндсэн
аспект өөрчлөгдөлгүй хэвээр үлджээ. Энэ нь програмууд болон
хэрэгслүүдийг том болон бага системийн шинэчлэлтүүдийг авахдаа
ашиглах шаардлага юм.</para>
<para>Олон жилийн турш өөрсдийн системийг шинэчлэх гэсэн хэрэглэгчид
аюулгүй байдлын засваруудыг цуглуулж портын цуглуулгын аргуудыг
эвдэлгүйгээр порт болон багцын шинэчлэлтүүдийг авахын тулд
<application>CVSup</application> хэрэгслийг ашигладаг байсан.</para>
<para><application>CVSup</application>-ийн хэрэглээ дэмжигдэж жинхэнэ
C хэлний хувилбар &os;-д нэмэгдсэн хэдий ч системийн шинэчлэлтүүдийг
авах шинэ аргууд байдаг.</para>
<para>&man.portsnap.8;, болон &man.freebsd-update.8; зэрэг хэрэгслүүд
шинэчлэлтийн процессийг шулуухан болгосон. Эдгээр шинэ аргууд нь
бүтээмжийг дээшлүүлэхээс гадна илүү хялбар интерфэйсийг хэрэглэгчдэд
олгодог. Системийн администраторын гар оролцоог багасгаж зарим шинэ
хэрэгслүүдийг &man.cron.8;-с ажиллуулж болдог бөгөөд хэдэн зуун &os;
машиныг хянадаг тэдний хувьд энэ нь ашигтай байдаг.</para>
<para>Энэ бүлэг эдгээр шинэ аргуудыг тайлбарлаж хэрэглэгчид болон
системийн администраторууд зэрэг нь эдгээрийн практикийн болон
хэрэглэхэд хялбар байдлаас хэрхэн ашиг олж болохыг тайлбарлах болно.</para>
<para>Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:</para>
<itemizedlist>
<listitem>
<para>Систем болон портын цуглуулгыг шинэчлэхэд ямар хэрэгслүүд
ашиглаж болох талаар.</para>
</listitem>
<listitem>
<para><command>freebsd-update</command>-г ашиглан
аюулгүй байдлын засваруудыг хийж &os;-ийн том ба бага
шинэчлэлтүүдийг хэрхэн хийх талаар.</para>
</listitem>
<listitem>
<para>Суулгагдсан системийн төлвийг нэртэй цэвэр хуулбартай
харьцуулах талаар.</para>
</listitem>
</itemizedlist>
<para>Энэ бүлгийг уншихаасаа өмнө та дараах зүйлсийг гүйцэтгэх хэрэгтэй:</para>
<itemizedlist>
<listitem>
<para>&unix; болон &os;-ийн үндсүүдийг
(<xref linkend="basics">) ойлгох.</para>
</listitem>
<listitem>
<para>Цөмийн тохиргоо/эмхэтгэлтийн
(<xref linkend="kernelconfig">) үндсийг мэддэг байх.</para>
</listitem>
<listitem>
<para>Портын цуглуулга болон гуравдагчдын програм хангамжуудыг
&os; дээр суулгах талаар ойлголттой байх
(<xref linkend="ports">).</para>
</listitem>
<listitem>
<para>&os;-г бүтээдэг төрөл бүрийн эх бүрэлдэхүүн хэсгүүд болон
&man.mergemaster.8; хэрэгслийг хэрхэн ашиглах талаар ойлголттой
байх (<xref linkend="cutting-edge">).</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="updating-freebsdupdate">
<title>FreeBSD-ийн шинэчлэлт</title>
<para>Аюулгүй байдлын засваруудыг хийнэ гэдэг компьютерийн програм
хангамж ялангуяа үйлдлийн системийг арчлалтын чухал хэсгийн нэг юм.
Удаан хугацааны туршид &os; дээр энэ процесс хялбар биш байлаа.
Засваруудыг эх код руу хийж кодыг хоёртын хэлбэр рүү дахин бүтээж
дараа нь хоёртын файлуудыг дахин суулгах шаардлагатай байлаа.</para>
<para>Энэ нь одоо тийм биш болсон бөгөөд &os; нь
<command>freebsd-update</command> гэгддэг хэрэгслийг агуулдаг.
Энэ хэрэгсэл нь хоёр тусдаа функцээр хангадаг. Нэгдүгээрт энэ нь
бүтээлт болон суулгах шаардлагагүйгээр хоёртын аюулгүй байдал болон
алдааны шинэчлэлтүүдийг &os;-ийн үндсэн системд оруулах боломжийг
олгодог. Хоёрдугаарт уг хэрэгсэл бага болон том хувилбарын шинэчлэлтүүдийг
дэмждэг.</para>
<note>
<para>Аюулгүй байдлын багаар дэмжигдсэн бүх архитектур болон
хувилбаруудын хувьд хоёртын шинэчлэлтүүд байдаг боловч &os; үйлдлийн
системийн шинэчлэлтүүд зэрэг зарим нэг боломжууд нь &man.freebsd-update.8;-ийн
хамгийн сүүлийн хувилбар болон &os; 6.3-г шаарддаг. Шинэ хувилбар
руу шинэчлэхээс өмнө хүссэн хувилбарт чинь хамаатай чухал мэдээлэл байж
болох учир одоогийн хувилбарын зарлалуудыг дахин үзэх хэрэгтэй. Тэдгээр
зарлалуудыг дараах холбоосоос үзэж болно:
<ulink url="http://www.FreeBSD.org/releases/"></ulink>.</para>
</note>
<para>Хэрэв <command>crontab</command> нь <command>freebsd-update</command>-ийн
боломжуудыг хэрэглэж байвал дараах үйлдлийг эхлэхээс өмнө түүнийг болиулах
хэрэгтэй. <command>tar</command> болон <command>gzip</command> хийгдсэн
багцыг дээрх <acronym>URL</acronym>-с татан авч
<command>freebsd-update</command>-ийн хамгийн сүүлийн хувилбарыг
суулгаж дараах тушаалуудыг ашиглан суулгаж болно:</para>
<screen>&prompt.root; <userinput>gunzip -c freebsd-update-upgrade.tgz | tar xvf -</userinput>
&prompt.root; <userinput>mv freebsd-update.sh /usr/sbin/freebsd-update</userinput>
&prompt.root; <userinput>mv freebsd-update.conf /etc</userinput></screen>
<para>Одоо байгаа бүх хувилбаруудын хувьд хамгийн сүүлийн хувилбарыг
татаж авах шаардлагагүй юм.</para>
<sect2>
<title>Тохиргооны файл</title>
<para>Процессийг илүү хянах боломжтой болгож зарим хэрэглэгчид
тохиргооны файлыг өөрчлөхийг хүсэж болох юм. Тохиргоонууд нь
маш сайн баримтжуулагдсан байдаг боловч дараах хэдэн зүйлийг
арай илүү тайлбарлах шаардлагатай байж болох юм:</para>
<programlisting># Components of the base system which should be kept updated.
Components src world kernel</programlisting>
<para>Энэ өгөгдөл нь &os;-ийн аль хэсгийг шинэчлэхийг хянадаг.
Анхдагчаар эх код, үндсэн систем бүтнээрээ ба цөмийг шинэчлэх
байдаг. Бүрэлдэхүүн хэсгүүд нь суулгах явцад байдагтай адил
байдаг бөгөөд жишээ нь "world/games" гэдгийг энд нэмэхэд
тоглоомын засваруудыг хийх боломжийг олгоно. "src/bin" гэдгийг
ашиглах нь <filename class="directory">src/bin</filename>
дахь эх кодыг шинэчлэх боломжийг олгодог.</para>
<para>Хамгийн сайн тохиргоо бол үүнийг анхдагчаар нь үлдээх бөгөөд
тусгай зүйлс оруулж үүнийг өөрчилснөөр хэрэглэгчид өөрсдийн шинэчлэхийг
хүссэн зүйл болгоноо жагсааж оруулах шаардлагатай болно. Ингэснээр
эх код болон хоёртын файлуудын хоорондох уялдаа алдагдаж гамшгийн
үр дагавар гарч болно.</para>
<programlisting># Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePaths</programlisting>
<para><filename class="directory">/bin</filename> эсвэл
<filename class="directory">/sbin</filename> зэрэг замуудыг
нэмж эдгээр тусгай сангуудыг шинэчлэх процессийн явцад
оролдохгүй орхиж болно. Энэ тохиргоо нь
<command>freebsd-update</command> локал өөрчлөлтүүдийг
дарж бичихээс хамгаалахад хэрэглэж болно.</para>
<programlisting># Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile</programlisting>
<para>Заагдсан сангууд дахь тохиргооны файлууд өөрчлөгдөөгүй
тохиолдолд шинэчилнэ. Хэрэглэгчийн хийсэн өөрчлөлтүүд эдгээр
файлуудын автомат шинэчлэлтийг хүчингүй болгоно.
<command>freebsd-update</command>-г нийлүүлэх явцад
өөрчлөлтүүдийг хадгалахыг тушаах <literal>KeepModifiedMetadata</literal>
гэсэн өөр нэг тохиргоо байдаг.</para>
<programlisting># When upgrading to a new &os; release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/</programlisting>
<para><command>freebsd-update</command>-ийн нийлүүлэхийг оролдох
тохиргооны файлуудтай сангуудын жагсаалт. Файл нийлүүлэх процесс нь
цөөн тохиргоотой &man.mergemaster.8;-тай төстэй &man.diff.1; засварууд
бөгөөд нийлүүлэлтийг эсвэл хүлээн авах юм уу эсвэл засварлагч нээж эсвэл
<command>freebsd-update</command> ажиллагаагаа зогсоох болно. Эргэлзэж
байвал <filename class="directory">/etc</filename> санг нөөцөлж аваад
нийлүүлэлтүүдийг хүлээн авах хэрэгтэй. <command>mergemaster</command> тушаалын
талаар дэлгэрэнгүй мэдээллийг <xref linkend="cutting-edge">-с үзнэ үү.</para>
<programlisting># Directory in which to store downloaded updates and temporary
# files used by &os; Update.
# WorkDir /var/db/freebsd-update</programlisting>
<para>Энэ сан нь бүх засварууд болон түр зуурын файлууд байх сан
юм. Хэрэглэгч хувилбар шинэчлэлт хийж байвал энэ байрлал нь хамгийн
багаар бодоход гигабайт дискийн зайтай байх шаардлагатай.</para>
<programlisting># When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which &os; Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents no</programlisting>
<para><literal>yes</literal> гэж тохируулсан үед
<command>freebsd-update</command> нь <literal>Components</literal> буюу
бүрэлдэхүүн хэсгүүдийн жагсаалт бүрэн гэж тооцох бөгөөд жагсаалтаас гадна өөрчлөлт
хийхийг оролдохгүй. <command>freebsd-update</command> нь
<literal>Components</literal>-ийн жагсаалтад хамаарах файл
бүрийг шинэчлэхийг оролдох болно.</para>
</sect2>
<sect2>
<title>Аюулгүй байдлын засварууд</title>
<para>Аюулгүй байдлын засварууд нь алсын машин дээр хадгалагддаг
бөгөөд дараах тушаал ашиглан татан авч суулгаж болно:</para>
<screen>&prompt.root; <userinput>freebsd-update fetch</userinput>
&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para>Хэрэв цөмийн ямар нэг засвар хийгдсэн бол системийг дахин
ачаалах хэрэгтэй. Хэрэв бүгд зөв явагдсан бол систем нь засвар хийгдсэн
байх ёстой бөгөөд <command>freebsd-update</command>-ийг
&man.cron.8; ажлаас шөнө бүр ажиллуулж болно. Энэ ажлыг хийхэд
дараах мөрийг <filename>/etc/crontab</filename>-д хийхэд
хангалттай байх болно:</para>
<programlisting>@daily root freebsd-update cron</programlisting>
<para>Энэ мөр нь өдөр бүр <command>freebsd-update</command>-г
ажиллуулахыг зааж байна. Ийм аргаар <option>cron</option>-ий нэмэлт
өгөгдлийг ашиглан <command>freebsd-update</command> нь зөвхөн
шинэчлэлт байгаа эсэхийг шалгах болно. Хэрэв засварууд байвал тэдгээрийг
автоматаар диск рүү татаж авах бөгөөд гэхдээ засваруудыг хийхгүй.
<username>root</username> хэрэглэгч рүү захиа илгээгдэх бөгөөд
дараа нь тэд гараар суулгаж болох юм.</para>
<para>Хэрэв ямар нэг зүйл буруу болбол <command>freebsd-update</command> нь
дараах тушаалаар сүүлийн өөрчлөлтүүдийг буцаах чадвартай байдаг:</para>
<screen>&prompt.root; <userinput>freebsd-update rollback</userinput></screen>
<para>Дууссаны дараа цөм эсвэл цөмийн модулиуд өөрчлөгдсөн бол
системийг дахин эхлүүлэх хэрэгтэй. Энэ нь шинэ хоёртын файлуудыг санах
ой руу дуудах боломжийг &os;-д олгоно.</para>
<note>
<para><command>freebsd-update</command> тушаал нь зөвхөн
<filename>GENERIC</filename> цөмтэй ажилладаг. Хэрэв ямар нэг
өөрчлөлт <filename>GENERIC</filename>-д хийгдсэн эсвэл өөрчлөн
тохируулсан цөм суулгагдсан бол <command>freebsd-update</command>
эхний тохиолдолд амжилтгүй болж сүүлийн тохиолдолд алдаа гаргах болно.</para>
</note>
</sect2>
<sect2>
<title>Major ба Minor буюу Том ба Бага шинэчлэлтүүд</title>
<para>Энэ процесс нь ихэнх гуравдагч талын прорамуудыг эвдэх
хуучин обьект файлууд болон сангуудыг устгах болно.
Бүх суулгагдсан портуудыг устгаж дахин суулгах эсвэл
<filename role="package">ports-mgmt/portupgrade</filename>
хэрэгсэл ашиглан сүүлд нь шинэчлэхийг зөвлөдөг. Дараах тушаалыг
ашиглан ихэнх хэрэглэгчид тест бүтээлтийг ажиллуулахыг хүснэ:</para>
<screen>&prompt.root; <userinput>portupgrade -af</userinput></screen>
<para>Энэ нь бүгдийг зөв дахин суулгах баталгаа болох юм.
<makevar>BATCH</makevar> орчны хувьсагчийг <literal>yes</literal>
гэж тохируулснаар энэ процессийн явцад гарч ирэх хүлээх мөрөнд
<literal>yes</literal> гэж хариулан бүтээх процессийн
үед оролцох шаардлагыг үгүй болгоно.</para>
<para>Том ба бага хувилбарын шинэчлэлтүүдийг
<command>freebsd-update</command> тушаалд хувилбарын дугаарыг өгч
гүйцэтгэж болно, жишээ нь дараах тушаал &os;&nbsp;6.3 руу
шинэчилнэ:</para>
<screen>&prompt.root; <userinput>freebsd-update -r 6.3-RELEASE upgrade</userinput></screen>
<para>Тушаал хүлээн авсны дараа <command>freebsd-update</command>
системийг шинэчлэхэд шаардлагатай мэдээллийг цуглуулахын тулд
тохиргооны файл болон одоогийн системийг шалгана. Ямар бүрэлдэхүүн
хэсгүүд илрүүлэгдсэн болон ямар бүрэлдэхүүн хэсгүүд илрүүлэгдээгүй
гэдгийг дэлгэц дээр үзүүлнэ. Жишээ нь:</para>
<screen>Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 6.3-BETA1 from update1.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/base world/info world/lib32 world/manpages
The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs
Does this look reasonable (y/n)? y</screen>
<para>Энд хүрэхэд <command>freebsd-update</command> шинэчлэлтэд
шаардлагатай бүх файлуудыг татан авахаар оролдох болно. Зарим
тохиолдолд хэрэглэгчээс юу суулгах эсвэл хэрхэн цааш үргэлжлүүлэх
талаар асуултууд асууж болох юм.</para>
<para>Бүх засварууд локал систем рүү татагдсаны дараа тэдгээрийг
хийж өгөх болно. Машины хурд болон ачааллаас хамаарч энэ процесс нь
хугацаа шаардаж болох юм. Тохиргооны файлуудыг нийлүүлэх болно.
Файл нийлүүлэгдэх юм уу эсвэл гараар нийлүүлэхэд зориулж засварлагч
дэлгэц дээр гарч ирч болох учир процессийн энэ хэсэг хэрэглэгчийн
оролцоо шаардана. Амжилттай нийлүүлэлт болгоны үр дүн хэрэглэгчид
харуулагдаж процесс үргэлжлэх болно. Амжилтгүй болсон эсвэл орхигдсон
нийлүүлэлт нь процессийг зогсоох болно. Хэрэглэгчид нь
<filename class="directory">/etc</filename> сангийн нөөцийг
хийж <filename>master.passwd</filename> эсвэл
<filename>group</filename> зэрэг чухал файлуудыг гараар сүүлд нь
нийлүүлэхийг хүсэж болох юм.</para>
<note>
<para>Систем нь өөрчлөгдөөгүй байгаа бөгөөд бүх засвар оруулалт
болон нийлүүлэлт өөр сан дотор болж байгаа болно. Бүх засварууд
амжилттай хийгдэж бүх тохиргооны файлууд нийлүүлэгдэж процесс
тэгш явагдаж байгаа мэт санагдвал хэрэглэгч өөрчлөлтүүдийг хийх
хэрэгтэй.</para>
</note>
<para>Энэ процесс дууссаны дараа шинэчлэлтийг дараах тушаалыг ашиглан
диск рүү хийж болно.</para>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para>Цөм болон цөмийн модулиудад эхлээд засвар хийнэ. Энэ үед
машиныг дахих ачаалах ёстой. Шинэ цөм санах ойд дуудагдсан
байхын тулд дараах тушаалыг ажиллуулж машиныг дахин эхлүүлнэ:</para>
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
<para>Систем буцаж ассаны дараа <command>freebsd-update</command>-г
дахин эхлүүлэх хэрэгтэй. Процессийн төлөв хадгалагдсан болохоор
<command>freebsd-update</command> эхнээсээ эхлэхгүй бөгөөд бүх
хуучин хуваалцсан сангууд болон обьект файлуудыг устгах болно.
Энэ шатыг үргэлжлүүлэхийн тулд дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<note>
<para>Сангуудын хувилбарын тоо дээшилсэн эсэхээс хамаарч
суулгах гурван шатны оронд хоёр шат байж болох юм.</para>
</note>
<para>Бүх гуравдагч талын програм хангамжийг дахин бүтээж дахин суулгах
хэрэгтэй. Суулгагдсан програм хангамж нь шинэчлэлтийн процессийн явцад
устгагдсан сангуудаас хамаарч болох учраас энэ нь шаардлагатай юм.
<filename role="package">ports-mgmt/portupgrade</filename> тушаалыг
үүнийг автоматжуулахад ашиглаж болох юм. Энэ процессийг эхлүүлэхийн
тулд дараах тушаалыг хэрэглэж болно:</para>
<screen>&prompt.root; <userinput>portupgrade -f ruby</userinput>
&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db</userinput>
&prompt.root; <userinput>portupgrade -f ruby18-bdb</userinput>
&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db</userinput>
&prompt.root; <userinput>portupgrade -af</userinput></screen>
<para>Энэ нь дууссан бөгөөд шинэчлэлтийн процессийг
<command>freebsd-update</command>-ийг сүүлийн удаа дуудаж
төгсгөнө. Шинэчлэлтийн процессийн сул байгаа бүх зүйлсийг гүйцээхийн
тулд дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para>Машинаа &os;-ийн шинэ хувилбар руу дахин ачаалах хэрэгтэй.
Процесс дууслаа.</para>
</sect2>
<sect2>
<title>Системийн төлвийн харьцуулалт</title>
<para><command>freebsd-update</command> хэрэгслийг
&os;-ийн суулгагдсан хувилбарын төлвийг байгаа зөв хуулбарын
эсрэг тест хийхэд хэрэглэж болно. Энэ сонголт нь системийн хэрэгслүүд
сангууд болон тохиргооны файлуудын одоогийн хувилбаруудыг шалгадаг.
Харьцуулалтыг эхлүүлэхийн тулд дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>freebsd-update IDS &gt;&gt; outfile.ids</userinput></screen>
<warning>
<para>Тушаалын нэр <acronym>IDS</acronym> боловч энэ нь
ямар тохиолдолд <filename role="package">security/snort</filename> зэрэг
халдлага илрүүлэгч системийг солих зориулалттай биш юм.
<command>freebsd-update</command> нь өгөгдлийг диск дээр
хадгалдаг бөгөөд түүнийг өөрчлөх боломж тодорхой юм.
<varname>kern.securelevel</varname> тохиргоог ашиглах болон
<command>freebsd-update</command>-ийн өгөгдлийг зөвхөн уншигдах файлын
систем дээр ашиглагдаагүй тохиолдолд хадгалах нь энэ боломжийг
багасгах боловч илүү сайн шийдэл нь системийг <acronym>DVD</acronym> эсвэл
нууцлаг хадгалсан гадаад <acronym>USB</acronym> дискийн төхөөрөмж зэрэг
нууцлаг дисктэй харьцуулах явдал юм.</para>
</warning>
<para>Систем нь одоо шалгагдах бөгөөд файлууд нь өөрсдийн
&man.sha256.1; утгуудын хамт, хувилбар дахь мэдэгдэж байгаа сайн утгууд болон
одоо суугдсан байгаа утгууд зэрэг харьцуулагдан шалгагдана.
Энэ нь яагаад гаралт <filename>outfile.ids</filename> файл руу
илгээгдсэн шалтгаан юм. Үүнийг нүдээр шалгахад хэтэрхий хурдан дээш
гүйж удалгүй консолын буфферийг дүүргэх болно.</para>
<para>Эдгээр мөрүүд нь бас хэтэрхий урт боловч гаралтын хэлбэрийг
хялбараар задлан ялгаж болно. Жишээ нь хувилбарт байгаагаас ондоо
бүх файлуудын жагсаалтыг авахын тулд дараах тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>cat update.ids | awk '{ print $1 }' | more</userinput>
/etc/master.passwd
/etc/motd
/etc/passwd
/etc/pf.conf</screen>
<para>Энэ гаралт нь тайрагдсан бөгөөд олон файл байгаа болно.
Эдгээр файлуудын зарим нь төрөлхийн өөрчлөлтүүдтэй байна, жишээ нь
<filename>/etc/passwd</filename> нь хэрэглэгч системд нэмэгдсэн
болохоор өөрчлөгдсөн байна. Зарим тохиолдолд
<command>freebsd-update</command> нь шинэчилсэн байж болзошгүй учир
цөмийн модулиуд зэрэг бусад файлууд өөр байж болох юм.
Тусгай файлууд болон сангуудыг хасахын тулд тэдгээрийг
<filename>/etc/freebsd-update.conf</filename> файлын
<literal>IDSIgnorePaths</literal> тохиргоонд нэмж өгнө.</para>
<para>Өмнө хэлэлцсэн хувилбараас гадна нарийн нягт шинэчлэлтийн аргын
хэсэг болгон энэ системийг ашиглаж болно.</para>
</sect2>
</sect1>
<sect1 id="updating-portsnap">
<title>Portsnap: Портын цуглуулгын шинэчлэх хэрэгсэл</title>
<para>&os;-ийн үндсэн систем портын цуглуулгыг бас шинэчилдэг
&man.portsnap.8; хэрэгслийг агуулдаг. Ажиллуулсны дараа энэ нь
алсын сайт руу холбогдож нууц түлхүүрийг шалгаж портын цуглуулгын шинэ
хуулбарыг татан авдаг. Түлхүүр нь бүх татаж авсан файлууд татагдаж байхдаа
өөрчлөгдөөгүй эсэхийг хянан бүрэн бүтэн байдлыг шалгахад ашиглагддаг.
Хамгийн сүүлийн үеийн портын цуглуулгыг татаж авахын тулд дараах
тушаалыг ажиллуулна:</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput>
Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
Fetching snapshot tag from portsnap1.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
Applying patches... done.
Fetching 133 new ports or files... done.</screen>
<para>Энэ жишээ нь юу үзүүлж байна вэ гэхээр &man.portsnap.8;
одоо байгаа портын өгөгдөлд хэд хэдэн засварууд байгааг олж шалгаж байна.
Энэ нь бас уг хэрэгсэл өмнө нь ажилласныг харуулж байгаа бөгөөд
хэрэв эхний удаа ажилласан бол цуглуулга татагдан авагдах байсан
юм.</para>
<para>&man.portsnap.8; нь <command>fetch</command> үйлдлийг хийж
дууссаны дараа локал систем дээр байгаа портын цуглуулга болон дараа дараагийн
засваруудыг шалгалтад дамжуулна. Шинэчлэгдсэн файлуудыг дараахийг
бичиж суулгаж болно:</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput>
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/GIDs
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
/usr/ports/Mk/bsd.autotools.mk
/usr/ports/Mk/bsd.cmake.mk
<replaceable>...</replaceable></screen>
<para>Процесс одоо дууссан бөгөөд портын цуглуулыг ашиглан
програмуудыг суулгаж эсвэл шинэчилж болно.</para>
</sect1>
</chapter>