Linux Serverdə Disk Tam Xətasını necə həll etmək olar?
Böyük faylları tapmaq, qeydləri təhlükəsiz təmizləmək və serverdə yer boşaltmaq üçün bələdçi.
Linux serverlərində ən çox rast gəlinən problemlərdən biri diskin tamamilə dolmasıdır. Disk dolduqda vebsaytlar fayl yaza bilmir, verilənlər bazası xidmətləri fəaliyyətini dayandıra bilər, oyun serverləri qeydləri yazmaya bilər və bəzi xidmətlər ümumiyyətlə başlamaya bilər.
Bu səhv adətən aşağıdakı simptomlarla tanınır:
- Faylları serverə yükləmək mümkün deyil
- Verilənlər bazası xidmətinin bağlanması və ya xətası
- Paneldə "Cihazda yer qalmadı" xətası görünür
- Oyun serveri daxil ola bilmədiyi üçün bağlanır.
- Veb saytlarda 500 səhv və ya boş səhifələr olur
1. Disk İstifadəsinin Yoxlanması
Əvvəlcə serverdə hansı disk bölməsinin dolu olduğunu yoxlayın.
df -h
burada xüsusilə % istifadə edin sahəsi hesab olunur. Bölmə 90% və ya yuxarıdırsa, bu, riskin başladığı anlamına gəlir. 100% doludursa, xidmətlər faylları yaza bilməyəcək.
2. Ən çox yer tutan qovluqları tapın
Disk dolu olduqda, problem adətən bir qovluqda yığılmış qeydlər, ehtiyat nüsxələr və ya keş fayllarıdır. Kök qovluqdan başlayaraq böyük qovluqları yoxlayın.
du -h --max-depth=1 / 2>/dev/null | sort -h
Bu əmr ev kataloqlarının nə qədər yer tutduğunu göstərir. Adətən aşağıdakı kataloqlar yoxlanılır:
- /var/log - Sistem və xidmət qeydləri
- /ev - İstifadəçi və veb sayt faylları
- /backup - Köhnə ehtiyat faylları
- /tmp - Müvəqqəti fayllar
- /var/lib/mysql - MySQL/MariaDB verilənlər bazası faylları
3. Böyük faylları siyahıya salın
Bəzən bir günlük faylı 10 GB və ya daha çox böyüyə bilər. Böyük faylları tapmaq üçün bu əmrdən istifadə edə bilərsiniz:
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/nullBu əmr 500 MB-dan çox faylları siyahıya alır. Yaranan faylları diqqətlə yoxlayın. Xüsusilə .log, .köhnə, .gz, .bak və köhnə ehtiyat faylları yoxlanılmalıdır.
4. Günlük Faylların Təhlükəsiz Təmizlənməsi
Çalışan bir xidmətin gündəlik faylını birbaşa silmək bəzən gözlənilən nəticəni vermir. Çünki xidmət faylı açıq saxlamağa davam edə bilər. Buna görə də, böyük log fayllarını təmizləyərkən ən təhlükəsiz üsul faylı boşaltmaqdır.
truncate -s 0 /var/log/dosya_adi.log
Misal:
truncate -s 0 /var/log/syslog truncate -s 0 /var/log/messages truncate -s 0 /var/log/nginx/error.log
5. Paket Keşinin Təmizlənməsi
Ubuntu və Debian əsaslı sistemlərdə paket keş faylları zamanla diskdə yer tuta bilər.
apt clean apt autoremove -y
CentOS, AlmaLinux və ya Rocky Linux sistemlərində:
yum clean all dnf clean all
6. Köhnə ehtiyat nüsxələrin yoxlanılması
Hostinq və oyun serverlərində ən çox yer tutan fayllar adətən köhnə ehtiyat nüsxələridir. Xüsusilə avtomatik ehtiyat nüsxə sistemi varsa, hər gün yeni ehtiyat nüsxələri götürülə və köhnə ehtiyat nüsxələri silinməyə bilər.
find /backup -type f -mtime +7 -name "*.tar.gz" -ls
Bu əmr 7 gündən köhnə ehtiyat nüsxələrini sadalayır. Əmin olduqdan sonra silmək üçün:
find /backup -type f -mtime +7 -name "*.tar.gz" -delete
7. Logrotate Parametrləri ilə Yenidən Yükləmənin qarşısını alın
Disk təmizlənsə belə, səbəb aradan qaldırılmasa, bir neçə gündən sonra eyni problem təkrarlanacaq. Bunun üçün logrotate konfiqurasiyası yoxlanılmalıdır.
nano /etc/logrotate.conf
Sadə logrotat məntiqinə misal:
/var/log/*.log {
daily
rotate 7
compress
missingok
notifempty
}Bu parametr gündəlik faylları qaytarır, onları 7 gün saxlayır və köhnə jurnalları sıxışdırır.
Ümumi Səhvlər
- Sistem fayllarının hansı fayl olduğunu bilmədən silinməsi
- Çalışan jurnal faylının silinməsi və xidmətin yenidən başlamaması
- Köhnə ehtiyat nüsxələrini qeyri-məhdud müddətə saxlamaq
- Logrotate parametrləri ümumiyyətlə yoxlanılmır
- Disk 100% dolu olana qədər müdaxilə etməyin
Tez-tez verilən suallar
Disk dolu olduqda server niyə xəta verir?
Çünki xidmətlər qeydləri, keşləri, müvəqqəti faylları və ya verilənlər bazalarını yaza bilməz. Yazma əməliyyatı uğursuz olduqda xidmətlər bağlana bilər.
Günlük faylı silmək və ya boşaltmaq daha yaxşıdır?
Çalışan xidmətlərdə log faylını tamamilə silmək əvəzinə kəsmək İstifadə edərək onu boşaltmaq daha təhlükəsizdir.
Diski təmizlədim amma yer boşalmadı, niyə?
Silinmiş fayl hələ də işləyən xidmət tərəfindən açıq saxlanıla bilər. Müvafiq xidməti yenidən başlatmaq lazım ola bilər.
Performans və Təhlükəsizlik Tövsiyələri
- Disk istifadəsini mütəmadi olaraq izləyin.
- Ehtiyat nüsxələri ayrı diskdə və ya uzaq ehtiyat nüsxə sahəsində saxlayın.
- Logrotate istifadə etmədən xidməti uzun müddət işlək vəziyyətdə qoymayın.
- Disk 85% səviyyəsinə çatdıqda ehtiyat tədbirləri görün.
- Sazlama qeydlərini oyun serverlərində daim açıq qoymayın.
Bu məqalə xüsusi olaraq PvPServer üçün hazırlanmışdır.