80–იან წლებში, როდესაც მყარი დისკის მოცულობა არ აღემატებოდა 10 MB-ს, მისი დაყოფა მრავალ პარტიციად არ იყო აქტუალური. ამიტომ x86 არქიტექტურაში მყარი დისკის დაყოფა შესაძლებელი იყო მაქსიმუმ 4 პარტიციად: Primary 1, Primary 2, Primary 3 და Primary 4. ზოგიერთი ოპერაციული სისტემის ჩატვირთვა აუცილებლად ხდებოდა Primary პარტიციიდან. თუმცა ლინუქს ასეთი შეზღუდვა არ გააჩნია, მაგრამ რამოდენიმე, ან თუნდაც ყველა პარტიციისთვის დაყოფის Primary მეთოდის გამოყენება მიღებული პრაქტიკაა. მყარი დისკების მოცულობის ზრდასთან ერთად წამოიჭრა მათი 4–ზე მეტ ნაწილად დაყოფის საკითხი. ამ პრობლემის გადასაჭრელად ისე, რომ შენარჩუნებულიყო x86 არქიტექტურასთან თავსებადობა, შეიქმნა გაფაროებული (extended) პარტიცირების მეთოდი, რომელშიც ერთ–ერთი Primary პარტიცია შეიცავს საკუთარ მოცულობაში პარტიციების შეუზღუდავ რაოდენობას. ასეთ პარტიციას ეწოდება გაფართოებული (Extended) პარტიცია და მასში შექმნილ პარტიციებს ეწოდება ლოგიკური (Logical) პარტიციები. როგორც უკვე ავღნიშნეთ ლოგიკური პარტიციების რაოდენობა შეზღუდული არ არის. უბრალოდ, რადგან ეს პარტიციები იქმნება ერთი გაფართოებული პარტიციის ფარგლებში, მათი შექმნა უნდა მოხდეს ერთმანეთის თანმიმდევრობით. 2.7 სურათზე ნაჩვენებია მყარი დისკის დაყოფის ორი მაგალითი, თუმცა პარტიციების კომბინაცია სხვადასხვა სისტემებზე შესაძლოა განსვავებული იყოს.
სურ. 2.7
ლინუქსში მყარი დისკების იდენტიფიცირება ხდება ლათინური ასოებით (a,b,c…). მაგალითად, თუ კომპიუტერში ინტეგრირებულია ორი SATA მყარი დისკი, პირველი დისკი განსაზღვრული იქნება როგორც /dev/sda და მეორე დისკი იქნება /dev/sdb. მყარ დისკზე შექმნილი Primary და Extended პარტიციები კი განისაზღვრება 1–დან 4–მდე რიცხვებით. მაგალითად: პირველი დისკის მეორე Primary პარტიცია განსაზღვრული იქნება როგორც /dev/sda2, ხოლო მეორე მყარი დისკის მე–4 Primary პარტიცია – /dev/sdb4. ეს რიცხვები ფიქსირებულია Primary პარტიციებისთვის და არ არის აუცილებელი, რომ პარტიციები დანომრილი იყოს თანმიმდევრულად. მაგალითად: მყარ დისკზე შეიძლება არსებობდეს /dev/sda1 და /dev/sda3, მაგრამ არ იყოს შექმნილი /dev/sda2 და /dev/sda4.
ლოგიკურ პარტიციებს ენიჭებათ რიცხვები 5–დან ზევით (მაგ. /dev/sda5 და /dev/sdb5). ეს რიცხვები ლოგიკურ პარტიციებს ენიშნებათ თანმიმდევრულად და რომელიმე რიცხვის გამოტოვება არ შეიძლება. მაგალითად: თუ მყარ დისკზე არსებობს /dev/sda6 პარტიცია, ეს იმას ნიშნავს, რომ ამავე დისკზე უკვე შექმნილია /dev/sda5 პარტიციაც.
ლინუქსისთვის პარტიციის ტიპს დიდი მნიშვნელობა არ აქვს. შესაძლებელია როგორც Primary ასევე Logical პარტიციების გამოყენება და მათთვის ლინუქსის პარტიციების ნებისმიერი ფუნქციონალის მინიჭება.
გარდა აღნიშნული კლასიფიცირების მეთოდისა, ასევე არსებობს პარტიციების ტიპების კლასის განსაზღვრის კიდევ ერთი მეთოდი. x86 პარტიციების ცხრილს გააჩნია ტიპის კოდის მხარდაჭერა, რომელიც წარმოდგება ორ ციფრიანი თექვსმეტობით ფორმატში ჩაწერილი რიცხვის სახით, რომელსაც მინიჭებული აქვს კონკრეტული ფუნქცია. მაგალითად, 0x06 რეზერვირებულია გარკვეული ტიპის File Allocation Table (FAT) პარტიციისთვის, 0x82 განსაზღვრავს ლინუქსის swap პარტიციას და 0x83 განსაზღვრავს ლინუქსის ფაილური სისტემის პარტიციას. ზოგიერთი ოპერაციული სისტემა (მაგ. Windows) აღნიშნული ტიპის კოდების მიხედვით განსაზღვრავს, თუ რომელ პარტიციაზე შეუძლია მას წვდომა. შესაბამისად ასეთი ოპერაციული სისტემა იგნორირებას უკეთებს ლინუქსის ტიპის პარტიციებს. ლინუქსის შემთხვევაში პარტიციის ტიპის კოდს დიდი მნიშვნელობა არ აქვს, ამიტომ ლინუქსში შესაძლებელია ნებისმიერი ტიპის პარტიციის მიბმა და ამ პარტიციიდან ფაილების წაკითხვა. თუმცა გარკვეულ შემთხვევებში აღნიშნული ტიპის კოდები მნიშვნელოვანია ლინუსქსის სხვადასხვა დისტრიბუტივისთვის. მაგალითად: ინსტალაციის დროს ლინუქსი ამ ტიპის კოდით ხვდება თუ როგორ არის დაკონფიგურირებული სისტემა. ასევე ლინუქსი აქცევს ყურადღებას 0x05 და 0x0f ტიპის კოდებს, რომლებიც განსაზღვრავენ გაფართოებულ (Extended) პარტიციას.
მყარი დისკის პარტიციების ცხრილის ნახვა და ცვლილებების შეტანა შესაძლებელია სპეციალური ინსტრუმენტით – fdisk. ასევე არსებობს პარტიცირების ალტერნატიული მეთოდი – Logical Volume Management (LVM). იმისათვის, რომ გამოიყენოთ LVM, საჭიროა ერთი ან რამოდენიმე ფიზიკური მოცულობის განსაზღვრა და მათთვის 0x8e კოდის მინიჭება. შემდეგ სპეციალური ინსტრუმენტების, როგორიცაა pvcreate, vgcreate, lvcreate და lvscan გამოყენებით ხდება პარტიციების (ამ სქემაში ფიზიკური მოცულობების – Physical Volumes) მართვა, ანუ მოცულობების ჯგუფში გაერთიანება და ამ ჯგუფებში ლოგიკური მოცულობების განსაზღვრა. აღნიშნულ ლოგიკურ მოცულობებთან წვდომა შესაძლებელია მათთვის განსაზღვრული სახელების გამოყენებით /dev/mapper დირექტორიაში (მაგ. /dev/mapper/myvolume-home).
მიბმის წერტილი (Mount points)
მყარი დისკის პარტიციებად დაყოფის შემდეგ, ოპერაციულ სისტემას უნდა ქონდეს ამ პარტიციებზე შენახულ ინფორმაციასთან წვდომის საშუალება. DOS–ში და Windows–ში ამის გაკეთება შესაძლებელია თითოეული პარტიციისთვის შესაბამისი ლათინური ასოს მინიჭებით, როგორიცაა C: ან D:. ლინუქსში კი ამ მეთოდის ნაცვლად გამოყენებულია დირექტორიების ერთიანი ხე. აღნიშნულ ხეში თითოეული პარტიცია მიბმულია შესაბამის მიბმის წერტილზე. მიბმის წერტილი არის დირექტორია, რომელიც გამოყენებულია პარტიციის ფაილურ სისტემაზე წვდომისთვის. მიბმის წერტილი წარმოადგენს ბმულს, რომლის მეშვეობითაც შესაძლებელია პარტიციაზე არსებულ სხვა დირექტორიებზე გადასვლა.
მაგალითისთვის წარმოვიდგინოთ, რომ მყარ დისკზე არის შექმნილი 3 პარტიცია: root „/“, /home და /usr პარტიციები. „/“ პარტიციაზე ყოველთვის განთავსებულია სისტემური ფაილები, დანარჩენი პარტიციები კი ხელმისაწვდომი ხდება შესაბამისი დირექტორიის მეშვეობით. თუ მაგალითად სისტემას გააჩნია ორი მომხმარებელი user1 და user2 და მათი საწყისი დირექტორიები განთავსებულია /home პარტიციაზე, აღნიშნული დირექტორიები ხელმისაწვდომი იქნება /home/user1 და /home/user2 სახით, თუ ისინი მიბმული იქნება /home დირექტორიაზე. თუ მოუხსნით (unmount) მიბმის წერტილს ზევით აღნიშნულ მომხმარებლის დირექტორიებს და ხელმეორედ მოახდენთ მათ მიბმას (mount) /usr დირექტორიაზე, ეს დირექტორიები ხელმისაწვდომი იქნება უკვე როგორც /usr/user1 და /usr/user2.
ლინუქსში მიბმის წერტილად შეგვიძლია გამოვიყენოთ ნებისმიერი დირექტორია, მათ შორის დირექტორიები root “/” პარტიციაზე და ასევე რომელიმე დირექტორიაზე უკვე მიბმულ პარტიციაზე არსებული ნებისმიერი დირექტორია. მაგალითად, თუ /home არის ცალკე პარტიცია, შესაძლებელია სისტმაში არსებობდეს /home/otherhomes დირექტორიები, რომლებიც წარმოადგენენ სხვა პარტიციების მიბმის წერტილს.