FreeBSD гарын авлага
Өмнөх | Бүлэг 31. Сүлжээний нэмэлт ойлголтууд | Дараах

# 31.7. Дискгүй ажиллагаа

Шинэчилсэн Жан-Франсуа Докье. Дахин зохион байгуулж өргөтгөсөн Алекс Дюпре.

FreeBSD машин сүлжээгээр ачаалан локал дискгүйгээр NFS сервер дээр холбогдсон файлын системүүд ашиглаад ажиллаж чаддаг. Стандарт тохиргооны файлуудаас өөр системийн өөрчлөлт шаардлагагүй. Ийм системийг харьцангуй хялбараар тохируулж болдог. Учир нь шаардлагатай бүх элементүүд бэлэн байдаг:

- Цөмийг сүлжээгээр ачаалах хоёр боломжит арга хамгийн багаар бодоход байдаг:

  - PXE: Intel�-ийн Preboot eXecution Environment буюу ачаалалт хийгдэхээс өмнөх ажиллуулах орчны систем нь зарим сүлжээний картууд эсвэл эх хавтангуудад цуг бүтээгдсэн байдаг ухаалаг ачаалах ROM-ийн нэг хэлбэр юм. Илүү дэлгэрэнгүйг pxeboot(8)-с үзнэ үү.

  - Etherboot порт (`net/etherboot`) нь цөмийг сүлжээгээр ачаалах ROM хийгдэх боломжтой код үүсгэдэг. Код нь сүлжээний картан дээр ачаалах ROM уруу шарагдсан байх юм уу эсвэл локал уян (эсвэл хатуу) дискний хөтчөөс эсвэл ажиллаж байгаа MS-DOS� системээс дуудагдахаар байдаг. Олон сүлжээний карт дэмжигдсэн байгаа.

- Жишээ скрипт (`/usr/share/examples/diskless/clone_root`) нь сервер дээр ажлын станцын root файлын системийг үүсгэх болон түүний ажиллагааг хангах үйлдлийг хөнгөвчилдөг. Скрипт нь магадгүй жижиг өөрчлөлтийг шаардаж болох боловч энэ нь таныг хурдан эхлүүлэх болно.

- Дискгүй системийн эхлүүлэлтийг илрүүлж дэмжих стандарт системийн эхлүүлэгч файлууд `/etc` санд байдаг.

- swap хийх хэрэв шаардлагатай бол NFS файл эсвэл локал диск уруу хийж болох юм.

Дискгүй ажлын станцуудыг тохируулах олон арга байдаг. Олон элементүүд үүнд хамрагддаг бөгөөд өөрийн сонирхлоор ихэнхийг нь өөрчилж болно. Дараах нь бүрэн системийг тохируулах талаар хувилбаруудыг тайлбарлах болно. Ингэхдээ стандарт FreeBSD эхлүүлэх скриптүүдтэй хялбар, нийцтэй байхыг чухалчлах болно. Тайлбарласан систем нь дараах шинжүүдтэй байна:

- Дискгүй ажлын станцууд нь хуваалцсан, зөвхөн уншигдах `/` файлын систем болон хуваалцсан, зөвхөн уншигдах `/usr`-г ашигладаг.

  root файлын систем нь зөвхөн дискгүй ажиллагаатай холбоотой эсвэл тэдгээрийн харьяалагдах ажлын станцтай холбоотой зарим тохиргооны файлууд нь өөрчлөгдсөн стандарт FreeBSD root-ийн (ихэвчлэн серверийн) хуулбар юм.

  Бичигдэх боломжтой байх root-ийн хэсэг нь md(4) файлын системээр дээр тавигддаг (overlaid). Систем дахин ачаалахад хийгдсэн өөрчлөлтүүд алга болох болно.

- Цөм дамжуулагдаж Etherboot эсвэл PXE-ийн аль нэгээр дуудагддаг бөгөөд зарим тохиолдолд зөвхөн аль нэг аргыг ашиглахыг шаардаж болох юм.

> Анхааруулга: Тайлбарласны дагуу энэ систем нь аюултай юм. Энэ нь сүлжээний хамгаалагдсан талбарт байх ёстой бөгөөд бусад хостуудаас хандахааргүй байх ёстой.

