Топ 3 начина за коригиране на грешката „Няма останало място на устройството“ в Linux

Грешки без ясна причина са най-дразнещите проблеми, с които трябва да се справите. И докато Linux обикновено е специфичен в своите съобщения за грешки, това е един от малкото случаи, когато изпуска топката.

Получаването на грешка „Няма останало място на устройството“ обяснява много малко, особено ако устройството ви далеч не е пълно. Защо се показва това съобщение за грешка? Защо не можете да създавате нови файлове, въпреки че имате достатъчно място на диска? И най-важното, как го поправяте?

Нека разберем.

Вашият твърд диск наистина има ли достатъчно място(Hard Drive Actually Have Enough Space) ?

Преди да се втурнете да търсите решение, първо се уверете, че има проблем. В крайна сметка, ако дисковото пространство на вашата система действително е свършило, няма нужда да се паникьосвате. Можете просто да премахнете ненужните данни, за да освободите повече място.

Има две системни команди на Linux за получаване на информация за дисковото пространство – du и df. (Linux)Командата du оценява използването на дисковото пространство, докато командата df анализира свободното пространство на диска. Използването им заедно със sudo ви дава точен отчет за това колко място действително е налично на диска.

  1. Да започнем с командата du. Неговият изход може да бъде доста дълъг и тромав за преминаване, така че ще използваме флаговете -s и -h. -s обобщава резултатите, докато -h гарантира, че е четим от човека. Така че въведете командата sudo du -sh / където / сочи към основната директория.

  1. Не се притеснявайте за всички съобщения за отказан достъп – така той преглежда всички поддиректории на системата. В зависимост от размера на устройството може да се наложи да го оставите да работи известно време, тъй като рекурсивно преминава през всичко.

  1. Когато du завърши сканирането, той ще изведе прост списък с директории заедно с техните размери. Например, това е резултатът от командата du, приложена към обикновена директория.

Сега ще използваме df, за да видим колко свободно място има. Командата df е много по-лесна за използване, тъй като показва само монтираните файлови системи и техните статистики за използване. Още веднъж ще използваме флага -h, за да направим изхода четим от човека.

sudo df -h

Идеята е да се сумират резултатите от командите du и df. Всяко несъответствие сочи към дисково пространство, което не е свободно достъпно, въпреки че не се използва от никакви файлове или папки.

Защо Linux показва(Does Linux Show) „Няма останало(Space Left) място на устройството“?

Ако виждате съобщение за грешка „Няма останало място на устройството“, въпреки че имате достатъчно свободно място на вашия диск, не е виновен хардуерът. Откриването на точната причина за грешката може да отнеме малко отстраняване на неизправности.

  • Наскоро изтрит файл: Най-честата причина да видите тази грешка е наскоро изтрит файл. Често файл се изтрива, докато процесът все още го използва, запазвайки запазеното място, въпреки че файлът вече е изчезнал.
  • Няма достатъчно Inodes(Enough Inodes) : Друга често срещана причина е липсата на достатъчно Inodes . Inodes са индексните страници на Unix файлова система, съдържащи метаданните на всеки файл в хранилището. Инодите обаче не са неограничени и изчерпването на инодите преди мястото за съхранение може да ви даде грешка „Няма останало място на устройството“.
  • Повреда на твърдия(Hard) диск: Тогава, разбира се, съществува възможността твърдият диск просто да се повреди и голяма част от очевидното свободно пространство е заето от лоши сектори. Тъй като системата не успява да запише никакви файлове на тези места, тя извежда грешка.

Корекция 1: Рестартиране на процеси чрез изтрити файлове(Using Deleted Files)

Най-вероятната причина за грешката „Няма останало място на устройството“ е процес, който все още използва изтрит файл. За щастие, коригирането на тази грешка е лесно. Просто трябва да рестартирате процеса,(restart the process) за да освободите резервираното място за съхранение.

  1. За да намерите проблемния процес, трябва да използвате командите lsof и grep. Командата lsof ще ви даде списък с всички отворени файлове, използвани от изпълнявани процеси, а grep може да стесни избора до тези, които са изтрити. Затова въведете sudo lsof / | grep изтрит, където / е основната директория и | тръба за свързване на изхода на lsof към grep.

  1. Сега можете да рестартирате засегнатия процес с командата sudo systemctl restart service_name, където името на услугата е името на услугата, която се появи при търсенето.

  1. Ако има множество процеси като този или просто не искате да се занимавате с намирането на конкретни услуги, можете просто да ги нулирате всички с командата sudo systemctl daemon-reload. Това регенерира всички зависимости, като взема предвид всички промени във файловата система.

След това пространството за съхранение, задържано от процеса, трябва да бъде отново достъпно, което ви позволява да пишете файлове, без да се натъквате на грешки.

Корекция 2: Проверете Inodes

Въпреки че всяко устройство има голям брой inode, то е ограничено. И ако системата ви е пълна с невероятен брой файлове, възможно е да достигнете този лимит, преди да изчерпите капацитета за съхранение на устройството. Ето защо е по-добре да имате големи файлове, отколкото твърде много малки.

Можете лесно да проверите наличността на inodes, като използвате флага -i с командата df. Като този:

sudo df -i

Това ясно ще покаже общия брой inodes, налични във файловата система, заедно с количеството, което се използва в момента. Ако няма останали свободни inodes във вашата система, това е източникът на грешката „Няма останало място на устройството“.

Тъй като inodes се създават само при първо форматиране на устройството, няма начин да се генерират повече inodes. Всичко, което можете да направите, е да изтриете всички ненужни файлове, за да освободите inodes за бъдещи файлове.

Корекция 3: Маркирайте лоши блокове

Повредата на данните(Data) е неизбежната съдба на всеки твърд диск. Докато новото устройство няма да се сблъска с този проблем, по-старите твърди дискове постепенно ще започнат да стават „лоши“.

Това означава, че части от твърдия диск стават неизползваеми, въпреки че файловата система все още ги смята за функционални. Тези лоши блокове фалшиво увеличават очевидното свободно пространство на устройството, когато всъщност не могат да се записват файлове в тях. Това води до грешка „Няма останало място на устройството“, тъй като операционната система се опитва и не успява да съхрани никакви данни на тези места.

Няма реален начин за отстраняване на този проблем, тъй като лошите сектори са резултат от физическото износване на твърдия диск. Единственото нещо, което можете да направите, е да маркирате лошите сектори, така че файловата система да не ги използва повече.

За да направите това, трябва да стартирате от Live CD , тъй като не можете да извършите проверка на файловата система(File System Check) в работещо устройство. След като направите това, просто използвайте следната команда:

sudo fsck -vcck /dev/sda

Това замества /dev/sda с пътя на устройството, което искате да поправите. Това автоматично ще открие всички лоши блокове на устройството и ще ги маркира като неизползваеми. Това обаче няма да ви даде допълнителен капацитет за съхранение, така че бъдете готови да изчистите някои безполезни файлове, за да освободите място на устройството.

Кой е най-добрият начин за коригиране на грешката „Няма останало място на устройството“?

Обичайната причина да видите грешка „Няма останало място на устройството“ в Ubuntu или друга Linux дистрибуция е изтрит файл, който все още се използва от работещ процес. Това запазва паметта, която е била заета от файла, предотвратявайки други операции от запис на данни в това пространство.

Отстраняването на този проблем е и най-лесно, тъй като всичко, което трябва да направите, е да рестартирате въпросния процес. Другите причини за грешката обаче не са толкова лесни за отстраняване.

Независимо дали вашето устройство е засегнато от лоши блокове с данни или е изчерпало inodes, няма директен начин за отстраняване на тези проблеми. Трябва да изтриете съществуващи файлове, за да освободите място за записване на нови данни.



About the author

Аз съм компютърен професионалист с над 10 години опит. В свободното си време обичам да помагам на бюрото в офиса и да уча децата как да използват интернет. Моите умения включват много неща, но най-важното е, че знам как да помагам на хората да решават проблеми. Ако имате нужда от някой, който може да ви помогне с нещо спешно или просто искате някои основни съвети, моля, свържете се с мен!



Related posts