FreeBSD гарын авлага
Өмнөх | Бүлэг 22. Vinum Эзлэхүүн Менежер | Дараах

# 22.9. Root файлын системийн хувьд Vinum-ийг ашиглах нь

Vinum ашиглан бүрэн толин тусгал хийгдсэн файлын системүүд бүхий машины хувьд root файлын системийг бас толин тусгал хийх нь зүйтэй. Ингэж тохируулах нь дурын файлын системийг толин тусгал хийхээс амаргүй юм, учир нь:

- root файлын систем нь ачаалах процессийн нэлээн эхэн үед бэлэн байж байх шаардлагатай учраас Vinum дэд бүтэц нь энэ үед аль хэдийн бэлэн болсон байх шаардлагатай.

- root файлын системийг агуулсан эзлэхүүн нь бас системийг эхлүүлэх код болон цөмийг агуулдаг бөгөөд цөм нь хост системийн эх хэрэгслүүд (өөрөөр хэлбэл PC ангиллын машинууд дээр BIOS) ашиглан уншигдах ёстой. Эдгээр хост системийн эх хэрэгслүүдэд Vinum-ийн талаар дэлгэрэнгүйг мэдүүлэх ихэвчлэн боломжгүй байдаг.

Дараах хэсгүүдэд “root эзлэхүүн” гэсэн ойлголт root файлын системийг агуулдаг Vinum эзлэхүүнийг тайлбарлахад голчлон ашиглагдана. Энэ эзлэхүүний хувьд `"root"` гэсэн нэрийг ашиглах нь зүйтэй санаа боловч энэ нь аль ч талаараа заавал шаардлагатай биш юм. Дараах хэсгүүд дэх бүх тушаалын жишээнүүд нь энэ нэрийг ашиглах болно.

## 22.9.1. root файлын системийн хувьд Vinum-ийг аль болох эрт эхлүүлэх нь

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

- Vinum нь ачаалах үед цөмд бэлэн байх ёстой. Тиймээс Хэсэг 22.8.1.1-д тайлбарласан Vinum-ийг автоматаар эхлүүлэх арга нь энэ асуудлыг шийдэхэд хэрэглэх боломжгүй бөгөөд `start_vinum` параметрийг дараах тохиргоог зохион байгуулсан тохиолдолд тохируулах ёсгүй. Эхний тохируулга нь Vinum-ийг статикаар цөмд эмхэтгэх тохируулга байх юм. Тэгэхээр энэ боломж нь үргэлж бэлэн байх боловч ихэнх тохиолдолд хүсмээр зүйл биш байдаг. `/boot/loader` (Хэсэг 13.3.3)-аар цөмийг эхлэхээс өмнө vinum цөмийн модулийг эрт ачаалахаар тохируулах өөр бас нэг тохируулга байдаг. Ингэхийн тулд дараах мөрийг:

      geom_vinum_load="YES"

  `/boot/loader.conf` файл уруу оруулж хийж болно.

- Gvinum-ийн хувьд бүх эхлүүлэлт нь цөмийн модуль ачаалагдсаны дараа автоматаар хийгддэг учраас дээр тайлбарласан процедур байхад л хангалттай.

## 22.9.2. Vinum дээр тулгуурласан root эзлэхүүнийг эхлүүлэх кодонд хандах боломжтой болгох нь

Одоогийн FreeBSD эхлүүлэгч нь зөвхөн 7.5KB код байдаг бөгөөд энэ нь UFS файлын системээс файлуудыг (`/boot/loader` зэрэг) уншдагаар хийгдсэн байдаг болохоор Vinum-ийн тохиргооны мэдээллийг боловсруулж эхлэх эзлэхүүний өөрийнх нь элементүүдийг таньж Vinum-ийн дотоод бүтцүүдийг түүнд мэдүүлэх нь илт боломжгүй юм. Тиймээс root файлын системийг агуулдаг стандарт `"a"` хуваалтын хуурамч үзэгдлээр эхлүүлэгч кодыг хангах зарим нэгэн заль мэх шаардлагатай байдаг.

Ингэхийн тулд root эзлэхүүний хувьд дараах шаардлагуудыг хангасан байх ёстой:

- root эзлэхүүн нь судал хийгдээгүй эсвэл RAID-5 хийгдээгүй байх ёстой.

- root эзлэхүүн нь нэг plex-ийн хувьд нэгээс илүү нийлүүлэгдсэн дэд дисктэй байх ёсгүй.

Тус бүрдээ root файлын системийн нэг хуулбарыг агуулсан олон plex байлгах боломжтой бөгөөд ингэх сонирхолтой байдгийг санаарай. Гэхдээ эхлүүлэгч процесс нь эдгээр хуулбаруудын зөвхөн нэгийг эхлүүлэгч болон бүх файлуудыг олохын тулд цөм root файлын системийг өөрийг нь холбох хүртэл хэрэглэдэг. Дараа нь харгалзах төхөөрөмжийг эхлүүлэх боломжтой болгохын тулд эдгээр plex-үүдийн доторх ганц дэд диск бүрт өөрсдийн `"a"` хуваалтын хуурамч үзэгдэл хэрэгтэй болдог. Эдгээр хуурсан `"a"` хуваалт бүр өөрийн төхөөрөмжийн дотор адил офсетэд байрлах нь root эзлэхүүний plex-үүдийг агуулдаг бусад төхөөрөмжүүдтэй харьцуулах юм бол заавал хэрэгтэй байдаггүй. Гэхдээ Vinum эзлэхүүнүүдийг толин тусгал хийгдсэн төхөөрөмжүүд нь тэгш хэмт байхаар эндүүрлээс хамгаалж үүсгэх нь магадгүй зүйтэй санаа байх юм.

Эдгээр `"a"` хуваалтуудыг root эзлэхүүний хэсгийг агуулсан төхөөрөмж бүрийн хувьд тохируулахын тулд доор дурдсаныг хийх хэрэгтэй:

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

       # gvinum l -rv root

   Vinum офсетүүд болон хэмжээнүүд нь байтаар хэмжигддэг болохыг санаарай. `bsdlabel` тушаалд хэрэглэгддэг блок дугааруудыг олж авахын тулд тэдгээр нь 512-т хуваагдах ёстой.

2. Дараах тушаалыг:

       # bsdlabel -e devname

   гэж root эзлэхүүнд оролцож байгаа төхөөрөмж бүрийн хувьд ажиллуулна. `devname` нь зүсмэлийн хүснэгтгүй дискнүүдийн дискний нэр (`da0` гэх зэрэг) эсвэл зүсмэлийн нэр (`ad0s1` гэх зэрэг) байх ёстой.

   Хэрэв төхөөрөмж дээр `"a"` хуваалт (Vinum-ийн өмнөх root файлын системийг агуулсан) байх юм бол энэ нь хандахад боломжтой хэвээр (зөвхөн энэ тохиолдолд) байхын тулд өөр нэрээр нэрлэгдэх шаардлагатай. Гэхдээ анхдагчаар системийг эхлүүлэхэд хэрэглэгдэхээ болих юм. Идэвхтэй хуваалтуудын (одоогоор холбогдсон root файлын систем зэрэг) нэрийг өөрчилж болохгүй, тийм болохоор үүнийг “Fixit” зөөвөрлөгчөөс эхлүүлэх үед эсвэл (толин тусгал хийгдсэн нөхцөлд) ачаалаагүй байгаа дискийг эхлээд удирдах хоёр алхамтай процессийн үед ажиллуулах ёстойг санаарай.

   Дараа нь энэ төхөөрөмж дээрх Vinum хуваалтын офсет нь энэ төхөөрөмжийн харгалзах root эзлэхүүний дэд дискний офсетэд нэмэгдэх ёстой. Үр дүнд нь гарах утга нь шинэ `"a"` хуваалтын хувьд `"offset" буюу офсет` утга болно. Энэ хуваалтын хувьд `"size" буюу хэмжээ` утгыг дээрх тооцооллоос үгчлэн авч болно. `"fstype"` нь `4.2BSD` байх ёстой. `"fsize"`, `"bsize"`, болон `"cpg"` утгууд нь байгаа файлын системтэй таарахаар сонгогдсон байх хэрэгтэй, гэхдээ тэдгээр нь энэ сэдэвт бараг л чухал биш юм.

   Ийм замаар шинэ `"a"` хуваалт нь энэ төхөөрөмж дээрх Vinum хуваалтыг дарж байгуулагдана. Хэрэв Vinum хуваалт нь `"vinum"` fstype-г ашиглан зөвөөр тэмдэглэгдсэн бол `bsdlabel` тушаал нь зөвхөн энэ даралтыг зөвшөөрөх болно.

3. Ингээд боллоо! root эзлэхүүний нэг хуулбартай төхөөрөмж бүр дээр хуурсан `"a"` хуваалт одоо бий боллоо. Үр дүнг дараах тушаалтай төстэй тушаал ашиглан дахин шалгахыг зөвлөдөг:

       # fsck -n /dev/devnamea