Энэ хэсгийн бүх мэдээллийг FreeBSD 5.2.1-RELEASE ашиглан тест хийсэн болно.

## 31.7.1. Үндсэн мэдээлэл

Дискгүй ажлын станцуудыг тохируулах нь харьцангуй амархан боловч алдаанд өртөх хандлагатай байдаг. Хэд хэдэн шалтгаанаас болоод эдгээрийг заримдаа оношлох төвөгтэй байдаг. Жишээ нь:

- Эмхэтгэлтийн үеийн тохируулгууд нь ажиллах үед өөрөөр ажиллахыг тодорхойлж болох юм.

- Алдааны мэдэгдлүүд нь ихэвчлэн нуугдмал эсвэл бүр байхгүй ч байж болно.

Энд гарч болзошгүй асуудлуудыг шийдэхэд үндсэн арга замуудын зарим нэг мэдлэгийг ашиглах нь маш ашигтай байдаг.

Амжилттайгаар эхлүүлэхийн тулд хэд хэдэн үйлдлүүдийг хийх хэрэгтэй:

- Машин өөрийн IP хаяг, ажиллах файлын нэр, серверийн нэр, root зам зэрэг эхний параметрүүдийг авах хэрэгтэй. Үүнийг DHCP эсвэл BOOTP протоколуудыг ашиглан хийдэг. DHCP нь BOOTP-ийн нийцтэй өргөтгөл бөгөөд адил портын дугаарууд болон үндсэн пакетийн хэлбэршүүлэлтийг ашигладаг.

  Зөвхөн BOOTP ашиглахаар системийг тохируулах боломжтой. bootpd(8) серверийн програм нь үндсэн FreeBSD системд орсон байдаг.

  Гэхдээ DHCP нь BOOTP-ээс хэд хэдэн давуу талтай байдаг (илүү сайхан тохиргооны файлууд, PXE ашиглах боломж, дискгүй ажиллагаатай шууд холбоогүй бусад олон давуу талууд) бөгөөд бид голчлон DHCP тохиргоог боломжтой бол bootpd(8) ашиглан таарах жишээнүүдтэй нь хамт тайлбарлах болно. Жишээ тохиргоо нь ISC DHCP програм хангамжийн багцыг (тест сервер дээр 3.0.1.r12 хувилбар суулгагдсан) ашиглах болно.

- Машин нь нэг буюу хэд хэдэн програмуудыг локал санах ой уруугаа дамжуулах хэрэгтэй болно. TFTP юм уу эсвэл NFS ашиглагдана. TFTP болон NFS-ийн сонголтыг хэд хэдэн газар эмхэтгэх үеийн тохируулгаар хийдэг. Алдааны түгээмэл эх үүсвэр нь буруу протоколд зориулж файлын нэрүүдийг заах явдал юм: TFTP нь сервер дээрх ганц сангаас бүх файлуудыг ихэвчлэн дамжуулдаг бөгөөд энэ сантай харьцангуй файлын нэрсийг хүлээдэг. NFS-д файлын туйлын (абсолют) замууд хэрэгтэй байдаг.

- Боломжит дундын эхлүүлэх програмууд болон цөм нь эхлэн тохируулагдаж ажиллах шаардлагатай. Энд хэд хэдэн чухал хувилбарууд байдаг:

  - PXE нь FreeBSD-ийн гурав дахь шатны дуудагчийн өөрчлөгдсөн хувилбар болох pxeboot(8)-ийг ачаална. pxeboot(8) нь системийг эхлүүлэхэд шаардлагатай ихэнх параметрүүдийг авч хяналтыг дамжуулахаасаа өмнө тэдгээрийг цөмийн орчинд үлдээх болно. Энэ тохиолдолд `GENERIC` цөмийг ашиглах боломжтой.

  - Etherboot нь бага бэлтгэлтэйгээр цөмийг шууд ачаалах болно. Та цөмийг тусгай тохируулгуудтай бүтээх хэрэгтэй болно.

  PXE болон Etherboot нь адилхан ажиллана; гэхдээ цөмүүд нь loader(8)-ийн тэдэнд зориулж илүү ажил хийх боломжийг олгодог болохоор PXE нь зохимжтой арга юм.

  Хэрэв таны BIOS болон сүлжээний картууд нь PXE-г дэмждэг бол та үүнийг ашиглах хэрэгтэй байж болох юм.

