Apakah maksud fius linux?

青灯夜游
Lepaskan: 2023-04-18 11:20:08
asal
2065 orang telah melayarinya

Modul kernel Linux yang digunakan untuk menyokong sistem fail ruang pengguna dipanggil FUSE. Nama penuh fius ialah "Sistem fail dalam Ruang Pengguna", yang bermaksud "sistem fail ruang pengguna" dalam bahasa Cina Ia merujuk kepada sistem fail yang dilaksanakan sepenuhnya dalam mod pengguna Ia digunakan untuk memasang ruang rangkaian tertentu dalam Linux dan merupakan komponen penting daripada sistem pengendalian umum.

Apakah maksud fius linux?

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

Apakah fius linux

Sistem fail dalam Ruang Pengguna merujuk kepada sistem fail yang dilaksanakan sepenuhnya dalam mod pengguna, iaitu Linux Modul yang digunakan untuk melekap ruang rangkaian tertentu, seperti SSH, kepada sistem fail tempatan kandungan berkaitan boleh didapati di SourceForge.

Modul kernel yang digunakan oleh Linux untuk menyokong sistem fail ruang pengguna dipanggil FUSE Istilah FUSE kadangkala merujuk secara khusus kepada sistem fail ruang pengguna di bawah Linux. Ia adalah bahagian penting dalam sistem pengendalian umum. Sistem pengendalian secara tradisinya menyediakan sokongan untuk sistem fail pada peringkat kernel. Secara amnya, kod mod kernel sukar untuk dinyahpepijat dan mempunyai produktiviti yang rendah.

Apa yang dipanggil "sistem fail mod pengguna" bermaksud bahawa data dan metadata sistem fail disediakan oleh proses mod pengguna (proses ini dipanggil "daemon"). Untuk sistem pengendalian mikro-kernel, melaksanakan sistem fail dalam mod pengguna bukanlah apa-apa, tetapi untuk makro-kernel Linux, maksudnya berbeza.

Walaupun ia dipanggil sistem fail mod pengguna, ia tidak bermakna ia tidak memerlukan penyertaan kernel sama sekali, kerana di Linux, akses kepada fail dilakukan secara seragam melalui antara muka kernel yang disediakan oleh lapisan VFS (seperti buka/baca), jadi apabila proses (dipanggil "pengguna") mengakses sistem fail yang dilaksanakan oleh daemon, ia masih perlu melalui VFS.

Apabila VFS menerima permintaan akses fail daripada proses pengguna dan menentukan bahawa fail itu tergolong dalam sistem fail mod pengguna (mengikut jenis pelekap), ia akan memindahkan permintaan itu ke fail yang dipanggil "fius" modul kernel. Kemudian, "fius" menukar permintaan ke dalam format protokol yang dipersetujui dengan daemon dan menghantarnya ke proses daemon.

Apakah maksud fius linux?

Dapat dilihat bahawa dalam hubungan tiga pihak ini, modul kernel "fius" memainkan peranan pemindahan, yang membantu untuk menubuhkan VFS (ia juga boleh dikatakan untuk menjadi proses pengguna ) dan daemon Dalam istilah orang awam, peranannya sebenarnya adalah "ejen."

Pelaksanaan keseluruhan rangka kerja ini dalam Linux ialah FUSE (Sistem Fail dalam Ruang Pengguna). Seperti yang ditunjukkan dalam Rajah 1, bahagian dalam kotak merah ialah pelaksanaan khusus sistem fail jenis FUSE, dan ia adalah ruang yang boleh dimainkan oleh pereka bentuk sistem fail mod pengguna. Pada masa ini, terdapat lebih daripada seratus sistem fail dilaksanakan berdasarkan FUSE (sesetengah sistem fail berasaskan kernel juga boleh dialihkan ke dalam sistem fail mod pengguna, seperti ZFS dan NTFS), dan artikel ini akan menggunakan fius siap sedia- sshfs untuk demonstrasi.

Mula-mula pasang pakej perisian fius-sshfs dan gunakan arahan berikut untuk memasang sistem fail (lekapkan direktori "remote-dir" mesin jauh ke direktori "local-dir" mesin tempatan) :

sshfs :

Selepas itu, dalam "/sys/fs" direktori, Folder bernama "fius" akan dihasilkan Pada masa yang sama, anda boleh melihat bahawa modul kernel "fius" telah dimuatkan (peranti yang sepadan ialah "/dev/fuse"), dan jenis pemasangan tempatan. direktori telah menjadi " fuse.sshfs":

Apakah maksud fius linux?

