Rumah > Tutorial sistem > LINUX > teks badan

Cara sistem fail Linux berfungsi: Semua dalam nod indeks dan entri direktori ialah fail

WBOY
Lepaskan: 2024-04-03 09:16:01
ke hadapan
442 orang telah melayarinya

Cara sistem fail Linux berfungsi Nod indeks dan entri direktori

Semua dalam Linux ialah fail biasa, direktori, peranti blok, soket dan paip juga mesti diuruskan melalui sistem fail bersatu.

Linux memperuntukkan dua struktur data untuk setiap fail, nod indeks dan entri direktori, yang digunakan terutamanya untuk merekodkan meta-maklumat dan struktur direktori fail.

Nod indeks ialah satu-satunya pengecam bagi setiap fail Entri direktori mengekalkan struktur pepohon sistem fail Hubungan antara entri direktori dan nod indeks adalah banyak-dengan-satu boleh mempunyai beberapa nama.

Alias ​​yang dibuat untuk fail melalui pautan keras akan sepadan dengan entri direktori yang berbeza pada asasnya masih dipautkan ke fail yang sama, jadi nod indeksnya adalah sama.

Unit terkecil cakera c ialah trek (512B Walau bagaimanapun, setiap bacaan dan tulis adalah sangat kecil dan kecekapannya sangat rendah). Oleh itu, sistem fail menyusun trek berturut-turut ke dalam blok logik Setiap kali, blok logik digunakan sebagai unit terkecil untuk mengurus data Setiap kali, blok logik digunakan sebagai unit terkecil untuk mengurus data 4KB, yang terdiri daripada berterusan Terdiri daripada 8 trek.

Dua perkara yang perlu diberi perhatian:

linux 文件系统优化_优化文件系统的管理_优化文件系统NTFS的管理

Sistem Fail Maya

Entri direktori, nod indeks, blok logik dan blok super membentuk empat elemen utama sistem fail Linux. Bagi menyokong pelbagai sistem fail, Linux memperkenalkan lapisan konkrit antara proses pengguna dan sistem fail, iaitu sistem fail maya VFS.

VFS mentakrifkan satu set struktur data dan soket standard yang disokong oleh semua sistem fail.

Sistem fail I/O

Klasifikasi I/O: I/O buffer dan unbuffered, I/O langsung dan tidak langsung, I/O menyekat dan tidak menyekat, I/O segerak dan tak segerak.

优化文件系统NTFS的管理_优化文件系统的管理_linux 文件系统优化

Ruang tidak mencukupi, df memeriksa pemacu c dan mendapati terdapat banyak ruang yang tinggal

Walaupun bukan sahaja data fail tetapi juga nod indeks juga menduduki ruang pemacu c, gunakan arahan berikut:

df-i

Apabila anda mendapati inod tidak mencukupi dan ruang yang mencukupi pada pemacu c, ia mungkin disebabkan oleh terlalu banyak fail kecil. Masalah ini boleh diselesaikan dengan memadamkan fail kecil tersebut atau menyambungkannya ke pemacu c lain dengan nod indeks yang mencukupi.

Inti menggunakan mekanisme Slab untuk mengurus cache entri direktori dan nod indeks. /proc/meminfo hanya memberikan saiz keseluruhan Slab Untuk setiap cache Slab, anda juga perlu menyemak /proc/slabinfo.

优化文件系统的管理_优化文件系统NTFS的管理_linux 文件系统优化

Prinsip kerja I/O sistem storan:

I/O sistem storan biasanya merupakan pautan paling perlahan dalam keseluruhan sistem. Oleh itu, Linux menggunakan pelbagai mekanisme caching untuk mengoptimumkan kecekapan I/O. Contohnya, untuk mengoptimumkan prestasi akses fail, pelbagai mekanisme caching seperti cache halaman, cache nod indeks dan cache kemasukan direktori digunakan untuk mengurangkan panggilan terus ke peranti blok lapisan atas. Begitu juga, untuk mengoptimumkan kecekapan akses peranti sekat, penimbal digunakan untuk menyimpan data peranti menyekat cache.

c memacu penunjuk prestasi

Penggunaan hanya mengambil kira sama ada terdapat I/O, bukan saiz I/O. Dalam erti kata lain, apabila penggunaan adalah 100%, pemacu c masih boleh menerima permintaan I/O baharu

Anda tidak boleh membandingkan penunjuk tertentu secara berasingan, tetapi anda mesti menganalisisnya secara menyeluruh dengan menggabungkan nisbah baca-tulis, jenis I/O (rawak atau berterusan) dan saiz I/O secara rawak tulis-baca dalam pangkalan data, sejumlah besar; fail kecil, dsb. Dalam senario Linux yang lebih tertanam, IOPS boleh mencerminkan prestasi keseluruhan sistem dengan lebih baik dalam senario dengan bacaan dan penulisan yang lebih berurutan seperti multimedia, daya pemprosesan boleh mencerminkan prestasi keseluruhan sistem dengan lebih baik

优化文件系统的管理_优化文件系统NTFS的管理_linux 文件系统优化

Apabila menghadapi senario "pengelogan gila" ini, anda boleh menggunakan iostat, strace, lsof dan alatan lain untuk mencari proses pengelogan, mencari fail log yang sepadan, dan kemudian melaraskan tahap log melalui soket aplikasi untuk menyelesaikan masalah . Jika aplikasi tidak boleh melaraskan tahap log secara dinamik, anda juga mungkin perlu menukar konfigurasi aplikasi dan memulakan semula aplikasi untuk konfigurasi berkuat kuasa.

