Κεφάλαιο 20. GEOM: Διαχείριση Συστοιχιών Δίσκων | FreeBSD Documentation Portal

# Κεφάλαιο 20. GEOM: Διαχείριση Συστοιχιών Δίσκων

This translation may be out of date. To help with the translations please access the FreeBSD translations instance.

## 20.1. Ерөнхий агуулга

Энэ бүлэг нь FreeBSD дээр GEOM тогтолцооны хүрээнд дискийг хэрхэн хэрэглэх талаар хамарсан. Энэ нь тохиргоонд зориулж тогтолцоог ашигладаг гол RAID хянагч хэрэгслүүдийг багтаадаг. Энэ бүлэг нь I/O, доор нь байгаа дэд систем, эсвэл кодыг GEOM хэрхэн зохицуулж эсвэл хянадаг талаар гүнзгий хэлэлцэхгүй. Энэхүү мэдээлэл нь geom(4) болон төрөл бүрийн `SEE ALSO` баримтуудын тусламжтай хангагддаг. Бас энэ бүлэг нь RAID тохиргоонуудын дэлгэрэнгүй заавар биш бөгөөд зөвхөн GEOM-дэмжигдсэн RAID ангиллуудын талаар хэлэлцэх болно.

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

- Ямар төрлийн RAID дэмжлэг GEOM-ийн хүрээнд байдаг талаар.

- Хэрхэн үндсэн хэрэгслүүдийг ашиглаж тохиргоо хийх, ажиллагааг хангах, болон төрөл бүрийн RAID түвшнүүдийг удирдах талаар.

- Хэрхэн толин тусгал болон судал үүсгэх, шифрлэх, алсаас GEOM-ийн хүрээнд диск төхөөрөмжүүдийг холбох талаар.

- GEOM тогтолцоонд хавсаргасан дискнүүдийн алдааг хэрхэн олж засварлах талаар.

Энэ бүлгийг уншихаасаа өмнө, та дараах зүйлсийг мэдэх шаардлагатай:

- FreeBSD диск төхөөрөмжүүдийг хэрхэн үздэг талаар ойлгох.

- Шинэ FreeBSD цөм хэрхэн тохируулж суулгах талаар мэдэх.

## 20.2. GEOM-ийн Танилцуулга

GEOM нь Мастер Ачаалалтын Бичлэгүүд (MBR), BSD хаягууд, гэх мэт - ангиллуудад тухайн ангиллын дэмжигчид (providers) эсвэл /dev дахь тусгай файлуудын тусламжтайгаар хандах хандалт ба хяналтыг уг ангилалд зөвшөөрдөг. GEOM нь төрөл бүрийн програм хангамжийн RAID тохиргоонуудыг ашиглаж үйлдлийн систем болон үйлдлийн системийн хэрэгслүүдэд саадгүйгээр хандах боломж олгодог.

## 20.3. RAID0 - Судал үүсгэх

Судал үүсгэх нь хэд хэдэн дискнүүдийг нэгтгэж нэг эзлэхүүн болгодог. Олон тохиолдолд энэ нь тоног төхөөрөмжийн хянагчуудыг ашиглан хийгддэг. GEOM дэд систем нь диск судал үүсгэх гэж бас нэрлэгддэг RAID0-д зориулсан програмыг хангаж өгдөг.

RAID0 системд, дараалсан дискнүүдэд байгаа өгөгдлүүд нь багц болж хуваагддаг. Систем дээр нэг диск рүү 256k-ийг бичихийг хүлээснээс 64k-ийг 4 өөр диск рүү зэрэг бичих дээд зэргийн I/O буюу оруулах гаргах ажиллагааг RAID0 систем нь санал болгодог. Энэ ажиллагааг олон дискний хянагчуудыг ашиглан нэмэгдүүлж болдог.

Багцалсан олон дискнүүдээс I/O хүсэлтүүд нь зэрэгцэж унших болон бичигддэг учраас RAID0 дискний хуваагдал нь бүгд ижил хэмжээтэй байх ёстой.

Procedure: Хэлбэржүүлэгдээгүй ATA дискнүүдийн судал үүсгэх

1. geom_stripe.ko модулийг ачаална:

       # kldload geom_stripe

2. Тохирох холболтын цэг байгааг шалгаарай. Хэрэв энэ эзлэхүүн нь root хуваалт болох ёстой бол түр зуур өөр /mnt гэх мэт холболтын цэгийг ашиглаарай:

       # mkdir /mnt

3. Судал үүсгэх дискнүүдэд зориулсан төхөөрөмжийн нэрийг тодорхойлоод шинэ судал төхөөрөмж үүсгэ. Жишээ нь хоёр ашиглагдаагүй, хуваалт хийгдээгүй /dev/ad2 болон /dev/ad3 гэсэн ATA дискнүүдэд судал үүсгэхийн тулд:

       # gstripe label -v st0 /dev/ad2 /dev/ad3
       Metadata value stored on /dev/ad2.
       Metadata value stored on /dev/ad3.
       Done.

4. Хуваалтын хүснэгт гэгддэг стандарт хаягийг шинэ эзлэхүүн дээр бичээд анхдагч ачаалагдах кодыг суулгаарай:

       # bsdlabel -wB /dev/stripe/st0

5. Энэ процесс хоёр төхөөрөмжийг st0 төхөөрөмжийн хамт /dev/stripe санд үүсгэх ёстой. Тэдгээр нь st0a болон st0c юм. Ингэсний дараа файлын системийг st0a төхөөрөмж дээр `newfs` хэрэгслийн тусламжтайгаар үүсгэж болно:

       # newfs -U /dev/stripe/st0a

   Олон тоонууд дэлгэц дээр урсан өнгөрөх бөгөөд хэдхэн хормын дараа процесс төгсөнө. Ингээд эзлэхүүн үүсэж холболт хийгдэхэд бэлэн болно.

Гараар үүсгэсэн дискний судлаа холбохын тулд:

    # mount /dev/stripe/st0a /mnt

Энэ судал үүсгэсэн файлын системдээ ачаалах үед автоматаар холболт хийхийн тулд эзлэхүүний мэдээллийг /etc/fstab файлд хийгээрэй. Энэ жишээн дээр stripe гэсэн байнгын холбох цэгийг үүсгэж байна:

    # mkdir /stripe
    # echo "/dev/stripe/st0a /stripe ufs rw 2 2" \
        >> /etc/fstab

/boot/loader.conf файлд мөр нэмж geom_stripe.ko модулийг систем эхлэхэд автоматаар ачаалагдахаар болгох ёстой:

    # echo 'geom_stripe_load="YES"' >> /boot/loader.conf

## 20.4. RAID1 - Толин тусгал үүсгэх