- Эцэст нь машин өөрийн файлын системүүдэд хандах хэрэгтэй болно. NFS нь бүх тохиолдолд хэрэглэгдэнэ.

diskless(8) гарын авлагын хуудсыг бас үзнэ үү.

## 31.7.2. Тохируулах зааврууд

### 31.7.2.1. ISC DHCP ашиглах тохиргоо

ISC DHCP сервер BOOTP болон DHCP хүсэлтүүдэд хариулж чаддаг.

ISC DHCP 3.1 нь үндсэн системийн хэсэг биш юм. Та эхлээд `net/isc-dhcp31-server` порт юм уу эсвэл тохирох багцыг суулгах хэрэгтэй.

ISC DHCP суулгагдсаны дараа ажиллахын тулд тохиргооны файл хэрэгтэй болно (ихэвчлэн `/usr/local/etc/dhcpd.conf` гэж нэрлэгддэг). Доор `margaux` хост Etherboot-ийг ашигласан ба `corbieres` хост PXE-г ашиглаж байгаа тайлбар хийгдсэн жишээ байна:

    default-lease-time 600;
    max-lease-time 7200;
    authoritative;

    option domain-name "example.com";
    option domain-name-servers 192.168.4.1;
    option routers 192.168.4.1;

    subnet 192.168.4.0 netmask 255.255.255.0 {
      use-host-decl-names on;
      option subnet-mask 255.255.255.0;
      option broadcast-address 192.168.4.255;

      host margaux {
        hardware ethernet 01:23:45:67:89:ab;
        fixed-address margaux.example.com;
        next-server 192.168.4.4;
        filename "/data/misc/kernel.diskless";
        option root-path "192.168.4.4:/data/misc/diskless";
      }
      host corbieres {
        hardware ethernet 00:02:b3:27:62:df;
        fixed-address corbieres.example.com;
        next-server 192.168.4.4;
        filename "pxeboot";
        option root-path "192.168.4.4:/data/misc/diskless";
      }
    }

  Энэ тохируулга нь `host` зарлалтууд дахь утгыг дискгүй хостын хувьд хостын нэр болгон илгээхийг dhcpd-д хэлнэ. Өөр нэг арга нь `option host-name `margaux`` мөрийг `host` зарлалтуудын дотор нэмэх явдал юм.
  `next-server` тохируулга нь дуудагч эсвэл цөмийн файлыг дуудахад зориулж TFTP эсвэл NFS серверийг ашиглахыг зааж өгнө (анхдагчаар DHCP сервер байгаа хостыг ашиглана).
  `filename` тохируулга нь Etherboot эсвэл PXE-ийн дараагийн ажиллуулах алхамд дуудах файлыг тодорхойлно. Үүнийг ашиглах дамжуулалтын аргын дагуу заасан байх ёстой. Etherboot-ийг NFS эсвэл TFTP ашиглахаар эмхэтгэж болно. FreeBSD порт нь NFS-ийг анхдагчаар тохируулдаг. PXE нь TFTP-г ашигладаг. Энд яагаад харьцангуй файлын нэр хэрэглэгддэгийн учир нь тэр юм (энэ нь TFTP серверийн тохиргооноос хамаарах боловч ерөнхийдөө нэлээн энгийн байх болно). PXE нь цөмийг биш бас `pxeboot`-г дууддаг. FreeBSD CD-ROM `/boot` сангаас `pxeboot`-ийг дуудах зэрэг бусад сонирхолтой боломжууд байдаг (pxeboot(8) нь `GENERIC` цөмийг ачаалж чаддаг бөгөөд энэ нь алсын CD-ROM-с ачаалахын тулд PXE-г ашиглах боломжтой болгодог юм).
  `root-path` тохируулга нь root файлын систем хүрэх замыг энгийн NFS бичлэгээр тодорхойлдог. PXE ашиглаж байгаа үед цөмийн тохиргоо BOOTP-г идэвхжүүлээгүй байхад хостын IP-г орхигдуулах боломжтой байдаг. NFS сервер дараа нь TFTP сервертэй адил болох болно.

