Hai semua! Kami terus melancarkan aliran baharu untuk kursus yang anda telah jatuh cinta dan kini kami tergesa-gesa untuk mengumumkan bahawa kami memulakan set kursus baharu
Sistem fail maya berfungsi sebagai sejenis abstraksi ajaib yang membolehkan falsafah Linux mengatakan bahawa "semuanya adalah fail."
Apakah sistem fail? Berdasarkan kata-kata salah seorang penyumbang dan pengarang pertama Linux
Asas Sistem Fail
Kernel Linux mempunyai keperluan tertentu untuk entiti yang boleh dianggap sebagai sistem fail. Ia mesti melaksanakan kaedah open()
, read()
ΠΈ write()
untuk objek berterusan yang mempunyai nama. Dari sudut pandangan berorientasikan objek
Jika kita boleh membuka, membaca dan menulis kepada entiti, maka entiti itu dianggap sebagai fail, seperti yang kita boleh lihat daripada contoh dalam konsol di atas.
Fenomena VFS hanya menggariskan pemerhatian seperti Unix bahawa "semuanya adalah fail". Fikirkan betapa peliknya contoh kecil /dev/console di atas menunjukkan cara konsol sebenarnya berfungsi. Gambar menunjukkan sesi Bash interaktif. Menghantar rentetan ke konsol (peranti konsol maya) memaparkannya pada skrin maya. VFS mempunyai sifat lain, malah lebih asing. Sebagai contoh, ia membolehkan anda mencari mengikut
Sistem biasa seperti ext4, NFS, dan /proc mempunyai tiga fungsi penting dalam struktur data C yang dipanggil read()
satu sistem fail dan kemudian gunakan kaedah tersebut write ()
sistem fail lain untuk output data.
Takrifan fungsi yang tergolong dalam jenis VFS asas terdapat dalam fail fs/
mengandungi sistem fail tertentu. Teras juga mengandungi entiti seperti cgroups
, /dev
ΠΈ tmpfs
, yang diperlukan semasa proses but dan oleh itu ditakrifkan dalam subdirektori kernel init/
. Perhatikan itu cgroups
, /dev
ΠΈ tmpfs
jangan panggil fungsi "tiga besar". file_operations
, tetapi terus membaca dan menulis ke ingatan.
Rajah di bawah menunjukkan cara ruang pengguna mengakses pelbagai jenis sistem fail yang biasa dipasang pada sistem Linux. Struktur tidak ditunjukkan pipes
, dmesg
ΠΈ POSIX clocks
, yang juga melaksanakan struktur file_operations
, diakses melalui lapisan VFS.
VFS ialah "lapisan pembungkus" antara panggilan sistem dan pelaksanaan tertentu file_operations
, seperti ext4
ΠΈ procfs
. Fungsi file_operations
boleh berinteraksi dengan sama ada pemacu peranti atau peranti capaian memori. tmpfs
, devtmpfs
ΠΈ cgroups
jangan guna file_operations
, tetapi akses terus ke memori.
Kewujudan VFS memberi peluang untuk menggunakan semula kod, kerana kaedah asas yang dikaitkan dengan sistem fail tidak perlu dilaksanakan semula oleh setiap jenis sistem fail. Penggunaan semula kod adalah amalan biasa di kalangan jurutera perisian! Walau bagaimanapun, jika kod boleh guna semula mengandungi
/tmp: Petua mudah
Cara mudah untuk mengesan bahawa VFS terdapat pada sistem adalah dengan menaip mount | grep -v sd | grep -v :/
, yang akan menunjukkan semua yang dipasang (mounted
) sistem fail yang bukan pemastautin cakera dan bukan NFS, yang benar pada kebanyakan komputer. Salah satu pelekap yang disenaraikan (mounts
) VFS sudah pasti akan /tmp
, betul tak?
Semua orang tahu storan itu / tmp
pada medium fizikal - kegilaan!
Mengapa tidak diingini untuk disimpan /tmp
di media fizikal? Kerana fail dalam /tmp
adalah sementara dan peranti storan lebih perlahan daripada memori tempat tmpfs dicipta. Selain itu, media fizikal lebih terdedah untuk dipakai apabila ditimpa daripada ingatan. Akhir sekali, fail dalam /tmp boleh mengandungi maklumat sensitif, jadi menjadikannya hilang pada setiap but semula adalah ciri penting.
Malangnya, sesetengah skrip pemasangan pengedaran Linux mencipta /tmp pada peranti storan secara lalai. Jangan putus asa jika ini berlaku kepada sistem anda juga. Ikuti beberapa arahan mudah dengan tmpfs
menjadi tidak tersedia untuk tujuan lain. Dalam erti kata lain, sistem dengan tmpfs gergasi dan fail besar di atasnya boleh kehabisan memori dan ranap. Petua lain: semasa mengedit fail /etc/fstab
, ingat bahawa ia mesti berakhir dengan baris baharu, jika tidak sistem anda tidak akan boot.
/proc dan /sys
Selain /tmp
, VFS (sistem fail maya) yang paling biasa kepada pengguna Linux ialah /proc
ΠΈ /sys
. (/dev
berada dalam ingatan bersama dan tidak mempunyai file_operations
). Kenapa dua komponen ini? Mari kita lihat isu ini.
procfs
mencipta syot kilat kernel dan proses yang dipantaunya userspace
. Π /proc
kernel mencetak maklumat tentang apa yang tersedia, seperti gangguan, memori maya dan penjadual. selain itu, /proc/sys
ialah tempat di mana parameter dikonfigurasikan dengan arahan sysctl
, boleh didapati untuk userspace
. Status dan statistik proses individu dipaparkan dalam direktori /proc/
.
ia adalah /proc/meminfo
ialah fail kosong yang bagaimanapun mengandungi maklumat berharga.
Kelakuan /proc
fail menunjukkan betapa berbezanya sistem fail cakera VFS. Di satu pihak, /proc/meminfo
mengandungi maklumat yang boleh dilihat dengan arahan free
. Sebaliknya, ia kosong! Bagaimanakah ia berfungsi? Keadaan itu mengingatkan artikel terkenal bertajuk /proc
, dan sebenarnya dalam fail /proc
tiada apa-apa apabila tiada orang yang melihat. Seperti yang dikatakan
Nampak kekosongan procfs
masuk akal kerana maklumat di sana adalah dinamik. Situasi yang sedikit berbeza dengan sysfs
. Mari kita bandingkan berapa banyak fail yang mempunyai saiz sekurang-kurangnya satu bait /proc
dan /sys
.
Procfs
mempunyai satu fail, iaitu konfigurasi kernel yang dieksport, yang merupakan pengecualian kerana ia hanya perlu dijana sekali setiap but. Sebaliknya, dalam /sys
terdapat banyak fail yang lebih besar, kebanyakannya menggunakan seluruh halaman memori. Biasanya fail sysfs
mengandungi tepat satu nombor atau baris, tidak seperti jadual maklumat yang diperoleh daripada membaca fail seperti /proc/meminfo
.
Matlamat sysfs
- menyediakan sifat baca/tulis apa yang dipanggil kernel Β«kobjectsΒ»
dalam ruang pengguna. Satu-satunya matlamat kobjects
adalah pengiraan pautan: apabila pautan terakhir ke kobjek dialih keluar, sistem akan memulihkan sumber yang berkaitan dengannya. Namun begitu, /sys
membentuk kebanyakan yang terkenal
ABI stabil kernel mengehadkan apa yang boleh muncul /sys
, bukan apa yang sebenarnya ada pada masa tertentu itu. Keizinan fail penyenaraian dalam sysfs memberikan pandangan tentang cara tetapan boleh dikonfigurasikan untuk peranti, modul, sistem fail, dsb. boleh dikonfigurasikan atau dibaca. Kesimpulan logiknya ialah procfs juga merupakan sebahagian daripada ABI stabil kernel, walaupun ini tidak dinyatakan secara eksplisit dalam
Fail masuk sysfs
huraikan satu sifat tertentu untuk setiap entiti dan boleh dibaca, boleh ditulis atau kedua-duanya. "0" dalam fail bermakna SSD tidak boleh dialih keluar.
Mari mulakan bahagian kedua terjemahan dengan cara memantau VFS menggunakan alat eBPF dan bcc, dan kini kami sedang menunggu ulasan anda dan secara tradisinya menjemput anda untuk
Sumber: www.habr.com