RAID1, буюу mirroring нь нэг өгөгдлийг нэгээс илүү диск дээр бичих техникийг хэлдэг. Толин тусгал нь диск ажиллахаа байсан үед өгөгдлийг алдагдахаас хамгаалахад ихэвчлэн хэрэглэгддэг. Толин тусгал дахь диск бүр өгөгдлийн ижил хуулбарыг агуулж байдаг. Тухайн диск ажиллахаа больсон үед ажиллаж байгаа дискнүүд дэх өгөгдлөөр ханган толин тусгал ажилласан хэвээр байна. Компьютер энэ үед ажилласаар байх бөгөөд администратор нь ажиллахаа больсон дискийг хэрэглэгчийн оролцоогүйгээр солих боломжтой болдог.

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

Уламжлалаар толин тусгал дахь хоёр диск нь модел болон хэмжээний хувьд ижил байдаг боловч gmirror(8) нь тийм байхыг шаарддаггүй. Өөр дискнүүдээс тогтсон толин тусгал нь хамгийн бага дискний хэмжээтэй ижил байдаг. Илүү том диск дээрх илүүдэл зай нь ашиглагддаггүй. Толин тусгал руу сүүлд нэмэх диск нь толин тусгал дахь хамгийн бага хэмжээтэй дискний хэмжээтэй ижил байх ёстой.

| Энд үзүүлсэн толин тусгал болгож байгаа процедур эвдлэх шинж чанаргүй боловч дискний үйл ажиллагаатай холбоотой учраас бүрэн хэмжээний нөөцлөлтийг эхлээд хийгээрэй.

### 20.4.1. Мета өгөгдөлтэй холбоотой асуудлууд

Дискний олон систем мета өгөгдлийг диск бүрийн төгсгөлд хадгалдаг. Дискийг толин тусгалд дахин ашиглахын тулд хуучин мета өгөгдлийг устгах ёстой. Ихэнх асуудал хуучин үлдсэн мета өгөгдлийн хоёр төрлөөс болж үүсдэг: GPT хуваалтын хүснэгтүүд, болон өмнөх толин тусгалын хуучин gmirror(8) мета өгөгдөл юм.

GPT мета өгөгдлийг gpart(8) ашиглан устгаж болно. Энэ жишээн дээр анхдагч болон нөөц GPT хуваалтын хүснэгтийг ada8 дискнээс устгаж байна:

    # gpart destroy -F ada8

gmirror(8) нь ажиллаж байгаа толин тусгалаас дискийг салгаж мета өгөгдлийг арилгахыг нэг алхмаар хийж чаддаг. Энд жишээ диск ada8-г ажиллаж байгаа толин тусгал gm4-с салгаж байна:

    # gmirror remove gm4 ada8

Хэрэв толин тусгал ажиллахгүй байгаа бөгөөд хуучин толин тусгалын мета өгөгдөл диск дээр байгаа хэвээр бол `gmirror clear` тушаал ашиглан устгаж болно:

    # gmirror clear ada8

gmirror(8) нь мета өгөгдлийн нэг блокийг дискний төгсгөлд хадгалдаг. GPT хуваалтын схем нь мета өгөгдлийг бас дискний төгсгөлд хадгалдаг учраас бүтэн GPT дискүүдийг gmirror(8) ашиглан толин тусгал хийхийг зөвлөдөггүй. Энд MBR хуваалтыг ашигладаг, учир нь энэ хуваалт нь хуваалтын хүснэгтийг дискний зөвхөн эхэнд хадгалдаг бөгөөд gmirror(8)-той харшилддаггүй.

### 20.4.2. Хоёр шинэ дискнээс толин тусгал үүсгэх

Энэ жишээн дээр FreeBSD нь ada0 гэсэн нэг диск дээр суулгасан байгаа. ada1 ба ada2 гэсэн хоёр шинэ диск систем рүү холбогдсон байгаа. Энэ хоёр диск дээр шинэ толин тусгал үүсгэх бөгөөд нэг хуучин дискийг солиход ашиглагдах болно.

gmirror(8) нь цөмд цуг бүтээгдсэн эсвэл ачаалах буюу ажиллах үед дуудагдах geom_mirror.ko цөмийн модулийг шаарддаг. Цөмийн модулийг гараар одоо дуудна:

    # gmirror load

Хоёр шинэ дискээс тогтох толин тусгал үүсгэнэ.

    # gmirror label -v gm0 /dev/ada1 /dev/ada2

gm0 нь шинэ толин тусгалд өгсөн хэрэглэгчийн сонгосон төхөөрөмжийн нэр юм. Толин тусгал эхэлсний дараа төхөөрөмжийн нэр /dev/mirror/ санд гарч ирнэ.

MBR болон bsdlabel хуваалтын хүснэгтүүдийг толин тусгал дээр gpart(8)-н тусламжтай үүсгэж болно. Энд бид /, swap, /var, /tmp, ба /usr гэсэн хуваалтуудтай уламжлалт хуваалттай файлын системийн бүтцийг харуулж байна. Ганц / болон swap хуваалт байж бас болно.

Толин тусгал дахь хуваалтууд нь одоо байгаа дискнүүд шиг ижил хэмжээтэй байх албагүй боловч ada0 дээр байгаа бүх өгөгдлийг агуулах хэмжээтэй байх ёстой.

    # gpart create -s MBR mirror/gm0
    # gpart add -t -a 4k mirror/gm0
    # gpart show mirror/gm0
    =>       63  156301423  mirror/gm0  MBR  (74G)
             63         63                    - free -  (31k)
            126  156301299                 1  freebsd  (74G)
      156301425         61                    - free -  (30k)

    # gpart create -s BSD mirror/gm0s1
    # gpart add -t freebsd-ufs  -a 4k -s 2g mirror/gm0s1
    # gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1
    # gpart add -t freebsd-ufs  -a 4k -s 2g mirror/gm0s1
    # gpart add -t freebsd-ufs  -a 4k -s 1g mirror/gm0s1
    # gpart add -t freebsd-ufs  -a 4k       mirror/gm0s1
    # gpart show mirror/gm0s1
    =>        0  156301299  mirror/gm0s1  BSD  (74G)
              0          2                      - free -  (1.0k)
              2    4194304                   1  freebsd-ufs  (2.0G)
        4194306    8388608                   2  freebsd-swap  (4.0G)
       12582914    4194304                   4  freebsd-ufs  (2.0G)
       16777218    2097152                   5  freebsd-ufs  (1.0G)
       18874370  137426928                   6  freebsd-ufs  (65G)
      156301298          1                      - free -  (512B)

Ачаалах кодыг MBR болон bsdlabel-д суулган идэвхтэй зүсмэлийг тохируулж толин тусгалыг ачаалах боломжтой болгоно:

    # gpart bootcode -b /boot/mbr mirror/gm0
    # gpart set -a active -i 1 mirror/gm0
    # gpart bootcode -b /boot/boot mirror/gm0s1

Зөөлөн шинэчлэлийг идэвхжүүлэн шинэ толин тусгал дээрх файлын системийг формат хийнэ.

    # newfs -U /dev/mirror/gm0s1a
    # newfs -U /dev/mirror/gm0s1d
    # newfs -U /dev/mirror/gm0s1e
    # newfs -U /dev/mirror/gm0s1f

Эх диск ada0 дээрх файлын системийг толин тусгал руу dump(8) ба restore(8) тушаалыг ашиглан хуулж болно.

    # mount /dev/mirror/gm0s1a /mnt
    # dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)
    # mount /dev/mirror/gm0s1d /mnt/var
    # mount /dev/mirror/gm0s1e /mnt/tmp
    # mount /dev/mirror/gm0s1f /mnt/usr
    # dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)
    # dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp && restore -rf -)
    # dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)

/mnt/etc/fstab-г шинэ толин тусгал файлын систем рүү заагдсан байхаар засварлах ёстой:

    # Device		Mountpoint	FStype	Options	Dump	Pass#
    /dev/mirror/gm0s1a	/		ufs	rw	1	1
    /dev/mirror/gm0s1b	none		swap	sw	0	0
    /dev/mirror/gm0s1d	/var		ufs	rw	2	2
    /dev/mirror/gm0s1e	/tmp		ufs	rw	2	2
    /dev/mirror/gm0s1f	/usr		ufs	rw	2	2

Хэрэв gmirror(8) цөмийн модул цөмд цуг бүтээгдээгүй бол модулийг ачаалахад дуудахын тулд /mnt/boot/loader.conf файлыг засах ёстой:

    geom_mirror_load="YES"

Шинэ толин тусгалыг тест хийхийн тулд системийг дахин ачаалж бүх өгөгдөл хуулагдсан эсэхийг шалгаарай. BIOS толин тусгалыг толин тусгал гэж харахгүй, харин хоёр тусдаа диск гэж харна. Дискнүүд ижил учраас аль нь ачаалахаар сонгогдсон нь чухал биш юм.

Ачаалахад асуудалтай байгаа бол Алдааг олж засварлах хэсгийг үзээрэй. Унтраагаад эхний ada0 дискийг салгаснаар уг дискийг нөөц маягаар байх боломжийг бүрдүүлдэг.

Ашиглаж байгаа үед толин тусгал нь яг л анхны ганц диск шиг л ажиллах болно.

### 20.4.3. Байгаа дискүүд ашиглан толин тусгал үүсгэх

Энэ жишээн дээр FreeBSD ada0 гэсэн нэг диск дээр суусан байгаа. Шинэ диск ada1-г системд холбосон байгаа. Нэг дискээс тогтох толин тусгалыг шинэ диск дээр үүсгэж байгаа системийг түүн рүү хуулж дараа нь хуучин дискийг толин тусгал руу оруулна. Энэ илүү төвөгтэй процедур нь зайлшгүй шаардлагатай байдаг, учир нь gmirror(8) нь 512 байт блок бүхий мета өгөгдлийг диск бүрийн төгсгөлд нэмэх хэрэгтэй байдаг бөгөөд байгаа ada0-н бүх зай ихэвчлэн ашиглагдчихсан байдаг.

gmirror(8) цөмийн модулийг дуудна.

    # gmirror load

diskinfo(8) ашиглан эхний дискний хэмжээг шалгана.

    # diskinfo -v ada0 | head -n3
    /dev/ada0
    	512             # sectorsize
    	1000204821504   # mediasize in bytes (931G)

Шинэ диск дээр толин тусгалыг үүсгэнэ. Эхний дискнээс толин тусгалын хэмжээ их биш гэдгийг шалгахын тулд gnop(8) ашиглан ижил хэмжээтэй хуурамч диск үүсгэж үзнэ. Энэ диск нь ямар ч өгөгдөл хадгалахгүй бөгөөд толин тусгалын хэмжээг хязгаарлахад зөвхөн ашиглагдана. gmirror(8) нь толин тусгал үүсгэхдээ хэдийгээр шинэ диск (ada1) илүү зайтай байсан ч гэсэн gzero.nop-н хэмжээгээр багтаамжийг хязгаарлана. Хоёр дахь мөрөн дээр байгаа 1000204821504 утга нь дээрх diskinfo(8)-р харуулсантай адил ada0-н хэмжээтэй ижил байх ёстой.

    # geom zero load
    # gnop create -s 1000204821504 gzero
    # gmirror label -v gm0 gzero.nop ada1
    # gmirror forget gm0

gzero.nop нь ямар ч өгөгдөл хадгалдаггүй учраас толин тусгал холбогдсон гэж хардаггүй. gzero.nop-той холбоотой мэдээллийг устган холбогдоогүй байгаа зүйлийг "март" гэж толин тусгалд хэлдэг гэсэн үг юм. Үүний үр дүнд толин тусгал нь зөвхөн ганц диск ada1-с тогтоно.

gm0-г үүсгэсний дараа ada0 дээрх хуваалтын хүснэгтийг харна.

Эндэх гаралт нь 1 TB дискнээс юм. Дискний төгсгөлд хуваарилагдаагүй зай байгаа бол өгөгдөл ada0-с шууд шинэ толин тусгал руу хуулагдаж болно.

Гэхдээ гаралт нь дараах жагсаалт дээрх шиг диск дээрх бүх зай бүхлээрээ хуваарилагдсан байгаагаар харуулж байгаа бол 512 байт gmirror(8) мета өгөгдлийн хувьд дискний төгсгөлд зай байхгүй гэсэн үг юм.

    # gpart show ada0
    =>        63  1953525105        ada0  MBR  (931G)
              63  1953525105           1  freebsd  [active]  (931G)

Энэ тохиолдолд mirror/gm0 дээрх багтаамжийг нэг сектороор багасгахын тулд хуваалтын хүснэгтийг засварлах хэрэгтэй. Уг процедурыг дараа тайлбарлах болно.

Аль ч тохиолдолд анхдагч диск дээрх хуваалтын хүснэгтүүдийг эхэлж хуулах хэрэгтэй бөгөөд gpart(8) `backup` ба `restore` дэд тушаалуудыг ашиглан гүйцэтгэнэ.

    # gpart backup ada0 > table.ada0
    # gpart backup ada0s1 > table.ada0s1

Эдгээр тушаал нь table.ada0 ба table.ada0s1 гэсэн хоёр файл үүсгэнэ. Энэ жишээ нь 1 TB дискнээс юм:

    # cat table.ada0
    MBR 4
    1 freebsd         63 1953525105   [active]

    # cat table.ada0s1
    BSD 8
    1  freebsd-ufs          0    4194304
    2 freebsd-swap    4194304   33554432
    4  freebsd-ufs   37748736   50331648
    5  freebsd-ufs   88080384   41943040
    6  freebsd-ufs  130023424  838860800
    7  freebsd-ufs  968884224  984640881