Mengapa strace mengesan proses ini tetapi tidak mengesan sebarang panggilan sistem tulis?

Memandangkan penulisan fail dilakukan oleh rangkaian kanak-kanak, semua proses penjejakan strace tidak melihat panggilan sistem tulis Anda boleh melihat maklumat rangkaian proses melalui pstree, dan kemudian menggunakan strace untuk menjejaki atau menjejaki semua rangkaian melalui strace-fppid

Anatomi Pertanyaan Lambat

atas dan iostat menganalisis penggunaan CPU dan pemacu c sistem, dan menemui dilema I/O pemacu c. Kemudian, kami menggunakan pidstat dan mendapati bahawa masalah itu disebabkan oleh mysqld. Kemudian, kami menggunakan strace dan lsofpengoptimuman sistem fail linux untuk mencari fail yang sedang dibaca oleh mysqld. Pada masa yang sama, mengikut nama dan laluan fail, kami mendapati pangkalan data dan jadual data yang mysqld sedang beroperasi. Berdasarkan maklumat ini, kami menentukan bahawa ini adalah masalah pertanyaan perlahan yang disebabkan oleh tidak menggunakan indeks.

优化文件系统的管理_优化文件系统NTFS的管理_linux 文件系统优化

Selepas menghentikan perkhidmatan data, masalah IO akan hilang.

Jadual data yang diakses oleh aplikasi kes adalah berdasarkan enjin MyISAM, dan ciri MyISAM ialah ia hanya menyimpan indeks dalam memori video dan tidak menyimpan data dalam cache. Oleh itu, apabila ayat pertanyaan tidak boleh menggunakan indeks, jadual data perlu dibaca daripada fail pangkalan data ke dalam memori video dan kemudian diproses.

perkhidmatan data akan sentiasa mengeluarkan cache fail, menyebabkan mysql tidak bergantung pada cache pemacu c.

Redis pertama kali menggunakan top dan iostat untuk menganalisis penggunaan CPU, memori dan pemacu c sistem, tetapi mendapati tiada dilema dalam sumber sistem. Untuk menganalisis lebih lanjut, anda perlu mempunyai pemahaman tertentu tentang cara sistem dan aplikasi berfungsi. Sebagai contoh, dalam kes esok, walaupun tiada dilema dalam cakera C I/O, menurut prinsip Redis, tidak sepatutnya terdapat sejumlah besar operasi tulis I/O cakera C semasa menanyakan cache. Sepanjang garis pemikiran ini, kami terus menggunakan satu siri alat seperti pidstat, strace, lsof, dan nsenter untuk mencari dua masalah yang berpotensi Satu ialah konfigurasi Redis yang tidak munasabah, dan satu lagi adalah penyalahgunaan aplikasi Redis oleh Python. Alat ujian penanda aras I/O

fio(flexibleI/OTester)

Pengoptimuman prestasi I/O

Pengoptimuman apl

Gantikan penulisan rawak dengan tambah tulis, kurangkan perbelanjaan pengundian dan tingkatkan kadar penulisan I/OGunakan pengoptimuman sistem fail Linux, gunakan sepenuhnya cache sistem untuk meningkatkan bilangan I/O sebenar. . Cipta Caching dalaman anda sendiri, atau menggunakan sistem caching luaran seperti Redis. Dengan cara ini, di satu pihak, data cache dan kitaran hayat boleh dikawal dalam aplikasi sebaliknya, ia juga boleh mengurangkan kesan aplikasi lain menggunakan cache pada diri mereka sendiri. Fungsi perpustakaan seperti fopen dan fread yang disediakan oleh perpustakaan standard C akan menggunakan cache perpustakaan standard untuk mengurangkan operasi pemacu C. Apabila anda terus menggunakan panggilan sistem seperti buka dan baca, anda hanya boleh menggunakan cache halaman dan penimbal yang disediakan oleh sistem pengendalian, dan tiada cache fungsi perpustakaan tersedia Jika anda perlu kerap membaca dan menulis ruang cakera C yang sama , anda boleh menggunakan mmap daripada membaca / menulis, mengurangkan bilangan salinan memori video Dalam senario di mana penulisan segerak diperlukan, cuba gabungkan permintaan tulis dan bukannya setiap permintaan ditulis ke pemacu c secara serentak. anda boleh menggunakan fsync() dan bukannya O_SYNC untuk berkongsi fail yang sama dalam berbilang aplikasi Apabila menggunakan pengurusan memori Linux pada pemacu c, untuk memastikan bahawa I/O tidak diduduki sepenuhnya oleh sesuatu aplikasi, adalah disyorkan agar anda menggunakan. subsistem I/O cgroup untuk mengehadkan IOPS dan throughput bagi proses/kumpulan proses Apabila menggunakan penjadual CFQ, anda boleh Gunakan ionice untuk melaraskan keutamaan penjadualan I/O proses, terutamanya untuk meningkatkan keutamaan I/O. daripada aplikasi teras. ionice menyokong tiga kelas keutamaan: Terbiar, Usaha Terbaik dan Masa Nyata. Antaranya, Best-effort dan Realtime juga menyokong tahap masing-masing dari 0 hingga 7 Semakin kecil nilai, semakin tinggi tahap keutamaan.

Atas ialah kandungan terperinci Cara sistem fail Linux berfungsi: Semua dalam nod indeks dan entri direktori ialah fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:itcool.net
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!