Rumah >Tutorial sistem >LINUX >Mengapa ruang tidak dikeluarkan selepas memadam fail?

Mengapa ruang tidak dikeluarkan selepas memadam fail?

WBOY
WBOYke hadapan
2024-01-08 14:46:281307semak imbas

Pernahkah anda menghadapi situasi di mana fail telah dipadamkan tetapi ruang tersebut tidak dikeluarkan dalam persekitaran Linux? Artikel pendek ini akan memperkenalkan senario masalah ini dan penyelesaian yang sepadan.

Salah satu pelayan aplikasi kami, sistem pengendalian ialah Red Hat Linux, pemantauan penggera, /opt/applog penggunaan sistem fail melebihi ambang, kapasiti keseluruhan ialah 50G, tetapi kapasiti fail sebenar ialah 20G, apakah ruang 30G yang tinggal?

Kami tahu bahawa dalam persekitaran Linux, semuanya wujud dalam bentuk fail Sistem memperuntukkan deskriptor fail untuk setiap aplikasi di latar belakang, yang menyediakan deskriptor fail untuk interaksi antara aplikasi dan sistem pengendalian antara muka ialah fail, ia akan mengambil ruang Pada masa ini, anda boleh menggunakan perintah lsof, yang boleh menyenaraikan fail yang sedang dibuka oleh sistem.

>lsof
COMMAND      PID      USER   FD      TYPE    DEVICE  SIZE/OFF      NODE NAME
...
filebeat  111442   app  1r      REG     253,3 209715229   1040407 /opt/applog/E.20171016.info.012.log
filebeat  111442   app  2r      REG     253,3 209715254    385080 /opt/applog/E.20171015.info.001.log (deleted)
...

Maksud setiap medan dalam tajuk adalah seperti berikut:

PERINTAH: Nama proses
PID: pengecam proses
PENGGUNA: pemilik proses
FD: Deskriptor fail, aplikasi mengenal pasti fail melalui deskriptor fail. Seperti cwd, txt, dsb.
JENIS: jenis fail, seperti DIR, REG, dll.
PERANTI: Nyatakan nama cakera
SAIZ: Saiz fail
NODE: nod indeks (pengenalan fail pada cakera)
NAMA: Nama sebenar fail yang dibuka

Dapat dilihat bahawa dalam beberapa baris, NAMA ditanda (dipadamkan)

/opt/applog/E.20171015.info.001.log (dipadamkan)

Maksudnya ialah fail telah dipadamkan, tetapi pemegang fail yang terbuka belum ditutup Lihat nama COMMAND ialah filebeat, dan pemilik proses PENGGUNA Ini adalah proses pengumpulan log kami telah menghidupkan proses filebeat.

Pengenalan kepada platform pengumpulan log

Platform pembalakan sumber terbuka tradisional, ELK, terdiri daripada tiga alatan sumber terbuka: ElasticSearch, Logstash dan Kiabana, antaranya:

  • Elasticsearch ialah enjin carian teragih sumber terbuka, diedarkan, konfigurasi sifar, penemuan automatik, serpihan indeks automatik, mekanisme penyalinan indeks, antara muka gaya tenang, pelbagai sumber data, beban carian automatik, dsb.
  • Logstash ialah alat pengumpulan sumber terbuka yang boleh mengumpul, menapis log dan menyimpannya untuk kegunaan kemudian.
  • Kibana ialah alat web grafik sumber terbuka yang menyediakan antara muka web mesra analisis log untuk Logstash dan ElasticSearch, dan boleh mengagregat, menganalisis dan mencari log data penting.

Rajah penggunaan biasa, seperti ditunjukkan di bawah

Mengapa ruang tidak dikeluarkan selepas memadam fail?

Apakah filebeat yang disebutkan di atas? Apa kaitan dengan ELK?

Terdapat pengenalan oleh pakar hebat Rao Chenlin (pengarang "ELKstack Authoritative Guide") tentang Zhihu, yang sangat bernas dan dipetik daripada https://www.zhihu.com/question/54058964/answer/137882919

Oleh kerana logstash dikendalikan oleh jvm dan menggunakan banyak sumber, penulis kemudiannya menggunakan golang untuk menulis logstash-forwarder yang ringan dengan fungsi yang lebih sedikit tetapi penggunaan sumber yang rendah. Walau bagaimanapun, pengarang hanyalah seorang Selepas menyertai

Mengapa ruang tidak dikeluarkan selepas memadam fail?

Ringkasnya, filebeat ialah ejen proses untuk pengumpulan log, bertanggungjawab untuk mengumpul fail log aplikasi.

Untuk masalah saya di atas, sebab mengapa terdapat sebilangan besar pemegang fail (dipadam) dan tidak dikeluarkan adalah kerana ruang cakera adalah sangat terhad, tugasan telah ditambah buat sementara waktu untuk memadam log 12 jam yang lalu setiap jam Dalam erti kata lain, tugas yang dijadualkan akan memadamkan beberapa fail secara automatik yang sedang dibuka oleh filebeat pada masa ini, jadi fail ini menjadi fail yang tidak dikeluarkan, jadi fail sebenar dipadamkan, tetapi ruang tidak dikeluarkan.

Penyelesaian 1:

Untuk melepaskan ruang yang diduduki dengan cepat, kaedah yang paling langsung ialah membunuh -9 proses filebeat, pada masa itu ruang akan dilepaskan. Tetapi ini bukan penyelesaian asas Tugas berjadual juga akan memadamkan fail ini yang dibuka oleh filebeat, menyebabkan ruang menjadi penuh.

Penyelesaian 2:
Fail konfigurasi Filebeat filebeat.yml sebenarnya mempunyai dua parameter:

  • tutup_lebih tua: 1j
    Penerangan: Tutup lebih lama menutup pengendali fail yang tidak diubah suai lebih lama kemudian rentetan masa seperti 2j (2 jam), 5m (5 minit) boleh digunakan.

Iaitu, jika fail tidak dikemas kini dalam tempoh masa tertentu, pemegang fail yang dipantau akan ditutup.

  • force_close_files: palsu
    Nota: Pilihan ini menutup fail, sebaik sahaja nama fail berubah Pilihan konfigurasi ini hanya dicadangkan pada tetingkap Filebeat memastikan fail yang dibacanya terbuka dialih keluar sepenuhnya sehingga juga Filebeat menutup pembacaan fail selepas ignore_older Pada masa ini tiada fail baharu dengan nama yang sama boleh dibuat sebaliknya boleh berlaku selepas penggiliran fail permulaan fail baharu dilangkau, kerana bacaan bermula pada penghujung Kami mengesyorkan agar pilihan ini dibiarkan palsu tetapi menurunkan nilai ignore_older untuk mengeluarkan fail dengan lebih cepat.

Iaitu, apabila nama fail berubah, termasuk menamakan semula dan memadam, fail akan ditutup secara automatik.

Menggabungkan kedua-dua parameter ini, mengikut keperluan aplikasi, jika fail tidak dikemas kini dalam masa 30 minit, pemegangnya perlu ditutup Jika fail itu dinamakan semula atau dipadam, pemegangnya perlu ditutup

dekat_lebih tua: 30m
force_close_files: benar

Ia boleh memenuhi keperluan asas pengumpulan log filebeat dan pemadaman tetap fail sejarah.

Atas ialah kandungan terperinci Mengapa ruang tidak dikeluarkan selepas memadam fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam