Dzisiaj spotkałem się z zaskakującym komunikatem, pojawił się on w środowisku produkcyjnym w trakcie próby umieszczenia nowej maszyny wirtualnej (w formacie ovf). Komunikat brzmiał tak: Failed to open /var/log/journal for write (There is no space left on device). Zaskoczyło mnie to o tyle, że logi trzymamy na dysku innym niż root.
Szybkie sprawdzenie zajętości dysków nie pokazało niczego złego:
Wniosek jest prosty, skończyły się inody, można to sprawdzić bardzo szybko poleceniem „localcli system visorfs ramdisk list”:
Wyraźnie widać, że dysk root wyczerpał dostępne węzły. Tego typu błędy są ciężkie w diagnostyce, i-węzły mogą zostać zużyte przez duże ilości małych plików lub np. przez plik logu z zerwanym deskryptorem (skasowaliśmy plik do którego pisze system, nam się wydaje że pliku nie ma a on rośnie). Na szczęście udało mi się znaleźć KB które dotyczyło mojego problemu. Ku mojemu nieustającemu zaskoczeniu, w katalogu /var/run/sfcb znalazłem mnóstwo plików:
Procedura “czyszczenia” jest prosta, stopujemy watchdoga, usuwamy pliki i startujemy watchdoga. Sprawdzamy inody:
Liczba zajętych węzłów spadła o połowę! Jak się obronić na przyszłość przed tym problemem? Możemy zgodnie z KB skierować zapis tych plików do ramdysku:
esxcli system visorfs ramdisk add –name sfcbtickets –min-size 0 –max-size 1024 –permissions 0755 –target /var/run/sfcb