Шинэ Vinum root эзлэхүүнийг тохируулах үед идэвхтэй байгаа root файлын системтэй таардаггүй учир хяналтын мэдээлэл агуулсан бүх файлууд нь Vinum эзлэхүүн дэх root файлын системд харьцангуй байх ёстойг санах хэрэгтэй. Тэгэхээр ялангуяа `/etc/fstab` болон `/boot/loader.conf` файлуудыг бодолцох хэрэгтэй юм.

Дараагийн дахин ачаалалтын дараа эхлүүлэгч нь шинэ Vinum дээр тулгуурласан root файлын системээс тохирох хяналтын мэдээллийг олж түүний дагуу ажиллах ёстой. Цөмийн эхлүүлэх процессийн төгсгөлд бүх төхөөрөмжүүд зарлагдсаны дараа энэ тохиргоог амжилттай болсныг харуулсан алдартай мэдэгдэл иймэрхүү байдлаар харуулагдана:

    Mounting root from ufs:/dev/gvinum/root

## 22.9.3. Vinum дээр тулгуурласан root тохиргооны жишээ

Vinum root эзлэхүүн тохируулагдсаны дараа `gvinum l -rv root` тушаалын үр дүн иймэрхүү харагдана:

    ...
    Subdisk root.p0.s0:
    		Size:        125829120 bytes (120 MB)
    		State: up
    		Plex root.p0 at offset 0 (0  B)
    		Drive disk0 (/dev/da0h) at offset 135680 (132 kB)

    Subdisk root.p1.s0:
    		Size:        125829120 bytes (120 MB)
    		State: up
    		Plex root.p1 at offset 0 (0  B)
    		Drive disk1 (/dev/da1h) at offset 135680 (132 kB)

Тэмдэглэх ёстой утгууд нь офсетийн (`/dev/da0h` хуваалтын хувьд харьцангуй байна) хувьд `135680` байна. Энэ нь `bsdlabel`-ийн ойлголтод 265 ширхэг 512 байт диск блок уруу хөрвүүлнэ. Үүнтэй адилаар энэ root эзлэхүүний хэмжээ нь 245760 512 байт блок юм. Энэ root эзлэхүүний хоёр дахь хуулбарыг агуулсан `/dev/da1h` нь тэгш хэмтэй тохиргоотой байна.

Эдгээр төхөөрөмжийн хувьд bsdlabel нь иймэрхүү харагдана:

    ...
    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      a:   245760      281    4.2BSD     2048 16384     0   # (Cyl.    0*- 15*)
      c: 71771688        0    unused        0     0         # (Cyl.    0 - 4467*)
      h: 71771672       16     vinum                        # (Cyl.    0*- 4467*)

Хуурсан `"a"` хуваалтын `"size"` параметр нь дээр харуулсан утгатай таардаг бол харин `"offset"` параметр нь Vinum хуваалт `"h"` доторх офсет болон төхөөрөмж (эсвэл зүсмэл) дэх энэ хуваалтын офсетийн нийлбэр болохыг эндээс харж болно. Энэ нь Хэсэг 22.9.4.3-д тайлбарласан асуудлыг тойрон гарахад шаардлагатай ердийн тохиргоо юм. Мөн бүхэл `"a"` хуваалт нь энэ төхөөрөмжийн хувьд бүх л Vinum өгөгдлийг агуулан бүтнээрээ `"h"` дотор байхыг эндээс бас харж болно.

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

## 22.9.4. Алдааг олж засварлах нь

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

### 22.9.4.1. Системийн эхлүүлэгч ачаалах боловч систем эхлэхгүй байх

Ямар нэг шалтгаанаар систем нь ачаалахгүй бол эхлүүлэгчийг 10 секундын анхааруулга дээр space товчлуур дарж тасалдуулж болно. Дуудагчийн хувьсагчуудыг (`vinum.autostart` зэрэг) `show` тушаал ашиглан шалгаж болох бөгөөд `set` эсвэл `unset` тушаалуудыг ашиглан тохируулж болно.

Хэрэв цөмийн Vinum модуль нь автоматаар дуудагддаг модулиудын жагсаалтад орж амжаагүй байх юм бол ердийн `load geom_vinum` тушаал туслана.

Бэлэн болсныхоо дараа ачаалах процессийг `boot -as` тушаалаар үргэлжлүүлж болно. `-as` тохируулгууд нь root файлын системийг холбохыг (`-a`) асуудаг бөгөөд ачаалах процессийг root файлын системийг зөвхөн унших эрхээр холбосон ганц-хэрэглэгчийн горимд (`-s`) зогсоохыг цөмөөс хүсдэг. Ийм замаар олон-plex эзлэхүүний зөвхөн нэг plex холбогдсон байхад plex-үүд хоорондын өгөгдлийн бүрэн бүтэн бус байдлын эрсдэл гардаггүй.