Tujuan menjana nod peranti adalah untuk memudahkan kawalan mod pengguna, tetapi untuk aplikasi peringkat sistem fail, gunakan ioctl() Mengakses peranti masih menyusahkan kerana terlalu banyak butiran dibentangkan, jadi libfuse muncul sebagai lapisan perantaraan Proses daemon sebenarnya mengendalikan fail peranti fius melalui antara muka yang disediakan oleh libfuse.

Anda datang dan saya pergi

Seterusnya, ambil contoh mencipta fail baharu melalui arahan "touch" dalam sistem fail "fuse.sshfs", dan semak modul kernel fius dan proses daemon (iaitu " sshfs") proses interaksi khusus (bahagian kod adalah berdasarkan kernel versi 5.2.0):

[Pusingan pertama]

Permulaannya ialah pengesahan kebenaran, tetapi Pengesahan di sini tidak bersamaan dengan pengesahan kebenaran VFS Tujuan utamanya adalah untuk menghalang pengguna lain daripada mengakses sistem fail fius peribadi mereka.

Apakah maksud fius linux?

Kemudian inod fail ditemui berdasarkan laluan fail. Memandangkan ia adalah fail yang baru dibuat, inode tiada dalam cache inode kernel, jadi permintaan "carian" perlu dihantar kepada daemon:

Apakah maksud fius linux?

Permintaan ini akan dimasukkan ke dalam baris menunggu, menunggu balasan daripada proses daemon, dan proses pengguna akan tertidur:

Apakah maksud fius linux?

Sebagai daemon, proses sshfs berbunyi "/dev/fuse" Fail peranti untuk mendapatkan data, jika baris gilir yang belum selesai kosong, ia akan jatuh ke dalam menyekat menunggu:

Apakah maksud fius linux?

Apabila permintaan tiba pada menunggu giliran, proses daemon akan dibangkitkan dan memproses permintaan ini. Permintaan yang diproses akan dialihkan ke dalam baris gilir pemprosesan Selepas proses daemon membalas modul kernel fius, proses pengguna akan dibangkitkan dan permintaan yang sepadan akan dialih keluar daripada baris gilir pemprosesan.

Apakah maksud fius linux?

【Pusingan kedua

Langkah seterusnya ialah melaksanakan "sentuhan" arahan Jika panggilan sistem lain yang dicetuskan adalah data/metadata yang telah diakses sebelum ini, ia berkemungkinan wujud dalam cache Apabila mengakses bahagian data/metadata ini sekali lagi, modul kernel fius boleh menyelesaikannya dengan sendiri tanpa memerlukan a perjalanan pergi dan balik ke ruang pengguna Jika tidak, ia masih perlu dilaporkan kepada proses daemon untuk diproses.

Di sini get_fuse_conn() memperoleh contoh struktur "fuse_conn" yang dicipta apabila sistem fail jenis fius dipasang. Sebagai pautan antara proses daemon dan kernel, sambungan akan sentiasa wujud melainkan proses daemon mati atau sistem fail fius yang sepadan dinyahpasang.

Apakah maksud fius linux?

Di bahagian proses daemon, masih terdapat operasi yang serupa. Apa yang perlu diperhatikan ialah perbezaan antara dua siri fungsi fuse_write/read() dan fuse_dev_write/read() Yang pertama ialah VFS apabila proses pengguna mengakses fail sistem fail fius. Permintaan baca dan tulis adalah operasi pada fail biasa, dan yang terakhir ialah proses daemon membaca dan menulis "/dev/fuse", peranti yang mewakili modul kernel fius, untuk mendapatkan permintaan dan memberi balasan.

Apakah maksud fius linux?

[Pusingan ketiga]

Pusingan terakhir interaksi antara modul isirong fius dan proses daemon adalah untuk mewakili sistem fail fius Dapatkan nombor inod dalam superblock dan isikan maklumat berkaitan metadata ini.

Apakah maksud fius linux?

Dua belah syiling

Tidak sukar untuk mencarinya dalam sistem fail fius, walaupun operasi "sentuhan" yang agak mudah dilakukan , keadaan pengguna yang terlibat Pertukaran antara keadaan kernel dan keadaan kernel adalah agak kerap dan disertai dengan salinan data berbilang. Berbanding dengan sistem fail kernel tradisional, keseluruhan pemprosesan I/Onya lebih rendah dan kependaman lebih besar.

