4.5. Диск зохион байгуулалт
Өмнөх | Бүлэг 4. Юниксийн үндэс | Дараах

## 4.5. Диск зохион байгуулалт

FreeBSD нь файл олохын тулд хэрэглэдэг хамгийн жижиг хэрэгсэл бол файлын нэр юм. Файлын нэрний том болон бага үсэгнүүд нь бас ялгаатай. Энэ нь юу гэсэн үг вэ гэвэл `readme.txt` болон `README.TXT` гэсэн хоёр файл нь хоорондоо ялгаатай файл гэсэн үг. FreeBSD нь файлын төрлийг програм, бичиг баримт, эсвэл бусад төрлийн файл байна гэж ялгахын тулд (`.txt`) гэх мэтийн өргөтгөл хэрэглэдэггүй.

Файлууд сан дотор хадгалагддаг. Сан нь зуу зуун файл агуулж болох бөгөөд эсвэл хоосон байж болно. Сан нь сангаа агуулж бас болох ба ингэж сангийн угсарсан модлог бүтэц үүсгэж болно. Ингэвэл та файлуудаа илүү амархан зохицуулах болно.

Файл ба сангууд нь `/` тэмдгийн араас шаардлагатай бол сангуудын нэрийг бичиж өгөгдсөн нэрээрээ хандагдана. Хэрэв танд `foo` нэртэй сан нь `bar` санг агуулдаг бөгөөд уг сан дотор `readme.txt` файл байгаа бол, файлын хандах бүтэн нэр буюу зам нь `foo/bar/readme.txt` гэж бичигдэнэ.

Сан болон файлууд нь файл системд хадгалагддаг. Файл систем болгон хамгийн эхний дээд хэсэгт заавал нэг сан агуулдаг бөгөөд, түүнийг уг файл системийн root сан буюу дээд эх сан гэж нэрлэдэг. Тэгээд энэ эх сан нь цаашаагаа өөр сангуудыг агуулж явдаг.

