Halo semua! Kami terus meluncurkan aliran baru untuk kursus yang Anda sukai dan sekarang kami sedang terburu-buru untuk mengumumkan bahwa kami memulai serangkaian kursus baru
Sistem file virtual berfungsi sebagai semacam abstraksi ajaib yang memungkinkan filosofi Linux mengatakan bahwa "semuanya adalah file".
Apa itu sistem file? Berdasarkan kata-kata salah satu kontributor dan penulis pertama Linux
Dasar-dasar Sistem File
Kernel Linux memiliki persyaratan tertentu untuk entitas yang dapat dianggap sebagai sistem file. Itu harus menerapkan metode open()
, read()
ΠΈ write()
untuk objek persisten yang memiliki nama. Dari sudut pandang berorientasi objek
Jika kita dapat membuka, membaca, dan menulis ke suatu entitas, maka entitas tersebut dianggap sebagai file, seperti yang dapat kita lihat dari contoh di konsol di atas.
Fenomena VFS hanya menggarisbawahi pengamatan mirip Unix bahwa "semuanya adalah file". Pikirkan betapa anehnya contoh kecil /dev/console di atas menunjukkan bagaimana konsol benar-benar bekerja. Gambar menunjukkan sesi Bash interaktif. Mengirim string ke konsol (perangkat konsol virtual) menampilkannya di layar virtual. VFS memiliki properti lain yang bahkan lebih aneh. Misalnya, ini memungkinkan Anda untuk mencari berdasarkan
Sistem yang sudah dikenal seperti ext4, NFS, dan /proc memiliki tiga fungsi penting dalam struktur data C yang disebut read()
satu sistem file dan kemudian gunakan metode ini write ()
sistem file lain untuk keluaran data.
Definisi fungsi yang termasuk dalam tipe VFS dasar ada di dalam file fs/
berisi sistem file tertentu. Inti juga berisi entitas seperti cgroups
, /dev
ΠΈ tmpfs
, yang diperlukan selama proses booting dan karenanya ditentukan dalam subdirektori kernel init/
. Perhatikan itu cgroups
, /dev
ΠΈ tmpfs
jangan panggil fungsi "tiga besar". file_operations
, tetapi langsung membaca dan menulis ke memori.
Diagram di bawah ini menunjukkan bagaimana userspace mengakses berbagai jenis filesystem yang biasanya dipasang pada sistem Linux. Struktur tidak ditampilkan pipes
, dmesg
ΠΈ POSIX clocks
, yang juga mengimplementasikan struktur file_operations
, diakses melalui lapisan VFS.
VFS adalah "lapisan pembungkus" antara panggilan sistem dan implementasi tertentu file_operations
Seperti ext4
ΠΈ procfs
. Fungsi file_operations
dapat berinteraksi dengan driver perangkat atau perangkat akses memori. tmpfs
, devtmpfs
ΠΈ cgroups
jangan gunakan file_operations
, tetapi langsung mengakses memori.
Keberadaan VFS memberikan kesempatan untuk menggunakan kembali kode, karena metode dasar yang terkait dengan sistem file tidak harus diimplementasikan ulang oleh setiap jenis sistem file. Penggunaan kembali kode adalah praktik umum di kalangan insinyur perangkat lunak! Namun, jika kode yang dapat digunakan kembali berisi
/tmp: Petunjuk sederhana
Cara mudah untuk mendeteksi keberadaan VFS pada sistem adalah dengan mengetik mount | grep -v sd | grep -v :/
, yang akan menampilkan semua yang terpasang (mounted
) sistem file yang bukan penghuni disk dan non-NFS, yang berlaku di sebagian besar komputer. Salah satu tunggangan yang terdaftar (mounts
) VFS pasti akan /tmp
, Baik?
Semua orang tahu penyimpanan itu / tmp
pada media fisik - kegilaan!
Mengapa tidak diinginkan untuk disimpan /tmp
di media fisik? Karena file di /tmp
bersifat sementara dan perangkat penyimpanan lebih lambat dari memori tempat tmpfs dibuat. Apalagi, media fisik lebih rentan aus saat ditimpa daripada memori. Terakhir, file di /tmp dapat berisi informasi sensitif, jadi menghilangkannya di setiap reboot adalah fitur penting.
Sayangnya, beberapa skrip penginstalan distribusi Linux membuat /tmp di perangkat penyimpanan secara default. Jangan putus asa jika ini juga terjadi pada sistem Anda. Ikuti beberapa petunjuk sederhana dengan tmpfs
menjadi tidak tersedia untuk tujuan lain. Dengan kata lain, sistem dengan tmpfs raksasa dan file besar di dalamnya dapat kehabisan memori dan crash. Petunjuk lain: saat mengedit file /etc/fstab
, ingat bahwa itu harus diakhiri dengan baris baru, jika tidak, sistem Anda tidak akan bisa boot.
/proc dan /sys
Selain /tmp
, VFS (sistem file virtual) yang paling akrab bagi pengguna Linux adalah /proc
ΠΈ /sys
. (/dev
berada dalam memori bersama dan tidak memiliki file_operations
). Mengapa kedua komponen ini? Mari kita lihat masalah ini.
procfs
membuat snapshot dari kernel dan proses yang dimonitornya userspace
. Di /proc
kernel mencetak informasi tentang apa yang tersedia, seperti interupsi, memori virtual, dan penjadwal. Di samping itu, /proc/sys
adalah tempat dimana parameter dikonfigurasi dengan perintah sysctl
, tersedia untuk userspace
. Status dan statistik proses individual ditampilkan dalam direktori /proc/
.
Di sini /proc/meminfo
adalah file kosong yang tetap berisi informasi berharga.
Perilaku /proc
file menunjukkan betapa berbedanya sistem file disk VFS. Di satu sisi, /proc/meminfo
berisi informasi yang dapat dilihat dengan perintah free
. Di sisi lain, itu kosong! Bagaimana cara kerjanya? Situasinya mengingatkan pada artikel terkenal berjudul /proc
, dan sebenarnya di file /proc
tidak ada apa-apa ketika tidak ada yang melihat. Seperti Yang Dikatakan
Tampak kekosongan procfs
masuk akal karena informasi di sana bersifat dinamis. Situasi yang sedikit berbeda dengan sysfs
. Mari kita bandingkan berapa banyak file yang berukuran setidaknya satu byte /proc
ΠΈ Π² /sys
.
Procfs
memiliki satu file, yaitu konfigurasi kernel yang diekspor, yang merupakan pengecualian karena hanya perlu dibuat satu kali per boot. Di sisi lain, di /sys
ada banyak file yang lebih besar, banyak di antaranya menggunakan seluruh halaman memori. Biasanya file sysfs
berisi tepat satu nomor atau baris, tidak seperti tabel informasi yang diperoleh dari membaca file seperti /proc/meminfo
.
target sysfs
- menyediakan properti baca/tulis dari apa yang dipanggil oleh kernel Β«kobjectsΒ»
di ruang pengguna. Satu-satunya tujuan kobjects
adalah penghitungan tautan: ketika tautan terakhir ke kobject dihapus, sistem akan memulihkan sumber daya yang terkait dengannya. Namun demikian, /sys
membuat sebagian besar terkenal
ABI kernel yang stabil membatasi apa yang dapat muncul /sys
, bukan apa yang sebenarnya hadir pada saat itu. Daftar izin file di sysfs memberikan wawasan tentang bagaimana pengaturan yang dapat dikonfigurasi untuk perangkat, modul, sistem file, dll. dapat dikonfigurasi atau dibaca. Kesimpulan logisnya adalah bahwa procfs juga merupakan bagian dari ABI stabil kernel, meskipun hal ini tidak dinyatakan secara eksplisit di
File masuk sysfs
menggambarkan satu properti tertentu untuk setiap entitas dan dapat dibaca, ditulis, atau keduanya. "0" dalam file berarti SSD tidak dapat dihapus.
Mari kita mulai bagian kedua dari terjemahan dengan cara memantau VFS menggunakan alat eBPF dan bcc, dan sekarang kami menunggu komentar Anda dan secara tradisional mengundang Anda untuk
Sumber: www.habr.com