Jadi mengapa fius masih menduduki tempat dalam sistem fail yang disokong oleh sistem pengendalian? Bercakap mengenainya, membangun dalam mod pengguna mempunyai banyak kelebihan. Pertama, mudah dinyahpepijat dan amat sesuai untuk pengesahan pantas prototaip sistem fail baharu, jadi ia sangat popular dalam bidang penyelidikan akademik. Dalam kernel, anda hanya boleh menggunakan bahasa C Dalam mod pengguna, tidak banyak sekatan Pelbagai fungsi dan pelbagai bahasa pengaturcaraan boleh digunakan.

Kedua, pepijat kernel sering menyebabkan keseluruhan sistem ranap pada sedikit percanggahan pendapat (ini lebih serius dalam aplikasi maya, kerana ranap hos akan menyebabkan semua mesin maya berjalan padanya untuk ranap) mesin ranap), manakala kesan yang disebabkan oleh pepijat mod pengguna agak terhad.

Jadi, bahagian hadapan syiling adalah ia mudah untuk pembangunan, tetapi betapa mudahnya ia adalah perasaan subjektif, manakala sisi lain adalah kesan ke atas prestasi, yang boleh digunakanDisahkan oleh objektif data eksperimen. Jadi apakah kaedah yang harus digunakan untuk mengukur secara relatif kehilangan yang disebabkan oleh fius?

Kami masih menggunakan fius-sshfs yang kami gunakan sebelum ini, tetapi di sini kami tidak lagi menggunakan pemasangan jauh, tetapi menggunakan pemasangan tempatan (dengan mengandaikan bahawa direktori "dir-src" mesin tempatan terletak dalam fail ext4 Sistem):

sshfs localhost:

Apabila proses daemon menerima permintaan, ia perlu memasukkan kernel sekali lagi, Untuk mengakses modul kernel ext4 (mod sistem fail ini dipanggil "boleh tindanan"):

Apakah maksud fius linux?

Ambil proses pengguna yang mengeluarkan permintaan write() ke sistem fail fius sebagai contoh, kotak merah di sebelah kanan ialah laluan panggilan ext4 asli, dan laluan tambahan di sebelah kiri ialah laluan yang ditambahkan selepas memperkenalkan fius:

Apakah maksud fius linux?

Menurut artikel ini Menurut data yang diberikan dalam dokumen, permintaan yang dibentuk oleh "getxattr" yang digunakan dalam panggilan sistem ini memerlukan 2 kali ganda jumlah interaksi "kernel pengguna". Untuk penulisan berurutan, berbanding sistem fail ext4 asli, daya pemprosesan I/O dikurangkan sebanyak 27% dan penulisan rawak dikurangkan sebanyak 44%.

Walau bagaimanapun, dalam beberapa tahun sejak kelahiran sistem fail fius, semua orang telah menghasilkan banyak langkah pengoptimuman untuknya. Sebagai contoh, apabila membaca dan menulis secara berurutan, ia boleh direka bentuk untuk menghantar permintaan dalam kelompok kepada proses daemon (tetapi membaca dan menulis rawak tidak sesuai).

Terdapat juga teknologi sifar-salinan penyambungan Mekanisme penyambungan yang disediakan oleh kernel Linux membolehkan ruang pengguna untuk memindahkan data penimbal memori dua kernel tanpa menyalin , ia amat sesuai untuk mod boleh tindanan untuk memindahkan data terus daripada modul kernel fius ke modul kernel ext4 (tetapi penyambungan biasanya digunakan untuk permintaan melebihi 4K, dan tidak digunakan untuk membaca dan menulis sejumlah kecil data).

Selepas usaha ini, apakah jenis prestasi yang boleh dicapai oleh sistem fail fius? Menurut keputusan ujian yang disenaraikan dalam laporan ini, berbanding dengan ext4 asli, dalam kes terbaik, kehilangan prestasi fius boleh dikawal kepada kurang daripada 5%, tetapi dalam kes yang paling teruk, ia adalah 83% . Pada masa yang sama, penggunaan sumber CPUnya juga meningkat sebanyak 31%.

Daripada daemon sdcard yang wujud antara Android v4.4 hingga v7.0, kepada Ceph dan GlusterFS dalam beberapa tahun kebelakangan ini, semuanya telah menerima pakai atau sedang mengguna pakai pelaksanaan berasaskan FUSE. FUSE telah menunjukkan kegunaannya dalam sistem fail rangkaian dan aplikasi virtualisasi Kemunculan dan pembangunannya bukan untuk menggantikan sistem fail yang dilaksanakan dalam mod kernel, tetapi sebagai tambahan yang berguna (secara teorinya, FUSE juga boleh Digunakan untuk melaksanakan sistem fail akar, tetapi ini. tidak disyorkan, "boleh buat" dan "harus buat" adalah dua perkara berbeza).

Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Apakah maksud fius linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan