


Mulakan dengan lsof dan dapatkan pemahaman yang mendalam tentang sistem fail maya Linux
.
<span style="font-size: inherit;color: inherit;line-height: inherit;">df</span>
arahan untuk menyemak penggunaan cakera dan mendapati cakera penuh. -bash-4.2$ df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/vda1 ext4 30G 30G 0 100% /devtmpfs devtmpfs 489M 0 489M 0% /devtmpfs tmpfs 497M 0 497M 0% /dev/shmtmpfs tmpfs 497M 50M 447M 11% /runtmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
<span style="font-size: 15px;">df</span>
-bash-4.2$ du -h --max-depth=1 /home16M /home/logs11G /home/serverdog11G /home
<span style="font-size: 15px;">lsof</span>
命令显示打开已删除的文件。将有问题的进程重启(或,清空),磁盘空间就会得到释放。
-bash-4.2# lsof | grep deletemysqld 2470 mysql 4u REG 253,1 0 523577 /var/tmp/ibfTeQFn (deleted)mysqld 2470 mysql 5u REG 253,1 0 523579 /var/tmp/ibaHcIdW (deleted)mysqld 2470 mysql 6u REG 253,1 0 523581 /var/tmp/ibLjiALu (deleted)mysqld 2470 mysql 7u REG 253,1 0 523585 /var/tmp/ibCFnzTB (deleted)mysqld 2470 mysql 11u REG 253,1 0 523587 /var/tmp/ibCjuqva (deleted)
什么是虚拟文件系统(VFS:virtual filesystem)?
什么是通用文件模型?
超级块对象(superblock object)
索引节点对象(inode object)
文件对象(file object)
目录项对象(dentry object)
文件的概念
文件的表达
内存表达
磁盘表达
目录树的构建
Pautan lembut vs pautan keras
Pengurusan Fail & Cakera
Status Indeks
Pengurusan Fail & Proses
Buka & Padam
- :
Rajah berikut menunjukkan komponen asas yang bertanggungjawab untuk pengurusan fail dalam sistem pengendalian Linux. Kawasan separuh atas ialah mod pengguna, dan kawasan separuh bawah ialah mod kernel. Aplikasi menggunakan libc perpustakaan standard untuk mengakses fail, dan perpustakaan memetakan permintaan kepada panggilan sistem untuk memasuki mod kernel.
Model fail biasa
objek superblock
Memori: Dicipta apabila sistem fail dipasang, menyimpan maklumat yang berkaitan tentang sistem fail
Disk: Sepadan dengan maklumat yang disimpan pada cakera Blok kawalan sistem fail (blok kawalan sistem fail)
Objek inode (objek inode)
Memori: Dicipta apabila diakses, menyimpan maklumat umum tentang fail tertentu (
inode 结构
)
Disk: Sepadan dengan storan blok kawalan pada
Setiap objek inod mempunyai nombor inod yang mengenal pasti fail dalam sistem fail secara unik
Objek fail (objek fail)
Memori: Dicipta apabila fail dibuka, menyimpan maklumat tentang interaksi antara fail terbuka dan proses (
struktur fail< /code >) <code style="margin-right: 0.15em;margin-left: 0.15em;padding-right: 0.3em;padding-left: 0.3em;font-size: 0.85em;font-family: Consolas, Inconsolata, Courier, monospace;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(234, 234, 234);background-color: rgb(248, 248, 248);border-radius: 3px;display: inline;">file 结构
)
打开文件信息,仅当进程访问文件期间存在于内核内存中。
目录项对象(dentry object)
内存:目录项一旦被读入内存,VFS就会将其转换成
dentry 结构
Maklumat fail terbuka wujud dalam memori kernel sahaja semasa proses mengakses fail. . : 0.3em;padding-left: 0.3em;font-size: 0.85em;font-family: Consolas, Inconsolata, Courier, monospace;white-space: pre-wrap;border-width: 1px; border-color: rgb(234, 234, 234);background-color: rgb(248, 248, 248);border-radius: 3px;display: inline;">struktur gigi Objek masukan direktori
Cakera: Sistem fail tertentu disimpan pada cakera dengan cara tertentu
Menyimpan maklumat tentang pautan antara entri direktori (iaitu, nama fail) dan fail yang sepadan
Pokok direktori
Secara ringkasnya, sistem fail akar Linux (sistem fail akar sistem) ialah sistem fail pertama yang kernel mula dipasang. Fail imej kod kernel disimpan dalam sistem fail akar, dan program but sistem akan memuatkan beberapa skrip dan perkhidmatan permulaan asas ke dalam memori untuk dijalankan selepas sistem fail akar dipasang (sistem fail dan kernel adalah bebas sepenuhnya dua bahagian ). Sistem fail lain kemudiannya dipasang sebagai sistem sub-fail pada direktori di mana sistem fail dipasang melalui skrip atau arahan, akhirnya membentuk keseluruhan pepohon direktori.
start_kernel vfs_caches_init mnt_init init_rootfs // 注册rootfs文件系统 init_mount_tree // 挂载rootfs文件系统 … rest_init kernel_thread(kernel_init, NULL, CLONE_FS);
软链接 vs 硬链接
<span style="font-size: 15px;color: rgb(68, 68, 68);">i_nlink</span>
字段为零时,说明没有硬链接指向该文件。文件 & 进程管理
* "in_use" - valid inode, i_count > 0, i_nlink > 0* "dirty" - as "in_use" but also dirty* "unused" - valid inode, i_count = 0
<code style="margin-right: 0.15em;margin-left: 0.15em;padding-right: 0.3em;padding-left: 0.3em;font-size: 0.85em;font-family: Consolas, Inconsolata, Courier, monospace;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(234, 234, 234);background-color: rgb(248, 248, 248);border-radius: 3px;display: inline;"><span style="font-size: 15px;">open()</span>
和 <span style="font-size: 15px;">close()</span>
操作建立和销毁文件对象,文件对象通过索引节点提供的 <span style="font-size: 15px;">iget</span>
和 <span style="font-size: 15px;">iput</span>
更新索引节点的i_count字段,以完成使用计数。open 操作使得 i_count 加一, close 操作使得 i_count 减一。在 close 操作时判断索引节点是否释放,如果 i_count = 0,则意味着不再有进程引用,将会从内存释放。文件 & 磁盘管理
文件与磁盘管理联系最紧密的操作,莫过于<span style="font-size: 15px;">touch</span>
和<span style="font-size: 15px;">rm</span>
open() dan
🎜tutup( )🎜
🎜 Operasi mencipta dan memusnahkan objek fail Objek fail disediakan melalui nod indeks 🎜🎜iget🎜
🎜 dan 🎜 🎜iput🎜
🎜 Kemas kini medan i_count nod indeks untuk melengkapkan kiraan penggunaan. Operasi terbuka meningkatkan i_count sebanyak satu, dan operasi tutup mengurangkan i_count sebanyak satu. Tentukan sama ada nod indeks dilepaskan semasa operasi tutup Jika i_count = 0, ini bermakna tiada lagi rujukan proses dan ia akan dikeluarkan daripada memori. 🎜🎜Pengurusan Fail & Cakera🎜
🎜Fail Operasi yang paling rapat dengan pengurusan cakera ialah 🎜🎜sentuh🎜
🎜 dan 🎜🎜rm🎜
🎜 operasi, terutamanya yang terakhir adalah yang paling kritikal. Gunakan strace (atau dtruss) untuk melihat panggilan sistem sebenar rm🎜🎜
# dtruss rm tmp...geteuid(0x0, 0x0, 0x0) = 0 0ioctl(0x0, 0x4004667A, 0x7FFEE06F09C4) = 0 0lstat64("tmp\0", 0x7FFEE06F0968, 0x0) = 0 0access("tmp\0", 0x2, 0x0) = 0 0unlink("tmp\0", 0x0, 0x0) = 0 0
可以发现 rm 实际是通过 unlink 完成的。unlink代表删除目录项,以及减少其索引节点的计数。由通用文件模型可知,父目录本身同样是一个文件,也就意味着目录项是其文件数据的一部分。删除目录项等价于从父目录的文件中删除数据,也就意味着首先要打开父目录的文件。那么,删除操作即可理解为:
删除命令(一个进程)使用 open 操作获得父目录文件对象
通过
<span style="font-size: 15px;color: rgb(68, 68, 68);">iget</span>
增加 目录文件的索引节点对象计数读取目录文件数据
将目录文件数据转化为目录项对象
由于目录项包含文件的索引节点,类似的,需要通过 iget 增加文件的索引节点对象计数
删除目录的目录项
减少文件索引节点对象的硬链接计数i_nlink
通过
<span style="font-size: 15px;color: rgb(68, 68, 68);">iput</span>
结束对文件索引节点对象的操作,使用计数 i_count 减一判断i_count是否为零,如果为零,则释放内存
然后,判断i_nlink是否为零,如果为零,则释放磁盘空间
-
通过 iput 结束对目录索引节点对象的操作。
. perkara teras ialah indeks fail, bukan data fail. Mengasingkan data dan indeks adalah kunci untuk memahami sistem fail. .
Kenapa lsof ?
Ia boleh difahami dengan jelas dari model di atas, kerana direktori tidak lagi diindeks ke fail, tetapi fail masih diindeks apabila fail dibuka, jadi ruang cakera tidak boleh dikeluarkan serta-merta . Mengapa lsof boleh mencari fail yang dipadam dan tidak dikeluarkan? lsof, seperti namanya: senaraikan fail terbuka, prinsip arahan ini adalah untuk mencari senarai fail terbuka, jadi anda boleh mencari fail yang dipadam tetapi tidak dikeluarkan.
Atas ialah kandungan terperinci Mulakan dengan lsof dan dapatkan pemahaman yang mendalam tentang sistem fail maya Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Internet tidak bergantung pada sistem operasi tunggal, tetapi Linux memainkan peranan penting di dalamnya. Linux digunakan secara meluas dalam pelayan dan peranti rangkaian dan popular untuk kestabilan, keselamatan dan skalabiliti.

Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.

Pelayan tidak mempunyai kebenaran untuk mengakses sumber yang diminta, mengakibatkan ralat NGINX 403. Penyelesaian termasuk: Periksa keizinan fail. Semak konfigurasi .htaccess. Semak konfigurasi Nginx. Konfigurasikan keizinan Selinux. Semak peraturan firewall. Menyelesaikan masalah lain seperti masalah penyemak imbas, kegagalan pelayan, atau kesilapan lain yang mungkin.

Artikel ini memperkenalkan kaedah pembinaan dan konfigurasi nginx. 1. Pasang nginx: Gunakan sudoyumininstallnginx pada centOS, gunakan sudoapt-getinstallnginx pada ubuntu, dan mulakan dengan sudosystemctlstartnginx selepas pemasangan. 2. 3. Konfigurasi Hos Maya: di nginx.co

Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.