Хэрэв `gpart show` тушаал дискний төгсгөлд зай байхгүй байгааг харуулж байгаа бол зүсмэл болон сүүлийн хуваалтыг нэг сектороор багасгах хэрэгтэй. Зүсмэл болон сүүлийн хуваалтын зайг нэгээр багасган хоёр файлыг засварлах хэрэгтэй. Эдгээр нь жагсаалт бүрийн сүүлийн тоонууд юм.

    # cat table.ada0
    MBR 4
    1 freebsd         63 1953525104   [active]

    # cat table.ada0s1
    BSD 8
    1  freebsd-ufs          0    4194304
    2 freebsd-swap    4194304   33554432
    4  freebsd-ufs   37748736   50331648
    5  freebsd-ufs   88080384   41943040
    6  freebsd-ufs  130023424  838860800
    7  freebsd-ufs  968884224  984640880

Дискний төгсгөлд хамгийн багадаа нэг сектор хуваарилагдаагүй байгаа бол эдгээр хоёр файлыг засварлалгүйгээр ашиглаж болно.

Одоо хуваалтын хүснэгтийг mirror/gm0 руу сэргээнэ:

    # gpart restore mirror/gm0 < table.ada0
    # gpart restore mirror/gm0s1 < table.ada0s1

`gpart show` тушаалаар хуваалтын хүснэгтийг шалгана. Энэ жишээ нь gm0s1a-г /, gm0s1d-г /var, gm0s1e-г /usr, gm0s1f-г /data1, ба gm0s1g-г /data2-д ашиглана.

    # gpart show mirror/gm0
    =>        63  1953525104  mirror/gm0  MBR  (931G)
              63  1953525042           1  freebsd  [active]  (931G)
      1953525105          62              - free -  (31k)

    # gpart show mirror/gm0s1
    =>         0  1953525042  mirror/gm0s1  BSD  (931G)
               0     2097152             1  freebsd-ufs  (1.0G)
         2097152    16777216             2  freebsd-swap  (8.0G)
        18874368    41943040             4  freebsd-ufs  (20G)
        60817408    20971520             5  freebsd-ufs  (10G)
        81788928   629145600             6  freebsd-ufs  (300G)
       710934528  1242590514             7  freebsd-ufs  (592G)
      1953525042          63                - free -  (31k)

Зүсмэл болон сүүлийн хуваалт диск бүрийн төгсгөлд сул зайтай байх ёстой.

Энэ шинэ хуваалтууд дээр файлын систем үүсгэнэ. Хэдэн хуваалт байх нь эх диск ada0 дээрх хуваалтуудаас хамаарч янз бүр байна.

    # newfs -U /dev/mirror/gm0s1a
    # newfs -U /dev/mirror/gm0s1d
    # newfs -U /dev/mirror/gm0s1e
    # newfs -U /dev/mirror/gm0s1f
    # newfs -U /dev/mirror/gm0s1g

Идэвхтэй зүсмэлийг тохируулж MBR болон bsdlabel дээр ачаалах кодыг суулгаж толин тусгалыг ачаалах боломжтой болгоно:

    # gpart bootcode -b /boot/mbr mirror/gm0
    # gpart set -a active -i 1 mirror/gm0
    # gpart bootcode -b /boot/boot mirror/gm0s1

Толин тусгал дээрх шинэ хуваалтыг ашиглахаар болгож /etc/fstab файлыг тохируулна. /etc/fstab.orig руу хуулж энэ файлыг эхлээд нөөцөлж авах хэрэгтэй.

    # cp /etc/fstab /etc/fstab.orig

/dev/ada0-г mirror/gm0-р сольж /etc/fstab файлыг засварлана.

    # Device		Mountpoint	FStype	Options	Dump	Pass#
    /dev/mirror/gm0s1a	/		ufs	rw	1	1
    /dev/mirror/gm0s1b	none		swap	sw	0	0
    /dev/mirror/gm0s1d	/var		ufs	rw	2	2
    /dev/mirror/gm0s1e	/usr		ufs	rw	2	2
    /dev/mirror/gm0s1f	/data1		ufs	rw	2	2
    /dev/mirror/gm0s1g	/data2		ufs	rw	2	2

Хэрэв gmirror(8) цөмийн модул цөмд цуг бүтээгдээгүй бол /boot/loader.conf-г засварлаж түүнийг дуудна:

    geom_mirror_load="YES"

Эх диск дээрх файлын системүүдийг одоо dump(8) ба restore(8) тушаалуудыг ашиглан толин тусгал руу хуулж болно. `dump -L` тушаалаар авагдсан файл систем бүрийн хувьд хормын хувилбар үүсгэхэд хугацаа шаардагдаж магадгүйг санаарай.

    # mount /dev/mirror/gm0s1a /mnt
    # dump -C16 -b64 -0aL -f - /    | (cd /mnt && restore -rf -)
    # mount /dev/mirror/gm0s1d /mnt/var
    # mount /dev/mirror/gm0s1e /mnt/usr
    # mount /dev/mirror/gm0s1f /mnt/data1
    # mount /dev/mirror/gm0s1g /mnt/data2
    # dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)
    # dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)
    # dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 && restore -rf -)
    # dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 && restore -rf -)

ada1-с ачаалж системийг дахин ачаална. Бүгд ажиллаж байгаа бол систем mirror/gm0-с ачаалах бөгөөд энэ нь ada0-н өмнө агуулж байсан өгөгдлийг бас агуулах болно. Ачаалахтай холбоотой асуудал байгаа бол Алдааг олж засварлах хэсгийг харна уу.

Энд хүрэхэд толин тусгал нь зөвхөн ганц диск ada1-с тогтох болно.

mirror/gm0-с амжилттай ачаалсны дараа сүүлийн алхам бол ada0-г толин тусгал руу оруулах явдал юм.

| ada0-г толин тусгал руу оруулах үед хуучин агуулга нь толин тусгал дээрх агуулгаар дарагдаж бичигддэг. ada0-г толин тусгал руу нэмэхээсээ өмнө mirror/gm0 нь ada0-н өгөгдлийг яг агуулж байгаа эсэхийг шалгаарай. dump(8) ба restore(8)-г ашиглан хуулсан агуулгатай холбоотой ямар нэг асуудал үүссэн бол файлын системийг ada0-с холбохоор болгож /etc/fstab-г тохируулж дахин ачаалан дээрх алхмуудыг дахин эхнээс нь хийж үзэх хэрэгтэй.

    # gmirror insert gm0 ada0
    GEOM_MIRROR: Device gm0: rebuilding provider ada0

Хоёр дискний хоорондох синхрончлол шууд эхэлнэ. gmirror(8) `status` тушаал явцыг харуулна.

    # gmirror status
          Name    Status  Components
    mirror/gm0  DEGRADED  ada1 (ACTIVE)
                          ada0 (SYNCHRONIZING, 64%)

Тодорхой хугацааны дараа синхрончлол дуусна.

    GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished.
    # gmirror status
          Name    Status  Components
    mirror/gm0  COMPLETE  ada1 (ACTIVE)
                          ada0 (ACTIVE)

mirror/gm0 нь одоо ada0 ба ada1 гэсэн хоёр дискээс тогтох бөгөөд агуулгууд нь нэг нэгэнтэйгээ автоматаар синхрончлогдсон байна. Ашиглагдаж байгаа үед mirror/gm0 нь яг л эхний ганц диск шиг ажиллах болно.

### 20.4.4. Алдааг олж засварлах

#### 20.4.4.1. Ачаалахтай холбоотой асуудлууд

##### BIOS тохиргоо

BIOS тохиргоог шинээр толин тусгал болгосон дискнүүдийн аль нэгнээс ачаалахаар болгож тохируулах хэрэгтэй байж магадгүй юм. Толин тусгалын нэг хэсэг учраас тэдгээр нь ижил өгөгдөлтэй байдаг бөгөөд аль ч дискийг ачаалахад ашиглаж болно.

##### Ачаалах үеийн асуудлууд

Хэрэв ачаалалт ийм мэдэгдэлтэй зогссон бол толин тусгал төхөөрөмж асуудалтай байж болох юм:

    Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.

    Loader variables:
      vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a
      vfs.root.mountfrom.options=rw

    Manual root filesystem specification:
      <fstype>:<device> [options]
          Mount <device> using filesystem <fstype>
          and with the specified (optional) option list.

        eg. ufs:/dev/da0s1a
            zfs:tank
            cd9660:/dev/acd0 ro
              (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)

      ?               List valid disk boot devices
      .               Yield 1 second (for background tasks)
      <empty line>    Abort manual input

    mountroot>

geom_mirror модулийг /boot/loader.conf-т оруулж дуудахаа мартсан бол энэ асуудал гарна. Үүнийг засахын тулд FreeBSD 9.0 эсвэл түүнээс хойшхи хувилбарын CD эсвэл USB дискнээс ачаалаад эхний асуулт дээр `Shell`-г сонгох хэрэгтэй. Дараа нь толин тусгалын модулийг дуудаж толин тусгал төхөөрөмжийг холбох хэрэгтэй:

    # gmirror load
    # mount /dev/mirror/gm0s1a /mnt

Толин тусгалын модулийг дуудах мөрийг /mnt/boot/loader.conf-д оруулж засварлана:

    geom_mirror_load="YES"

Файлыг хадгалж дахин ачаална.

`error 19` гаргаж байгаа бусад асуудлуудыг засварлахад илүү хүч зарах шаардлагатай. Ачаалах үеийн асууж лавлах дэлгэц дээр `ufs:/dev/ada0s1a` гэж оруулж өгнө. Систем хэдийгээр ada0-с ачаалах ёстой боловч бүрхүүл сонгох асууж лавлах дэлгэц дахин гарч ирнэ. /etc/fstab файл буруу байгаа учраас тэр юм. Оруулах товчийг энэ үед дарах хэрэгтэй. Толин тусгалын оронд эх дискнээс (ada0) файлын системийг холбохоор болгож /etc/fstab-г тохируулж өөрчлөлтийг буцаах хэрэгтэй. Системийг дахин ачаалж алхмуудыг дахин оролдож үзэх хэрэгтэй.

    Enter full pathname of shell or RETURN for /bin/sh:
    # cp /etc/fstab.orig /etc/fstab
    # reboot

### 20.4.5. Диск ажиллахаа болиход сэргээх

Толин тусгалын ашигтай тал бол аль нэг диск ажиллахаа байхад толин тусгал дээрх өгөгдөл алдагддаггүй явдал юм. Дээрх жишээн дээр ada0 ажиллахаа болиход ажиллаж байгаа диск болох ada1-с өгөгдлөө өгөн толин тусгал ажилласан хэвээр байх болно.

Ажиллахаа больсон дискийг солихын тулд компьютерыг унтрааж эвдэрсэн дискийг ижил эсвэл илүү хэмжээтэй дискээр солих хэрэгтэй. Үйлдвэрлэгчид дискний хэмжээг гигабайтаар хэмжихдээ дурын утга ашигладаг бөгөөд итгэлтэй байхын тулд зөвхөн `diskinfo -v` тушаалаар харагдах секторын тоог харьцуулах явдал юм. Толин тусгалын хэмжээнээс том диск болох боловч шинэ диск дээрх илүү зай ашиглагдахгүй.

Компьютер ассаны дараа толин тусгал "degraded" буюу "ажиллагаа саарсан" горимд нэг дисктэйгээр ажиллах болно. Толин тусгал нь залгагдаагүй байгаа дискийг мартаж ажиллана:

    # gmirror forget gm0

Хуучин мета өгөгдлийг сольсон дискээс арилгах хэрэгтэй. Дараа нь энэ жишээн дээрх ada4 дискийг толин тусгал руу оруулна:

    # gmirror insert gm0 /dev/ada4

Шинэ диск толин тусгалд ороход дахин синхрончлол хийгдэж эхэлнэ. Толин тусгалын өгөгдлийг шинэ диск рүү хуулах процесс удаж болно. Толин тусгалын үйл ажиллагаа хуулж байх явцад удаашрах учраас компьютерын хэрэглээ бага үед шинэ дискийг хийх нь зүйтэй.

Үйл явцыг `gmirror status` тушаалаар монитор хийж болох бөгөөд синхрончлол хийгдэж байгаа дискнүүд болон ажиллаж байгаа хувийг энэ тушаал харуулдаг. Дахин синхрончлолын үед төлөв `DEGRADED` байж байгаад процесс дуусахдаа `COMPLETE` болж өөрчлөгдөнө.

## 20.5. RAID3 - Parity бүхий байтын түвшний тусдаа судалжуулалт (Striping)

RAID3 нь хэд хэдэн дискийн хөтчийг нэг эзлэхүүн рүү тусгайлан зориулагдсан parity бүхий дискийн хамтаар нэгтгэхэд хэрэглэгддэг арга юм. RAID3 систем дээр өгөгдөл нь хуваагдан тодорхой тооны байтаар массив дахь бүх хөтчүүд рүү бичигддэг бөгөөд ингэхдээ тусгайлан зориулагдсан нэг parity диск рүү бичигддэггүй. Энэ нь RAID3-аас 1024KB уншихад массив дахь бүх диск рүү хандана гэсэн үг юм. Үйл ажиллагааг сайжруулахын тулд олон диск контроллер ашиглаж болно. RAID3 массив нь массив дахь бүх хөтчийн хэмжээний 1 - 1/n бүхий хэмжээгээр хангаж 1 хөтчийн найдвартай ажиллагааг хангадаг. n нь массив дахь хатуу хөтчүүдийн тоо юм. Ийм тохиргоо нь том хэмжээтэй өгөгдөл буюу мультимедиа файлууд хадгалахад зохимжтой байдаг.

RAID3 массивыг бүтээхэд хамгийн багадаа 3 хатуу хөтчийг шаарддаг. Диск бүр ижил хэмжээтэй байх ёстой бөгөөд учир нь I/O хүсэлт бүр олон диск рүү зэрэг хандалт хийн унших бичих хэрэгтэй байдаг. Бас RAID3-н онцлогоос хамаараад хөтчийн тоо 3, 5, 9, 17, гэх мэтээр (2^n + 1) байх ёстой байдаг.

### 20.5.1. Тусдаа RAID3 массив үүсгэх

FreeBSD дээр RAID3-н дэмжлэг graid3(8) GEOM классаар шийдэгдсэн байдаг. Тусдаа RAID3 массивыг FreeBSD дээр үүсгэхийн тулд дараах алхмууд шаардлагатай.

| FreeBSD дээр RAID3 массиваас онолын хувьд ачаалах боломжтой хэдий ч тохиргооны хувьд ховор бас тэгж хийхийг зөвлөдөггүй.

1. Эхдээд дараах тушаалыг ашилаад geom_raid3.ko цөмийн модулийг ачаална:

       # graid3 load

   Мөн өөрөөр гараар geom_raid3.ko модулийг ачаалж болно:

       # kldload geom_raid3.ko

2. Тохирох холбох цэг үүсгэх юм уу эсвэл байгаа эсэхийг шалгана:

       # mkdir /multimedia/

3. Массив руу нэмэгдэх дискүүдийн хувьд хөтчийн нэрийг тогтоогоод RAID3 төхөөрөмж үүсгэнэ. Сүүлд жагсаагдсан төхөөрөмж тусгайлан зориулагдсан parity диск байх болно. Энэ жишээн дээр гурван хуваагдаагүй ATA хөтчийг ашиглаж байна: ada1 ба ada2-г өгөгдөлд, ada3-г parity-г зориулж байна.

       # graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3
       Metadata value stored on /dev/ada1.
       Metadata value stored on /dev/ada2.
       Metadata value stored on /dev/ada3.
       Done.

4. Шинэ үүсгэсэн gr0 төхөөрөмжийг хуваагаад түүн дээр UFS файлын систем үүсгэнэ:

       # gpart create -s GPT /dev/raid3/gr0
       # gpart add -t freebsd-ufs /dev/raid3/gr0
       # newfs -j /dev/raid3/gr0p1

   Дэлгэц дээгүүр олон тоо урсах бөгөөд хэсэг хугацааны дараа процесс дуусах болно. Эзлэхүүн үүсч холбох боломжтой болно.

       # mount /dev/raid3/gr0p1 /multimedia/

   RAID3 массивыг одоо ашиглаж болно.

Дээрх тохиргоог систем дахин ачаалахад алдагдуулахгүйн тулд нэмэлт тохиргоо хэрэгтэй.

1. Массивыг холбохоос өмнө geom_raid3.ko модулийг ачаалах ёстой. Систем эхлэхэд цөмийн модулийг автоматаар ачаалахын тулд дараах мөрийг /boot/loader.conf файлд нэмж өгнө:

       geom_raid3_load="YES"

2. Систем ачаалах процессын явцад массивын файлын системийг автоматаар холбохын тулд дараах эзлэхүүний мэдээллийг /etc/fstab файлд нэмэх хэрэгтэй:

       /dev/raid3/gr0p1	/multimedia	ufs	rw	2	2

## 20.6. GEOM Хаалга Сүлжээний Төхөөрөмжүүд

GEOM нь хаалга хэрэгслүүдийг ашиглан дискнүүд, CD-ROM-ууд, файлуудыг алсаас ашиглахыг дэмждэг. Энэ нь NFS-тэй адил юм.

Экспортын файл эхэлж үүсгэх шаардлагатай. Энэ файл нь экспорт хийгдсэн эх үүсвэрүүдэд хэнийг хандахыг зөвшөөрсөн болон ямар түвшний хандалтыг тэд өгч байгааг тусгадаг. Жишээ нь эхний SCSI диск дээр 4 дэх зүсмэлийг экспорт хийхийн тулд дараах /etc/gg.exports нь хангалттай:

    192.168.1.0/24 RW /dev/da0s4d

Энэ нь дотоод сүлжээний бүх хостууд da0s4d хуваалт дээрх файлын системд хандах хандалтыг зөвшөөрнө.

Энэ төхөөрөмжийг экспорт хийхдээ тухайн үед холболт хийгдээгүй эсэхийг шалгаад ggated(8) сервер дэмонг ажиллуулаарай:

    # ggated

Хэрэглэх машинаас уг экспортлогдсон төхөөрөмжид `mount` хийхдээ дараах тушаалыг өгнө үү:

    # ggatec create -o rw 192.168.1.1 /dev/da0s4d
    ggate0
    # mount /dev/ggate0 /mnt

Одоо төхөөрөмжид /mnt холболтын цэгийг ашиглан хандаж болно.

| Хэрэв төхөөрөмж тухайн үед сервер машин эсвэл сүлжээн дэх өөр бусад машин дээр холболт хийгдсэн байсан бол энэ нь амжилтгүй болохыг сануулъя.

Төхөөрөмж дахин шаардлагагүй болоход бусад дискний төхөөрөмжүүдийн нэгэн адил umount(8) тушаалын тусламжтайгаар салгаж болно.

## 20.7. Дискний төхөөрөмжүүдийг хаяглах нь

Системийг эхлүүлэх явцад FreeBSD цөм төхөөрөмжүүдийг олж төхөөрөмжийн цэгүүдийг үүсгэдэг. Төхөөрөмжүүдийг илрүүлэх энэ арга нь зарим нэг асуудлуудтай байдаг, жишээ нь шинэ дискний төхөөрөмж USB-ээр нэмэгдсэн бол яах вэ? Флэш төхөөрөмжид da0 гэсэн төхөөрөмжийн нэр өгөгдөж хуучин байсан da0 нь da1 болж өөрчлөгдөх болов уу. Энэ нь хэрэв файлын системүүд /etc/fstab-д орсон бол тэдгээрийг холбоход асуудал гаргах бөгөөд бүр системийг ачаалахгүй байдалд хүргэж болох юм.

