ტიპების Linux ფაილური სისტემები და მათი თვისებები. ფაილი და დარღვევის ფაილი სისტემა Ext2 ფაილი სისტემა EXT2 3

ახლა აღწერს ყველაზე პოპულარული დისკი ფაილური სისტემის Linux - Ext2. Linux- ის პირველი გათავისუფლება გამოყენებული Minix 1 ფაილური სისტემა, რომელსაც ჰქონდა მოკლე ფაილის სახელები და მაქსიმალური ზომა 64 MB. Minix 1 ფაილური სისტემა საბოლოოდ შეიცვალა პირველი გაფართოებული EXT ფაილური სისტემა, რომელიც საშუალებას მისცემს გამოიყენოთ აღარ ფაილის სახელები და დიდი ფაილის ზომები. მისი დაბალი ეფექტურობის გამო (შესრულების განცდაში), EXT2 თანმიმდევრობით შეიცვალა მისი EXT2 თანმიმდევრობით, რომელიც ჯერ კიდევ ფართოდ გამოიყენება.

დისკის დანაყოფი ext2 შეიცავს ფაილური სისტემა ნაჩვენებია ნახატზე. 10.17 განლაგება. ბლოკი 0 არ არის გამოყენებული Linux სისტემით და შეიცავს კომპიუტერის დატვირთვის კოდს. ბლოკის შემდეგ 0-ის შემდეგ, დისკის დანაყოფი დაყოფილია ბლოკების ბლოკად (დისკს ცილინდრების საზღვრების გარდა). თითოეული ჯგუფი ორგანიზებულია შემდეგნაირად.


პირველი ბლოკი არის SuperBlock (SuperBlock), რომელიც ინახავს ინფორმაციას ფაილური სისტემის განლაგების შესახებ, მათ შორის I- კვანძების რიცხვში, დისკზე ბლოკების რიცხვი, თავისუფალი დისკის ბლოკების სიის დასაწყისში (ეს, როგორც წესი, რამდენიმე ასეული ელემენტებია ). შემდეგ შემდეგნაირად გამოიყურება ჯგუფის დესკრიპტორი, რომელიც შეიცავს ინფორმაციას ბიტიანი მასივების ადგილმდებარეობის შესახებ, ჯგუფში უფასო ბლოკებისა და I- კვანძების რაოდენობა, ასევე ჯგუფის დირექტორიების რაოდენობა. ეს ინფორმაცია მნიშვნელოვანია, რადგან EXT2 ფაილური სისტემა ცდილობს დისკზე თანაბრად გავრცელებას.

ორი ბიტიანი მასივები, უფასო ბლოკები და თავისუფალი I- კვანძები ჩაწერილია (ეს ასევე არის მინიმალური 1 ფაილური სისტემისგან და განასხვავებს მას ყველაზე Unix ფაილური სისტემებისგან, რომელშიც სიაში გამოიყენება უფასო ბლოკებისთვის). თითოეული ბიტიანი მასივის ზომა ერთი ბლოკის ტოლია. ბლოკის 1 კბ-ს ზომა, ეს სქემა ზღუდავს ბლოკის ბლოკავს 8192 ბლოკებს და 8192 I-nodes- ს ზომას. პირველი ნომერი რეალური შეზღუდვაა და მეორე პრაქტიკულად არ არის. 4 კბ-ს 4 კბ-ს ბლოკებით.

მაშინ I-nodes თავად მდებარეობს. ისინი 1-დან რამდენიმე მაქსიმალურად დათვლილია. თითოეული I-Node ზომა არის 128 ბაიტი და აღწერს ზუსტად ერთი ფაილი. I-Node შეიცავს ანგარიშის ინფორმაციას (მათ შორის მთლიანი დაბრუნების ზარის ჩათვლით, რომელიც უბრალოდ I-Node- სგან იღებს), ისევე როგორც საკმარისი ინფორმაცია, რათა განსაზღვროს ყველა დისკის ბლოკების ადგილმდებარეობა, რომელიც შეიცავს ფაილის მონაცემებს.

I- კვანძების შემდეგ არის მონაცემთა ბლოკები. აქ ყველა ფაილი და დირექტორიები ინახება აქ. თუ ფაილი ან დირექტორია შედგება ერთზე მეტ ბლოკზე, მაშინ ეს ბლოკები არ არის საჭირო დისკზე. სინამდვილეში, დიდი ფაილის ბლოკები სავარაუდოდ მთელ დისკზეა.

შესაბამისი კატალოგები I-nodes მიმოფანტული ყველა ჯგუფის დისკზე ბლოკები. EXT2 ცდილობს ჩვეულებრივი ფაილების მოწყობა ბლოკად, როგორც მშობლის დირექტორია, ხოლო მონაცემთა ფაილები იმავე ბლოკშია, როგორც კოდის I-Node (იმ პირობით, რომ არსებობს საკმარისი სივრცე). ეს იდეა ბერკლის სწრაფი ფაილური სისტემის ფაილური სისტემისგან ნასესხები იყო (McKusick et al., 1984). Bit მასივები გამოიყენება სწრაფი გადაწყვეტილებების შერჩევის შესახებ

ადგილები ახალი ფაილის სისტემის მონაცემები.

როდესაც ახალი ფაილის ბლოკები ხაზგასმით აღინიშნება, EXT2 ასევე აკეთებს რამდენიმე (რვა) დამატებითი ბლოკის წინასწარი შერჩევის (preallocates) იმავე ფაილისთვის (სამომავლო რეკორდული ოპერაციების გამო ფაილის ფრაგმენტაციის მინიმუმამდე). ეს სქემა დისკის მასშტაბით ფაილურ სისტემას ავრცელებს. მას ასევე აქვს კარგი შესრულება (მისი ტენდენციის გამო დაკავშირებულ ადგილას და შემცირდა ფრაგმენტაცია).

ფაილის წვდომისათვის, თქვენ უნდა გამოიყენოთ ერთ-ერთი Linux სისტემის ზარები (როგორიცაა ღია), რისთვისაც გსურთ მიუთითოთ ფაილის ფაილი. ეს გზა დაიშალა და მისი კატალოგების კომპონენტები მოპოვებულია. თუ ნათესავი გზა არის მითითებული, ძიება იწყება მიმდინარე კატალოგიდან, წინააღმდეგ შემთხვევაში - საწყისი root დირექტორიაში. ნებისმიერ შემთხვევაში, I-Node პირველი დირექტორია ადვილად მოვძებნოთ: პროცესში დესკრიპტორი არის მაჩვენებელი ან (იმ შემთხვევაში, თუ root დირექტორიაში) იგი ინახება კონკრეტულ დისკზე დისკზე.

დირექტორია საშუალებას გაძლევთ გამოიყენოთ ფაილის სახელები 255 სიმბოლოზე (ნახ. 10.18). თითოეული ცნობარი შედგება გარკვეული რაოდენობის დისკის ბლოკად (ისე, რომ დირექტორია შეიძლება დაიწერა დისკზე Atomino). დირექტორიაში, ფაილებისა და დირექტორიების ელემენტები უშუალოდ (თითოეული პუნქტი პირდაპირ მიჰყვება წინა). ელემენტები ვერ გადაკვეთენ ბლოკების საზღვრებს, ასე რომ, თითოეული დისკის ბლოკის ბოლოს, როგორც წესი, არსებობს რამდენიმე გამოუყენებელი ბაიტი.


თითოეული დირექტორია შესვლის ფიგურა. 10.18 შედგება ფიქსირებული სიგრძისა და ცვლადი სიგრძის ოთხივე დარგში. პირველი ველი არის I-Node Number 19 კოლოსალური ფაილი, 42 ამისთვის მოცულობითი და 88 ფაილი Bigdir დირექტორიაში. შემდეგი არის rec_len სფეროში, რომელიც ანგარიშს მთლიანი დირექტორიაში შესვლის ბაიტი (შესაძლოა, ერთად დამატებითი placeholders შემდეგ სახელი). ეს ველი აუცილებელია მომდევნო ჩანაწერის მოძიება (იმ შემთხვევაში, როდესაც ფაილის სახელი შეავსებს უცნობი რაოდენობის ბაიტებს). ფიგურაში, ეს ველი მიუთითებს arrow. შემდეგ არსებობს საველე ტიპის ველი, დირექტორია და ა.შ. ფიქსირებული სიგრძის ბოლო სფერო შეიცავს ბაიტებში (8, 10 და 6 ამ მაგალითს). საბოლოოდ, ფაილის სახელი მოდის ნულოვანი byte თავად და დაემატა 32 ბიტიანი საზღვარი. დამატებითი საფოსტო ყუთი შეიძლება დაიცვას.

ფიგურაში 10.18, B ნაჩვენებია იმავე დირექტორიაში, როდესაც მოცულობის ელემენტის ამოღების შემდეგ. ყველაფერი, რაც კეთდება კატალოგში - ზრდის ნომერს წინა კოლოსალური ფაილის ჩაწერის ზომაში და დისტანციური მოცულობის ფაილის დირექტორიაში ჩანაწერის ბაიტი გადაკეთებულია პირველი ჩანაწერის შემავსებლისთვის. მოგვიანებით, ეს ბაიტი შეიძლება გამოყენებულ იქნას ახალი ფაილის შექმნისას.

მას შემდეგ, რაც ძიება დირექტორიები კეთდება ხაზოვანი, მაშინ ძიება ჩანაწერი, რომელიც დასასრულს დიდი დირექტორია შეიძლება დიდი ხნის განმავლობაში. აქედან გამომდინარე, სისტემა მხარს უჭერს Cache დირექტორიები, რომელთა ხელმისაწვდომობა ცოტა ხნის წინ გააკეთა. Cache- ის ძებნა ხდება ფაილის სახელით, და თუ აღმოჩნდა, მაშინ ძვირადღირებული წრფივი ძიება აღარ არის საჭირო. Dentry ობიექტი შევიდა ქეში დირექტორო ელემენტები თითოეული გზა კომპონენტების, და (მეშვეობით მისი I-Node) ეძებს დირექტორიაში შემდგომი გზა ნივთები (სანამ ფაქტობრივი ფაილი I-Node ნაპოვნია).

მაგალითად, აბსოლუტური გზების მიერ განსაზღვრული ფაილის მოძებნა (როგორიცაა / USR / AST / ფაილი), უნდა შესრულდეს შემდეგი ნაბიჯები. უპირველეს ყოვლისა, სისტემა აღმოაჩენს root დირექტორიაში, რომელიც, როგორც წესი, იყენებს I-Node ნომერ 2 (განსაკუთრებით მაშინ, როდესაც I-Node ნომერ პირველი 1 არის დაცულია მუშაობა ცუდი ბლოკები). იგი განათავსებს შესაბამისი ელემენტის ქეში დირექტორია ნივთები (მომავალი ფესვების კატალოგი ძიება). მას შემდეგ ეძებს "USR" string in root დირექტორია მისაღებად რიცხვი I-Node ამისთვის / USR დირექტორიაში (რომელიც ასევე შევიდა ქეში დირექტორია ელემენტები). ეს I-Node შემდეგ წაიკითხავს, \u200b\u200bდა დისკის ბლოკები მოძიებულია, ასე რომ თქვენ შეგიძლიათ წაიკითხოთ / USR დირექტორია და მოძებნოთ AST ხაზი. მას შემდეგ, რაც შესაბამისი ელემენტის ნაპოვნია, შეგიძლიათ განსაზღვროთ I-Node- ის რიცხვი / USR / AST. მას შემდეგ, რაც I-Node Number, შეგიძლიათ წაიკითხოთ და იპოვოთ დირექტორია ბლოკები. საბოლოოდ, ჩვენ ვეძებთ "ფაილი" და იპოვოთ მისი I-Node- ის რიცხვი. ამრიგად, ნათესავის გზების გამოყენება არ არის მხოლოდ უფრო მოსახერხებელი მომხმარებლისთვის, არამედ ამცირებს სისტემას ოპერაციის ოდენობას.

თუ ფაილი ხელმისაწვდომია, სისტემა I-Node- ის რიცხვს იყენებს და იყენებს I-Node ცხდის (დისკზე), რათა მოძებნოთ შესაბამისი I-Node და წაიკითხოთ მეხსიერებაში. ეს I-Node მოთავსებულია I-Node Table (I-Node ცხრილი) - ბირთვის მონაცემთა სტრუქტურა, რომელიც შეიცავს ყველა I- კვანძებს ამჟამად ღია ფაილებისა და დირექტორიებისათვის. I-NODES- ის ფორმატი უნდა შეიცავდეს (მინიმუმ) ყველა სფეროში, რომელიც დაბრუნდება სისტემის ზარის Stat ისე, რომ Stat Call შეიძლება მუშაობა (იხ. ცხრილი 10.10). Tab. 10.13 გვიჩვენებს ზოგიერთი I-Node სტრუქტურის სფეროები მხარდაჭერილი Linux ფაილური სისტემა. I-NODE- ის ფაქტობრივი სტრუქტურა ბევრად უფრო მეტია, რადგან იგივე სტრუქტურა გამოიყენება დირექტორიების, მოწყობილობებისა და სხვა სპეციალური ფაილების წარმოსადგენად. I-NODE- ის სტრუქტურა ასევე შეიცავს ასევე მომავალი გამოყენებისათვის. ამბავი აჩვენა, რომ გამოუყენებელი ბიტი გრძელი რჩება გარეშე.

ახლა მოდი ვნახოთ, როგორ არის სისტემა ფაილი. გახსოვდეთ, რომ ბიბლიოთეკის პროცედურის ტიპიური ზარი სისტემის ზარის დასაწყებად:

n \u003d წაიკითხეთ (FD, ბუფერული, nbytes);


როდესაც კერნელი იღებს კონტროლს, მაშინ ყველაფერი, რაც მას შეუძლია დაიწყოს - ეს სამი პარამეტრი და ინფორმაცია შიდა მაგიდებზე (მომხმარებელთან დაკავშირებული). ამ შიდა ცხრილების ერთ-ერთი ელემენტი არის ფაილის დესკრიპტორების მასივი. ეს არის ინდექსირებული ფაილის დესკრიპტორები და შეიცავს ერთ ელემენტს თითოეული ღია ფაილისთვის (მაქსიმალური თანხისთვის, ჩვეულებრივ, 32).

იდეა არის ამ ფაილის დესკრიპტორის დაწყება და შესაბამისი ბუშტის დასრულება. მოდით შევხედოთ ერთი სრულიად შესაძლებელი სქემა: მოდით განათავსოთ Pozel მაჩვენებელი ფაილის დესკრიპტორების მაგიდაზე. სიმარტივის მიუხედავად, ეს მეთოდი (სამწუხაროდ) არ მუშაობს. პრობლემა ასეთია. თითოეული ფაილის აღწერით, მაჩვენებელი უნდა იყოს დაკავშირებული იმ ფაილში, რომელიც განსაზღვრავს ბაიტს იმ ფაილში, საიდანაც დაიწყება შემდეგი წაკითხული ან ჩაწერის ოპერაცია. სად უნდა იყოს ეს მაჩვენებელი? ერთი ვარიანტი არის ის ავტობუსების მაგიდაზე. თუმცა, ეს მიდგომა ვერ შეძლებს იმუშაოს იმ შემთხვევაში, თუ რამდენიმე პროცესი, რომელიც არ არის დაკავშირებული ერთმანეთთან ერთდროულად, იმავე ფაილს გახსნის, რადგან თითოეული პროცესი უნდა ჰქონდეს საკუთარი მაჩვენებელი.

მეორე ხსნარის მეორე ხსნარი არის მაგიდის დესკრიპტორების მაჩვენებელი. ამ შემთხვევაში, თითოეული ფაილი გახსნის პროცესს აქვს საკუთარი პოზიცია ფაილი. სამწუხაროდ, ასეთი სქემა ასევე არ მუშაობს, მაგრამ ამ შემთხვევაში მარცხი არ არის აშკარა და უკავშირდება Linux სისტემაში ფაილების გაზიარების ბუნებას. განვიხილოთ ჭურვი Script 5, რომელიც შედგება ორი ბრძანებისგან (P1 და P2), რომელიც უნდა შესრულდეს თავის მხრივ. თუ სკრიპტს ეწოდება ბრძანების ხაზი

მოსალოდნელია, რომ P1 ბრძანება წერს X ფაილზე, შემდეგ კი P2 ბრძანება ასევე დაწერა მისი გამომავალი X ფაილი, დაწყებული ადგილიდან, სადაც P1 ბრძანება შეჩერდა.

როდესაც ჭურვი P1- ის პროცესს იწყებს, X ფაილი პირველად ცარიელია, ამიტომ P1 ბრძანება უბრალოდ იწყებს წერილობით ფაილს პოზიციაზე 0. თუმცა, როდესაც P1 სრულდება მისი მუშაობა, გარკვეული მექანიზმი დასჭირდება, რომ P2 პროცესი იქნება იხილეთ როგორც თავდაპირველი პოზიცია არა 0 (და ასე მოხდება, თუ ეს მოხდება იმ შემთხვევაში, თუ ფაილის დესკრიპტორების პოზიცია მაგიდაზეა) და ღირებულება, რომელზეც PI შეჩერდა.

ისე, როგორც ეს გაკეთდა ნაჩვენებია ნახატზე. 10.19. აქცენტი არის ახალი მაგიდის შესასვლელად - ღია ფაილების აღწერა მაგიდა (ღია ფაილების აღწერა მაგიდა) - ფაილის დესკრიპტორების მაგიდასთან და I- კვანძების მაგიდას შორის და შეინახეთ მაჩვენებელი ფაილში (ისევე, როგორც წაკითხული / დაწერილი) . ფიგურაში მშობლის პროცესი არის ჭურვი და ქალიშვილი პირველი PI პროცესია, შემდეგ კი P2 პროცესი. როდესაც ჭურვი ქმნის PI- ს პროცესს, მისი მომხმარებლის სტრუქტურა (მათ შორის ფაილის დესკრიპტორების მაგიდა) არის იგივე მემბრანის სტრუქტურის ზუსტი ასლი, ამიტომ ორივე მათგანი შეიცავს ღია ფაილების აღწერილობას. როდესაც პროცესი ასრულებს თავის მუშაობას, ჭურვი ფაილის დესკრიპტორი განაგრძობს ღია ფაილების ცხრილის მითითებას, რომელიც შეიცავს P1 პოზიციას ფაილში. როდესაც ახლა ჭურვი ქმნის P2 პროცესს, მაშინ ახალი ბავშვის პროცესი ავტომატურად მემკვიდრეობით არის ფაილი, ხოლო არ არის ახალი პროცესი, არც ჭურვი ვალდებულია იცოდეს ამ პოზიციის მიმდინარე ღირებულება.


იმ შემთხვევაში, თუ რომელიმე extraneous პროცესი იხსნება ფაილი, ის მიიღებს საკუთარ შესვლას მაგიდაზე მაგიდასთან მაგიდასთან მისი პოზიცია ფაილში, კერძოდ, აუცილებელია. ამრიგად, ღია ფაილის აღწერა მაგიდის ამოცანაა მშობლისა და ბავშვის პროცესების დაშვება ფაილში ერთი მაჩვენებლის გაზიარება, მაგრამ უცხოური პროცესებისათვის პირადი მითითებების გამოყოფა.

ასე რომ (წაკითხვის წაკითხვის პრობლემის დაბრუნებას) ჩვენ ვაჩვენეთ, თუ როგორ განისაზღვრება პოზიცია ფაილსა და I-Node- ში. I-Node შეიცავს პირველი 12 ფაილის ბლოკების დისკის მისამართებს. თუ ფაილში პოზიცია პირველ 12 ბლოკში მოდის, სასურველი ფაილის ბლოკი წაიკითხა და მონაცემები გადაწერილია მომხმარებლისთვის. ფაილებისთვის, რომელთა ხანგრძლივობა აღემატება 12 ბლოკს, I-Node შეიცავს ერთ არაპირდაპირი ბლოკის დისკზე (ერთი არაპირდაპირი ბლოკი) დისკზე (ნახ. 10.19). ეს ბლოკი შეიცავს დისკზე დამატებითი დისკის ბლოკებს. მაგალითად, თუ ბლოკის ზომა არის 1 KB, და დისკის მისამართი იღებს 4 ბაიტს, ერთი არაპირდაპირი ერთეული შეიძლება შეინახოს 256 დისკზე. ეს სქემა საშუალებას გაძლევთ ხელი შეუწყონ ფაილების 268 KB- მდე.

ext2. (ასევე მოუწოდა როგორც ext2fs.) - მეორე გაფართოებული ფაილური სისტემა(მეორე გაფართოებული ფაილური სისტემა) არის Linux Kernel- ზე აშენებული ფაილური სისტემა. შემოქმედი და შემქმნელი EXT2 არის Remy ბარათი. EXT2 ფაილური სისტემა აშენდა მის მიერ ძველი, წინა ვერსიის სანაცვლოდ.

ასეთი ინდიკატორების მიხედვით სიჩქარე და შესრულება, ეს ფაილური სისტემა შეიძლება იყოს მითითება. ეს არის ფაილური სისტემის შესრულების ტესტების შედეგების შესახებ. მაგალითად, თანმიმდევრული კითხვისა და წერის სიჩქარის სიჩქარით, რომელმაც ჩაატარა Dell ტექნიკური ცენტრი, EXT2 ფაილური სისტემა აღემატება EXT3- ს და უფრო დაბალია, ვიდრე უფრო მეტი თანამედროვე ext4.

მთავარი მინუსი Ext2 არის ის, რომ ეს არ არის journaling ფაილური სისტემა. თუმცა, ეს მინუსი აღმოიფხვრა მომდევნო ფაილურ სისტემაში - EXT3.

eXT2 გამოიყენება ფლეშ ბარათებზე და მყარი სახელმწიფო დრაივებზე (SSD), რადგან ჟურნალისტის ნაკლებობა არის უპირატესობა, როდესაც მუშაობს დრაივებთან ერთად ჩაწერის ციკლის რაოდენობა.

Ext2- ის შექმნის ისტორია.

Linux სისტემის სწრაფი განვითარების დროს, მან გამოიყენა MINIX ფაილური სისტემა. ეს იყო საკმაოდ მაღალი სტაბილურობა, მაგრამ ეს იყო 16 ბიტი. შედეგად, ეს იყო მკაცრი შეზღუდვა 64 მბ-ში სექციაში. გარდა ამისა, იყო ლიმიტი ფაილის სახელის მაქსიმალური სიგრძეზე, რომელიც იყო 14 სიმბოლო.

ეს შეზღუდვები აგრეგატში იყო "გაძლიერებული ფაილური სისტემის" განვითარების მიზეზი (შესაბამისად, ტერმინი " გაფართოებული ფაილური სისტემა »). მას ჰქონდა დავალება ორი Minix ძირითადი პრობლემის მოსაგვარებლად. ახალი ფაილური სისტემა გამოქვეყნდა 1992 წლის აპრილში. ეს იყო ext, ის გაფართოვდა ლიმიტი ზომა 2 Gigabytes და დაინსტალირებული ლიმიტის სიგრძე ფაილის სახელი 255 სიმბოლო.

თუმცა, მიუხედავად იმისა, რომ ახალი ფაილური სისტემის წარმატების მიუხედავად, საკმაოდ ბევრი რამ დარჩა. მაგალითად, ცალკე ხელმისაწვდომობის მხარდაჭერა არ არსებობდა, მონაცემთა მოდიფიცირების დრო არ იყო. ამ ამოცანების გადასაწყვეტად საჭიროება და მსახურობდა, როგორც გაფართოებული EXT2 ფაილური სისტემის შემდეგი ვერსიის შექმნა (" მეორე გაფართოებული ფაილური სისტემა »). EXT2 შეიქმნა 1993 წლის იანვარში, ასევე ახორციელებს შესაბამისი ACL წვდომის კონტროლის სიებს და გაფართოებულ ფაილ ატრიბუტებს.

ლოგიკური ორგანიზაცია Ext2.

EXT2 დირექტორია იერარქიის გრაფაში წარმოდგენილია ქსელის სახით. ეს არის იმის გამო, რომ ერთი ფაილი შეიძლება დაუყოვნებლივ შეიყვანოთ რამდენიმე დირექტორიას.

ყველა ფაილის ტიპს სიმბოლური სახელები აქვს. იერარქიულად ორგანიზებული ფაილური სისტემებით, გამოიყენება სამი ტიპის სახელები: მარტივი, კომპოზიტური და ნათესავი. ასე რომ ext2. უბრალო სახელის შემთხვევაში, შეზღუდვა ისაა, რომ მისი სიგრძე არ უნდა აღემატებოდეს 255 სიმბოლოს, გარდა ამისა, NULL სიმბოლო და Slash უნდა იყოს სახელით.

რაც შეეხება NULL სიმბოლოს, შეზღუდვები დაკავშირებულია SI ენაზე რიგების წარმომადგენლებთან, slash სიმბოლოების შემთხვევაში, ყველაფერი ის არის, რომ იგი გამოიყენება როგორც გამყოფი ხასიათი შორის დირექტორიები.

სრული სახელი არის მარტივი სიმბოლური სახელების ყველა დირექტორიის მარტივი სიმბოლური სახელები, რომლის მეშვეობითაც ფესვების გზაა ამ ფაილზე. Ext2- ში, ფაილი შეიძლება შეიტანოს რამდენიმე დირექტორიები, ეს ნიშნავს, რომ მას შეუძლია რამდენიმე სრული სახელი (ერთი ფაილი არის რამდენიმე სრული სახელი). მაგრამ მაინც, სრული სახელი განსაზღვრავს ფაილს.

Ext2 ატრიბუტები:

  • ფაილის ტიპი და წვდომის უფლება,
  • მფლობელი, დაშვების ჯგუფი,
  • ინფორმაცია ნებადართული ოპერაციების შესახებ,
  • შექმნის დრო, ბოლო წვდომის თარიღი, ბოლო ცვლილების თარიღი და ბოლო მოცილება დრო,
  • მიმდინარე ფაილის ზომა
  • ფაილის სპეციფიკაცია:
    • რეგულარული ფაილი
    • კატალოგი,
    • მოწყობილობა Byte ორიენტირებული მოწყობილობა,
    • ფაილის ბლოკ-ორიენტირებული მოწყობილობა,
    • დაასახელა არხი
    • სიმბოლური ბმული
  • ოკუპირებული ბლოკების რაოდენობა,
  • სხვა

ფაილის ატრიბუტები შეიცავს სპეციალურ მაგიდას, და არა დირექტორიებში, რადგან ეს შეიძლება იყოს მარტივი ფაილური სისტემები. შედეგად, დირექტორია აქვს ძალიან მარტივი სტრუქტურა, რომელიც შედგება ორი ნაწილისაგან: ინდექსის დესკრიპტორის რაოდენობა და სახელი.

ფიზიკური ორგანიზაცია EXT2.

დისკის განყოფილების სტრუქტურა

EXT2- ის ნაწილი, შემდეგი შეიძლება გამოირჩევა:

  • ბლოკების ბლოკები და ბლოკები;
  • ინდექსის დესკრიპტორი;
  • superBlock.

მთელი დისკის დანაყოფის სივრცე დაყოფილია ფიქსირებული ბლოკებით, ბლოკავს მრავალჯერადი სექტორის ზომა (1024, 2048, 4096 ან 8192 ბაიტი). ბლოკის ზომა განსაზღვრულია დისკი სექციაზე ფაილური სისტემის შექმნისას. ყველა ბლოკი ენიჭება თანმიმდევრობის ნომრებს. მყარი დისკის ხელმძღვანელების მოძრაობის რაოდენობის შემცირება, დიდი მონაცემთა მასივების წაკითხვისას, ბლოკები კომბინირებულია ჯგუფებად.

ფაილური სისტემის ძირითადი კონცეფცია არის ინდექსის დესკრიპტორი (ასევე მოუწოდა ჩაძირვა - ინფორმაცია კვანძის.). ეს არის სპეციალური სტრუქტურა, რომელიც შეიცავს ინფორმაციას ატრიბუტებისა და ფიზიკური ფაილის ადგილმდებარეობის შესახებ. ინდექსის decapaptructors კომბინირებულია მაგიდაზე, რომელიც შეიცავს ბლოკების თითოეული ბლოკის დასაწყისში. SuperBlock არის EXT2 ფაილური სისტემის ძირითადი ელემენტი. იგი შეიცავს ზოგად ინფორმაციას ფაილური სისტემის შესახებ. SuperBlock მდებარეობს 1024 ბაიტიდან სექციის დაწყებიდან. SuperBlock- ის მთლიანობა განსაზღვრავს ფაილის სისტემის ფუნქციებს. OS ქმნის SuperBlock- ის რამდენიმე სარეზერვო ასლს - დანაყოფის დაზიანების შემთხვევაში. მომდევნო ბლოკში SuperBlock- ის შემდეგ არის გლობალური დესკრიპტორი მაგიდა - ბლოკის ჯგუფების აღწერა მასივის სახით ზოგადი ინფორმაციის შესახებ ყველა ბლოკის შესახებ.

ბლოკის ჯგუფი

ყველა Ext2 ბლოკის ბლოკები გატეხილია ჯგუფებად. თითოეული ჯგუფისთვის, ცალკე შესვლისას შეიქმნა გლობალური დესკრიპტორი მაგიდაზე. ეს შესვლის ინახავს ძირითად პარამეტრებს, როგორიცაა: BITMAP- ებისა და ცხრილების ბლოკის ნომერი, ჯგუფში უფასო ბლოკების რაოდენობა, ინდექსის დესკრიპტორების რაოდენობა, რომელიც შეიცავს დირექტორიებს.

Bit Map Blok - ეს არის სისტემა, რომელშიც თითოეული ბიტი აცნობებს თუ არა ფაილს, რომელსაც აქვს ფაილი. თუ ცოტა არის 1, მაშინ ბლოკი დაკავებულია. მსგავსი ფუნქცია ხორციელდება Bitmap- ის მიერ ინდექსის დესკრიპტორების მიერ: ის გვიჩვენებს, თუ რომელი ინდექსის აღწერებია დაკავებული და რომელი არ არის. Linux Kernel ცდილობს თანაბრად გავრცელება Inode დირექტორია ჯგუფებში, და inode ფაილები - გადაადგილება ჯგუფში მშობელი კატალოგი. დარჩენილი ადგილი ცხრილში ჩანს, რადგან მონაცემები ენიჭება ფაილების შენახვას.

მონაცემთა მისამართების სისტემა

მონაცემთა მისამართის სისტემა ფაილური სისტემის ერთ-ერთი ყველაზე სერიოზული და ძირითადი კომპონენტია. მადლობა მას, სასურველი ფაილი შორის ბევრი ცარიელი ან დაკავებული ბლოკები დისკზე.

eXT2 ვრცელდება შემდეგი ფაილის ბლოკის მისამართით სქემით. ფაილის მისამართის შენახვისთვის, 15 ველი იზოლირებულია, რომელთაგან თითოეული შედგება 4 ბატისგან. თუ ფაილი შეესაბამება 12 ბლოკს, შესაბამისი მტევანი ნომრები ჩამოთვლილია პირველი თორმეტი მისამართით. თუ ფაილის ზომა აღემატება 12 ბლოკს, შემდეგი ველი შეიცავს კასეტურას მისამართს, რომელშიც შეიძლება განთავსდეს შემდეგი ფაილის ბლოკები. ასე რომ, მეცამეტე ველი გამოიყენება არაპირდაპირი მისამართით.

4096 ბატის ბლოკის მაქსიმალური ზომა, მე -13 სფეროსთან დაკავშირებული კასეტური შეიძლება შეიცავდეს შემდეგ ფაილის ბლოკებს 1024 ნომრებზე. თუ ფაილის ზომა აღემატება 12 + 1024 ბლოკს, მაშინ მე -14 ველი გამოიყენება, რომელშიც 1024 კასეტური ნომრის შემცველი კასეტური მისამართი მდებარეობს, რომელთაგან თითოეული ეხება 1024 ფაილის ბლოკს. უკვე ორმაგი არაპირდაპირი მისამართია. და თუ ფაილი მოიცავს 12 + 1024 + 1048576 ბლოკს, მაშინ ტრიპლე არაპირდაპირი მისამართების ბოლო მე -15 ველი გამოიყენება.

ასეთი მისამართების სისტემა საშუალებას გაძლევთ ფაილი, 2 ტუბერკულოზზე მეტი მაქსიმალური ბლოკის ზომა 4096 ბაიტზე.

თუ თქვენ გაქვთ ორი ოპერაციული სისტემა, Windows და Linux დამონტაჟებულია, მაშინ ალბათ, მინდა, რომ შეიცავდეს უფასო ოპერაციული სისტემის სექტორებს პირდაპირ Windows- ზე კომპიუტერის გადატვირთვის გარეშე.

სამწუხაროდ, Windows- ის Linux OS სექციების მხარდაჭერა არ არის გათვალისწინებული. და უშედეგოდ. მეჩვენება, რომ ეს შეიძლება იყოს Microsoft- ის ლამაზი ჟესტი.

პრობლემის არსი არის ის, რომ Windows იყენებს NTFS ფაილურ სისტემას, ხოლო Linux- ს აქვს საკუთარი გზა ფაილების ორგანიზების მიზნით, გაფართოებულ ფაილურ სისტემაში, რომელთა უახლესი ვერსია აქვს თანმიმდევრობის ნომერს 4.

Linux უფრო მეგობრულია თავისი მომხმარებლებისთვის, ვიდრე მისი კომერციული დის: Linux- ში, ნაგულისხმევი მხარდაჭერილია Windows NTFS ფაილური სისტემა. რა თქმა უნდა, თქვენ ვერ შეძლებთ NTFS- ის მონაკვეთზე Linux- ის ინსტალაციას, მაგრამ თქვენ შეგიძლიათ წაიკითხოთ და დაწეროთ მონაცემები.

Ext2 ifs

EXT2 IFS მხარს უჭერს Windows NT4.0 / 2000/2003/2003 / Vista / 2008 ვერსიები X86 და X64 და საშუალებას გაძლევთ იხილოთ Linux Ext2 სექციების შინაარსი და ასევე შეგიძლიათ ჩაიწეროს მათზე. კომუნალური ადგენს EXT2FS.SYS სისტემის მძღოლს, რომელიც აფართოებს Windows შესაძლებლობებს და მოიცავს სრულ მხარდაჭერას EXT2- ში: დანაყოფების ext2 ენიჭება დისკების ასოებს და ფაილებსა და საქაღალდეებს ყველა განაცხადის დიალოგებში გამოჩნდება , Explorer- ში.

EXT2 FSD.

EXT2 FSD არის Windows Systems- ის უფასო მძღოლი (2K / XP / Vista / 7 ვერსიები X86 და X64). როგორც წინა კომუნალური, რომელიც, თავის არსით, ასევე მძღოლი, მოიცავს სრული მხარდაჭერა Ext2 ფაილური სისტემა Windows.

LTOOLS - ბრძანების ხაზი კომუნალური ნაკრები, რომელიც საშუალებას გაძლევთ წაიკითხოთ და ჩაწეროთ მონაცემები / Linux Ext2, Ext3 და Reiserfs (სტანდარტული Linux ფაილური სისტემები) DOS ან Windows- დან.

არსებობს ვერსია პროგრამის გრაფიკული ჭურვი (დაწერილი Java) - LToolsgui, ისევე როგორც ვერსია გრაფიკული ჭურვი დაწერილი.

Ext2read.

დესერტისთვის, როგორც ყოველთვის ყველაზე გემრიელია.

Ext2Read არის კომუნალური დაფუძნებული მენეჯერი ფაილი, რომელიც საშუალებას გაძლევთ ნახოთ და დაწეროთ EXT2 / EXT3 / EXT4 სექციები. მხარს უჭერს LVM2 და ეს განასხვავებს ამ მიმოხილვის სხვა პროგრამებს, EXT4 ფაილურ სისტემას. ჩაშენებული მხარდაჭერა რეკურსიული კოპირების დირექტორიები.

აქ არის მეორე დესერტი. თავდაპირველად, ითქვა, რომ Microsoft- ის კარგი ჟესტი იქნება Windows- ის მიერ Linux სექციების მხარდაჭერა.

ჟესტი კვლავ გააკეთა Linux- ის მე -20 წლისთავზე. ნახეთ საკუთარ თავს.

Სულ ეს არის. Მადლობა ყურადღებისთვის. მე წავედი ბრძოლა მაისის beetles. მათი გაზაფხული ძალიან ბევრია. 🙂

ვლადიმირ Miskov

ფაილური სისტემის არქიტექტურა EXT2

სტატიაში განხილულია Linux ოპერაციული სისტემის ext2 ფაილური სისტემის ლოგიკური სტრუქტურა.

EXT2 ფაილური სისტემის ძირითადი კომპონენტები

როგორც UNIX ფაილურ სისტემაში, შემდეგი კომპონენტები შეიძლება გამოირჩეოდნენ EXT2 ფაილურ სისტემაში:

  • ბლოკების ბლოკები და ბლოკები;
  • ინფორმაცია კვანძის;
  • superBlock.

ბლოკები და ბლოკები ბლოკები

მთელი დისკის დანაყოფის სივრცე დაყოფილია ფიქსირებული ზომის ბლოკებად, მრავალჯერადი სექტორის ზომა - 1024, 2048 და 4096 ბაიტი. ბლოკის ზომა მიუთითებს ფაილური სისტემის შექმნისას მყარ დისკზე. პატარა ბლოკის ზომა გადაარჩენს სივრცეში მყარ დისკზე, არამედ ზღუდავს მაქსიმალურ ფაილურ სისტემას. ყველა ბლოკს აქვს თანმიმდევრობა ნომრები. იმისათვის, რომ შეამცირონ ფრაგმენტაცია და მყარ დისკზე მეთაურების მოძრაობის რაოდენობის შემცირება, დიდი მონაცემთა მასივების წაკითხვისას, ბლოკები კომბინირებულია ჯგუფებად.

ინფორმაცია კვანძის

ფაილური სისტემის ძირითადი კონცეფცია არის ინფორმაცია კვანძის, ინფორმაციის კვანძის ან ინდოტის შესახებ. ეს არის სპეციალური სტრუქტურა, რომელიც შეიცავს ინფორმაციას ატრიბუტებისა და ფიზიკური ფაილის ადგილმდებარეობის შესახებ. ფაილის ატრიბუტები მისი ტიპი (ნორმალური ფაილი, დირექტორია და ა.შ.), დაშვების უფლებები, მფლობელი იდენტიფიკატორი, ზომა, შექმნის დრო. ინფორმაცია ფიზიკური ადგილმდებარეობის შესახებ არის ფაილის მონაცემების შემცველი აბსოლუტური ბლოკის ნომრების თანმიმდევრობა.

SuperBlock

SuperBlock არის EXT2 ფაილური სისტემის ძირითადი ელემენტი. იგი შეიცავს შემდეგ ფაილურ სისტემას (არასრული სია):

  • ბლოკების საერთო რაოდენობა და ფაილური სისტემა;
  • უფასო ბლოკების რაოდენობა და ფაილური სისტემაში ინახება;
  • ფაილური სისტემის ბლოკის ზომა;
  • ჯგუფში ბლოკებისა და ინდოეთის რაოდენობა;
  • ზომა inode;
  • ფაილური სისტემის იდენტიფიკატორი;
  • პირველი მონაცემთა ბლოკის ნომერი.

სხვა სიტყვებით რომ ვთქვათ, ეს არის superblock- ის შემცველი ბლოკის ნომერი. ეს რიცხვი ყოველთვის ტოლია 0 თუ ფაილური სისტემის ბლოკის ზომა 1024 ბაიტიზე მეტია, ხოლო 1, თუ ბლოკის ზომა 1024 ბაიტია.

ფაილური სისტემის ფუნქციონირება პირდაპირ დამოკიდებულია Superblock- ის მთლიანობაში. ოპერაციული სისტემა ქმნის რამდენიმე სარეზერვო ასლს SuperBlock- ს, რათა აღადგინოს იგი დაზიანების შემთხვევაში. ძირითადი ასლი მდებარეობს სექციის დაწყებიდან 1024 ბატის ოფსეტაზე, რომელზეც შეიქმნა ფაილური სისტემა (პირველი 1024 ბაიტი დაცულია ოპერაციული სისტემის ჩატვირთვისთვის).

Ext2 ფაილური სისტემის ადრეული ვერსიები SuperBlock- ის ასლები შეიქმნა ბლოკების თითოეული ბლოკის დასაწყისში. ეს გამოიწვია დისკზე დიდი ზარალის დაკარგვა, მოგვიანებით SuperBlock- ის სარეზერვო ასლების რაოდენობა შემცირდა და მათი 0, 1, 3, 5 და მე -5 ბლოკის ჯგუფები გამოყოფილია მათი განთავსებისთვის.

ბლოკის ჯგუფის ფორმატი

FIG- ში წარმოდგენილია EXT2 ფაილური სისტემის განზოგადებული სტრუქტურული დიაგრამა. ერთი.

თითქმის ყველა ბლოკის ჯგუფს აქვს იგივე ფორმატი. თითოეულ ჯგუფში, ინფორმაციის ბლოკების გარდა, ბლოკებისა და ინვესტორების ჯგუფების დასაქმების შესახებ ინფორმაცია ინახება Bitmap- ის სახით. ბლოკების ბლოკი 0 ასევე მოიცავს ჯგუფების superblocks და მაგიდის დესკრიპტორებს, რომლებიც ქვემოთ განვიხილავთ.

დასაქმების ბლოკების ბლოკირების რუკა, როგორც წესი, მდებარეობს ჯგუფის პირველი ბლოკში. თუ სარეზერვო ასლი იმყოფება ჯგუფში, Bitmap მდებარეობს მეორე ბლოკში. Bitmap- ის ზომა არის ერთი ბლოკი. ყოველი ნაწილი ამ ბარათს აღნიშნავს ბლოკის მდგომარეობას. თუ ცოტა არის მითითებული (1), ბლოკი დაკავებულია, თუ ბლოკი გადატვირთულია (0) - ბლოკი თავისუფალია. ჯგუფის პირველი ბლოკი შეესაბამება ბარათის ნულოვანს, მეორე ბლოკს - პირველი ბიტი და ა.შ.

INOode, რომელიც მდებარეობს იმავე ჯგუფში, აგროვებს მაგიდას. In Bite დასაქმების რუკა Inode ჯგუფი თითოეული bit ახასიათებს სტატუსის ელემენტს Inode Group მაგიდა.

ბლოკების თითოეული ბლოკი აღწერილია ბლოკის ჯგუფის დესკრიპტორის გამოყენებით. ჯგუფის სახელური არის სტრუქტურა, რომელიც შეიცავს ინფორმაციას ბლოკების ბლოკების ბლოკების მისამართების შესახებ, ინფიცირებული ბიტიანი ბიტიანი და შესაბამისი ჯგუფის ინდოტის მაგიდაზე. ყველა ჯგუფის დესკრიპტორი აგროვებს ჯგუფის დესკრიპტორების მაგიდასთან, რომელიც ინახება ბლოკების ჯგუფში 0. ისევე, როგორც SuperBlock- ისთვის, ოპერაციული სისტემა ქმნის მაგიდის დესკრიპტორების სარეზერვო ასლებს.

ფაილის წაკითხვის ალგორითმი

თითოეული inode, ისევე როგორც ბლოკი, აქვს თანმიმდევრობის ნომერი, უნიკალური ფარგლებში ფაილური სისტემა, და შეიცავს ინფორმაციას მხოლოდ ერთი ფაილი. ამდენად, ფაილის შინაარსის წვდომას, თქვენ უნდა იცოდეთ შესაბამისი INODE- ის თანმიმდევრობის რიცხვი.

როგორც ზემოთ აღინიშნა, ფიზიკური ფაილის ადგილმდებარეობის შესახებ ინფორმაცია შეიცავს Inode- ში. ეს ინფორმაცია არის 32-ბიტიანი ბლოკის ნომრის თანმიმდევრობა, რომელიც შეიცავს ფაილის მონაცემებს (ნახ. 1). პირველი 12 ნომრები პირდაპირ კავშირშია ინფორმაციის ბლოკებზე (პირდაპირი ბლოკების ნომერი). მე -13 ნომერი არის არაპირდაპირი ბმული (არაპირდაპირი ბლოკების ნომერი). იგი შეიცავს ბლოკის მისამართს, რომელშიც ინახება საინფორმაციო ბლოკების მისამართები. მე -14 ოთახი ორმაგი არაპირდაპირი ბმულია (ორმაგი ბლოკების ნომერი), მე -15 რიცხვი არის სამმაგი არაპირდაპირი ბმული (სამმაგი ბლოკების ნომერი).

ფაილის სახელი Inode არ შედის, შექმნის შესაბამისობის ფაილის სახელები და Inode თანმიმდევრობით ნომრები ხორციელდება მეშვეობით დირექტორიები.

კატალოგები

ფაილები UNIX და POSIX სისტემებში ინახება ხე იერარქიულ ფაილში. ფაილური სისტემის ფესვი არის "/" სიმბოლო მიერ მითითებული ძირეული დირექტორია. თითოეული შუალედური კვანძის ფაილური სისტემის ხე არის დირექტორია. ფაილური სისტემის საბოლოო vertices არის ცარიელი დირექტორიები ან ფაილი. აბსოლუტური გზა სახელით შედგება ყველა დირექტორიის სახელები, რომლებიც მითითებულ ფაილს, დაწყებული root დირექტორიაში. ასე რომ, სიმღერა სახელი / Home/test.File ნიშნავს, რომ test.file ფაილი მდებარეობს სახლში დირექტორიაში, რომელიც, თავის მხრივ, მდებარეობს root catalog "/".

კატალოგი, ისევე როგორც ფაილი, აღწერილია ინდოტის გამოყენებით. დირექტორიის შინაარსი არის ჩანაწერების მასივი, რომელთაგან თითოეული შეიცავს ინფორმაციას ფაილის შესახებ, რომელიც არის "შიგნით" მიმდინარე დირექტორიაში.

ჩანაწერის დირექტორია აქვს შემდეგ ფორმატში:

  • თანმიმდევრობის ნომერი InoDe ფაილი;
  • ჩაწერის სიგრძე ბაიტებში;
  • Ფაილის სახელი;
  • ფაილის სახელის სიგრძე.

ძიება Inode ფაილი ყოველთვის იწყება root დირექტორიაში. მაგალითად, იმისათვის, რომ მიიღოთ Inode თანმიმდევრობის ნომერი root დირექტორიაში, ოპერაციული სისტემა უნდა მიიღოს შინაარსი root დირექტორია, იპოვოს იგი ამ ფაილის სახელით და ამოიღეთ InoDe ფაილის ნომერი ამ ჩანაწერისგან.

რამდენიმე inode ნომრები დაცულია ფაილური სისტემით, მათი სია შეიცავს სათაურის ფაილში:

* სპეციალური Inode ნომრები

#Define ext2_bad_ino 1 / * ცუდი ბლოკები inode * /

#Define ext2_root_in 2 / * Root Inode * /

#Define ext2_acl_idx_in 3 / * ACL INODE * /

#Define ext2_acl_data_ino 4 / * ACL INODE * /

#Define ext2_boot_loader_ino 5 / * boot loader inode * /

#Define ext2_undel_dir_ino 6 / * Undelete დირექტორია Inode * /

Root Directory- ის ჩაწერას, INOOD არის დაცულია ნომერი 2 (Root Inode). ეს inode არის ბლოკში ბლოკები 0 და იღებს მეორე პოზიცია inode მაგიდასთან ამ ჯგუფის. პირველი არასამთავრობო surtered inode- ის რიცხვი ინახება SuperBlock- ში.

Inode თანმიმდევრობის ნომრის განსაზღვრის შემდეგ, კერნელი ითვლის ჯგუფის ნომერს, რომელშიც ეს inode მდებარეობს და მისი პოზიცია Inode Group მაგიდაზე. ამ თანამდებობაზე ინდოეთის გათვალისწინებით, ოპერაციული სისტემა იღებს სრულ ფაილებს, მათ შორის ბლოკის მისამართებს, რომელშიც ინახება ფაილის შინაარსი.

ბლოკის რიცხვი, რომელშიც მდებარეობს Inode- ის მიერ გამოითვლება ფორმულით:

ჯგუფი \u003d (Inode_num - 1) / inodes_per_group

სადაც:

  • ჯგუფი.- ბლოკის ბლოკის სასურველი რაოდენობა;
  • inode_num - ფაილის განსაზღვრის თანმიმდევრობის ნომერი;
  • inodes_per_group - ჯგუფში Inode- ის რიცხვი (ეს ინფორმაცია Superblock- ში).

Inode ჯგუფის მაგიდაზე ინდოეთის პოზიცია განისაზღვრება ფორმულით:

index \u003d (inode_num - 1) in inodes_per_grupa

სად არის ინდექსი inode პოზიცია მაგიდაზე.

განვიხილოთ მაგალითი Test- ის შინაარსის მოპოვების მაგალითი. წაკითხვის / atest.file ფაილი:

  • მასივის root დირექტორია ჩანაწერების, იპოვოს შესვლის შესახებ ამ ფაილი;
  • ამონაწერი INODE ფაილის თანმიმდევრობით, გამოთვალეთ ჯგუფის ნომერი, რომელშიც ეს inode მდებარეობს;
  • ამ ჯგუფის დესკრიპტორიდან, თქვენ ამონაწერი Inode Group- ის მაგიდის მისამართზე;
  • გამოთვალეთ ინდოეთის პოზიცია ამ მაგიდაზე;
  • წაიკითხეთ INODE ფაილი;
  • inoode ამონაწერი მისამართი ბლოკი მისამართები და წაიკითხეთ ინფორმაცია ამ ბლოკებში.

ფიგურაში 2 დეტალები აჩვენე / ტესტის ფაილის კითხვას. ფაილი.

    ნაბიჯები 1-6 - კითხვის ფესვების კატალოგი:

  1. ბლოკების ჯგუფიდან 0, მაგიდის დესკრიპტორების წაკითხვა.
  2. მაგიდის დესკრიპტორების მაგიდაზე, ბლოკების ჯგუფის ჯგუფი 0 ამოღებულია და ინდოეთის ჯგუფის მისამართი წაიკითხავს მას.
  3. ბლოკების ჯგუფიდან 0 კითხულობს ინვერსიულ მაგიდას.
  4. Inode თანმიმდევრობის რიცხვი root დირექტორია არის ფიქსირებული და ტოლია 2, ასე რომ მეორე ელემენტს წაიკითხავს Inode Group 0, რომელიც შეიცავს ბლოკის მისამართი root დირექტორია შინაარსი. დავუშვათ, რომ ეს ერთეული მდებარეობს ბლოკების ბლოკში.
  5. ბლოკების ჯგუფისგან კითხულობს ბლოკს, რომელიც შეიცავს root დირექტორიაში ჩანაწერებს.
  6. ჩანაწერის ჩანაწერი "Test.File" არის ჩხრეკა. თუ ასეთი ჩანაწერი გვხვდება, INODE SERIES "TEST.FILE" ფაილი ამოღებულია.
  7. Inode Number- ის განსაზღვრისას შეგიძლიათ მიიღოთ ფაილის საინფორმაციო ბლოკები (ნაბიჯები 7-11):

  8. ჯგუფის ნომერი გამოითვლება, სადაც ეს inode მდებარეობს და მისი პოზიცია Inode Group Table (ვარაუდობენ, რომ ჯგუფის ნომერი ტოლია B და პოზიცია ცხრილი - X).
  9. ჯგუფის დესკრიპტორების მაგიდაზე, წაშალეთ ნაწილი ჯგუფის დესკრიპტორი B და ამ ბლოკის ამ ბლოკის ინფო ცხრილის მისამართია.
  10. Inode მაგიდა წაიკითხავს B ბლოკ ჯგუფიდან.
  11. InoDe Blocks of Blocks B ბლოკები Binds Inode, მდებარეობს პოზიცია X.
  12. წაკითხული ინდოტისგან, ბლოკის მისამართები შინაარსის ფაილთან /ტერთან ერთად არის მოძიებული და ინფორმაცია წაიკითხავს ბლოკს მითითებულ მისამართზე.

ფაილის წაკითხვის პროგრამული უზრუნველყოფა ალგორითმი

წყარო მონაცემები: არსებობს დისკის დანაწევრება, რომელზეც EXT2 ფაილური სისტემა იქმნება. ეს სექცია შეესაბამება მოწყობილობას / DEV / HDA3 ფაილს. განყოფილების ძირეული დირექტორია, სახლის ქვედანაყოფი შეიქმნა და შეიცავს შემდეგ შინაარსს:

იქნებოდა კრეტრუსი სამხრეთით?

დიახ, მაგრამ ყალბი ინსტანცია!

1234567890-=

არ ვფიქრობ ცუდი, ეს არ არის სისულელე, მაგრამ ტესტის სწავლება Telegraphists- ის ტრენინგის ტრენინგიდან ყოფილი სსრკ-ს კომუნიკაციების ჯარში!

ყურადღება! ერთი მნიშვნელოვანი წერტილი უნდა იქნას გათვალისწინებული. შექმნილი ფაილი არ იქნება დაუყოვნებლივ ჩაწერილი დისკზე, და პირველი დაეცემა დისკზე ბუფერში. დაუყოვნებლივ მიიღონ ფაილის შინაარსი, ზემოაღნიშნული ალგორითმის მიხედვით, არ გამოიწვევს არაფერს, რადგან ამ ფაილის შესახებ ინფორმაცია ფიზიკურად არ არის დისკზე. აუცილებელია "ძალა" სისტემაში დისკის ბუფერის ჩაწერას დისკზე. ამის გაკეთება მარტივი გზაა გადატვირთვის ოპერაციის შესასრულებლად. აქედან გამომდინარე, ფაილის შექმნა, სისტემის გადატვირთვა.

ჩვენი ამოცანა იყენებს მოწყობილობას / DEV / HDA3 ფაილს, წაიკითხოს / Home/test.File ფაილის გამოყენებით მისი საინფორმაციო ბლოკების პირდაპირი წვდომის მეთოდის გამოყენებით.

განვიხილოთ პროგრამის პროგრამის განხორციელება, რომელიც ასრულებს ამ ოპერაციას.

ჰედერის ფაილები:

#Include.

#Include.

#Include.

#Include.

#Include.

#Include.

სათაურის ფაილი განსაზღვრავს სტრუქტურულ ტიპებს, რომლებიც აღწერენ EXT2 ფაილური სისტემის ძირითად კომპონენტებს - SuperBlock- ს, ბლოკის ჯგუფს, საინფორმაციო კვანძის, დირექტორია შესვლის.

განვიხილოთ მოკლედ სფეროები, რომლებიც შედის თითოეულ ამ სტრუქტურებში:

  1. Struct ext2_super_block superblock სტრუქტურა:
    • __U32 s_inodes_count- ფაილურ სისტემაში ინდოეთის საერთო რაოდენობა;
    • __U32 s_blocks_count.- ფაილურ სისტემაში ბლოკების საერთო რაოდენობა;
    • __U32 s_free_blocks_count.- უფასო ბლოკების რაოდენობა;
    • __U32 s_free_inodes_count.- უფასო INODE- ის ნომერი;
    • __U32 s_first_data_block- პირველი მონაცემთა ბლოკის ნომერი (ბლოკის ნომერი, რომელშიც SuperBlock მდებარეობს);
    • __U32 s_log_block_size. - ეს მნიშვნელობა გამოიყენება ბლოკის ზომის გამოთვლა. ბლოკის ზომა განისაზღვრება ფორმულით: ბლოკის ზომა \u003d 1024<< s_log_block_size;
    • __U32 s_blocks_per_group - ჯგუფში ბლოკების რაოდენობა;
    • __U32 s_inodes_per_group - ჯგუფში ინდოეთის რაოდენობა;
    • __U16 s_magic - Ext2 ფაილური სისტემის იდენტიფიკატორი (0xef53 ხელმოწერა);
    • __U16 s_inode_size - ინფორმაციის კვანძის ზომა (inode);
    • __U32 S_FIRST_INO. - პირველი არასამთავრობო გამოკითხული ინდოტის ნომერი.
  2. Struct ext2_group_desc ჯგუფი დესკრიპტორი დიზაინის სტრუქტურა:
    • __U32 bg_block_bitmap- ჯგუფური ბლოკების დასაქმების ბიტმაფა;
    • __U32 bg_inode_bitmap- დასაქმების INODOD ჯგუფის გაყვანის რუკა;
    • __U32 bg_inode_table - Inode მაგიდის მისამართი.
  3. Struct Ext2_inode ინფორმაცია კვანძის სტრუქტურა:
    • __U16 i_mode არის ფაილის ტიპი და მისთვის ხელმისაწვდომი უფლებები. ფაილის ტიპი განსაზღვრეთ ბიტი 12-15 ამ სფეროში:
      • 0xa000.- სიმბოლური ბმული;
      • 0x8000.- ჩვეულებრივი ფაილი;
      • 0x6000.- ბლოკის ბლოკის მოწყობილობა;
      • 0x4000.- კატალოგი;
      • 0x2000.- სიმბოლური მოწყობილობის ფაილი;
      • 0x1000- FIFO არხი.
    • __U32 i_size. - ზომა ბაიტებში;
    • __U32 i_atime.- ბოლო ფაილის წვდომის დრო;
    • __U32 i_ctime. - ფაილის შექმნის დრო;
    • __U32 i_mtime.- ბოლო მოდიფიკაციის დრო;
    • __U32 i_blocks. - ფაილის მიერ ოკუპირებული ბლოკების რაოდენობა;
    • __U32 i_block - საინფორმაციო ბლოკების მისამართები (მათ შორის ყველა არაპირდაპირი ბმულები).
  4. Ext2_n_Blocks ღირებულება განისაზღვრება ფაილში:

    * მუდმივები მონაცემთა ბლოკებთან შედარებით

    #Define ext2_ndir_blocks 12.

    #Define ext2_ind_block ext2_ndir_blocks

    #define ext2_dind_block (Ext2_ind_block + 1)

    #Define ext2_tind_block (ext2_dind_block + 1)

    #Define ext2_n_blocks (Ext2_tind_block + 1)

  5. Struct ext2_dir_entry_2 დირექტორია შესვლის სტრუქტურა:
  6. #Define ext2_name_len 255.

  • __U32 INODE - INOURE NUMBER ფაილი;
  • __U16 rec_len. - დირექტორია ჩაწერის სიგრძე;
  • __U8 name_len.- ფაილის სახელის სიგრძე;
  • char სახელი.Ფაილის სახელი.

ჩვენ განვსაზღვრავთ სექციის სახელს, რომელზეც ფაილური სისტემა იქმნება, გლობალური სტრუქტურები და ცვლადები.

#Define part_name "/ dev / hda3"

struct ext2_super_block sb;

/ * ბუფერი მაგიდის დესკრიპტორების შენახვისთვის * /

ხელმოწერილი char buff_grp;

ხელმოწერილი char buff; / * ინფორმაცია ბუფერული * /

int intev; / * მოწყობილობის ფაილის სახელური * /

int blksize; / * ფაილი სისტემის ბლოკი ზომა * /

ჩვენ განსაზღვრავს რამდენიმე ფუნქციას, რომელიც ჩვენ უნდა ვიმუშაოთ:

SuperBlock Reading ფუნქცია:

voide read_sb ()

Memset (& SB, 0.1024);

ჩვენ გადავედით 1024 ბაიტიდან სექციის დაწყებიდან და წაიკითხეთ SuperBlock სტრუქტურის სტრუქტურის ext2_super_block sb:

თუ (Lseek (Indev, 1024.0)< 0) {

Perror ("lseek");

გასვლა (-1);

თუ (წაკითხული (indev, char * & sb, sizeof (sb))< 0) {

Perror ("წაკითხული");

გასვლა (-1);

შეამოწმეთ ფაილური სისტემის იდენტიფიკატორი:

თუ (SB.S_MAGIC! \u003d EXT2_SUPER_MAGIC) (

Printf ("უცნობი ფაილური სისტემის ტიპი!");

გასვლა (-1);

Ext2_super_magic- ის ღირებულება განისაზღვრება სათაურის ფაილში.

აჩვენებს ინფორმაციას ფაილური სისტემის შესახებ, რომელიც მდებარეობს SuperBlock- ში:

printf ("SuperBlock ინფორმაცია -----------");

Printf ("Indes Count -% U", sb.s_inodes_count);

Printf ("Blocks Count -% U", sb.s_blocks_count);

Printf ("ბლოკი ზომა -% U", 1024<< sb.s_log_block_size);

Printf ("პირველი inode -% d", sb.s_first_ino);

Printf ("Magic - 0x% x", sb.s_magic);

Printf ("Inode ზომა -% D", sb.s_inode_size);

Printf ("inodes თითო ჯგუფი -% u", sb.s_inodes_per_group);

Printf ("Blosks თითო ჯგუფი -% U", sb.s_blocks_per_group);

Printf ("პირველი მონაცემთა ბლოკი -% U", sb.s_first_data_block);

Დაბრუნების;

ფუნქციის კითხვა მაგიდის დესკრიპტორები:

voide read_gdt ()

გამოთვალეთ ფაილური სისტემის ბლოკის ზომა:

Blksize \u003d 1024.<< sb.s_log_block_size

ჯგუფის დესკრიპტორების მაგიდა მდებარეობს ბლოკში, რომელიც დაუყოვნებლივ მდებარეობს პირველი მონაცემთა ბლოკის (SuperBlock- ისთვის).

წაიკითხეთ მაგიდა:

თუ (lseek (indev, (sb.s_first_data_block + 1) * blksize, 0)< 0) {

Perror ("lseek");

გასვლა (-1);

თუ (წაიკითხეთ (indev, buff_grp, blksize)< 0) {

Perror ("წაკითხული");

გასვლა (-1);

Დაბრუნების;

შინაარსის შინაარსის ფუნქცია მისი ნომრით:

ბათილად get_inode (int inode_num, struct ext2_inode * in)

შეყვანის ფუნქცია ფუნქცია - Inode თანმიმდევრობის ნომერი და სტრუქტურა struct ext2_inode.

Struct ext2_group_desc gd;

U64 ჯგუფი, ინდექსი, POS;

გამოთვალეთ ბლოკის ჯგუფის რიცხვი, რომელშიც ინოვაცია მდებარეობს Inode_num Sequence Number:

ჯგუფი \u003d (inode_num - 1) / sb.s_inodes_per_group;

მაგიდის დესკრიპტორებისგან, ჯგუფის დესკრიპტორების ამოღება და კოპირება ext2_group_desc GD სტრუქტურა:

Memset ((void *) & gd, 0, sizeof (gd));

MEMCPY ((VOID *) & GD, Buff_grp + (ჯგუფი * (GD))), ზომა (GD));

გამოთვალეთ INODE_NUM STQUENCE- ის ნომერზე ჯგუფის ჯგუფის INODE_NOM STQUENCE ნომერი და წაიკითხეთ ეს ინდოტის სტრუქტურის სტრუქტურაში ext2_inode:

ინდექსი \u003d (inode_num - 1)% sb.s_inodes_per_group;

Pos \u003d ((__U64) gd.bg_inode_table) * blksize + (ინდექსი * sb.s_inode_size);

PREAD64 (Indev, In, Sb.s_inode_size, POS);

Დაბრუნების;

მონაცემთა ბლოკი წაიკითხეთ ფუნქცია:

voide read_iblock (struct ext2_inode * in, int blk_num)

U64 POS;

INPUT ფუნქციის პარამეტრების - Inode სტრუქტურა და ბლოკი ნომერი (ნიშნავდა ნომერი მისამართი ბლოკი თანმიმდევრობით მდებარეობს Inode).

გამოთვალეთ ოფსეტური ინფორმაციის ბლოკზე განყოფილებაში და წაიკითხეთ ეს ერთეული გლობალურ ბუფერულ ბუფერში:

POS \u003d ((__U64) IN-\u003e I_BLOCK) * blksize;

PREAD64 (Indev, Buff, Blksize, POS);

Დაბრუნების;

ფესვების კატალოგის შინაარსის ფუნქცია:

voide get_root_dentry ()

Struct ext2_inode in;

Inode თანმიმდევრობის რიცხვი root დირექტორია ცნობილია, ამიტომ ჩვენ მივიღებთ შინაარსი inode of root დირექტორია და წაიკითხეთ მისი შინაარსი ბუფერული:

get_inode (ext2_root_ino, & in);

Read_iblock (& \u200b\u200bin, 0);

Buff ბუფერი შეიცავს ფესვის დირექტორია შინაარსს.

Დაბრუნების;

ფაილის სახელით ინდოეთის ნომრის მიღების ფუნქცია:

int get_i_num (char * სახელი)

შეყვანის ფუნქციის პარამეტრების - ფაილის სახელი. დაბრუნების ღირებულება - თანმიმდევრობის ნომერი InoDe ფაილი.

Int i \u003d 0, rec_len \u003d 0;

Struct ext2_dir_entry_2 dent;

In Buff ბუფერული, არსებობს მასივი დირექტორია ჩანაწერები. იმისათვის, რომ დადგინდეს თანმიმდევრობის ნომერი InoDe ფაილი, თქვენ უნდა იპოვოთ ამ მასივი ამ ფაილის სახელით:

(მე< 700; i++) {

Memcpy ((void *) & dent, (buff + rec_len), sizeof (dent));

თუ (memcmp (dent.name, სახელი, dent.name_len)) შესვენება;

Rec_len + \u003d dent.rec_len;

დაბრუნება dent.inode;

და ახლა ჩვენ დავწერეთ ძირითადი ფუნქცია:

int main ()

ცვლადები და სტრუქტურები:

struct ext2_inode in;

/ / აბსოლუტური მოგზაურობის ფაილის სახელი

Unsigned char * full_path \u003d "/home/test.file";

ხელმოწერილი char buff1;

სტატიკური int i \u003d 1;

Int n, i_num, outf, ტიპი;

პირველი პერსონაჟი აბსოლუტური გზების სახელით უნდა იყოს პირდაპირი slash (/). Შეამოწმე:

თუ (full_path! \u003d "/") (

Perror ("slash");

გასვლა (-1);

გახსენით მოწყობილობის ფაილი, წაიკითხეთ SuperBlocks და Table Descriptors:

Indev \u003d ღია (part_name, o_rdonly);

თუ (indev.< 0) {

Perror ("ღია");

გასვლა (-1);

Read_sb ();

Read_gdt ();

ჩვენ მივიღებთ ფესვების კატალოგის შინაარსს:

get_root_dentry ();

ახლა Buff ბუფერმა შეიცავს ყველა ჩანაწერს root დირექტორიაში (თუ გინდა, შეგიძლიათ შეინახოთ მათ ცალკე ფაილი). ახლა, რომელსაც root დირექტორია ჩანაწერები, ჩვენ შეგვიძლია მივიღოთ შინაარსი test.file ფაილი გამოყენებით ზემოთ ფაილის წაკითხვის ალგორითმი. ამ მიზნით, ჩვენ ორგანიზებას ვატარებთ ციკლს. ციკლის სხეულში, ჩვენ გავაანალიზებთ ფაილის აბსოლუტურ გზას, ხაზს უსვამს თავის ელემენტებს - ქვედანაყოფებს (ეს არის ერთი, სახლი) და ძიების ფაილის სახელი (test.file). თითოეული ელემენტისთვის, ჩვენ განვსაზღვრავთ INODE- ის თანმიმდევრობის ნომერს, მიგვაჩნია, რომ ეს ინოვაცია და შემდეგ მიიღებს ნულოვანი ბლოკის შინაარსს (ინდოში მდებარე მისამართების ბლოკების თანმიმდევრობით):

ხოლო (1)

Memset (buff1.0, sizeof (buff1));

(N \u003d 0; n< EXT2_NAME_LEN; n++, i++) {

Buff1 [n] \u003d full_path [i];

თუ ((Buff1 [n] \u003d\u003d "/") || (buff1 [n] \u003d\u003d "?"))

I ++;

შესვენება;

buff1 [n] \u003d "?";

ფაილის აბსოლუტური გზების თითოეული ელემენტისთვის, ჩვენ ვამზადებთ ინდოეთის თანმიმდევრულ ნომერს, წაიკითხეთ ეს ინოვაცია მეხსიერებაში და შემდეგ ნულოვანი ბლოკის შინაარსი:

I_num \u003d get_i_num (buff1);

Get_inode (i_num, & in);

Read_iblock (& \u200b\u200bin, 0);

ჩვენება ფაილის ინფორმაცია (სახელი, inode ნომერი, ფაილის ზომა და მისი ტიპი):

Printf ("Inode Number -% U", I_NUM);

Printf ("ფაილის სახელი -% s", buff1);

Printf ("ფაილის ზომა -% U", in.i_size);

ფაილის ტიპი განისაზღვრება I_MODODE FIELD STRUFACE EXT2_INODE- ის ხანდაზმული ოთხი ბიტი:

ტიპი \u003d ((in.i_mode & 0xf000) \u003e\u003e 12);

Printf ("ტიპი -% D", ტიპი);

შეცვლა (ტიპი) (

საქმე (0x04):

Printf ("(კატალოგი)");

შესვენება;

საქმე (0x08):

Printf ("(ნორმალური ფაილი)");

შესვენება;

საქმე (0x06):

Printf ("(ბლოკის ერთეული)");

შესვენება;

საქმე (0x02):

Printf ("(სიმბოლური მოწყობილობა)");

შესვენება;

ნაგულისხმევი:

Printf ("(უცნობი ტიპი)");

შესვენება;

შეამოწმეთ ფაილის ტიპი. თუ ეს არის რეგულარული ფაილი - შეუშალოს ციკლი:

თუ (ტიპი & 0x08) (

Buff Buffer იქნება ინფორმაცია წაიკითხა საინფორმაციო ბლოკებიდან / Home/test.File ფაილის შესახებ. ჩვენ ვწერ ამ ინფორმაციას ფაილზე:

Outf \u003d ღია ("Out", O_Creat | O_RDWR, 0600);

დაწერეთ (outf, buff, sizeof (buff));

დახურვა (outf);

შესვენება;

Ჩვენ ვტოვებთ:

ახლოს (ინევი);

დაბრუნება 0;

EXT2 ფაილური სისტემის ლოგიკური სტრუქტურის ამ განხილვის შესახებ.

(მეორე გაფართოებული ფაილური სისტემა).

· Linux ფაილური სისტემების სატყეო

· დისკი დანაყოფი სტრუქტურა EXT2FS- ში

·

· კატალოგები

· ფაილების მოწყობილობები

·

·

· ბიბლიოთეკა EXT2FS

· EXT2FS სისტემის სექცია

· კონფიდენციალურობის გაანგარიშება

პატფაკი

Prog.

მე -2 კურსი მე -5 გრამი.

ჩიჩიროვის ანდრეი

Falomethem EXT2FS (მეორე გაფართოებული ფაილური სისტემა).

Linux ფაილური სისტემების ვადის გასვლამობები

Linux ცვლადები იყო Minix ოპერატიული სისტემის მიხედვით მონაცემთა ბაზა. ეს იქნება ორი სისტემის ნომინაციურ დისკებზე, ვიდრე ახალი ფაილური სისტემა, ამიტომ Linus Torvalds- მა Linux Minix ფაილურ სისტემაში შეასრულა. მიუხედავად იმისა, რომ ეს ფაილური სისტემა საკმაოდ ეფექტური იყო შედარებით მცირე რაოდენობით შეცდომით.

თუმცა, მინიქსის ფაილურ სისტემასთან დაკავშირებული ციმციმები საკმაოდ მაღალია, ამიტომ მათ დაიწყეს ახალი ფაილური სისტემის Linux- ის ახალი ფაილური სისტემა.

Linux- ის შხამში ახალი ფაილური სისტემის განხორციელების კონტროლის მიზნით იქნა გამოყენებული ვირტუალური ფაილური სისტემა (VFS). VFS უკვე დაწერილია Chris Provenzano, და შემდეგ Linus Torvalds გავიდა ინტეგრაციის შევიდა შხამი.

VFS- ის შხამში ინსტალაციის შემდეგ, ახალი FAL სისტემის FAL სისტემის სისტემა (გაფართოებული ფაილური სისტემა) ადვილია და დაემატა Linux 0.96C Vexa. ახალ ფაილურ სისტემაში, ორი მნიშვნელოვანი Minix Systems ამოღებულ იქნა: მისი მაქსიმალური მოცულობა შეიძლება მიაღწიოს 2 გიგაბაიტს, ხოლო მაქსიმალური სახელი 255 სიმბოლოა. ეს იყო მინიქსის ფაილური სისტემის მიღწევა, თუმცა ზოგიერთი უბრალოდ აშკარაა. არ არსებობდა სუბიექტური ხელმისაწვდომობა, ინდექსის მოდიფიცირება და ფაილის ცვლილების უჯრედების შეცვლა. ამ ფაილურ სისტემასთან დაკავშირებული სიები თავისუფალი ბლოკებისა და ინდექსის დეზპერტების გახსნისას, რაც მნიშვნელოვნად გავლენას ახდენს სისტემის სისტემაში: სიების სიებთან ერთად გადაიდო და ფაილური სისტემა შეიტანეს.

ამ გამოძიების გადაწყვეტილება 1993 წლის იანვარში ორი ახალი ფაილური სისტემის გათავისუფლება იყო: XIA და EXT2FS (მეორე გაფართოებული ფაილური სისტემა). უმეტესწილად, XIA ფაილური სისტემა დაფუძნებულია მინიკზე რამდენიმე ახალი თვისების დამატებით. ძირითადად, ეს იყო ხანგრძლივი ფაილის სახელების პრაქტიკოსი, დიდი მოცულობის დისკების დამტკიცება და ფაილების ცვლილებების უჯრედების დაძაბვა. ჯარიმა ქვები, Ext2FS ეფუძნება ulfs ბევრი გაუმჯობესება და დამატებები. მას ასევე ჰქონდა შესაძლებლობა მომავალში.

როდესაც ეს ორი ფაილური სისტემა გაათავისუფლეს, ისინი ფუნქციურად იყენებდნენ. Xia სისტემა უფრო საიმედო იყო, ვიდრე EXT2FS, მისი მინიმიზაციის გამო. Ext2FS სისტემაში შეცდომები უფრო მდუმარე აპლიკაციას არ აპირებდნენ და დაემატა ახალი თვისებები და გაუმჯობესებები. მიმდინარე EXT2FS ფაილური სისტემა არის ძალიან საიმედო და გახდა დე ფაქტო Linux ფაილური სისტემა.

შემდეგი ცხრილი უზრუნველყოფს საერთო ინფორმაციას ფუნქციონალური ფუნქციების ფუნქციონირების შესახებ, რომლებიც უზრუნველყოფილია DASHED ფაილური სისტემებით.

Minix fs.

Ext fs.

Ext2 fs.

Xia fs.

მაქსიმალური ფაილური სისტემა

მაქსიმალური ფაილის სიგრძე

მაქსიმალური ფაილის სახელი სიგრძე

ფაილის ცვლილებების კოშკის ქვესადგური

უნარი ტემპით

ცვალებადი pazmp bloka

ინფიცირების დაცვა

თუ საჭიროა ფაილის სახელის სიგრძე Ext 2. ეს შეიძლება გაიზარდოს 1012.

EXT2FS იქნება შეღწევის ზოგიერთი ბლოკები root მომხმარებლის. როგორც წესი, 5% -ს შეადგენს, რომელიც სისტემის ადმინისტრაციას საშუალებას აძლევს, რათა თავიდან აიცილოს მყარი დისკის ნაკლებობა მისი შევსებისას DPUUGI- ის მომხმარებლების გამოყენებისას.

დისკი დანაყოფი სტრუქტურა EXT2FS- ში

მყარი დისკის მწარმოებლები, როგორც წესი, მათი პროდუქციის ფორმატირებული დაბალი დონე. რამდენადაც ვიცი, ეს იმას ნიშნავს, რომ ყველა დისკზე სპეციალური ეტიკეტების დახმარებით არის გატეხილი "სექტორების" მიერ, 512 ბატის ზომა. ასეთი დისკი (ან დისკის სექცია) უნდა მომზადდეს კონკრეტულ ოპერაციულ სისტემაში. MS-DOS ან Windows- ში, მომზადების პროცედურა ეწოდება ფორმატირებას და Linux- ში - ფაილური სისტემის შექმნა. ფაილური სისტემის შექმნა ext2fs. ეს არის კონკრეტული ლოგიკური სტრუქტურის დისკის განყოფილებაში. ეს სტრუქტურა აგებულია შემდეგნაირად. პირველი, ჩატვირთვის ტერიტორია დისკზე გამოყოფილია. ჩატვირთვის ადგილია ნებისმიერი ფაილური სისტემაში. პირველადი დანაყოფის შესახებ, ის შეიცავს ჩატვირთვის შესასვლელს - კოდი ფრაგმენტი, რომელიც იწყებს ოპერაციული სისტემის დატვირთვის პროცესს გაშვების დროს. სხვა სექციებზე, ეს ტერიტორია არ გამოიყენება. ყველა დანარჩენი დისკზე დაყოფილია ბლოკად. ერთეული შეიძლება იყოს ზომა 1, 2 ან 4 კილომეტრიდან. ბლოკი ხელმისაწვდომია დისკზე ერთეულით. ადგილმდებარეობის ფაილების შერჩევა მთელი ბლოკებით ხორციელდება, ასე რომ, როდესაც ბლოკის ზომის არჩევისას, თქვენ უნდა კომპრომისზე. ბლოკის დიდი ზომა, როგორც წესი, ამცირებს დისკის რაოდენობას დისკზე, როდესაც ის კითხულობს ან წერილობით იყენებს, მაგრამ ეს ზრდის იშვიათად გამოყენებული სივრცის პროპორციას, განსაკუთრებით იმ შემთხვევაში, თუ არსებობს მცირე ფაილების დიდი რაოდენობა.

ბლოკები, მის ტერიტორიაზე კომბინირებულია ბლოკების ჯგუფებად. ბლოკის ჯგუფები ფაილურ სისტემაში და ბლოკებში ჯგუფის შიგნით არის დათვლილი თანმიმდევრულად, დაწყებული 1. პირველი ბლოკი დისკზე აქვს ნომერი 1 და ეკუთვნის ჯგუფს ნომერზე 1. დისკზე (დისკზე) სექცია) არის დისკის მოცულობა გამყოფი სექტორში. და ბლოკის ჯგუფების რაოდენობა არ არის საჭირო ბლოკების რაოდენობის გაყოფა, რადგან ბლოკების ბოლო ჯგუფი არ შეიძლება იყოს სრული. ბლოკების თითოეული ბლოკის დასაწყისი აქვს მისამართზე, რომელიც შეიძლება მიღებულ იქნას როგორც (ჯგუფის ნომერი - 1) * (ჯგუფის ბლოკების რაოდენობა).

ბლოკების თითოეული ჯგუფი იგივე სტრუქტურაა. მისი სტრუქტურა წარმოდგენილია შემდეგ ტაბლეტში.

დისკის დანაყოფის ბლოკების ჯგუფის სტრუქტურა ext2fs.

ამ სტრუქტურის პირველი ელემენტი (Superblock) არის ყველა ჯგუფისთვის და ყველა სხვა ადამიანია თითოეული ჯგუფისთვის. SuperBlock ინახება ბლოკების თითოეული ჯგუფის პირველი ბლოკით (გარდა ჯგუფის 1-ის გარდა, რომელშიც დატვირთვის ჩანაწერი მდებარეობს პირველ ერთეულში). SuperBlock ეს არის ფაილური სისტემის საწყისი წერტილი. მას აქვს 1024 ბატის ზომა ყოველთვის მდებარეობს ფაილური სისტემის დაწყებიდან 1024 ბატის ოფსეტაზე. SuperBlock- ის რამდენიმე ასლის არსებობა ამ ფაილური სისტემის ელემენტის უკიდურეს მნიშვნელობას წარმოადგენს. Superblock ეგზემპლარი გამოიყენება ფაილური სისტემის აღდგენის შემდეგ.

SuperBlock- ში შენახული ინფორმაცია გამოიყენება დისკზე სხვა მონაცემების ხელმისაწვდომობისთვის. SuperBlock განსაზღვრავს ფაილის სისტემის ზომა, განყოფილებაში ფაილების მაქსიმალური რაოდენობა, თავისუფალი სივრცის ოდენობა და შეიცავს ინფორმაციას იმის შესახებ, თუ სად უნდა გამოიყურებოდეს არაოკუპირებული ტერიტორიები. როდესაც თქვენ დაიწყებთ OS- ს, SuperBlock წაიკითხავს მეხსიერებაში და ყველა ცვლილება ფაილურ სისტემაში პირველად იპოვის ეკრანზე SuperBlock- ის ასლი OP- ში, და მხოლოდ პერიოდულად ჩაწერილია. ეს საშუალებას გაძლევთ გაზარდოთ სისტემის შესრულება, როგორც ბევრი მომხმარებელი და პროცესები მუდმივად განახლების ფაილებს. მეორეს მხრივ, როდესაც superblock გამორთულია, ეს უნდა იყოს დაწერილი დისკზე, რომელიც არ იძლევა საშუალებას გამორთოთ კომპიუტერი უბრალოდ გარდამტეხი ძალა. წინააღმდეგ შემთხვევაში, მომდევნო დატვირთვით, SuperBlock- ში ჩაწერილი ინფორმაცია არ იქნება შესაფერისი ფაილური სისტემის რეალური მდგომარეობისთვის.

SuperBlock- ს აქვს შემდეგი სტრუქტურა

ველის სახელი

Ტიპი

კომენტირება

s_inodes_count

ულგ

ინდექსის დესკრიპტორების რაოდენობა ფაილურ სისტემაში

s_blocks_count.

ულგ

ბლოკების რაოდენობა ფაილურ სისტემაში

s_r_blocks_count.

ულგ

ბლოკების რაოდენობა დაცულია superuser

s_free_blocks_count.

ულგ

უფასო ბლოკების რაოდენობა

s_free_inodes_count.

ულგ

უფასო ინდექსის დესკრიპტორების რაოდენობა

s_first_data_block

ულგ

პირველი ბლოკი, რომელიც შეიცავს მონაცემებს. ერთეულის ზომაზე დამოკიდებულია, ეს ველი შეიძლება იყოს 0 ან 1-ის ტოლი.

s_log_block_size.

ულგ

ლოგიკური ბლოკის ზომა მაჩვენებელი: 0 \u003d 1 KB; 1 \u003d 2 Kb; 2 \u003d 4 KB.

s_log_frag_size.

ხანგრძლივი.

ფრაგმენტის ზომა ინდიკატორი (როგორც ჩანს, ფრაგმენტის კონცეფცია არ არის გამოყენებული)

s_blocks_per_group.

ულგ

თითოეული ბლოკის ბლოკში ბლოკების რაოდენობა

s_frags_per_group.

ულგ

თითოეული ბლოკის ბლოკში ფრაგმენტების რაოდენობა

s_inodes_per_group

ულგ

თითოეული ბლოკის ბლოკში ინდექსის დესკრიპტორების რაოდენობა (inodes)

s_mtime.

ულგ

დრო, როდესაც ფაილური სისტემა ბოლო დამონტაჟდა.

s_wtime.

ულგ

დრო, როდესაც ბოლო დროს ჩაიწერა ფაილურ სისტემაში

s_mnt_count.

Ushort.

სამონტაჟო ფაილური სისტემის მეტრი. თუ ეს Counter აღწევს მომდევნო სფეროში მითითებულ მნიშვნელობას (S_MAX_MNT_COUNT), ფაილური სისტემა უნდა შემოწმდეს (ეს კეთდება, როდესაც გადატვირთულია), ხოლო Counter გადატვირთულია.

s_max_mnt_count.

მოკლე

რიცხვი განსაზღვრავს რამდენჯერ ფაილურ სისტემას

s_magic

Ushort.

"Magic Number" (0xef53), რომელიც მიუთითებს, რომ ფაილური სისტემა ეკუთვნის EX2FS ტიპის

s_state.

Ushort.

ფაილური სისტემის ამჟამინდელი სტატუსის მინიშნება (თუ არა სუფთა (სუფთა) და ა.შ.)

s_errors.

Ushort.

დროშები, რომლებიც განსაზღვრავს შეცდომის პროცედურებს (რა უნდა გააკეთოთ, თუ შეცდომები გვხვდება).

s_pad.

Ushort.

გავსება

s_lastcheck.

ულგ

ბოლო ფაილის სისტემის შემოწმების დრო

s_checkinterval

ულგ

ფაილური სისტემის შემოწმების მაქსიმალური პერიოდი

screator_os.

ულგ

დაზუსტება OS ტიპის, რომელშიც შეიქმნა ფაილური სისტემა

s_rev_level.

ულგ

გადახედვის დონე ფაილური სისტემა.

s_rerved

ულგ

შევსება 1024 ბაიტიდან

SuperBlock- ის შემდეგ, მდებარეობს ბლოკის ჯგუფის აღწერა (ჯგუფის დესკრიპტორები). ეს აღწერილობა არის მასივი, რომელსაც აქვს შემდეგი სტრუქტურა.

ველის სახელი

Ტიპი

მიზანი

bg_block_bitmap

ულგ

ბლოკის მისამართი, რომელიც შეიცავს ამ ჯგუფის ბიტი ბარათის ბლოკებს (ბლოკ-ბიტიპაპს)

bg_inode_bitmap

ულგ

ბლოკის მისამართი, რომელიც შეიცავს ამ ჯგუფის ინდექსის დესკრიპტორების (Inode Bitmap)

bg_inode_table

ულგ

ბლოკის მისამართი, რომელიც შეიცავს ამ ჯგუფის ინდექსის დესკრიპტორების ცხრილის (Inode Table)

bg_free_blocks_count.

Ushort.

ამ ჯგუფში უფასო ბლოკების რაოდენობა

bg_free_inodes_count

Ushort.

ამ ჯგუფში უფასო ინდექსის დესკრიპტორების რაოდენობა

bg_used_dirs_count

Ushort.

ამ ჯგუფში ინდექსის აღწერების რაოდენობა, რომლებიც კატალოგებია

bg_pad.

Ushort.

გავსება

bg_reserved.

ულგ

გავსება

ბლოკის ბლოკის ზომა შეიძლება გამოითვალოს (size_group_blok_v_ext2 * number_groups) / size_block (საჭიროების შემთხვევაში, მომრგვალებული).

ჯგუფის აღწერაში ინახება ინფორმაცია, რომელიც გამოიყენება ბლოკებისა და ინდექსის დესკრიპტორების, ასევე ინდექსის დესკრიპტორების მაგიდაზე. ნუ დაგავიწყდებათ, რომ ბლოკების ბლოკები და ბლოკები 1-დან.

Bit რუკა ბლოკი (ბლოკი BitMap) არის სტრუქტურა, რომელთაგან თითოეული მიუთითებს თუ არა შესაბამისი ბლოკი. თუ ცოტა არის 1, მაშინ ბლოკი დაკავებულია. ეს ბარათი ემსახურება უფასო ბლოკების ძიებას იმ შემთხვევებში, როდესაც აუცილებელია ფაილის ქვეშ მდებარე ადგილმდებარეობის გაშუქება, ბლოკების ბიტმაპა უკავია ბლოკების რაოდენობას (Number_block_v_group / 8) / size_block (საჭიროების შემთხვევაში, მომრგვალებული).

ინდექსის დესკრიპტორების ბიტმაფს ასრულებს მსგავსი ფუნქცია ინდექსის დესკრიპტორების ცხრილის მიმართ: გვიჩვენებს, თუ რომელი დესკრიპტორები დაკავებულია.

ბლოკის სტრუქტურულ სტრუქტურაში შემდეგი ფართობი ემსახურება ინდექსის ფაილის დესკრიპტორების მაგიდას. ინდექსის დესკრიპტორების სტრუქტურა განიხილება შემდეგ ქვეპუნქტში.

კარგად, საბოლოოდ, დარჩენილი ადგილი ბლოკის ჯგუფში გამოყოფილია რეალურად ფაილების შესანახად.

Ფაილების სისტემაExt. 2 ხასიათდება:

  • იერარქიული სტრუქტურა
  • მონაცემთა მასივების შეთანხმებული დამუშავება,
  • დინამიური ფაილის გაფართოება,
  • ინფორმაციული უსაფრთხოება ფაილებში
  • პერიფერიული მოწყობილობების ინტერპრეტაცია (როგორიცაა ტერმინალები და ფირზე მოწყობილობები) ფაილები.

ფაილების შიდა ხედვა

თითოეული ფაილი EXT 2 სისტემას აქვს უნიკალური ინდექსი. ინდექსი შეიცავს ინფორმაციას ნებისმიერი პროცესისათვის, რათა მიუთითოთ ფაილი. პროცესები ეხება ფაილებს გამოყენებით აშკარად განსაზღვრული კომპლექტი სისტემის ზარები და იდენტიფიცირება ფაილის სიმებიანი ფაილი მოქმედი როგორც კომპოზიტური ფაილის სახელი. თითოეული კომპოზიტური სახელი აუცილებლად განსაზღვრავს ფაილს, ისე, რომ სისტემა Kernel აკონვერტებს ამ სახელს ფაილის ინდექსზე. ინდექსი მოიცავს დისკზე ფაილის ინფორმაციის მისამართის ადგილმდებარეობას. მას შემდეგ, რაც თითოეული ბლოკი დისკზე მიმართავს თავის ნომერს, ეს მაგიდა ინახავს დისკის ბლოკის ნომრებს. მოქნილობის გაზრდის მიზნით, კერნელი ანიჭებს ფაილს ერთ ბლოკს, რომელიც საშუალებას აძლევს ფაილის ინფორმაციას მთელ ფაილურ სისტემაზე მიმოფანტული. მაგრამ ეს განლაგება სქემა ართულებს მონაცემთა ძიების ამოცანას. მისამართები ცხრილი შეიცავს ბლოკის ნომრების ჩამონათვალს, რომელიც შეიცავს ფაილს, თუმცა, მარტივი გათვლები აჩვენებს, რომ ინდექსში ფაილის ბლოკების წრფივი ჩამონათვალი რთულია. მცირე ინდექსის სტრუქტურისთვის დიდი ფაილების მუშაობისთვის, დისკის ბლოკის მისამართები მაგიდა ჩამოყალიბებულია ფიგურაში ნაჩვენები სტრუქტურის შესაბამისად

ყველაზე მეტი ფაილი ext 2 სისტემაში აქვს ზომა, რომელიც არ აღემატება 10 KB და კიდევ 1 KB! მას შემდეგ, რაც 10 KB ფაილი მდებარეობს პირდაპირი მისამართების ბლოკებში, ფაილებში შენახული მონაცემების უმეტეს ნაწილში, ხელმისაწვდომობა შეიძლება გაკეთდეს ერთ მიმართვაში დისკზე. აქედან გამომდინარე, დიდი ფაილების ხელმისაწვდომობისგან განსხვავებით, სტანდარტული ზომა ფაილებით მუშაობს სწრაფად.

ინდექსი ფაილის დესკრიპტორები

დისკზე თითოეული ფაილი შეესაბამება ერთ და მხოლოდ ერთ ინდექსის ფაილს, რომელიც განსაზღვრავს მისი თანმიმდევრობის ნომრით - ფაილის ინდექსით. ეს იმას ნიშნავს, რომ ფაილურ სისტემაში შეიქმნას ფაილების რაოდენობა, რომელიც შემოიფარგლება ინდექსის დესკრიპტორების რაოდენობის მიხედვით, რომელიც უბრალოდ განსაზღვრულია ფაილური სისტემის შექმნისას, ან გამოითვლება დისკის დანაყოფის ფიზიკური მოცულობის საფუძველზე. ინდოეთის descpports არსებობს დისკზე სტატიკური ფორმით და ბირთვის ნათქვამია მათ მეხსიერებაში, სანამ დაიწყება მუშაობა.

ინდექსის ფაილური სახელური აქვს შემდეგ სტრუქტურას:

ველის სახელი

Ტიპი

აღწერილობა

I_mode.

Ushort.

ტიპის და წვდომის უფლება ამ ფაილზე.

I_uid

Ushort.

ფაილის მფლობელი იდენტიფიკატორი (მფლობელი UID).

I_size.

ულგ

ფაილის ზომა ბაიტებში.

I_atime.

ულგ

ფაილის ბოლო წვდომის დრო (წვდომის დრო).

I_ctime

ულგ

ფაილის შექმნის დრო.

I_mtime.

ულგ

ფაილის ბოლო მოდიფიკაციის დრო.

I_dtime

ულგ

ფაილის წაშლა დრო.

I_gid

Ushort.

ჯგუფი იდენტიფიკატორი (GID).

I_links_count

Ushort.

ურთიერთობები Counter (ბმულები რაოდენობა).

I_blocks.

ულგ

ფაილის მიერ დაკავებული ბლოკების რაოდენობა.

I_flags.

ულგ

ფაილის დროშები ფაილის დროშები)

I_rerved1

ულგ

დაცულია OS.

I_block

ულგ

მითითებები ბლოკად, რომელშიც ჩაწერილია ფაილის მონაცემები (დია პირდაპირი და ირიბი მისამართების მაგალითი 1)

I_version.

ულგ

ფაილის ვერსია (NFS- ისთვის)

I_file_acl

ულგ

ACL ფაილი.

I_dir_acl

ულგ

ACL კატალოგი

I_faddr.

ულგ

ფრაგმენტი მისამართი (ფრაგმენტი მისამართი)

I_frag

Uchar.

ფრაგმენტის ნომერი (ფრაგმენტის ნომერი)

I_fsize.

Uchar.

ფრაგმენტი ზომა (ფრაგმენტი ზომა)

I_pad1

Ushort.

გავსება

I_rerved2.

ულგ

დაცულია

ტიპის ველი და ფაილის წვდომის უფლება არის ორი ბიტიანი სიტყვა, რომელთაგან თითოეული მათგანი ემსახურება ფაილის თანაფარდობას, რომელიც შეიცავს კონკრეტულ უფლებას ფაილის კონკრეტულ ტიპს ან მონტაჟს.

იდენტიფიკატორი

შეფასება

დანიშვნა დროშა (სფეროები)

S_ifmt.

F000.

ფაილის ტიპი ნიღაბი

S_ifsock.

000.

დომენის ბუდე (სოკეტი)

S_iflnk.

C000

S_IFREG.

8000

ჩვეულებრივი (რეგულარული) ფაილი

S_ifblk.

6000

ბლოკის ორიენტირებული მოწყობილობა

S_ifdir.

4000

კატალოგი

S_ifchr

2000

Byte ორიენტირებული (სიმბოლური) მოწყობილობა

S_ififo.

1000

სახელად არხი (FIFO)

S_isuid

0800

Suid - Bit Shift მფლობელი

S_isgid

0400

SGID - ჯგუფის Shift ბიტი

S_isvtx

0200

სამუშაო კონსერვაციის ბიტი (წებოვანი ბიტი)

S_irwxu.

01c0.

ფაილის მფლობელის უფლებების ნიღაბი

S_irusr.

0100

წაკითხვის უფლება

S_IWUSR.

0080

დაწერა

S_ixusr.

0040

უფლება შეასრულოს

S_irwxg.

0038

ჯგუფის ნიღაბი ჯგუფი

S_irgrp.

0020

წაკითხვის უფლება

S_iwgrp.

0010

დაწერა

S_ixgrp.

0008

უფლება შეასრულოს

S_irwxo.

0007

სხვა მომხმარებლების უფლებების ნიღაბი

S_iroth

0004

წაკითხვის უფლება

S_iwoth

0002

დაწერა

S_ixoth

0001

უფლება შეასრულოს

ინდექსის დესკრიპტორებს შორის არსებობს რამდენიმე დესკრიპტორი, რომლებიც დაცულია სპეციალური მიზნებისათვის და განსაკუთრებულ როლს თამაშობენ ფაილურ სისტემაში. ეს არის შემდეგი აღწერები

იდენტიფიკატორი

შეფასება

აღწერილობა

Ext2_bad_ino.

ინდექსის დესკრიპტორი, რომელშიც დისკზე დეფექტური ბლოკების მისამართები ჩამოთვლილია (ცუდი ბლოკები INODE)

Ext2_root_ino

ფაილური სისტემა Root დირექტორია ინდექსი Descriptor (Root Inode)

Ext2_acl_idx_ino.

ACL INODE

Ext2_acl_data_ino

ACL INODE

Ext2_boot_loader_ino.

Loader ინდექსი Descriptor (Boot Loader Inode)

Ext2_undel_dir_ino.

Undelete დირექტორია Inode.

Ext2_first_ino.

პირველი არასამთავრობო პრო ინდექსის დესკრიპტორი

ამ სიაში ყველაზე მნიშვნელოვანი სახელური არის root დირექტორია descriptor. ეს დესკრიპტორი მიუთითებს ძირითად დირექტორიაში, რომელიც, ისევე როგორც ყველა დირექტორიის მსგავსად, შედგება შემდეგი სტრუქტურის ჩანაწერები:

ველის სახელი

Ტიპი

აღწერილობა

ჩაძირვა

ულგ

ფაილი ინდექსი Descriptor ნომერი (ინდექსი)

rec_len.

Ushort.

ამ ჩანაწერის ხანგრძლივობა

name_len.

Ushort.

ფაილის სახელი სიგრძე

სახელი.

Char.

Ფაილის სახელი

კატალოგში ცალკე შესვლისას ვერ გადაკვეთს ბლოკის საზღვარი (ანუ, ეს უნდა იყოს მთლიანად ერთი ბლოკის შიგნით). აქედან გამომდინარე, თუ მომდევნო ჩანაწერი მთლიანად არ შეესაბამება ამ ბლოკს, იგი გადაეცემა მომდევნო ბლოკს, ხოლო წინა ჩანაწერი გრძელდება ისე, რომ ბოლომდე შეავსოს ბლოკი.

ფიგურა 1 პირდაპირი და არაპირდაპირი ბლოკები ინდექსში

ფიგურა 2 ფაილის მოცულობა Bytes- ში ბლოკის ზომა 1 KB

ფიგურა 3. დისკის ინდექსის მაგალითი

ფიგურა 3 გვიჩვენებს დისკის ინდექსს გარკვეული ფაილი. ეს ინდექსი ეკუთვნის ჩვეულებრივ ფაილს, რომელთა მფლობელი "MJB" და ზომაა 6030 ბაიტი. სისტემა საშუალებას აძლევს მომხმარებელს "MJB" წაკითხვის, ჩაწეროთ და შეასრულოს ფაილი; "OS" ჯგუფის წევრები და ყველა სხვა მომხმარებელს უფლება აქვთ მხოლოდ ფაილის წაკითხვის ან შეასრულონ, მაგრამ არ ჩაიწეროს მონაცემები. ბოლო დროს ფაილი 1984 წლის 23 ოქტომბერს 13:45 საათზე წაიკითხა, 1984 წლის 22 ოქტომბერს 10:30 საათზე გაკეთდა. ინდექსი ბოლო დროს შეიცვალა 1984 წლის 23 ოქტომბერს 13:30 საათზე, თუმცა ამ დროისთვის ინფორმაცია არ იყო ჩაწერილი. Kernel encodes ყველა ზემოთ მონაცემები ინდექსი. ყურადღება მიაქციეთ განსხვავებას ინდექსის შინაარსისა და ფაილის შინაარსის შინაარსზე. ფაილის ცვლილებების შინაარსი მხოლოდ მაშინ, როდესაც ფაილი ჩაწერილია. ინდექსის შინაარსი იცვლება როგორც ფაილის შინაარსის შეცვლისას და ფაილების მფლობელის შეცვლისას, დაშვების უფლებები და მაჩვენებელი. ფაილის შინაარსის შეცვლა ავტომატურად იწვევს ინდექსის კორექციას, მაგრამ ინდექსის კორექტირება არ ნიშნავს ფაილის შინაარსს.

კატალოგები

კატალოგები არიან ფაილები, საიდანაც აშენდება ფაილური სისტემის იერარქიული სტრუქტურა; ისინი მნიშვნელოვან როლს ასრულებენ ინდექსის ნომერზე ფაილის სახელით. დირექტორია არის ფაილი, რომელიც შეიცავს ჩანაწერებს, რომელიც შედგება ინდექსის ნომრისა და ფაილის სახელით, რომელიც შედის დირექტორიაში. კომპოზიტური სახელი არის სიმბოლოების სიმებიანი სიმბოლო, რომელიც დასრულებულია ცარიელი სიმბოლოთი და დახრილი ხაზი გაზიარებული ("/") რამდენიმე კომპონენტად. თითოეული კომპონენტი, გარდა ამ უკანასკნელის, უნდა იყოს დირექტორია სახელი, მაგრამ ბოლო კომპონენტი შეიძლება იყოს ფაილი, რომელიც არ არის დირექტორია. UNIX სისტემის V ვერსიაში, თითოეული კომპონენტის ხანგრძლივობა შემოიფარგლება 14 სიმბოლოზე; ამდენად, ინდექსის ნომერზე გამოყოფილი 2 ბაიტი, დირექტორების ჩაწერის ზომაა 16 ბაიტი.

ოფსეტური ბაიტი
შიგნით კატალოგი

ინდექსი ნომერი
(2 ბაიტი)

სახელისაქაღალდე

1798

მასში

1276

fsck.

კლონი

1268

mOTD.

1799

ბაზა

mkknod.

2114

passwd.

1717

მოცულობა

1851

ჩამონათვალი.

fsdbld

ყრთურევა

1432

გეტის მიღება.

ავარია.

mkfs.

ფიგურა 4 კატალოგის ფორმატი / და ა.შ.

ფიგურა 4 გვიჩვენებს "ა.შ." დირექტორიას. თითოეულ დირექტორია, როგორც სახელები, რომელთა სახელები მითითებულია წერტილი და ორი ქულა ("." და "..") და ინდექსის ნომრები, რომლებიც შეესაბამება ამ კატალოგსა და მშობლის კატალოგს, შესაბამისად. ინდექსი ნომერი ფაილი "." "/ Etc" დირექტორია აქვს ოფსეტური 0 და ღირებულება 83. ინდექსი ნომერი ფაილი ".." აქვს მისამართი ოფსეტური 16 დაწყების დირექტორია და ღირებულება 2. ჩანაწერების დირექტორია შეიძლება იყოს ცარიელი და ინდექსის ნომერი არის 0. მაგალითად, მისამართი 224 "/ ა.შ." დირექტორია ცარიელია, მიუხედავად იმისა, რომ ის ერთხელ შეიცავდა ფაილის შესვლის წერტილს "ავარიის". MKFS პროგრამა ინიშნება ფაილურ სისტემას ისე, რომ ფაილების ინდექსის ნომრები "." და ".." Root დირექტორიაში ემთხვევა ფაილური სისტემის ძირეული ინდექსის რაოდენობას.

Kernel ინახავს მონაცემებს დირექტორიაში ისე, როგორც ეს ნორმალურ ტიპის ფაილს იყენებს ინდექსის სტრუქტურისა და ბლოკების გამოყენებით პირდაპირი და არაპირდაპირი მისამართებით. პროცესებს შეუძლია წაიკითხოს მონაცემები დირექტორიები, ისევე როგორც რეგულარული ფაილები, მაგრამ ექსკლუზიური შესვლის უფლება დირექტორიაში დაცულია ძირითადი, რომელიც უზრუნველყოფს სტრუქტურის სტრუქტურის სისწორეს. კატალოგის წვდომის უფლება აქვს შემდეგ მნიშვნელობას: კითხვის უფლება აძლევს საშუალებას აძლევს მონაცემების წაკითხვის შესაძლებლობას. ჩაწერის უფლება საშუალებას აძლევს შექმნას ახალი ჩანაწერების შექმნა დირექტორია ან წაშალოს ძველი (CREAT, MKKNOD, LINK და UNLINK სისტემის ოპერაციების გამოყენებით), რის შედეგადაც კატალოგის ცვლილებების შინაარსი; აღსრულების უფლება საშუალებას აძლევს პროცესს, რათა მოძებნოთ დირექტორია ფაილის სახელით (მას შემდეგ, რაც "აღსრულების" კატალოგი უაზროა).

როდესაც ნებისმიერი პროგრამა იყენებს ფაილის გზას, ინდექსის descip- ის შესაბამისი Nomep შეიცავს კატალოგებს. მას შემდეგ, რაც ფაილის სახელი გამოყენებული იქნა ინდექსის დესკრიპტში, ეს descippot მოთავსებულია მეხსიერებაში და შემდეგ გამოიყენება შემდგომ ZAP- ში.

UNIX ფაილური სისტემების კონცეფცია მოიცავს მითითების კონცეფციას. ერთი ინდექსი Descipboard შეიძლება ასოცირდება მრავალჯერადი ფაილის სახელები. Deskpott ეხმარება სფეროში, hinner, რომელთანაც ფაილი ასოცირდება. დამატება ბმული არის შექმნას დირექტორია შესვლის, სადაც ინდექსი descippet ნომერი მიუთითებს diskpot, და ზრდა მინიშნება Counter in Descpport. თქვენ უნდა წაშალოთ ბმულების ბმულები ამცირებს საცნობარო კონტრაქტს და წაშლის Desqpot, თუ ეს მეტრი ხდება null.

ასეთი კავშირები ეწოდება ხისტი და მხოლოდ ერთი ფაილურ სისტემაში შეიძლება გამოყენებულ იქნას (თქვენ ვერ შექმნიან ბმულს ფაილური სისტემის ფაილური სისტემისგან). უფრო მეტიც, მყარი ბმული შეიძლება მხოლოდ განსაზღვროს ფაილი (მკაცრი მითითება დირექტორია შეიძლება გამოყენებულ იქნას ფოკუსირება ფაილური სისტემა).

უმეტეს Unix სისტემებში, არსებობს კიდევ ერთი ბმული. ეს ბმულები, რომლებიც მხოლოდ ფაილის სახელს ხელს უწყობენ სიმბოლურ. თქვენ იყენებთ ამ ბმულების ღარიბს, ინდექსის Descipboard- ში ფაილის ფაილის გამოყენებისას, შხამი ცვლის Descite პროგრამული უზრუნველყოფის მითითებას (ანუ დანიშნულების ფაილის სახელით) და ხელახლა Intpps გზას ფაილი. მას შემდეგ, რაც სიმბოლური ბმული არ მიუთითებს ინდექსის Desqpot- ს, შესაძლებელია შეიქმნას ბმულები ფაილებთან, რომლებიც განლაგებულია სადეზინფექციო ფაილურ სისტემაში. ეს ბმულები შეიძლება მიუთითონ ნებისმიერი ტიპის ფაილი, თუნდაც არარსებული. სიმბოლური კავშირები იმდენად გამოიყენება, რადგან მათ არ აქვთ ის ხანძრები, რომლებსაც აქვთ მძიმე ბმული. თუმცა, ისინი დაიკავებენ გარკვეულ მოცულობას დისკზე, სადაც ინდექსი Descipboard და მონაცემთა ბლოკები დასაშვებია. მათი გამოყენება შეიძლება გამოყენებულ იქნას გამონადენი გზებზე, რათა გამოიყენოთ ფაილის ფაილი ინდექსის Descipboard- ისთვის, რომელიც იმის გამო, რომ შხამი სიმბოლური კავშირების სიმბოლური უნდა იყოს ფაილზე.

ფაილების მოწყობილობები

Unix- ის მსგავსი ოპერაციული სისტემებში, მოწყობილობების ხელმისაწვდომობა ხორციელდება სპეციალური ფაილების მეშვეობით. ეს ფაილი არ შედგება ფაილურ სისტემაში. ეს არის მხოლოდ წვდომის წერტილი მოწყობილობის დისკზე.

არსებობს ორი ტიპის მოწყობილობები ფაილი: სიმბოლური და ბლოკი. სიმბოლური ტიპის გამოყენებისას შესაძლებელია მონაცემების გაცვლა მხოლოდ ხასიათის რეჟიმში, ხოლო ბლოკირების ტიპის მოწყობილობების ფაილები საშუალებას გაძლევთ გაზარდოთ ბუფერული გამოყენებით. მოწყობილობის ფაილში I / O თხოვნის მოთხოვნისას, ეს შეკითხვა გადამისამართება შესაბამისი მოწყობილობის მძღოლს. თითოეული მსგავსი ფაილი შეესაბამება მაღალ ნომერს, რომელიც განსაზღვრავს მოწყობილობის ტიპს და ახალგაზრდა ოთახს, რომელიც განსაზღვრავს მოწყობილობას.

დამატებითი ფუნქციები EXT2FS.

გარდა Unix, Ext2FS პოზიტიური თვისებები, არსებობს დამატებითი ფუნქციები, რომლებიც, როგორც წესი, არ შემდგომში წარმოდგენილი unix ფაილური სისტემები.

ფაილი atpibuts საშუალებას გაძლევთ შეცვალოთ დაჭერით Polar გამოყენებით ფაილი ფაილი. თქვენ შეგიძლიათ დააყენოთ ფაილი ან დირექტორია. მეორე შემთხვევაში, ამ დირექტორიაში შექმნილი ფაილები მემკვიდრეობით.

სისტემის მონტაჟისას, შეიძლება დამონტაჟდეს ფაილის ათიკოტიკებთან დაკავშირებული ზოგიერთი კონკრეტული თვისებები. მთა ვარიანტი საშუალებას აძლევს ადმინისტრაციას, აირჩიოთ ფაილების შესაქმნელად. ფაილურ სისტემაში BSD- ის თვისებებით, ფაილები იქმნება იმავე იდენტიფიკატორის GPPP- თან, ისევე როგორც ბინის კატალოგში. მახასიათებლები სისტემა V გარკვეულწილად უფრო რთულია. თუ Setgid Bit Catalog არის მითითებული, ამ დირექტორიის GPP- ების იდენტიფიკატორის მიერ შექმნილი ფაილები და ქვედანაყოფები მემკვიდრეობით სარგებლობენ GPPP- ს და SetGID ბიტის განსაზღვრას. წინამდებარე საქმეში, ფაილები და კატალოგები იქმნება GPPP- ის ძირითადი იდენტიფიკატორის გამომწვევი PPCRESS.

EXT2FS სისტემას შეუძლია გამოიყენოს სინქრონული მონაცემების მოდიფიკაცია BSD სისტემის მსგავსად. მთა ვარიანტი საშუალებას აძლევს ადმინისტრაციას, განსაზღვროს ყველა მონაცემები (ინდექსის desclists, ბიტი, არაპირდაპირი ბლოკები და დირექტორია ბლოკები), რომელიც ჩაწერილია DC სინქრონულად მათი მოდიფიკაციებში. ეს შეიძლება გამოყენებულ იქნას მაღალი საინფორმაციო ჩანაწერების მისაღწევად, არამედ მღვდლობის გაუარესებაში. სინამდვილეში, ეს ფუნქცია, როგორც წესი, არ გამოიყენება, რადგან გავრცელების გაუარესება, ეს შეიძლება გამოყენებულ იქნას მომხმარებლების ოფისის მომხმარებლებისთვის, რომლებიც არ აღინიშნება ფაილური სისტემის გამოყენებით.

EXT2FS საშუალებას გაძლევთ შექმნათ ფაილური სისტემა ლოგიკური ბლოკის შესარჩევად. ეს შეიძლება იყოს Pazmer 1024, 2048 ან 4096 ბაიტი. I / O Optiating- ის დიდი მოცულობის ბლოკების გამოყენება (როგორც დისკის ოდენობის ოდენობა) და, შესაბამისად, მეთაურთა პატარა ჰედერისთვის. ბლოკის მეორე მხარეს, დიდი ბლოკის ბლოკების გამოყენება დისკის პენსიის აკრიფორმასთან. როგორც წესი, ფაილის ბოლო ბლოკი არ გამოიყენება მთლიანად ინფორმაციისთვის, ამიტომ, ბლოკის მოცულობის გაზრდა, გაიზარდა teped დისკის Punch.

EXT2FS საშუალებას გაძლევთ გამოიყენოთ oskized სიმბოლური ბმულები. ასეთი ბმულების გამოყენებით, ბლოკის მონაცემების ბლოკები არ გამოიყენება. დანიშნულების ფაილის სახელი არ არის მონაცემთა ბლოკში, მაგრამ ინდექსში Descipboard- ში. ასეთი სტრუქტურა საშუალებას გაძლევთ შეინარჩუნოთ დისკის Punch და evaporate Scotch სიმბოლური ბმულები. რა თქმა უნდა, არსებობს piping, descled ქვეშ descite, flaky, ასე რომ არ ყველა ბმული შეიძლება underwritten როგორც hersal. მეორადი ლინკის ფაილის სახელის მაქსიმალური სიგრძე 60 სიმბოლოა. უახლოეს მომავალში დაგეგმილია მცირე ზომის ფაილების ამ სქემის პაუზის პაუზა.

EXT2FS შემდეგნაირად არის ფაილური სისტემის მდგომარეობა. ცუდი იყენებს ცალკეულ სფეროს შეჩერებას ფაილური სისტემის სტატუსის მინიშნება. თუ ფაილური სისტემა დამონტაჟებულია წაკითხული / დაწერეთ, მისი სახელმწიფო დამონტაჟებულია როგორც "არ არის სუფთა". თუ ეს დემონტაჟი ან დამონტაჟებულია კვლავ წაკითხული მხოლოდ სარგებლობასთან, მაშინ მისი მდგომარეობა დამონტაჟებულია "სუფთა" -ში. როდესაც სისტემის სისტემა და ფაილური სისტემა მიმდინარეობს, ეს ინფორმაცია გამოიყენება ფაილური სისტემის საჭიროების შესახებ. ცუდი ასევე ადგენს ზოგიერთი mischievous შეცდომები ამ სფეროში. გახსნილი შეუსაბამობის შხამი, ფაილური სისტემა აღინიშნება როგორც "მცდარი". ფაილური სისტემის სიმულატორი ამ ინფორმაციას შეამოწმებს სისტემის სისტემას, მაშინაც კი, თუ მისი მდგომარეობა რეალურად "სუფთაა".

გაგრძელებული იგნორირება ფაილური სისტემის ტესტირება ზოგჯერ შეიძლება ზოგჯერ იყოს გარკვეული საკმარისი, ამიტომ Ext2FS მოიცავს ორი მეთოდს მარეგულირებელი სისტემის. Spearlock ხელს უწყობს სისტემის მთაზე მრიცხველს. ეს counter იზრდება თითოეული PA როდესაც სისტემა დამონტაჟებულია წაკითხული / ჩაწერის ფუნქცია. თუ მისი ღირებულება აღწევს მაქსიმუმს (ის ასევე შეჩერებულია შეჩერებით), მაშინ ფაილური სისტემის ტესტირება დაიწყო გადახდაზე, მაშინაც კი, თუ მისი მდგომარეობა "სუფთაა". ეს უკანასკნელი, პირველად და მაქსიმალური ინტელექტუალური პირველია, ასევე შეჩერებულია შეჩერებით. როდესაც მაქსიმალური დაზვერვა მიღწეულია Pinks- ს შორის, ფაილური სისტემა იგნორირებულია და გამშვები პუნქტი იწყება.

EXT2FS სისტემა მისი დღემდე ეხმარება. Tune2FS Bramma შეიძლება გამოყენებულ იქნას:

  • action Pri შეცდომა unpacking. გაიხსნა შეუსრულებლობის შხამი, ფაილური სისტემა აღინიშნება, როგორც "მცდარი" და ერთ-ერთი შემდეგი ნაბიჯი შეიძლება შესრულდეს: აღსრულების განხორციელება, ფაილური სისტემის განახლება, რათა თავიდან იქნას აცილებული დაწყვილება, სისტემის პეიჯინგის სისტემა ფაილურ სისტემაში.
  • მაქსიმალური დამონტაჟებული ღირებულება.
  • მაქსიმალური დაზვერვის შორის ქინძისთავები.
  • ლოგიკური ბლოკების რაოდენობა, root მომხმარებლისთვის.

დამონტაჟებული პარამეტრები ასევე შეიძლება გამოყენებულ იქნას შეცდომის შხმის ვალდებულების შეცვლისთვის.

გამოყენებით Atpibut საშუალებას მომხმარებლებს წაშლა შემთხვევები. თქვენ შეგიძლიათ წაშალოთ მსგავსი ფაილი, ბლოკებში, რომლებიც გამოიყენება ამ ფაილის გამოყენებისათვის, ჩაწერილია შემთხვევითი ინფორმაციის მიხედვით. ეს ხელს შეუწყობს ამ ფაილის პირველ რიგში უფლებამოსილებას, ხოლო დისკის აკრიფეთ დახმარება.

Ext2FS სისტემა ცოტა ხნის წინ დამატებულია ახალი ტიპის ფაილები 4.4 BSD ფაილური სისტემისგან. აყენებს ტიპის ფაილებს მხოლოდ კითხვისთვის გამოიყენება: არავის უნდა შეცვალოს ისინი ან წაიშალოს ისინი. ეს შეიძლება გამოყენებულ იქნას მნიშვნელოვანი კონფიგურაციის ფაილების დასაცავად. ფაილის ტიპის ფაილები, ეს არის ფაილები, რომლებიც შეიძლება გადაიქცეს ჩაწერის ფუნქციებს, ხოლო მონაცემები მხოლოდ ამ ფაილის დასასრულს დაემატება. ამ ტიპის ფაილი შეიძლება ასევე მოიხსნას ან მუდმივი. ისინი შეიძლება გამოყენებულ იქნას, როგორც Zeper ფაილი, რომელიც შეიძლება გაიზარდოს მოცულობა.

პრივილეგიების ოპტიმიზაცია

Ext2FS სისტემა ხელს უწყობს ბევრ ფუნქციას, რომელიც მისი პროფილის ოპტიმიზაციას, რაც იწვევს ინფორმაციის გაცვლისა და წერის შესახებ ინფორმაციის გაცვლის ფარგლებს.

EXT2FS აქტიურად იყენებს დისკზე ბუფერულს. როდესაც ობიექტი უნდა წაიკითხოთ, შხამი აჩვენებს I / O Opt / Output Opaque- ს. ამდენად, ღარიბი მცდელობები დარწმუნდით, რომ მომდევნო ბლოკი, რომელიც უნდა წაიკითხოთ, უკვე დისკზე ბუფერული იყო. ასეთი opporations ჩვეულებრივ შესრულებულია სერიული მოსმენით ფაილების გამოყენებით.

EXT2FS სისტემა ასევე ითვალისწინებს დიდი რაოდენობით ინფორმაციის ოპტიმიზაციას. ბლოკები გამოიყენება შესაბამისი ინდექსის descippets და მონაცემთა ბლოკების შერწყმა. შხამი ყოველთვის ცდილობს ერთ ფაილში ერთ ფაილში მონაცემთა ბლოკების შესუსტებას, ისევე როგორც მისი Desqpot. ეს გამოიყენება ჰედერის ხელმძღვანელებისა და დესკრიპტის სამართალწარმოების შემცირებაზე და მასთან შესაბამის ბლოკებს.

ეს მონაცემების ჩანაწერები ფაილი, Ext2Fs გაძლიერდება მდე 8 მიმდებარე ბლოკები გამოყენებით ახალი ბლოკი. ასეთი მეთოდი საშუალებას იძლევა სისტემის სისტემის სიძლიერის მაღალი მაჩვენებლების მიღწევა. იგი ასევე საშუალებას გაძლევთ გამოიყენოთ მიმდებარე ბლოკები ფაილი, რომელიც შეესაბამება მათი შემდგომი წაკითხვის.

ბიბლიოთეკა EXT2FS.

გამოიყენოს Ext2FS მავნებლების გამოყენება და ამ ფაილური სისტემის საკონტაქტო სტრიტის კონტროლი, Libext2FS ბიბლიოთეკა მარტივია. ეს ბიბლიოთეკა უზრუნველყოფს ფუნქციებს, რომლებიც შეიძლება გამოყენებულ იქნას ამ EXT2 ფაილური სისტემის მუშაობისთვის და შეცვალოს ფიზიკურად აღმოფხვრის.

ყველაზე Ext2FS Utilities (MKE2FS, E2FSCK, Tune2FS, DUMPE2FS, DEBUGFS და DP.) გამოიყენეთ ეს ბიბლიოთეკა. მკაცრად ავსებს ამ კომუნალური მოდიფიცირების მოდიფიკაციას, რადგან EXT2FS ფაილური სისტემის დამატებითი ფუნქციების დანერგვის ნებისმიერი ცვლილება მხოლოდ EXT2FS ბიბლიოთეკაში უნდა იყოს.

მას შემდეგ, რაც EXT2FS ინტერნეტ ბიბლიოთეკა საკმარისად shiyky და დამხმარე, ეს შეიძლება ადვილად დაწერილი მისი დახმარებით, რომელიც ადვილად დაწერილი, იმ სამუშაოს, რომლის გამოყენება ფაილური სისტემა შეიძლება გამოყენებულ იქნას. ვრცელდება, EXT2FS ბიბლიოთეკა გამოყენებული იყო 4.4 BSD ნაგავსაყრელის და ზოგიერთი კომუნალური აღდგენის გზით. მოკლეს, რათა ძალიან მცირე ცვლილებები შეიტანოს ამ მიზნების მისაღწევად Linux- ზე (აუცილებელი იყო რამდენიმე ფუნქციის შეცვლა, რომელიც დაკავშირებულია ფაილურ სისტემასთან Ext2FS- ის ბიბლიოთეკაში).

EXT2FS ბიბლიოთეკა მოიცავს რამდენიმე კლასის ოპერაციებს. Puberty კლასის არის გაუმჭვირვალე ასოცირდება ფაილური სისტემა. ნებისმიერი შამპუნით შეუძლია გახსნას ან შეცვალოს ფაილური სისტემა, წაიკითხოთ ან დაწეროთ ცოტა ბლოკი, შექმნას ახალი ფაილური სისტემა დისკზე. ასევე არსებობს ცუდი ბლოკის სისტემის ბლოკების სიის ფუნქციები.

მეორე კლასის გაუმჭვირვალე იქნება გამოყენებული კატალოგები. Propamma გამოყენებით Ext2FS ბიბლიოთეკა შეუძლია შექმნას ან სკაუტი დირექტორია, ასევე დაამატოთ ან წაშლა ჩანაწერების დირექტორიაში. არსებობს ფუნქციები, როგორც propellants ინდექსის descipping გზა ფაილი და გზა გზას ფაილი მიხედვით მითითებული descip.

გაუმჭვირვალე ბოლო კლასი ინდექსის დეველოპულებით იხსნება. Descpport- ის მაგიდის წაკითხვა, DESCPOTP- ის დათვლის ან ჩაწერეთ, PP- ის ყველა ბლოკის ყველა ბლოკის ნახვა. შესაძლებელია ბლოკებისა და დეკორპორტის ფორმირების და გათავისუფლების ფუნქციები.

EXT2FS სისტემის სექცია

EXT2FS სისტემაში გამოყენებულ იქნა დამატებითი გამოყენების ძლიერი გამოყენება. ეს მიზნები გამოიყენება, რათა შეიქმნას, შეცვალოს და გააფართოვოს ნებისმიერი შეუსაბამობები EXT2FS ფაილური სისტემების სისტემებში. MKE2FS პროგრამა გამოიყენება დისკის პასტის დაყენება, რომელიც უზრუნველყოფს ცარიელი EXT2FS ფაილურ სისტემას.

Tune2FS აპლიკაცია შეიძლება გამოყენებულ იქნას ფაილური სისტემის Papalmet- ის ძალაუფლებისთვის .CC ეს შეიძლება შეიცვალოს, რომ შეიცვალა შეცდომები, სისტემური სამონტაჟო მაქსიმალური რაოდენობა, სისტემის პროგრესებსა და ლოგიკურ ბლოკების რიცხვს შორის root მომხმარებელი.

ალბათ ყველაზე ჭკვიანი გამოყენება არის გამარტივებული ფაილური სისტემა. E2FSCK- მა ხელი შეუწყო სისტემურ სისტემაში შეუსაბამობებს სისტემაში არსებული სისტემის სისტემაში. E2FSCK Propamma- ის საწყისი ვერსია ეფუძნება Linus Torvald FSCK ფაილის Minix ფაილურ სისტემას. თუმცა, ტრანზიტული პერიოდის ამჟამინდელი ვერსიები Ext2FS ბიბლიოთეკის გამოყენებით და უფრო სწრაფია და შეიძლება მხოლოდ გამოვლინდეს მისი გამოძიების სფეროში უფრო დიდი რაოდენობის შეცდომით, პრეპარატის ვაკასთან ერთად.

E2FSCK სირცხვილი შეისწავლა ასეთ დროს ისე, რომ იგი შესრულდა მაქსიმალური სიჩქარით. მას შემდეგ, რაც ფაილური სისტემის Pricks ეწოდება დისკზე headband, თქვენ უნდა ოპტიმიზაცია E2FSCK flashing ალგორითმები ისეთი, რომ პროცედურა ფაილური სისტემა უნდა იყოს გამოყენებული ბევრად უფრო ადვილია. და, უფრო მეტიც, ინდექსის გადაწყვეტილებისა და დირექტორიების განზრახვები შესრულდება ბლოკის ნომრის მიხედვით, რათა შეამცირონ დისკზე დისკის ხელმძღვანელები.

E2FSCK- ის დარღვევით, ფაილური სისტემა არის ყველა ინდექსის descipients და ერთი descipputs როგორც ცალკე ელემენტი სისტემა. ასეთი შემთხვევა, ეს ტესტირება არ შეესაბამება ფაილური სისტემის ობიექტებს. ასეთი ქინძისთა ერთ-ერთი მიზანი არის ფაილის ტიპის ტიპის არსებობის შეყვანა, ისევე როგორც ყველა ბლოკის კორესპონდენცია DESCPEPET- ში არსებული ნომრებით ბლოკებით. ჩართვისას, ბიტი მოქმედებს ბლოკებისა და desplists- ის გამოყენების შესახებ.

თუ E2FSCK აღმოაჩენს მონაცემთა ბლოკებს, რომელთა ნომრები ერთზე მეტს აგროვებენ ერთზე მეტს.

უახლოეს peepping იღებს ყველაზე მეტად, რადგან ყველა ინდექსის descippet უნდა წაიკითხოთ მეხსიერებაში და განუყოფელი. შემდგომი ორგანოების შეყვანის / გამომავალი ოპტიმიების შესამცირებლად, ყველა საჭირო ინფორმაციის მოძრაობა ბუფერში რჩება. ამ სქემის ბედნიერი წაკითხული არის ფაილური სისტემის ყველა ბლოკის ძიება. ამ ინფორმაციის მისაღებად, მეორე ტურში წაკითხული ყველა ფაილური სისტემის კატალოგის თანმიმდევრობები.

მეორე მორთვა, დირექტორიები აკრეფით, როგორც ინდივიდუალური ელემენტები ფაილური სისტემის. თითოეული დირექტორიის ბლოკი ცალკეა, DPUCH- ის მითითების გარეშე. ეს საშუალებას აძლევს E2FSCK- ს გააუქმოს ყველა ბლოკის დირექტორიები ბლოკების რაოდენობაზე და დაუკავშირდით მათ გაშვებულ დროს, ამგვარი დრო დისკზე წვდომის შემცირებას. კატალოგის ბლოკები ტესტირებულია მათი ჩანაწერების რეალობის კორესპონდენციისთვის და ისინი ხელს უწყობენ არსებული ნომრებზე დესკპუტებს (როგორც ეს იყო დარღვევისას).

დირექტორია დირექტორია დირექტორიაში თითოეული გრაფიკისთვის, არსებების არსებობა არსებობდა ". და "..", და რომ Descppet ნომერი არის ჩანაწერი. " შეესაბამება მიმდინარე დირექტორიას. (ნომრის ჩანაწერის ნომერი ".." არ არის გამოცდა, სანამ არ გამოდის.)

მეორე კოდის შესრულებისას, ბუფერულ კატალოგთან შესაბამისი ინფორმაციის მოძრაობა შენახულია ბუფერში.

აღსანიშნავია, რომ მეორე Pchoda- ის დასასრულს, თითქმის ყველა შეყვანის / გამომავალი opections დისკი იქნება დაფარული. ყველა ინფორმაცია მოძრაობა, რომელიც ცდილობს ათასობით მეოთხე და მეხუთე ვიზიტებს, ხელს უწყობს მეხსიერებაში, თუმცა, PPPSSOP- ის დარჩენილი პიტები და სულ E2FSCK- ის აღსრულების 5-10% -ზე ნაკლებია.

კატალოგის კავშირები შედის Trinket- ში. E2FSCK აკეთებს ბილიკების თითოეული დირექტორია სასმელების საწოლი, გამოყენებით მიღებული ინფორმაცია მეორე საკონტაქტო. აქ არის ჩანაწერი ".." თითოეული კატალოგი. ყველა კატალოგმა პირველი და არ მქონია კავშირები / დაკარგული + ნაპოვნი დირექტორია.

მეოთხე, E2FSCK TRIPS, თითოეული ინდექსის Descip- ის მინიშნებები, რომლებიც შეიცავს ყველა დეველოპორტს ყველა დეველოპორტს და ასახავს მითითებას მრიცხველებს (ეს ინფორმაცია ინახება ჯვარედინიდან) შიდა მეტრით, რომელთა ღირებულებებიც გამოითვლება ქვე-მეორე და ჩემოდნები. ყველა წარუმატებელი ფაილი ნულოვანი მინიშნება მეტრით არის განთავსებული / დაკარგული + ნაპოვნი დირექტორიაში.

და ბოლოს, მეხუთე, E2FSCK არის ფაილური სისტემის შესახებ ინფორმაციის მოპოვების ყველა ინფორმაციის მიმოწერა. აქ არის ბლოკებისა და desclists- ის ბიტი, რომლებიც მიღებულ იქნა პირველივე ცალი, სწორი ღირებულებით და, საჭიროების შემთხვევაში, დისკის ინფორმაცია დისკის შესაბამისი ხდება.

გამოიყენეთ ფაილური სისტემის Debugger- ის სასარგებლო გამოყენება. Debugfs არის ძლიერი ამაოება, რომელიც საშუალებას გაძლევთ descend და მითითებული ფაილის სისტემის სტატუსი. არსებითად, ეს არის ინტერაქტიული ინტერნეტი Ext2FS ბიბლიოთეკაში, ანუ ტიპიური ბრძანებები ბიბლიოთეკის ფუნქციებს.

Debugfs შეიძლება გამოყენებულ იქნას შიდა ფაილური სისტემის მკაცრი მუშაობისთვის, აღდგენის სისტემის დატოვება ან E2FSCK- ის პირობითი ტესტების შექმნა. სამწუხაროდ, ეს JAMMY- ს შეუძლია ფაილური სისტემის მოპოვება, თუ არ იცი, როგორ გამოიყენოთ იგი. ამ ძალით, საკმარისია ფაილური სისტემის განადგურება. აქედან გამომდინარე, debugfs გამოდის ფაილის სისტემა default მხოლოდ წაკითხული მხოლოდ პოზიცია. წაკითხვის / ჩაწერის კონვერტში წვდომისათვის, თქვენ უნდა მიუთითოთ -W ვარიანტი.

კონფიდენციალურობის გაანგარიშება

Bonnie ტესტის შედეგები ჩანს შემდეგი ცხრილიდან:

შაქრის ჩანაწერი (CB / s)

Patch Entry (CB / s)

შესრულება (KB / s)

შაქრის კითხვა (CB / s)

Piece Reading (KB / s)

BSD async.

BSD Sync.

Ext2 fs.

1237

1033

Xia fs.

შედეგები საკმარისად იცნობს ბლოკის შეყვანის / გამომავალს: EXT2FS სისტემის მოგება მითითების სისტემაზე. ეს არის PA- ის დაახლოების ოპტიმიზაციის გამო. შესვლის ასევე სწრაფი საკმარისია, იმის მიხედვით, რომ ეს არის puppier in Gupiene Purem. წაკითხვის მაღალი სიჩქარე უკავშირდება იმ ფაქტს, რომ ბლოკები ამოიღეს ფაილში, ამიტომ სასაქონლო ხელმძღვანელები არ ასრულებენ ორ კითხვას შორის და პირველი მოსმენით ოპტიმიზაცია სრულად სრულად იქნება.

მეორე მხარეს, FreeBSD სისტემა მოიცავს სიმბოლური შეყვანის / გამომავალი მინიშნება ღირებულების ზემოთ. ალბათ, ეს არის იმის გამო, რომ FreeBSD და Linux გამოიყენებს შესაბამის ბიბლიოთეკებს შესაბამისი C ბიბლიოთეკების შესაბამისი. გარდა ამისა, FreeBSD- ში, უფრო ოპტიმიზირებული სიმბოლური კითხვის ბიბლიოთეკა და აქედან გამომდინარე აქ არის ცოტა უკეთესი.

ტესტის შედეგები ენდრიუ.

ენდრიუ ტესტის შედეგები ჩანს შემდეგი ცხრილისგან:

პაპი 1 შექმნა

სანტექნიკა 2 კოპირება

სანტექნიკა 3 სტატუსი

სანტექნიკა 4 ნათითი

Plumber 5 შედგენა

2203

7391

6319

17466

75314

BSD Sync.

2330

7732

6317

17499

75681

Ext2 fs.

ბოლო ორი pits შედეგები აჩვენებს, რომ Linux გაიმარჯვებს ასინქრონული მონაცემთა გაცვლის. თქვენ შექმნით დირექტორიები და ფაილები, BSD სისტემა სინქრონულად აფიქსირებს Descpports- ს და დირექტორიების ჩანაწერებს. არსებობს ზარი, რომ Asynchpone Subdepending FreeBSD არ არის სრულად განხორციელებული.

ხარკზე Linux- ისა და BSD- ის ღირებულებას ძალიან ჰგავს. მიუხედავად იმისა, რომ BSD აღწერილია ზემოთ, დაამატოთ Bouquency ფაილი სახელები Linux VFS სისტემა არის ამ ტიპის.

მეხუთე და მეხუთე პვიოდებში, Linux სწრაფად FreeBSD, ძირითადად კომბინირებული ბუკეტის გამოყენებისას. ბუფერის მოცულობა უფრო მეტ მეხსიერებას შეუძლია მიიღოს მეტი მეხსიერება, ვიდრე FreeBSD- ში, სადაც გამოიყენება ფიქსირებული მოცულობა. EXT2FS- ისა და XIA FS- ის შედეგები აჩვენებს, რომ EXT2FS- ის ოპტიმიზაცია მართლაც გამოიყენება: ამ სისტემების დამნაშავე დაახლოებით 5-10% -ს შეადგენს.

დასკვნა

Ext2 ფაილური სისტემა არის Linux- ის მომხმარებლებისთვის ყველაზე ცოტა ხნით. იგი უზრუნველყოფს UNIX სტანდარტული მახასიათებლებს და დამატებით ფუნქციებს. უფრო მეტიც, შხამი შხამიანი ოპტიმიზაციის წყალობით, ეს შესანიშნავი რეაგირების შედეგებს გვიჩვენებს.

EXT2FS სისტემა მოიცავს ფუნქციებს ახალი თვისებების დასამატებლად. ზოგიერთი ადამიანი ზრუნავს PAS- ის გამოყენებაზე რეალურ ფაილურ სისტემაში: დაშვების კონტროლის ჩამონათვალი, შესაბამისი POSIX STANDA, დისტანციური ფაილების აღდგენა და გრძელვადიანი რეზიდენციის ფაილების შეკუმშვა.

პირველი, EXT2FS სისტემა ინტეგრირებული იყო Linux- ის შხამში და აქტიურად მოძრაობს ოპერაციული სისტემების ფუნქციონირებაზე. EXT2FS ასევე არის MASIX ოპერაციის სისტემის მნიშვნელოვანი კომპონენტი, რომელიც ამჟამად ერთ-ერთი ავტოპროდუქციის მიერ არის შესწავლილი.