Баарына салам! Биз сиз сүйүп калган курстар үчүн жаңы агымдарды ачууну улантып жатабыз жана азыр биз жаңы курстар топтомун баштап жатканыбызды жарыялоого шашып жатабыз
Виртуалдык файл тутумдары Linux философиясына "баары файл" деп айтууга мүмкүндүк берген сыйкырдуу абстракциянын бир түрү катары кызмат кылат.
Файл системасы деген эмне? Linuxтун биринчи салым кошкондорунун жана авторлорунун биринин сөздөрүнө негизделген
Файл системасынын негиздери
Linux ядросунда файл системасы катары карала турган объект үчүн белгилүү талаптар бар. Бул ыкмаларды ишке ашыруу керек open()
, read()
и write()
аттары бар туруктуу объекттер үчүн. Объектке багытталган көз караштан
Эгерде биз объектти ачып, окуй жана жаза алсак, анда ал объект файл болуп эсептелет, муну жогорудагы консолдогу мисалдан көрө алабыз.
VFS феномени Unix сыяктуу "баары файл" деген байкоону гана баса белгилейт. Жогорудагы кичинекей /dev/console мисалы консолдун чындыгында кандайча иштээрин көрсөтүп турганы кандай кызык экенин ойлоп көрүңүз. Сүрөттө интерактивдүү Bash сессиясы көрсөтүлгөн. Консолго (виртуалдык консолдук түзүлүш) сап жөнөтүү аны виртуалдык экранда көрсөтөт. VFS башка, атүгүл бөтөн касиеттерге ээ. Мисалы, бул боюнча издөөгө мүмкүндүк берет
Ext4, NFS жана /proc сыяктуу тааныш системалар C маалымат структурасында үч маанилүү функцияга ээ. read()
бир файл системасы, анан ыкманы колдонуңуз write ()
маалыматтарды чыгаруу үчүн башка файл системасы.
Негизги VFS түрлөрүнө таандык функция аныктамалары файлдарда бар fs/
белгилүү файл системаларын камтыйт. өзөк сыяктуу объектилерди камтыйт cgroups
, /dev
и tmpfs
, алар жүктөө процессинде талап кылынат жана ошондуктан ядронун подкаталогунда аныкталат init/
. Ошону байка cgroups
, /dev
и tmpfs
"чоң үч" функцияларды чакырбаңыз file_operations
, бирок түздөн-түз окуу жана эстутумга жазуу.
Төмөнкү диаграммада колдонуучулар мейкиндиги Linux тутумдарында адатта орнотулган файл системаларынын ар кандай түрлөрүнө кантип кирерин көрсөтөт. Структуралар көрсөтүлгөн эмес pipes
, dmesg
и POSIX clocks
, бул да структурасын ишке ашырат file_operations
, VFS катмары аркылуу жеткиликтүү.
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
, туурабы?
Бул сактагычты баары билет / tmp
физикалык чөйрөдө - жиндилик!
Эмне үчүн сактоо керек эмес /tmp
физикалык маалымат каражаттары боюнча? Анткени ичиндеги файлдар /tmp
убактылуу жана сактагыч түзмөктөр tmpfs түзүлгөн эстутумга караганда жайыраак. Мындан тышкары, физикалык медиа эстутумга караганда үстүнөн жазылганда кийүүгө көбүрөөк дуушар болот. Акырында, /tmp ичиндеги файлдар купуя маалыматты камтышы мүмкүн, андыктан ар бир кайра жүктөөдө аларды жок кылуу маанилүү функция болуп саналат.
Тилекке каршы, кээ бир Linux бөлүштүрүү орнотуу скрипттери демейки боюнча сактагыч түзмөгүндө /tmp түзөт. Бул сиздин системаңызда да болсо, үмүтүңүздү үзбөңүз. менен бир нече жөнөкөй көрсөтмөлөрдү аткарыңыз tmpfs
башка максаттар үчүн жеткиликсиз болуп калат. Башкача айтканда, гиганттык tmpfs жана чоң файлдары бар системанын эс тутуму түгөнүп, бузулушу мүмкүн. Дагы бир кеңеш: файлды түзөтүп жатканда /etc/fstab
, ал жаңы сап менен бүтүшү керектигин унутпаңыз, антпесе сиздин тутумуңуз жүктөлбөйт.
/proc жана /sys
андан башка /tmp
, VFS (виртуалдык файл системалары) Linux колдонуучуларына эң жакшы тааныш /proc
и /sys
. (/dev
жалпы эс тутумда жашайт жана ээ эмес file_operations
). Эмне үчүн бул эки компонент? Келгиле, бул маселени карап көрөлү.
procfs
ядронун жана ал көзөмөлдөгөн процесстердин сүрөтүн түзөт userspace
. The /proc
ядро үзгүлтүктөр, виртуалдык эстутум жана пландоочу сыяктуу колдо бар нерселер жөнүндө маалыматты басып чыгарат. Мындан тышкары, /proc/sys
команда менен конфигурацияланган параметрлер турган жер sysctl
, үчүн жеткиликтүү userspace
. Жеке процесстердин абалы жана статистикасы каталогдордо көрсөтүлөт /proc/
.
бул /proc/meminfo
бирок баалуу маалыматты камтыган бош файл.
жүрүш-туруш /proc
файлдар VFS дискинин файл системалары кандай болушу мүмкүн экенин көрсөтөт. Бир жагынан, /proc/meminfo
буйругу менен көрүүгө мүмкүн болгон маалыматтарды камтыйт free
. Башка жагынан алганда, ал бош! Бул кантип иштейт? деген атактуу макаланы эске салат /proc
, жана чындыгында файлдарда /proc
эч ким карабаганда эч нерсе жок. Айтылгандай
Боштук көрүнөт procfs
мааниси бар, анткени ал жерде маалымат динамикалуу. Бир аз башкача кырдаал sysfs
. Келгиле, көлөмү жок дегенде бир байт болгон канча файл бар экенин салыштырып көрөлү /proc
жана /sys
.
Procfs
бир файлы бар, тактап айтканда, экспорттолгон ядро конфигурациясы, бул өзгөчөлүк, анткени ал жүктөөдө бир жолу гана түзүлүшү керек. Башка жагынан алганда, в /sys
көптөгөн чоң файлдар бар, алардын көбү эс тутумдун бүтүндөй барагын ээлейт. Адатта файлдар sysfs
сыяктуу файлдарды окуудан алынган маалымат таблицаларынан айырмаланып, так бир санды же сапты камтыйт /proc/meminfo
.
максат sysfs
- ядро чакырган нерсенин окуу/жазуу касиеттерин камсыз кылуу «kobjects»
колдонуучулар мейкиндигинде. Жалгыз максат kobjects
шилтемени эсептөө болуп саналат: кобъектке акыркы шилтеме алынып салынганда, система аны менен байланышкан ресурстарды калыбына келтирет. Ошого карабастан, /sys
атактуулардын көбүн түзөт
Ядронун туруктуу ABI ичинде эмне пайда болушу мүмкүн экенин чектейт /sys
, ошол учурда чындыгында болгон нерсе эмес. sysfs файл уруксаттарын тизмелөө түзмөктөр, модулдар, файл тутумдары ж.б. үчүн конфигурациялануучу жөндөөлөр жөнүндө түшүнүк берет. конфигурациялоого же окууга болот. Логикалык тыянак procfs да ядронун туруктуу ABI бөлүгү болуп саналат, бирок бул ачык айтылган эмес.
Файлдар sysfs
ар бир объект үчүн бир өзгөчө касиетти сүрөттөп жана окула турган, жазыла турган же экөө тең болушу мүмкүн. Файлдагы "0" SSDди алып салуу мүмкүн эмес дегенди билдирет.
Келгиле, котормонун экинчи бөлүгүн eBPF жана Bcc куралдарын колдонуу менен VFSге кантип мониторинг жүргүзүүдөн баштайлы, эми биз сиздин комментарийлериңизди күтөбүз жана салттуу түрдө сизди чакырабыз
Source: www.habr.com