„Przekroczono limit miejsca na dysku” podczas zapisu do / tmp, ale dużo miejsca (linux)

9

mam VPS. Jest zarządzany dzięki notorycznie podobnym rozwiązaniom plesk.

dzisiaj zacząłem widzieć wiadomości (początkowo za pomocą wordpress, ale także z powłoki wiersza poleceń), mówiąc: „Przekroczono limit miejsca na dysku”.

user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded

ale na komputerze jest dużo miejsca i tylko 1 partycja.

user@machine:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vzfs             100G   24G   77G  24% /

Usunąłem wszystkie pliki z / tmp / *, ale nadal.

Nic nie wiem o „vzfs”, może może to winowajca?

Co mogło pójść nie tak? i jak to naprawić?

Rozwiązanie!

(jeśli NIE korzystasz z Parallels Plesk, patrz odpowiedź @ Adalee)

Zobacz rozwiązanie @deltik, istotne dla systemu Parallel, jak w moim przypadku.

df -i natychmiast podał niezwykle dużą liczbę i-węzłów: 18 446,744,069,620,218,961, co jest szalone dla witryny wordpress.

dalej badałem i stwierdziłem, że kolejka qmail'a jest pełna i-węzłów (jest zapełniona próbami jakiegoś hakera, aby użyć mojego komputera do spamowania i odpowiedzi na niepowodzenia)

naprawianie qmail'a nie jest tutaj istotne, ale moje obejście jest istotne:

  1. zatrzymał usługę qmail
  2. nie mogłem pobrać qmhandle do systemu przekraczania kwot, więc musiałem
  3. rozpakuj i prześlij skrypt na inną stronę internetową,
  4. usuń kolejkę za pomocą tego polecenia:
  5. perl <(wget -O - http://link.to.my/script.pl ) -D

w ten sposób skrypt działa bezpośrednio z sieci (co nie jest bezpieczną praktyką, ale sam umieściłem tam skrypt), z opcjami wiersza poleceń.

dzięki @deltik za znajomość i szybkie rozpoznanie tego osobliwego ustawienia na miejscu oraz zapewnienie środków do dalszej diagnozy !!!

Berry Tsakala
źródło
Linux ma ustawienia przydzielania przydziałów dysku dla użytkowników lub grup. Sprawdź je również 5 kroków do ustawienia przydziału dysku użytkownika i grupy w systemie UNIX / Linux
DavidPostill
1
Tak, vzfsprzyczyną może być (wirtualny system plików OpenVZ). Widziałem wielu dostawców OpenVZ, którzy sprzedają nieprawdopodobnie tanie serwery, ale ustawili na nich niemożliwie głupie ograniczenia.
user1686,
Jeśli masz rozwiązanie, nawet jeśli jest konkretne, prześlij je jako odpowiedź. Zawsze możesz zaakceptować odpowiedź kogoś innego.
Daniel B,

Odpowiedzi:

15

Posiadasz system plików VZFS, co oznacza, że ​​twój VPS jest maszyną wirtualną Parallels Virtuozzo. W Virtuozzo dostawca hostingu może ustawić limity dla wielu parametrów, w tym przydziałów, jakie otrzymujesz dzięki VZFS.

Przyczyna: Brak węzłów (najczęściej)

Po latach pracy z setkami klientów Virtuozzo VPS, którzy mieli problem z tworzeniem plików, mimo że wydawało się, że jest dużo wolnego miejsca, zdecydowana większość z nich osiągnęła limit i-węzłów. Uruchom to polecenie, aby zobaczyć przydział i-węzłów ( Inodes), używane i-węzły ( IUsed), pozostałe i-węzły ( IFree) oraz procent używanych i-węzłów ( IUse%):

df -i

Posiadanie 100% użycia i-węzła zdarza się często. Najczęstsze przyczyny mojego doświadczenia:

  • Odbicia zwrotne wiadomości e-mail
  • Wychodzące wiadomości e-mail będące spamem w kolejce
  • Przechowywanych jest wiele przychodzących wiadomości e-mail
  • Niektórzy użytkownicy ustawiają swoje czyszczenie pamięci sesji PHP session.gc_maxlifetimena ponad sto lat
  • Zbyt wiele ogólnych plików pamięci podręcznej
  • Pamięć podręczna obiektów włączona we wtyczce WordPress W3 Total Cache
  • Dziennik błędów Magento (dla każdego błędu generowany jest nowy plik)
  • Inne źle skonfigurowane lub źle zaprojektowane programy / skrypty, które tworzą kilka plików i zapominają je usunąć

Rozwiązywanie problemów

Jeśli stwierdzisz, że masz mało lub brakuje i-węzłów, ale nie wiesz, gdzie jest większość z nich, mam ten linijkę Bash, która przeszukuje bieżący katalog i zlicza i-węzły na głębokości folderu 1:

for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr

Możesz ciągle zmieniać bieżący katalog roboczy, poczynając od, /aż znajdziesz winowajcę, który zużyje alokację węzła.

Wyjaśnienie

Twój VPS działa na systemie plików VZFS, który jest częścią Parallels Virtuozzo (nie OpenVZ, który jest podobny i oparty na tej samej technologii, ale OpenVZ nie używałby VZFS).

Ze względu na sposób, w jaki Virtuozzo przechowuje pliki w VZFS, i-węzły są często bardziej ograniczone niż w innych systemach plików, takich jak ext4 lub XFS. Host śledzi wszystkie te pliki i byłoby korzystne dla dostawcy hostingu, aby nie pozwolić, aby pojedynczy VPS zajął setki milionów i-węzłów. W rezultacie dostawca hostingu może ustawić niski limit i-węzłów, na przykład 1 000 000 i-węzłów.

Po latach pracy z setkami klientów, którzy wyczerpali przydział i-węzłów na Virtuozzo, te „tajemnicze” problemy z przydziałem dysku już mnie nie zaskakują.

Przyczyna: Inne granice wirtuozzo

Bardzo mały odsetek klientów Virtuozzo VPS, z którymi współpracowałem, miał problemy z systemem plików, ponieważ przekroczyły inne granice. Za pomocą tego polecenia możesz zobaczyć niektóre (ale nie wszystkie) ograniczenia:

cat /proc/user_beancounters

Rozwiązywanie problemów

Jeśli failcntkolumna ma wartość większą niż 0 lub heldwartość kolumny jest równa odpowiedniej limitwartości, osiągnąłeś limit.

Możesz sprawdzić, jaki jest każdy parametr na wiki OpenVZ tutaj . Parametr może być „pierwotny”, „wtórny” lub „pomocniczy”.

Skontaktuj się z dostawcą usług hostingowych, aby uzyskać dalszą pomoc, jeśli okaże się, że nie możesz zmniejszyć heldliczby limitu osiągniętego przez VPS.

Ta odpowiedź może zostać znacznie rozszerzona w zależności od tego, która fasola została maksymalnie zwiększona, ponieważ różne limity osiągane powodują różne objawy.

Przyczyna: Zmniejszono limit (y) po trafieniu

Jeśli chodzi o, /proc/user_beancounterslub df -iczasami administrator systemu Virtuozzo, może zmniejszyć limitparametr poniżej heldwartości.

Na przykład, jeśli pierwotny limit diskinodesparametru wynosił 1 500 000 i osiągnąłeś limit, to ktoś u twojego dostawcy hosta ustawił limit twojego i-węzła na 1 000 000, zobaczyłbyś dziwny raport z df -ii- węzła, który nie ma sensu.

Na twoim końcu możesz zobaczyć nieuzasadnioną liczbę, na przykład 18 446,744,069,620,218,961 .

Uważam to za złowrogie zachowanie dostawcy usług hostingowych, zwłaszcza jeśli nie informują o tym, ponieważ niezwykłe wartości, które widzisz, są sprzeczne z wiedzą superużytkowników, którzy nie mają doświadczenia z Virtuozzo / OpenVZ, co prowadzi do wprowadzających w błąd rada ( przykład , inny przykład ).

Rozwiązywanie problemów

Skontaktuj się z dostawcą usług hostingowych. Pokaż im, co znalazłeś, i współpracuj z nimi, aby utrzymać trzymaną fasolę poniżej limitu.

Jeśli odmówią ci pomocy, porzuć swojego dostawcę usług hostingowych i znajdź innego, który nie korzysta z wirtualizacji Virtuozzo / OpenVZ. Wirtualizacja KVM, wirtualizacja VMware, wirtualizacja Xen lub serwery bez systemu operacyjnego podlegałyby znacznie mniejszym ograniczeniom niż Virtuozzo / OpenVZ.

Wyjaśnienie

Twój dostawca hostingu mógł kontrolować lub odpowiadać na alert i stwierdził, że Twój VPS zużywał zbyt wiele określonego zasobu (prawie zawsze limit i-węzłów, który jest diskinodesparametrem na ich końcu).

Niedoświadczony administrator Virtuozzo u dostawcy hostingu wierzy, że może poradzić sobie z tym problemem, zmniejszając limit do poziomu niższego niż faktyczne zużycie zasobów. W przypadku i-węzłów możesz mieć mniejszy przydział, na przykład 1 000 000, nawet jeśli twoje aktualne użycie może być wyższe, na przykład 1 500 000.

Administrator Virtuozzo w swoim panelu sterowania zobaczyłby twoje aktualne użycie i nowy limit, ale zobaczyłbyś fałszywe liczby, które są prawdopodobnie bardzo nieuzasadnione wysokie ze względu na sposób wirtualizacji Virtuozzo.

Niedbały administrator Virtuozzo nie poinformuje cię o tej zmianie, dlatego powinieneś skontaktować się z dostawcą usług hostingowych, jeśli tak się stanie.

Deltik
źródło
nie wiem, czy 18 446,744,069,620,218,961 jest akceptowalną liczbą i-węzłów dla witryny z wordpress ...
Berry Tsakala
@BerryTsakala: Czy to liczba używanych i-węzłów czy całkowita liczba i-węzłów obsługiwana przez system plików? Jeśli możesz podać pełny wynik polecenia, możemy być pewni. Na podstawie tego, co napisałeś do tej pory, wygląda na to, że twój host nie ma ustawionego limitu i-węzłów, co oznacza, że ​​się myliłem. Mam dla ciebie zaktualizowaną odpowiedź, która dalej bada granice Virtuozzo.
Deltik,
@BerryTsakala: Właśnie przyszło mi do głowy, że twój gospodarz może robić coś złowrogiego i mieć nadzieję, że tego nie zauważysz. Niedługo zaktualizuję swoją odpowiedź ze szczegółami.
Deltik,
Dziękuję Ci! już zacząłem usuwać zbędne pliki. Odkryłem również, że spamer nadużywa system, a e-mail wypełnia kolejkę qmaila.
Berry Tsakala,
BTW, i-węzeł się nie sumuje: df -i jest 100 trylionów razy większy niż suma tje zwrócona przez komendę find ... Czy wiesz, jak zlokalizować rozbieżność?
Berry Tsakala,
4

„Przekroczono limit miejsca na dysku” nie oznacza, że ​​na dysku nie ma dostępnego miejsca, ale nie wolno używać tak dużo miejsca.

Zasadniczo przydziały są pewnymi limitami ustalanymi przez administratora - maksymalna liczba procesów, które można uruchomić, ile miejsca można zająć, ile plików można mieć itp. Przydziały dysku można ustawić dla maksymalnej liczby i-węzłów i bloków dysku.

Spróbuj uruchomić quotai quota -g(alternatywnie możesz uruchomić repquota -ui repqouta -g), aby sprawdzić, czy użytkownik jest ograniczony w ten sposób i jak. Jeśli tak, możesz edytować te przydziały za pomocą edquotalub wyłączyć je za pomocą quotaoffpolecenia. W tym celu może być konieczne zalogowanie się jako użytkownik root, w zależności od ustawień.

Ta strona zawiera kilka przykładów pracy z przydziałami, a także zawiera linki do stron podręcznika do przydatnych poleceń.

Adalee
źródło