### 31.7.2.2. BOOTP ашиглах тохиргоо

Энд bootpd-ийн адил тохиргоо (нэг клиент болгож багасгасан) байна. Үүнийг `/etc/bootptab` файлаас олж болно.

BOOTP-г ашиглахын тулд Etherboot-ийг анхдагч биш тохируулга `NO_DHCP_SUPPORT`-тойгоор эмхэтгэх ёстой бөгөөд PXE-д DHCP хэрэгтэй гэдгийг санаарай. bootpd-ийн цорын ганц илэрхий давуу тал бол үндсэн системд орсон байдаг явдал юм.

    .def100:\
      :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
      :sm=255.255.255.0:\
      :ds=192.168.4.1:\
      :gw=192.168.4.1:\
      :hd="/tftpboot":\
      :bf="/kernel.diskless":\
      :rp="192.168.4.4:/data/misc/diskless":

    margaux:ha=0123456789ab:tc=.def100

### 31.7.2.3. Ачаалах програмыг Etherboot-ээр бэлдэх

Etherboot-ийн вэб сайт нь Линукс системд голчлон зориулагдсан боловч ашигтай мэдээлэл агуулсан өргөтгөсөн баримтыг агуулдаг. Дараах нь FreeBSD систем дээр Etherboot-г хэрхэн ашиглах талаар тайлбарлах болно.

Та эхлээд `net/etherboot` багц юм уу эсвэл портыг суулгах ёстой.

Etherboot-ийн тохиргоог Etherboot-ийн эх байгаа сан дахь `Config` файлыг засварлаж (өөрөөр хэлбэл NFS-ийн оронд TFTP-г ашиглахын тулд) өөрчилж болно.

Бидний тохиргооны хувьд бид ачаалах уян дискийг ашиглах болно. Бусад аргуудын хувьд (PROM, эсвэл MS-DOS програм) Etherboot-ийн баримтаас лавлана уу.

Ачаалах уян дискийг хийхийн тулд Etherboot суулгасан машин дээрх хөтөч уруугаа уян дискээ хийгээд Etherboot мод дахь `src` сан уруу болгож одоогийн сангаа солиод доор дурдсан тушаалыг бичнэ:

    # gmake bin32/devicetype.fd0

`devicetype` нь дискгүй ажлын станц дахь Ethernet картын төрлөөс хамаарна. Зөв `devicetype` буюу төхөөрөмжийн төрлийг тодорхойлохын тулд тэр сан дахь `NIC` файлд хандана.

### 31.7.2.4. PXE-ээр ачаалах

Анхдагчаар pxeboot(8) дуудагч нь NFS-ээр цөмийг дууддаг. `/etc/make.conf` файлд `LOADER_TFTP_SUPPORT` тохируулга заахын оронд TFTP-г ашиглахаар эмхэтгэгдэж болно. Заавруудын талаар `/usr/share/examples/etc/make.conf` файл дахь тайлбаруудыг үзнэ үү.

Цуваа консол дискгүй машин тохируулахад ашигтай байж болох `make.conf` файлын өөр хоёр тохируулга байдаг: эдгээр нь `BOOT_PXELDR_PROBE_KEYBOARD`, болон `BOOT_PXELDR_ALWAYS_SERIAL` юм.

Машин эхлэхэд PXE-г ашиглахын тулд та өөрийн BIOS-ийн тохируулгаас `Boot from network` буюу `Сүлжээнээс ачаалах` сонголтыг сонгох юм уу эсвэл PC-г эхлүүлж байх үед функцийн товчлуурыг дарах хэрэгтэй.

### 31.7.2.5. TFTP болон NFS серверүүдийг тохируулах

Хэрэв та TFTP ашиглахаар тохируулсан PXE юм уу эсвэл Etherboot-г ашиглаж байгаа бол файл сервер дээрээ tftpd-г идэвхжүүлэх хэрэгтэй:

1. tftpd-д зориулж файлууд байх сан үүсгэнэ, өөрөөр хэлбэл `/tftpboot`.

2. Энэ мөрийг өөрийн `/etc/inetd.conf` файлд нэмнэ:

       tftp   dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot

   > Тэмдэглэл: Зарим нэгэн PXE хувилбарууд нь TFTP-ийн TCP хувилбарыг хүсдэг байна. Энэ тохиолдолд `dgram udp` мөрийг `stream tcp` болгон сольж хоёр дахь мөрийг нэмнэ.

3. inetd-д өөрийн тохиргооны файлаа дахин уншихыг хэлээрэй. Энэ тушаалыг зөв ажиллуулахын тулд `/etc/rc.conf` файлд `inetd_enable="YES"` тохируулга заагдсан байх ёстой:

       # /etc/rc.d/inetd restart

Та `tftpboot` санг серверийнхээ хаана ч байрлуулж болно. `inetd.conf` болон `dhcpd.conf` файлууд дээрээ байрлалаа заасан эсэхээ шалгаарай.

Аль ч тохиолдолд та бас NFS-ээ идэвхжүүлж NFS сервер дээрээ тохирох файлын системээ экспорт хийх хэрэгтэй юм.

1. Үүнийг `/etc/rc.conf`-д нэмнэ:

       nfs_server_enable="YES"

2. Доор дурдсаныг `/etc/exports` файл уруу нэмж дискгүй root сан байгаа файлын системээ экспорт хийнэ (эзлэхүүний холбох цэгийг тааруулж `margaux corbieres` гэснийг дискгүй ажлын станцуудын нэрсээр солих хэрэгтэй):

       /data/misc -alldirs -ro margaux corbieres

3. mountd-д өөрийн тохиргооны файлаа дахин уншихыг хэлнэ. Хэрэв та эхний шатандаа NFS-г `/etc/rc.conf` файлд идэвхжүүлэх хэрэгтэй болсон бол харин дахин ачаалахыг хүсэж болох юм.

       # /etc/rc.d/mountd restart

### 31.7.2.6. Дискгүй цөмийг бүтээх

Хэрэв Etherboot-г ашиглаж байгаа бол дискгүй клиентдээ зориулж дараах тохируулгуудтайгаар (ердийн тохируулгуудын хамтаар) цөмийн тохиргооны файл үүсгэх хэрэгтэй:

    options     BOOTP          # Use BOOTP to obtain IP address/hostname
    options     BOOTP_NFSROOT  # NFS mount root file system using BOOTP info

Та бас `BOOTP_NFSV3`, `BOOT_COMPAT` болон `BOOTP_WIRED_TO` (`NOTES` файлаас лавлана уу) тохируулгуудыг ашиглахыг хүсэж болох юм.

Эдгээр тохируулгуудын нэрс нь уламжлалт бөгөөд тэдгээр нь яг үнэндээ DHCP болон BOOTP-ийн өөр хэрэглээг цөм дотор идэвхжүүлдэг болохоор нэлээн төөрөгдөлд хүргэж болох юм (зөвхөн BOOTP эсвэл DHCP-ийн хэрэглээг ашиглахаар болгох бас боломжтой байдаг).

Цөмийг бүтээж (Бүлэг 8-г үзнэ үү), `dhcpd.conf` файлд заасан байрлал уруу хуулах хэрэгтэй.

> Тэмдэглэл: PXE-г ашиглаж байгаа үед дээрх тохируулгуудтайгаар цөмийг бүтээх нь заавал шаардлагагүй (хэдийгээр зөвлөдөг боловч). Тэдгээрийг идэвхжүүлэх нь цөмийг эхлүүлэх явцад илүү олон DHCP хүсэлтүүдийг үүсгэж шинэ утгууд болон зарим тусгай тохиолдлуудад pxeboot(8)-ийн авсан утгуудын хооронд нийцэмжгүй байдлын жижиг эрсдэл гаргахад хүргэдэг. Тэдгээрийг ашиглахын давуу тал нь буруу нөлөөллөөс болоод хостын нэр тохируулагддаг явдал юм. Үгүй бол та хостын нэрийг өөр аргаар, жишээ нь клиентэд тусгайлан зориулсан `rc.conf` файлд тохируулах хэрэгтэй болно.

> Тэмдэглэл: Etherboot-ээр дуудагдах боломжтой байхын тулд цөмд төхөөрөмжийн бяцхан зааврууд эмхэтгэгдсэн байх хэрэгтэй байдаг. Ингэхдээ та дараах тохируулгыг тохиргооны файлдаа тохируулах болно (`NOTES` тохиргооны тайлбаруудын файлыг үзнэ үү):

>     hints          "GENERIC.hints"

### 31.7.2.7. Root файлын системийг бэлдэх

Дискгүй ажлын станцад зориулж `dhcpd.conf` файлд `root-path` гэж жагсаагдсан байрлалд root файлын системийг та үүсгэх хэрэгтэй.

#### 31.7.2.7.1. root-ийг суурьшуулахын тулд `make world` тушаал ашиглах

Энэ арга нь хурдан байх бөгөөд бүрэн онгон системийг (зөвхөн root файлын систем биш) `DESTDIR` уруу суулгах болно. Та дараах скриптийг л ердөө ажиллуулах хэрэгтэй болно:

    #!/bin/sh
    export DESTDIR=/data/misc/diskless
    mkdir -p ${DESTDIR}
    cd /usr/src; make buildworld && make buildkernel
    make installworld && make installkernel
    cd /usr/src/etc; make distribution

Үүнийг хийсний дараа танд өөрийнхөө хэрэгцээний дагуу `DESTDIR`-д байрлуулагдсан өөрийн `/etc/rc.conf` болон `/etc/fstab` файлуудаа өөрчлөн тохируулах шаардлага гарч болох юм.

### 31.7.2.8. Swap-ийг тохируулах

Шаардлагатай бол сервер дээр байрласан swap файлд NFS-ээр хандаж болно.

#### 31.7.2.8.1. NFS Swap

Цөм нь ачаалах үед NFS swap-ийг идэвхжүүлэхийг дэмждэггүй. Бичигдэх файлын системийг холбож swap файлыг үүсгэн идэвхжүүлэх замаар эхлүүлэх скриптүүдээр swap нь идэвхжүүлэгдэх ёстой. Зохих хэмжээ бүхий swap файлыг үүсгэхдээ та ингэж хийж болно:

    # dd if=/dev/zero of=/path/to/swapfile bs=1k count=1 oseek=100000

Үүнийг идэвхжүүлэхийн тулд та дараах мөрийг өөрийн `rc.conf` файлд нэмэх хэрэгтэй:

    swapfile=/path/to/swapfile

### 31.7.2.9. Бусад асуудлууд

#### 31.7.2.9.1. Зөвхөн уншигдах `/usr` сантайгаар ажиллах

Хэрэв дискгүй ажлын станц нь X-ийг ажиллуулахаар тохируулагдсан бол анхдагчаар `/usr`-т алдааны бүртгэлийг хийдэг XDM тохиргооны файлыг та тааруулах хэрэгтэй болно.

#### 31.7.2.9.2. FreeBSD биш сервер ашиглах

root файлын системд зориулсан сервер нь FreeBSD-г ажиллуулаагүй бол та FreeBSD машин дээр root файлын систем үүсгээд хэрэгтэй байрлал уруу нь `tar` эсвэл `cpio` тушаал ашиглан хуулах хэрэгтэй болно.

Энэ тохиолдолд бүхэл тооны их/бага (major/minor) хэмжээнүүдийн ялгаанаас болоод `/dev` дахь тусгай файлуудад заримдаа асуудал гардаг. Энэ асуудлын шийдэл нь FreeBSD биш серверээс уг санг экспорт хийж энэ сангаа FreeBSD машин дээр холбон хэрэглэгчийн хувьд төхөөрөмжийн цэгүүдийг харагдахгүйгээр (transparently) хуваарилахын тулд devfs(5)-ийг ашиглах явдал юм.

Өмнөх | Эхлэл | Дараах
Холбоос нэгтгэлт ба ослыг тойрон гарах (Link Aggregation and Failover) | Дээш | NFS root файлын систем ашиглан PXE ачаалалт хийх

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.