root файлын системийг холбохыг асуух мөрөн дээр зөв root файлын системтэй дурын төхөөрөмжийг оруулж болно. Хэрэв `/etc/fstab` зөв тохируулагдсан бол анхдагч нь `ufs:/dev/gvinum/root` мөртэй төсөөтэй байх ёстой. Ердийн өөр нэг сонголт нь `ufs:da0d` зэрэг Vinum-аас өмнөх root файлын системийг агуулдаг таамаглал хуваалт байж болох юм. Энд жинхэнэдээ толин тусгал үүсгэгдсэн тохируулгаас болоод Vinum root төхөөрөмжийн дэд дискнүүд уруу заасан аль нэг хуулбар `"a"` хуваалтыг оруулсан бол болгоомжтой байх хэрэгтэй бөгөөд энэ нь толин тусгал хийгдсэн root төхөөрөмжийн зөвхөн нэгийг холбох болно. Хэрэв энэ файлын систем нь дараа нь унших бичих эрхтэйгээр холбогдох бол Vinum root эзлэхүүний бусад plex-(үүд)ийг арилгах шаардлагатай. Учир нь эдгээр plex-үүд нь бүрэн бүтэн бус өгөгдлийг зөөвөрлөх болно.

### 22.9.4.2. Зөвхөн анхдагч эхлүүлэгч дуудах

Хэрэв `/boot/loader` дуудагдахгүй байгаа боловч анхдагч эхлүүлэгч дуудагдаж байвал (ачаалах процесс эхэлсний дараа дэлгэцийн зүүн багана дээр ганц зураас харагддаг) энэ үед анхдагч эхлүүлэгчийг тасалдуулах оролдлогыг space товчлуур ашиглан хийж болно. Энэ нь эхлүүлэгчийг хоёрдугаар алхам дээр зогсоох бөгөөд Хэсэг 13.3.2-с үзнэ үү. Энд `"a"`-с дээр шилжүүлэгдсэн өмнөх root файлын системийг агуулсан өөр хуваалтаас ачаалах оролдлого хийж болох юм.

### 22.9.4.3. Юу ч ачаалахгүй болж эхлүүлэгч сүйрэх

Энэ тохиолдол нь хэрэв эхлүүлэгчийг Vinum суулгацаар устгасан бол тохиолддог. Харамсалтай нь одоогоор Vinum нь санамсаргүйгээр зөвхөн 4 KB хэмжээг чөлөөтэйгөөр өөрийн хуваалтын эхэнд өөрийн Vinum толгойн мэдээллийг бичиж эхлэхээсээ өмнө үлдээдэг. Гэхдээ нэгдүгээр алхам ба хоёрдугаар эхлүүлэгчид, тэдгээрийн хооронд суулгагдсан bsdlabel нь одоогоор 8 KB-г шаарддаг. Хэрэв Vinum хуваалт нь ачаалагдах боломжтой гэгдэж байгаа зүсмэл эсвэл диск дотор 0 офсетэд эхэлсэн бол Vinum нь эхлүүлэгчийг устгана.

Үүнтэй адилаар хэрэв дээрх тохиолдол сэргээгдсэн бол, жишээ нь “Fixit” зөөвөрлөгчөөс ачаалагдаж эхлүүлэгч нь Хэсэг 13.3.2-д тайлбарласны дагуу дахин суулгагдсан бол эхлүүлэгч нь Vinum толгойг устгах бөгөөд Vinum нь өөрийн диск(үүд)ийг дахиж олохгүй байх болно. Яг жинхэнэдээ Vinum-ийн тохиргооны өгөгдөл эсвэл Vinum-ийн эзлэхүүнүүд дэх өгөгдөл нь энэ үед устгагддаггүй бөгөөд бүх өгөгдлийг яг адилхан Vinum тохиргооны өгөгдлийг дахин оруулснаар сэрээх боломжтой боловч ийм тохиолдлыг засварлах нь их хэцүү байдаг. Vinum толгой болон системийн эхлүүлэгчийг давхцуулахгүй байлгахын тулд бүхэл Vinum хуваалтыг хамгийн багаар бодоход 4 KB-аар шилжүүлэх хэрэгтэй болно.

Өмнөх | Эхлэл | Дараах
Vinum тохируулах нь | Дээш | Виртуалчлал

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

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