Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Բարեւ բոլորին! Մենք շարունակում ենք գործարկել նոր հոսքեր այն դասընթացների համար, որոնց արդեն սիրահարվել եք, և այժմ մենք շտապում ենք հայտարարել, որ սկսում ենք դասընթացների նոր փաթեթ։ «Linux Administrator»որը կմեկնարկի ապրիլի վերջին։ Այս իրադարձության համար կնշվի նոր հրապարակում: Բնօրինակ նյութով կարող եք կարդալ այստեղ.

Վիրտուալ ֆայլային համակարգերը ծառայում են որպես մի տեսակ կախարդական աբստրակցիա, որը թույլ է տալիս Linux-ի փիլիսոփայությանը ասել, որ «ամեն ինչ ֆայլ է»։

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Ի՞նչ է ֆայլային համակարգը: Հիմնվելով Linux-ի առաջին ներդրողներից և հեղինակներից մեկի խոսքերի վրա Ռոբերտա Լավա, «Ֆայլային համակարգը տվյալների հիերարխիկ պահեստավորում է, որը հավաքվում է ըստ կոնկրետ կառուցվածքի։ Ինչ էլ որ լինի, այս սահմանումը հավասարապես համապատասխանում է VFAT-ին (Վիրտուալ ֆայլերի բաշխման աղյուսակ), Git-ին և Cassandra (NoSQL տվյալների բազա) Այսպիսով, ինչն է կոնկրետ սահմանում այնպիսի բան, ինչպիսին է «ֆայլային համակարգ»:

Ֆայլային համակարգի հիմունքներ

Linux միջուկը որոշակի պահանջներ ունի այն անձի համար, որը կարելի է համարել ֆայլային համակարգ: Այն պետք է իրականացնի մեթոդները open(), read() и write() համառ օբյեկտների համար, որոնք ունեն անուններ: Օբյեկտ-կողմնորոշված ​​տեսանկյունից ծրագրավորում, միջուկը սահմանում է ընդհանուր ֆայլային համակարգը որպես վերացական ինտերֆեյս, և այս երեք մեծ գործառույթները համարվում են «վիրտուալ» և չունեն կոնկրետ սահմանում։ Համապատասխանաբար, լռելյայն ֆայլային համակարգի ներդրումը կոչվում է վիրտուալ ֆայլային համակարգ (VFS):

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Եթե ​​մենք կարող ենք բացել, կարդալ և գրել որևէ անձի, ապա այդ կազմը համարվում է ֆայլ, ինչպես կարող ենք տեսնել վերը նշված վահանակի օրինակից:
VFS ֆենոմենը միայն ընդգծում է Unix-ի նման դիտարկումը, որ «ամեն ինչ ֆայլ է»։ Մտածեք, թե որքան տարօրինակ է, որ վերը նշված փոքրիկ /dev/console օրինակը ցույց է տալիս, թե ինչպես է իրականում աշխատում վահանակը: Նկարը ցույց է տալիս ինտերակտիվ Bash նիստը: Տող ուղարկելով վահանակ (վիրտուալ կոնսոլ սարք) այն ցուցադրում է վիրտուալ էկրանին: VFS-ն ունի այլ, նույնիսկ ավելի տարօրինակ հատկություններ: Օրինակ, այն թույլ է տալիս որոնել ըստ նրա կողմից.

Ծանոթ համակարգերը, ինչպիսիք են ext4, NFS և /proc, ունեն երեք կարևոր գործառույթ C տվյալների կառուցվածքում, որը կոչվում է. file_operations. Բացի այդ, որոշ ֆայլային համակարգեր ընդլայնում և վերասահմանում են VFS ֆունկցիոնալությունը ծանոթ օբյեկտի վրա հիմնված եղանակով: Ինչպես նշում է Ռոբերտ Լավը, VFS աբստրակցիան թույլ է տալիս Linux-ի օգտատերերին անսխալ կերպով պատճենել ֆայլերը երրորդ կողմի օպերացիոն համակարգերից կամ աբստրակտ սուբյեկտներից կամ խողովակներից՝ առանց անհանգստանալու դրանց ներքին տվյալների ձևաչափի մասին: Օգտվողի կողմից (օգտագործողի տարածք), օգտագործելով համակարգային զանգ, գործընթացը կարող է պատճենել ֆայլից միջուկի տվյալների կառուցվածքներ՝ օգտագործելով մեթոդը read() մեկ ֆայլային համակարգ և այնուհետև օգտագործեք մեթոդը write () մեկ այլ ֆայլային համակարգ տվյալների ելքի համար:

Գործառույթների սահմանումները, որոնք պատկանում են հիմնական VFS տեսակներին, գտնվում են ֆայլերում fs/*.c միջուկի սկզբնաղբյուրը, մինչդեռ ենթատեղեկատուները fs/ պարունակում է որոշակի ֆայլային համակարգեր: Միջուկը պարունակում է նաև այնպիսի սուբյեկտներ, ինչպիսիք են cgroups, /dev и tmpfs, որոնք պահանջվում են բեռնման գործընթացում և, հետևաբար, սահմանվում են միջուկի ենթագրքում init/. Ուշադրություն դարձրեք, որ cgroups, /dev и tmpfs մի կոչեք «մեծ երեք» գործառույթները file_operations, բայց ուղղակիորեն կարդալ և գրել հիշողության մեջ:
Ստորև բերված գծապատկերը ցույց է տալիս, թե ինչպես է օգտվողների տարածքը մուտք գործում Linux համակարգերում սովորաբար տեղադրված տարբեր տեսակի ֆայլային համակարգեր: Կառուցվածքները ցուցադրված չեն pipes, dmesg и POSIX clocks, որոնք նույնպես իրականացնում են կառույցը file_operations, հասանելի է VFS շերտի միջոցով:

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

VFS-ը «փաթաթված շերտ» է համակարգի զանգերի և որոշակի գործադրումների միջև file_operationsինչպիսիք են ext4 и procfs. Գործառույթներ file_operations կարող է փոխազդել կամ սարքի վարորդների կամ հիշողության հասանելիության սարքերի հետ: tmpfs, devtmpfs и cgroups չեն օգտագործում file_operations, բայց ուղղակիորեն մուտք գործեք հիշողություն:
VFS-ի առկայությունը հնարավորություն է տալիս վերօգտագործել կոդը, քանի որ ֆայլային համակարգերի հետ կապված հիմնական մեթոդները պարտադիր չէ, որ նորից իրականացվեն յուրաքանչյուր տեսակի ֆայլային համակարգի կողմից: Կոդի վերօգտագործումը սովորական պրակտիկա է ծրագրային ապահովման ինժեներների շրջանում: Այնուամենայնիվ, եթե բազմակի օգտագործման կոդը պարունակում է լուրջ սխալներ, բոլոր իրականացումները, որոնք ժառանգում են ընդհանուր մեթոդները, տուժում են դրանցից։

/tmp: Պարզ հուշում

Համակարգում VFS-ների առկայությունը հայտնաբերելու հեշտ միջոց է մուտքագրել mount | grep -v sd | grep -v :/, որը ցույց կտա բոլոր մոնտաժվածները (mounted) ֆայլային համակարգեր, որոնք սկավառակի ռեզիդենտ չեն և ոչ NFS, ինչը ճիշտ է համակարգիչների մեծ մասում: Թվարկված մոնտաժներից մեկը (mounts) VFS-ն անկասկած կանի /tmp, ճիշտ?

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Բոլորը գիտեն այդ պահեստը / tmp ֆիզիկական միջավայրի վրա՝ խելագարություն: Աղբյուր.

Ինչու է անցանկալի պահեստավորումը /tmp ֆիզիկական լրատվամիջոցների վրա? Քանի որ ֆայլերը գտնվում են /tmp ժամանակավոր են, և պահեստավորման սարքերն ավելի դանդաղ են, քան հիշողությունը, որտեղ ստեղծվում է tmpfs: Ավելին, ֆիզիկական կրիչներն ավելի ենթակա են կրելու, երբ վերագրվում են, քան հիշողությունը: Վերջապես, /tmp-ի ֆայլերը կարող են պարունակել զգայուն տեղեկատվություն, ուստի յուրաքանչյուր վերագործարկման ժամանակ դրանք անհետանալը կարևոր հատկություն է:

Ցավոք, Linux-ի բաշխման տեղադրման որոշ սցենարներ լռելյայնորեն ստեղծում են /tmp պահեստավորման սարքում: Մի հուսահատվեք, եթե դա տեղի ունեցավ նաև ձեր համակարգի հետ: Հետևեք մի քանի պարզ հրահանգների հետ Arch Wikiդա շտկելու համար և տեղյակ եղեք, որ հատկացված հիշողությունը tmpfs անհասանելի է դառնում այլ նպատակների համար: Այլ կերպ ասած, հսկա tmpf-ներով և մեծ ֆայլերով համակարգը կարող է սպառվել հիշողությունից և խափանվել: Մեկ այլ հուշում. ֆայլը խմբագրելիս /etc/fstab, հիշեք, որ այն պետք է ավարտվի նոր տողով, հակառակ դեպքում ձեր համակարգը չի բեռնվի:

/proc և /sys

Բացի այդ /tmp, VFS (վիրտուալ ֆայլային համակարգեր), որոնք առավել ծանոթ են Linux-ի օգտատերերին /proc и /sys, (/dev բնակվում է ընդհանուր հիշողության մեջ և չունի file_operations) Ինչու՞ այս երկու բաղադրիչները: Եկեք նայենք այս հարցին:

procfs ստեղծում է միջուկի և այն գործընթացների պատկերը, որոնց համար այն վերահսկում է userspace: Մեջ /proc միջուկը տպում է տեղեկատվություն իր հասանելիության մասին, ինչպիսիք են ընդհատումները, վիրտուալ հիշողությունը և ժամանակացույցը: Բացի այդ, /proc/sys այն վայրն է, որտեղ պարամետրերը կազմաձևված են հրամանով sysctl, հասանելի է userspace. Առանձին գործընթացների կարգավիճակը և վիճակագրությունը ցուցադրվում են գրացուցակներում /proc/.

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Այստեղ /proc/meminfo դատարկ ֆայլ է, որը, այնուամենայնիվ, պարունակում է արժեքավոր տեղեկություններ:

Վարքագիծ /proc ֆայլերը ցույց են տալիս, թե որքան տարբեր կարող են լինել VFS սկավառակի ֆայլային համակարգերը: Մի կողմից, /proc/meminfo պարունակում է տեղեկատվություն, որը կարելի է դիտել հրամանով free. Մյուս կողմից՝ դատարկ է։ Ինչպես է դա աշխատում? Իրավիճակը հիշեցնում է հայտնի հոդվածը վերնագրված Արդյո՞ք լուսինը գոյություն ունի, երբ ոչ ոք չի նայում նրան: իրականություն և քվանտային տեսություն»գրել է Կոռնելի համալսարանի ֆիզիկայի պրոֆեսոր Դեյվիդ Մերմինը 1985 թվականին: Փաստն այն է, որ միջուկը հավաքում է հիշողության վիճակագրություն, երբ հարցում է արվում /proc, և իրականում ֆայլերում /proc ոչինչ չկա, երբ ոչ ոք չի նայում: Ինչպես ասվեց Մերմին, «Հիմնական քվանտային դոկտրինան ասում է, որ չափումը սովորաբար չի բացահայտում չափվող գույքի նախապես գոյություն ունեցող արժեքը»։ (Եվ լուսնի մասին հարցը համարեք տնային աշխատանք):
Թվացյալ դատարկություն procfs իմաստ ունի, քանի որ այնտեղ տեղեկատվությունը դինամիկ է: Մի փոքր այլ իրավիճակ sysfs. Եկեք համեմատենք, թե քանի ֆայլ կա, որոնց չափը առնվազն մեկ բայթ է /proc իսկ /sys.

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Procfs ունի մեկ ֆայլ, մասնավորապես արտահանված միջուկի կոնֆիգուրացիան, որը բացառություն է, քանի որ այն պետք է ստեղծվի միայն մեկ անգամ բեռնման համար: Մյուս կողմից, ներս /sys կան շատ ավելի մեծ ֆայլեր, որոնցից շատերը զբաղեցնում են հիշողության մի ամբողջ էջ: Սովորաբար ֆայլեր sysfs պարունակում է ճիշտ մեկ թիվ կամ տող, ի տարբերություն ֆայլերի ընթերցումից ստացված տեղեկատվության աղյուսակների, ինչպիսիք են /proc/meminfo.

Նպատակ sysfs - Տրամադրել կարդալու/գրելու հատկությունները, թե ինչ է կանչում միջուկը «kobjects» օգտագործողների տարածքում: Միակ նպատակը kobjects հղումների հաշվարկն է. երբ կոբյեկտի վերջին հղումը հեռացվի, համակարգը կվերականգնի դրա հետ կապված ռեսուրսները: Այնուամենայնիվ, /sys կազմում է հայտնիների մեծ մասը «կայուն ABI օգտագործողների տարածքի համար» առանցքը, որը ոչ ոք երբեք, ոչ մի դեպքում չի կարող "ընդմիջում". Սա չի նշանակում, որ sysfs-ի ֆայլերը ստատիկ են, ինչը անհամապատասխան կլինի անկայուն օբյեկտների հղման հաշվարկին:
Միջուկի կայուն ABI-ն սահմանափակում է այն, ինչ կարող է հայտնվել /sys, ոչ թե այն, ինչ իրականում առկա է տվյալ պահին։ sysfs-ում ֆայլերի թույլտվությունների ցուցակագրումը հնարավորություն է տալիս պատկերացում կազմել սարքերի, մոդուլների, ֆայլային համակարգերի և այլնի կարգավորելի կարգավորումների մասին: կարելի է կարգավորել կամ կարդալ: Տրամաբանական եզրակացությունն այն է, որ procfs-ը նույնպես միջուկի կայուն ABI-ի մի մասն է, թեև դա հստակորեն նշված չէ. փաստաթղթավորում.

Վիրտուալ ֆայլային համակարգեր Linux-ում. ինչու են դրանք անհրաժեշտ և ինչպես են դրանք աշխատում: Մաս 1

Ֆայլեր sysfs նկարագրեք մեկ կոնկրետ հատկություն յուրաքանչյուր անձի համար և կարող է լինել ընթեռնելի, գրավոր կամ երկուսն էլ: «0» ֆայլում նշանակում է, որ SSD-ն հնարավոր չէ հեռացնել:

Եկեք սկսենք թարգմանության երկրորդ մասը նրանից, թե ինչպես վերահսկել VFS-ը՝ օգտագործելով eBPF և bcc գործիքները, և այժմ մենք սպասում ենք ձեր մեկնաբանություններին և ավանդաբար հրավիրում ենք ձեզ բաց վեբինար, որը կանցկացվի մեր ուսուցչի կողմից ապրիլի 9-ին - Վլադիմիր Դրոզդեցկի.

Source: www.habr.com

Добавить комментарий