Moni nonse! Tikupitiriza kuyambitsa mitsinje yatsopano ya maphunziro omwe mwawakonda kale ndipo tsopano tikufulumira kulengeza kuti tikuyamba maphunziro atsopano.
Mafayilo owoneka bwino amakhala ngati mawonekedwe amatsenga omwe amalola filosofi ya Linux kunena kuti "chilichonse ndi fayilo."
Kodi file system ndi chiyani? Kutengera mawu a m'modzi mwa omwe adathandizira komanso olemba a Linux
Filesystem Basics
Linux kernel ili ndi zofunikira zina pagulu lomwe lingatengedwe ngati fayilo. Iyenera kukhazikitsa njira open()
, read()
ΠΈ write()
kwa zinthu zolimbikira zomwe zili ndi mayina. Kuchokera pamalingaliro olunjika
Ngati titha kutsegula, kuwerenga, ndi kulemba ku bungwe, ndiye kuti bungweli limatengedwa ngati fayilo, monga momwe tikuonera pachitsanzo chomwe chili pamwambapa.
Chochitika cha VFS chimangotsimikizira zomwe Unix-zowona kuti "chilichonse ndi fayilo". Ganizirani zachilendo kuti chitsanzo chaching'ono /dev/console pamwambapa chikuwonetsa momwe console imagwirira ntchito. Chithunzichi chikuwonetsa gawo la Bash lolumikizana. Kutumiza chingwe ku konsoli (chida cholumikizira) kumawonetsa pazenera. VFS ili ndi zina, ngakhale zachilendo. Mwachitsanzo, imakulolani kuti mufufuze
Machitidwe odziwika bwino monga ext4, NFS, ndi / proc ali ndi ntchito zitatu zofunika mu C data structure yotchedwa read()
mmodzi wapamwamba dongosolo ndiyeno ntchito njira write ()
mtundu wina wamafayilo otulutsa deta.
Matanthauzidwe a ntchito omwe ali amitundu yoyambira ya VFS ali m'mafayilo fs/
zili ndi mafayilo ena. Pakatikati palinso zinthu monga cgroups
, /dev
ΠΈ tmpfs
, zomwe zimafunika panthawi ya boot ndipo zimatanthauzidwa mu kernel subdirectory init/
. Zindikirani izo cgroups
, /dev
ΠΈ tmpfs
musatchule "akulu atatu" ntchito file_operations
, koma werengani ndi kulemba mwachindunji.
Chithunzi chomwe chili pansipa chikuwonetsa momwe malo ogwiritsira ntchito amafikira mitundu yosiyanasiyana yamafayilo yomwe nthawi zambiri imayikidwa pamakina a Linux. Mapangidwe osawonetsedwa pipes
, dmesg
ΠΈ POSIX clocks
, zomwe zimagwiritsanso ntchito dongosolo file_operations
, yofikiridwa ndi VFS layer.
VFS ndi "wrapper layer" pakati pa mafoni adongosolo ndi kukhazikitsa zina file_operations
monga ext4
ΠΈ procfs
. Ntchito file_operations
imatha kulumikizana ndi madalaivala a chipangizo kapena zida zofikira kukumbukira. tmpfs
, devtmpfs
ΠΈ cgroups
osagwiritsa ntchito file_operations
, koma lowani pamtima mwachindunji.
Kukhalapo kwa VFS kumapereka mwayi wogwiritsanso ntchito kachidindo, popeza njira zoyambira zolumikizidwa ndi mafayilo amafayilo siziyenera kukhazikitsidwanso ndi mtundu uliwonse wa fayilo. Kugwiritsanso ntchito ma code ndichizoloΕ΅ezi chofala pakati pa akatswiri opanga mapulogalamu! Komabe, ngati reusable code lili
/tmp: Malangizo osavuta
Njira yosavuta yodziwira kuti VFS ilipo pamakina ndikulemba mount | grep -v sd | grep -v :/
, zomwe zikuwonetsa zonse zokwera (mounted
) mafayilo omwe sakhala pa disk komanso omwe si a NFS, zomwe ndizoona pamakompyuta ambiri. Chimodzi mwazinthu zomwe zalembedwa (mounts
) VFS mosakayika /tmp
, chabwino?
Aliyense amadziwa kusungirako / tmp
pathupi - misala!
N'chifukwa chiyani osafunika kusunga /tmp
pa media media? Chifukwa mafayilo ali mu /tmp
zida zosakhalitsa komanso zosungirako ndizochedwa kuposa kukumbukira komwe tmpfs imapangidwira. Kuphatikiza apo, zinthu zakuthupi ndizosavuta kuvala zikalembedwa kuposa kukumbukira. Pomaliza, mafayilo mu /tmp amatha kukhala ndi zidziwitso zodziwika bwino, kotero kuwapangitsa kuzimiririka pakuyambiranso kulikonse ndikofunikira.
Tsoka ilo, zolemba zina zogawa za Linux zimapanga /tmp pa chipangizo chosungira mwachisawawa. Musataye mtima ngati izi zidachitikanso ndi dongosolo lanu. Tsatirani malangizo ochepa osavuta ndi tmpfs
zimakhala zosapezeka pazifukwa zina. Mwa kuyankhula kwina, kachitidwe kamene kali ndi tmpfs yaikulu ndi mafayilo akuluakulu pa izo akhoza kutha kukumbukira ndi kuwonongeka. Lingaliro lina: mukamakonza fayilo /etc/fstab
, kumbukirani kuti iyenera kutha ndi mzere watsopano, apo ayi dongosolo lanu silingayambe.
/proc ndi /sys
kusiya /tmp
, VFS (mafayilo enieni) omwe amadziwika kwambiri kwa ogwiritsa ntchito a Linux ndi /proc
ΠΈ /sys
. (/dev
amakhala mu kukumbukira nawo ndipo alibe file_operations
). Chifukwa chiyani zigawo ziwirizi? Tiyeni tikambirane nkhaniyi.
procfs
imapanga chithunzithunzi cha kernel ndi njira yomwe imayang'anira userspace
. The /proc
kernel imasindikiza zambiri za zomwe ili nazo, monga zosokoneza, kukumbukira, ndi ndondomeko. Komanso, /proc/sys
ndi malo omwe magawo adakhazikitsidwa ndi lamulo sysctl
, kupezeka kwa userspace
. Mkhalidwe ndi ziwerengero za njira zapayekha zikuwonetsedwa muzolemba /proc/
.
ndi /proc/meminfo
ndi fayilo yopanda kanthu yomwe ili ndi chidziwitso chofunikira.
Makhalidwe /proc
mafayilo akuwonetsa momwe mafayilo amafayilo a VFS disk angasinthire. Ku mbali imodzi, /proc/meminfo
muli ndi chidziwitso chomwe mungawone ndi lamulo free
. Kumbali ina, ilibe kanthu! Zimagwira ntchito bwanji? Mkhalidwewu ukukumbutsa nkhani yotchuka yotchedwa /proc
, ndipo kwenikweni mumafayilo /proc
palibe pamene palibe akuyang'ana. Monga ananenera
Zowoneka zopanda pake procfs
zimamveka chifukwa chidziwitso chomwe chilipo ndi champhamvu. Mkhalidwe wosiyana pang'ono ndi sysfs
. Tiyerekeze kuti ndi mafayilo angati omwe ali ndi kukula kwa byte imodzi /proc
ndi /sys
.
Procfs
ili ndi fayilo imodzi, yomwe ndi kasinthidwe ka kernel, zomwe ndizosiyana chifukwa zimangofunika kupangidwa kamodzi pa boot. Kumbali ina, in /sys
pali mafayilo akuluakulu ambiri, ambiri omwe amatenga tsamba lonse lokumbukira. Nthawi zambiri mafayilo sysfs
zili ndi nambala kapena mzere umodzi ndendende, mosiyana ndi matebulo azidziwitso zopezedwa powerenga mafayilo monga /proc/meminfo
.
Cholinga sysfs
- perekani zowerengera / kulemba zomwe kernel imayitana Β«kobjectsΒ»
mu userspace. Cholinga chokha kobjects
ndi kuwerengera ulalo: pomwe ulalo womaliza wa kobject wachotsedwa, dongosololi lidzabwezeretsanso zinthu zomwe zikugwirizana nazo. Komabe, /sys
amapanga ambiri otchuka
ABI yokhazikika ya kernel imachepetsa zomwe zingawonekere /sys
, osati zomwe zilipo panthawi imeneyo. Kulemba zilolezo zamafayilo mu sysfs kumapereka chidziwitso chamomwe mungasinthire zida, ma module, mafayilo amafayilo, ndi zina. ikhoza kukhazikitsidwa kapena kuwerenga. Zotsatira zomveka ndizakuti ma procfs nawonso ndi gawo la kernel's ABI yokhazikika, ngakhale izi sizinatchulidwe mwatsatanetsatane mu
Mafayilo mu sysfs
fotokozani chinthu chimodzi pagulu lililonse ndipo imatha kuwerengeka, kulembedwa, kapena zonse ziwiri. "0" mufayilo zikutanthauza kuti SSD sangathe kuchotsedwa.
Tiyeni tiyambe gawo lachiwiri la kumasulira ndi momwe mungayang'anire VFS pogwiritsa ntchito zida za eBPF ndi bcc, ndipo tsopano tikuyembekezera ndemanga zanu ndipo mwachizolowezi tikukuitanani
Source: www.habr.com