Нэг шийдэл нь SCSI карт руу нэмэгдсэн шинэ төхөөрөмжид төхөөрөмжийн ашиглагдаагүй дугаарууд өгч SCSI төхөөрөмжүүдийг гинжин цуваа болгох явдал юм. Гэхдээ анхдагч SCSI дискийг сольж болзошгүй USB төхөөрөмжүүдийн хувьд яах вэ? Яагаад гэвэл USB төхөөрөмжүүд нь ихэвчлэн SCSI картнуудаас өмнө шалгагддаг. Үүний нэг шийдэл нь эдгээр төхөөрөмжүүдийг системийг ачаалсны дараа залгах явдал юм. Өөр нэг арга нь зөвхөн ганц ATA хөтөч ашиглаж SCSI төхөөрөмжүүдийг /etc/fstab файлд хэзээ ч жагсаахгүй байх тийм шийдэл байж болох юм.

Илүү сайн шийдэл нь `glabel` хэрэгсэл ашиглан дискний төхөөрөмжүүдийг хаяглаж эдгээр хаяг/шошгонуудыг /etc/fstab файлд ашиглаж болох юм. `glabel` нь өгөгдсөн үзүүлэгчийн сүүлийн секторт хаяг/шошгыг хадгалдаг болохоор хаяг/шошго нь дахин ачаалахад хэвээр байх болно. Энэ хаяг/шошгыг төхөөрөмж маягаар ашигласнаар ямар төхөөрөмжийн цэгээр дамжин хандаж байгаагаас үл хамааран файлын систем нь үргэлж холбогдох юм.

| `glabel` хэрэгсэл нь түр зуурын болон байнгын хаяг/шошгыг үүсгэж чадна. Хаяг/шошгонуудын ялгаануудын тухай дэлгэрэнгүй мэдээллийг glabel(8) гарын авлагын хуудаснаас үзнэ үү.

### 20.7.1. Хаяг/шошгоны төрлүүд болон жишээнүүд

Байнгын хаяг нь ердийн ба файлын системийн гэсэн хоёр төрлийн байдаг. Файлын системийн байнгын хаягийг tunefs(8) эсвэл newfs(8) тушаалаар үүсгэж болно. Эдгээр хаяг/шошгонуудын төрлүүд /dev сангийн дэд санд үүсгэгддэг бөгөөд файлын системийн төрлийн дагуу нэртэй байна. Жишээ нь UFS2 файлын системийн хаяг/шошгонууд /dev/ufs санд үүсгэгддэг. Ердийн хаягийг `glabel label` тушаалаар үүсгэж болдог. Эдгээр нь файлын системтэй хамааралгүй бөгөөд /dev/label санд үүсгэгдэх болно.

Түр зуурын хаяг/шошго нь дараагийн удаа ачаалахад арилдаг. Эдгээр хаяг/шошгонууд нь /dev/label санд үүсгэгдэх бөгөөд туршилтад тохирсон байдаг. Түр зуурын хаягийг `glabel create` тушаалаар үүсгэж болно.

Өгөгдлийг устгалгүйгээр UFS2 файлын системийн хувьд байнгын хаяг/шошго үүсгэхийн тулд доор дурдсан тушаалуудыг ажиллуулна:

    # tunefs -L home /dev/da3

| Хэрэв файлын систем дүүрэн бол энэ нь өгөгдлийн эвдрэлд хүргэж болох юм.

Хаяг/шошго одоо /dev/ufs санд үүссэн байх ёстой бөгөөд түүнийг /etc/fstab файлд нэмж болох юм:

    /dev/ufs/home		/home            ufs     rw              2      2

| `tunefs`-г ажиллуулахдаа файлын системийг холбох ёсгүй.

Одоо файлын системийг холбож болно:

    # mount /home

Эндээс эхлэн ачаалах явцад /boot/loader.conf файлын тусламжтайгаар geom_label.ko цөмийн модуль дуудагдсан байхад эсвэл `GEOM_LABEL` цөмийн тохируулга байхад төхөөрөмжийн цэг системд ямар нэгэн буруу нөлөөлөлгүйгээр өөрчлөгдөж болох юм.

Файлын систем нь `newfs` тушаалд өгөгдсөн `-L` тугны тусламжтайгаар анхдагч хаяг/шошготой үүсгэгдэж бас болно. Дэлгэрэнгүй мэдээллийг newfs(8)-с үзнэ үү.

Доор дурдсан тушаалыг хаяг/шошгыг устгахдаа ашиглаж болно:

    # glabel destroy home

Ачаалах дискийн хуваалтуудыг хэрхэн хаяглахыг дараах жишээ харуулж байна.

Жишээ 1. Ачаалах диск дээрх хуваалтуудыг хаяглах нь

Ачаалах диск дээрх хуваалтуудыг байнгын байдлаар хаягласнаар дискийг өөр хянагч руу эсвэл өөр систем рүү шилжүүлсэн ч гэсэн систем хэвийнээр ачаалж чаддаг болох юм. Энэ жишээний хувьд системээр ad0 гэж танигдсан ганц ATA диск хэрэглэгдэж байгаа болно. Бас /, /var, /usr ба /tmp болон swap хуваалттай FreeBSD-ийн стандарт хуваалтын хэлбэрийг ашиглаж байгаа болно.

Системийн дахин ачаалж ганц хэрэглэгчийн горимд ачаалж орохын тулд loader(8) тушаал хүлээх мөрөнд `4` товчлуурыг дарна. Дараа нь дараах тушаалуудыг ажиллуулна:

    # glabel label rootfs /dev/ad0s1a
    GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
    # glabel label var /dev/ad0s1d
    GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
    # glabel label usr /dev/ad0s1f
    GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
    # glabel label tmp /dev/ad0s1e
    GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
    # glabel label swap /dev/ad0s1b
    GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
    # exit

Систем нь олон хэрэглэгчийн ачаалах горимоор үргэлжлэх болно. Ачаалж дууссаны дараа /etc/fstab файлыг засварлаж ердийн төхөөрөмжийн нэрсийг тохирох хаягуудаар солиорой. Төгсгөлийн /etc/fstab файл доорхтой адил харагдах болно:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/label/swap         none            swap    sw              0       0
    /dev/label/rootfs       /               ufs     rw              1       1
    /dev/label/tmp          /tmp            ufs     rw              2       2
    /dev/label/usr          /usr            ufs     rw              2       2
    /dev/label/var          /var            ufs     rw              2       2

Системийг одоо дахин ачаалж болно. Хэрэв бүгд зөв болсон бол энэ нь хэвийн гарч ирэх бөгөөд `mount` тушаал дараахийг харуулах болно:

    # mount
    /dev/label/rootfs on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/label/tmp on /tmp (ufs, local, soft-updates)
    /dev/label/usr on /usr (ufs, local, soft-updates)
    /dev/label/var on /var (ufs, local, soft-updates)

FreeBSD 7.2-оос эхлэн glabel(8) ангилал UFS файлын системийн хувьд давхардахгүй файлын системийн id `ufsid` дээр тулгуурлан шинэ хаягийн төрлийг дэмждэг. Эдгээр хаягууд нь /dev/ufsid санд байрлах бөгөөд системийн эхлэх явцад автоматаар үүсдэг. Хуваалтуудыг /etc/fstab боломжийг ашиглан холбохын тулд `ufsid` хаягийг ашиглах боломжтой байдаг. Файлын системийн жагсаалт болон тэдгээр файл системийн харгалзах `ufsid` хаягуудыг авахын тулд `glabel status` тушаал ашиглана:

    % glabel status
                      Name  Status  Components
    ufsid/486b6fc38d330916     N/A  ad4s1d
    ufsid/486b6fc16926168e     N/A  ad4s1f

Дээрхи жишээн дээр ad4s1d нь /var файлын системийг илэрхийлж байгаа бол ad4s1f нь /usr файлын системийг илэрхийлж байна. Үзүүлсэн `ufsid` утгуудыг ашиглан эдгээр хуваалтуудыг /etc/fstab дахь дараах оруулгуудын тусламжтайгаар холбож болох юм:

    /dev/ufsid/486b6fc38d330916        /var        ufs        rw        2      2
    /dev/ufsid/486b6fc16926168e        /usr        ufs        rw        2      2

`ufsid` хаягтай ямар ч хуваалтыг энэ аргаар холбож болох юм. Ингэснээр тэдгээрийн хувьд байнгын хаягийг үүсгэх шаардлагагүйгээс гадна төхөөрөмжийн нэрнээс үл хамаарах холболтын ашигтай талыг авсан хэвээр байх болно.

## 20.8. GEOM-ийн тусламжтай UFS тэмдэглэл

FreeBSD 7.0 хувилбараас эхлээд UFS journals буюу тэмдэглэлийн боломж бүрдсэн билээ. Энэхүү шийдэл нь GEOM дэд системийн тусламжтайгаар хийгдсэн бөгөөд gjournal(8) хэрэгслийн тусламжтай хялбар тохируулж болдог.

Journaling буюу тэмдэглэх чадвар нь мета өгөгдөл болон файлын бичилтүүд дискэнд зөвөөр хийгдэхээс өмнө дискний бүрэн гүйцэд бичих үйлдлийг бүтээдэг өөрчлөлтүүдийн бүртгэл зэрэг файлын системийн шилжүүлгүүдийн бүртгэлийг хадгалдаг. Файлын системийн бүрэн бус байдлаас хамгаалахын тулд файлын системийн шилжүүлгүүдийг дахин гүйцэтгэхийн тулд энэхүү шилжүүлгүүдийн бүртгэлийг дараа нь дахин ажиллуулж болдог.

Энэхүү арга нь файлын системийн бүрэн бус байдал болон өгөгдлийн алдагдлын эсрэг хамгаалах өөр нэг арга зам юм. Мета өгөгдлийн шинэчлэлүүд болон файлын системийн дүрс болох Хормын хувилбаруудыг хянаж мөрдүүлж байдаг Зөөлөн Шинэчлэлүүдээс ялгаатай нь бүртгэлийн файл нь энэ үйлдэлд тусгайлан зориулсан дискийн талбарт хадгалагддаг бөгөөд зарим тохиолдолд өөр диск дээр тэр чигээрээ хадгалагдаж болдог.

Өөр бусад файлын системийн тэмдэглэлийн шийдлүүдээс ялгаатай нь `gjournal` арга нь блок дээр тулгуурласан бөгөөд файлын системийн хэсэг болж хийгдээгүй. Энэ нь GEOM өргөтгөл юм.

`gjournal`-д зориулсан дэмжлэгийг идэвхжүүлэхийн тулд FreeBSD цөм нь 7.0 болон түүнээс хойшхи системүүд дээр анхдагчаар байдаг доор дурдсан тохируулгатай байх ёстой:

    options	UFS_GJOURNAL

Хэрэв тэмдэглэл үүсгэгдсэн эзлэхүүнүүдийг ачаалж эхлэхэд холбох шаардлагатай бол /boot/loader.conf файлд дараах мөрийг нэмж цөмийн geom_journal.ko модулийг бас дуудах хэрэгтэй болно:

    geom_journal_load="YES"

Мөн дараах мөрийг цөмийн тохиргооны файлд нэмж үүнийг өөрчлөн тохируулсан цөмд бас бүтээж болох юм:

    options	GEOM_JOURNAL

Чөлөөтэй файлын систем дээр тэмдэглэл үүсгэхийн тулд одоо доор дурдсан алхмуудыг ашиглан хийж болно. Энэ жишээн дээр da4 нь шинэ SCSI диск байна:

    # gjournal load
          # gjournal label /dev/da4

Энэ үед /dev/da4 төхөөрөмжийн цэг болон /dev/da4.journal төхөөрөмжийн цэг үүссэн байх ёстой. Одоо энэ төхөөрөмж дээр файлын системийг үүсгэж болно:

    # newfs -O 2 -J /dev/da4.journal

Энэ тушаал UFS2 файлын системийг тэмдэглэл идэвхжсэн төхөөрөмж дээр үүсгэх болно.

Төхөөрөмжийг хүссэн цэгтээ доор дурдсан тушаалаар `mount` хийнэ:

    # mount /dev/da4.journal /mnt

| Хэд хэдэн зүсмэлүүдийн тухайд тэмдэглэл нь зүсмэл бүр дээр үүсгэгдэх болно. Жишээ нь хэрэв ad4s1 болон ad4s2 нь хоёулаа зүсмэл бол `gjournal` нь ad4s1.journal болон ad4s2.journal үүсгэх болно.

Хурдан ажиллагаатай байхын тулд тэмдэглэлийг өөр диск дээр байлгаж болно. Энэ тохиолдолд тэмдэглэл хангагч эсвэл хадгалалтын төхөөрөмж нь тэмдэглэлийг идэвхжүүлэхийн тулд уг төхөөрөмжийнхөө дараа жагсаагдах ёстой. `tunefs` тушаал ашиглан тухайн байгаа файлын систем дээр тэмдэглэлийг идэвхжүүлж болдог. Гэхдээ файлын системийг өөрчлөхөөсөө өмнө нөөц үргэлж хийж байх хэрэгтэй. Ихэнх тохиолдолд `gjournal` нь яг тэмдэглэлийг үүсгэж чадаагүй бол амжилтгүй болох бөгөөд гэхдээ энэ нь `tunefs`-ийг буруугаар ашигласнаас болоод үүссэн өгөгдлийн алдагдлаас хамгаалж чадахгүй юм.

FreeBSD системийн эхлүүлэх дискийг тэмдэглэх бас боломжтой байдаг. Үүний талаарх дэлгэрэнгүй зааврыг Ширээний PC дээр UFS тэмдэглэлийг хийх нь гэсэн нийтлэлээс үзнэ үү.

Last modified on: 2026 оны зургаадугаар сарын 18 by Alexander Ziaee

Prev
Home
Next