Энэ хүртэл таны уншсан зүйлүүд нь таны бусад мэддэг үйлдлийн системтэй ижил байж магадгүй. Гэхдээ жаахан ялгаанууд бий. Жишээлбэл MS-DOS® үйлдлийн систем нь файл болон санг тусгаарлахдаа `\` тэмдэг хэрэглэдэг байхад Mac OS® үйлдлийн систем нь `:` тэмдгийг хэрэглэдэг.

FreeBSD дискэнд үсэглэж нэр өгдөггүй бөгөөд үсгээр нэр өгөгдсөн файлын замыг хэрэглэдэггүй. Та FreeBSD дээр `c:/foo/bar/readme.txt` гэж бичиж болохгүй.

Харин түүний оронд нэг файл системийг нэг root файл систем гэж ангилдаг. Уг root буюу эх файл системийн эх сан нь `/` гэж хандагдана. Бусад өөр файл системүүд энэ root буюу эх файл систем дотор холбогддог. Та FreeBSD систем дээрээ хэдэн ч дисктэй байсан, сан болгонууд нь нэг дискний хэсэг мэт харагддаг.

Жишээлбэл `A`, `B`, мөн `C` гэсэн гурван файл систем танд байна гэж бодъё. Файл систем бүр нь өөртөө хоёр сан агуулсан тус тусын эх сантай гэж үзье. Тэдгээр сангууд нь дараах нэртэй байг. `A1`, `A2` (гэх мэтчилэн `B1`, `B2` мөн `C1`, `C2`).

`A`-г эх сан гэж үзнэ. Хэрэв та `ls` тушаалаар энэ сангийн дотор байгааг харвал, `A1` ба `A2` гэсэн хоёр санг та харах болно. Энэ сангийн модлог загвар нь ингэж харагдаж байна:

Хэрэв файл систем өөр файл системд холбогдохоор бол, холбогдож байгаа системийнхээ нэг сан дор холбогдоно. Тэгвэл одоо `B` файл системийг `A1` санд холбоно гэж үзье. Тэгвэл `B`-ийн эх сан нь `A1`-ээр орлуулагдаж, `B` доторх файлууд дараах маягаар харагдана:

Хэрэв `B1` эсвэл `B2` сан доторх файлууд шаардлага гаран хандагдахаар бол `/A1/B1` эсвэл `/A1/B2` гэсэн зам хэрэглэгдэж бичигдэнэ. Хэрэв `/A1` дотор файлууд байсан бол тэдгээрийг түр зуур нуудаг. `B` файл систем A системээс салгагдсан үед л тэр файлууд харагдана.

Хэрэв `B` файл систем `A2` дор холбогдсон бол дараах маягаар харагдана:

мөн файл уруу хандах зам нь `/A2/B1` болон `/A2/B2` гэж тус тусдаа хандагдах болно.

Файл системүүд нэг нэгнийхээ дээр холбогдож болдог. Сүүлийн жишээгээ үргэлжлүүлээд `C` файл системийг `B` файл систем доторх `B1` сангийн дээд хэсэгт холбож өгвөл дараах зохион байгуулалт үүсэж байна:

Эсвэл `C` файл систем `A` файл систем дотор `A1` санд холбогдож болно:

Хэрэв та MS-DOS® системийг гадарладаг бол энэ нь `join` тушаалтай төсөөтэй боловч яг адилхан биш.

Угтаа бол энэ нь тийм их анхаарлаа хандуулаад байхаар зүйл биш. Ердийн үед та FreeBSD суулгах үедээ нэг файл систем үүсгээд хаана холбохыг нь шийдэж холбоод, шинэ диск нэмэхгүй л бол түүнийгээ хэзээ ч өөрчлөх шаардлага гардаггүй.

Өөр файл систем үүсгэлгүйгээр нэг бүхэл эх файл систем үүсгэж болдог. Ийм үед зарим сул талууд гарч ирдэг бөгөөд нэг л давуу тал үүснэ.

Олон файл системүүдийн давуу талууд

- Олон төрлийн файл системүүд нь олон төрлийн холбох нөхцөлтэй. Жишээлбэл, сайн төлөвлөсний дараагаар, эх файл систем нь зөвхөн уншигдахаар холбогдож, ингэснээр санамсаргүй юм уу алдаа ослын шалтгаанаар чухал файлуудыг устгахаас сэргийлж болно. Хэрэглэгчдээр бичигдэж болдог файл систем, жишээ нь `/home` мэтийн бусад системээс тусгаарлаж nosuid төрлийн гэж холбож болно; энэ сонголт нь файл систем дээр буй гүйцэтгэж болдог файлд suid/guid бит утга тавигдахаас сэргийлж аюулгүй байдлыг хангаж өгдөг.

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

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

Нэг файл системтэй байх үеийн давуу тал

- Энэ файл систем нь тогтсон хэмжээтэй байдаг. Хэрэв та FreeBSD-ийг суулгах үедээ тодорхой зааж өгсөн файл систем үүсгээд, сүүлд нь түүнийгээ өргөжүүлэхийг хүсвэл, энэ нь тийм амархан биелэхгүй. Та эхлээд байгаа файл системийнхээ файлуудыг нөөцөлж хадгалаад дараа нь файл системдээ шинэ хэмжээ өгч өргөтгөөд дараа нь нөөцөөсөө файлуудаа буцааж сэргээж хадгалах болно.

  ### Чухал:

  FreeBSD-н growfs(8) тушаал нь дээрх хүндрэлийг алга болгож, файлыг нөөцлөх шаардлагагүйгээр шууд файл системийг өргөтгөж болдог болсон.

Дискний хуваалт дотор файл систем оршиж байдаг. FreeBSD нь юниксээс уламжилсан болохоор диск хуваалтын ойлголт нь ердийн хэрэглээтэй ижилхэн биш (жишээлбэл, MS-DOS® диск зохион байгуулалт). Дискний хуваагдал бүр `a` үсэгнээс эхлээд `h` хүртэл үсгээр тэмдэглэгддэг. Хуваагдал бүр зөвхөн ганцхан файл систем агуулах ёстой. Ийм болохоор файл систем нь агуулж байгаа диск хуваалтынхаа үсгээр илэрхийлэгдэх бөгөөд хэрэв өөр файл системд холбогдвол, холбосон сан нь уг файл системийг илэрхийлнэ.

FreeBSD мөн swap -д зориулж дискэнд зай бэлддэг. Swap хэмжээ нь FreeBSD-н виртуал санах ой юм. Ингэснээр таны компьютер байгаа бодит хэмжээнээсээ илүү санах ой хэрэглэж байгаа мэт ажилладаг. Хэрэв зарим програм FreeBSD дээр ажиллаад санах ойноос хэтрэх хүндрэл гарвал, хэрэглэгдэхгүй байгаа хэсгийг swap зай руу зөөж, шаардлагатай үед буцааж санах ой руу зөөх зарчмаар хэрэглэгддэг.

Зарим дискний хуваалт нь тогтсон журамтай байдаг.

Хуваалт | Тогтсон журам
--- | ---
`a` | Ихэнхдээ root файл системийг агуулж байдаг
`b` | Ихэнхдээ swap хэмжээг агуулдаг
`c` | Ихэнх үед агуулж буй зүсмэлийнхээ хэмжээтэй ижил хэмжээтэй байдаг. Энэ нь ямар нэгэн хэрэгслүүдийг (жишээлбэл, дискний эвдэрсэн хэсгийг шалгагч) `c` хуваалт дээрх зүсмэл дээр бүхэлд нь ажиллаж болох зөвшөөрөл өгдөг. Ердийн үед та үүн дээр файл систем үүсгэх шаардлага байхгүй.
`d` | Урьд нь `d` хуваалт онцгой үүрэгтэй байсан боловч одоо тийм биш, харин ердийн хуваалт шиг хэрэглэгдэж болно.

FreeBSD дээр файл систем агуулж байгаа хуваалтыг зүсмэл гэж нэрлэдэг. Хуваалтын ерөнхий нэр нь FreeBSD дээр зүсмэл гэж яригдах бөгөөд FreeBSD-ийн UNIX® гаралд цаад утга учир нь бий. Зүсмэл нь 1 -ээс эхлээд 4 хүртэлх тоогоор дугаарлагдана.

Зүсмэлийн дугаар нь төхөөрөмжийн нэрний араас `s` үсгээр эхэлж бичигддэг. Тэгэхээр «da0s1» гэдэг нь, эхний SCSI диск дээрх эхний зүсмэлийг илэрхийлж байна. Диск дээр физик чанараараа зөвхөн дөрвөн ширхэг зүсмэл байрлуулж болно. Харин логик зүсмэлийг та физик зүсмэл дотор дурын хэмжээтэй үүсгэж болно. Ингэж өргөтгөж нэмсэн зүсмэлүүд нь 5 гэсэн дугаараар эхэлж цаашаагаа тоологддог. Тэгэхээр «ad0s5» гэдэг нь эхний IDE диск дээрх эхний өргөтгөсөн зүсмэлийг хэлж байна. Ингэж өргөтгөсөн зүсмэлүүд нь файл систем агуулж, систем дээр ердийн зүсмэл мэт харагдаж ажиллана.

Зүсмэлүүд нь физик диск дээр «аюултай зориулалт»аар буюу өөрөөp хэлбэл хүчээр байрлуулагддаг. Харин бусад дискнүүд нь `a` -с эхлээд `h` хүртэл нэрлэсэн хуваалт агуулж болдог. Эдгээр үсэгнүүд нь төхөөрөмжийн ард залгагдаж бичигддэг ба «da0a» гэдэг нь эхний da диск дээр байгаа a хуваалтыг илэрхийлж байна. «ad1s3e» бол хоёр дахь IDE диск дээр байгаа гурав дахь зүсмэлийн тав дахь хуваалтыг илэрхийлж байна.

Эцэст нь хэлэхэд, диск болгон системд танигдах ёстой. Дискний нэр нь дискний төрлийг илэрхийлсэн үсгээр эхлээд тэгээд араас нь хэд дэх диск вэ гэдгийг нь илэрхийлсэн дугаартай байдаг. Зүсмэлээс ялгарах зүйл нь, дискний дугаар 0 -ээс эхэлдэг. Ерөнхий хэрэглээний жишээг Хүснэгт 4.1, «Диск төхөөрөмжийн нэрнүүд» хүснэгтээс харна уу.

Хуваалт уруу хандах үед FreeBSD уг хуваалтыг агуулсан зүсмэл болон дискийг тодорхойлохыг шаарддаг. Тэгээд зүсмэл рүү хандах үед зүсмэлийг агуулсан дискний нэрийг шаардах болно. Тэгэхээр та дискний нэр, `s`, зүсмэлийн дугаар, тэгээд хуваалтын үсэг гэсэн дарааллаар нэрлэх нь байна. Жишээнүүдийг Жишээ 4.1, «Диск, Зүсмэл, Хуваалтын нэрлэх жишээ»-д харуулав.

Танд ойлгоход тань дөхөм болгож Жишээ 4.2, «Дискний тогтсон загвар» жишээн дээр дискний зохион байгуулалтын тогтсон загварыг харуулж байна.

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

Хүснэгт 4.1. Диск төхөөрөмжийн нэрнүүд

Нэр | Утга
--- | ---
`ad` | ATAPI (IDE) disk
`da` | SCSI direct access disk
`acd` | ATAPI (IDE) CDROM
`cd` | SCSI CDROM
`fd` | Floppy disk

Жишээ 4.1. Диск, Зүсмэл, Хуваалтын нэрлэх жишээ

Нэр | Утга
--- | ---
`ad0s1a` | Эхний IDE диск (`ad0`) дээрх эхний зүсмэлийн (`s1`) эхний хуваалт (`a`).
`da1s2e` | Хоёр дахь SCSI диск (`da1`) дээрх хоёр дахь (`s2`) зүсмэлийн тав дахь (`e`) хуваалт.

Жишээ 4.2. Дискний тогтсон загвар

Дараах загвар нь системд буй IDE диск FreeBSD дээр хэрхэн харагдаж байгааг харуулж байна. Дискний хэмжээг 4 ГБ-н хэмжээтэй гэж үзээд хоёр ширхэг 2 ГБ зүсмэл байна (нэг зүсмэл дээр нь MS-DOS® хуваалт байгаа). Эхний зүсмэл нь MS-DOS®-н `C:` диск агуулсан, харин хоёр дахь зүсмэл дээр FreeBSD суугдсан. Энэ жишээн дээр FreeBSD нь гурван өгөгдлийн хуваалт мөн swap хуваалт хэрэглэж байна.

Гурван хуваалт нь тус тусдаа файл систем агуулж байгаа. `a` хуваалт root файл системд зориулагдаж, `e` хуваалт `/var` санд, мөн `f` хуваалт `/usr` санд тус тус зориулагдсан.

Өмнөх | Дээш | Дараах
4.4. Сангийн бүтэц | Эхлэл | 4.6. Файл системийг холбох болон салгах

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

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