8 советов для решения проблем с диском Linux и Unix
Can’t write to the hard disk — (не могу записать на жесткий диск) на Linux/Unix системах. Получали такое сообщение? Хотите проверить поврежден ли диск или нет? Хотите понять почему получили сообщение «диск переполнен»? Попробуйте эти 8мь советов, что бы решить проблему с диском.
1. Ошибка: Нет свободного места на устройстве
Когда диск полон на Unix-подобной системе вы получите сообщение об ошибке на экране. Вот например
Первым шагом является запуск команды DF, чтобы узнать информацию об общем пространстве и свободном пространстве в файловой системе, включая разделы:
Или попробуйте читаемый формат
Решение проблемы, когда диск полон:
Сжатие журналов и других файлов используя GZIP или bzip2
Удалить ненужные файлы с помощью команды rm на Unix-подобной системе
Перемещение файлов на другой раздел системы или внешний жесткий диск, используя Rsync команду:
Узнайте самые большие каталоги или файлы которые используют дисковое пространство на Unix-подобных systesm:
Обрезать конкретный файл. Это полезно для файла журнала:
truncate -s 0 /ftpusers/ftp.upload.log
Найти и удалить большие файлы, которые открыты, но были удалены на Linux или Unix:
2. Файловая система находится в режиме только для чтения
Вы можете в конечном итоге получить такое сообщение об ошибке следующим образом, когда вы пытаетесь создать файл или сохранить файл:
Запустите команду монтирования, чтобы узнать, файловая система смонтирована в режиме только чтение:
Чтобы устранить эту проблему, просто перемонтировать файловую систему в режиме чтения-записи:
3. Проблема с дескриптором
Иногда, DF команда сообщает, что есть достаточно свободного места, но система утверждает, файловая система заполнена. Вы должны проверить inode, которые идентифицируют файл и его атрибуты на файловых системах с помощью следующей команды:
Если 100% ваших дескрипторов используются, попробуйте следующие варианты:
- Найти ненужных файлов и удалять или перемещать на другой сервер.
- Найти нежелательные большие файлы и удалить или переместить на другой сервер.
4. Жесткий диск умирает
Ошибки ввода / вывода в лог-файл (например, /var/log/messages) указывает, что что-то не так с жестким диском, и это может быть сбой. Вы можете проверить жесткий диск на наличие ошибок, используя команду smartctl. Синтаксис:
Вы также можете использовать «Disk Utility», чтобы получить ту же информацию
5. Диску или серверу сильно жарко.
Высокие температуры могут привести к плохому функционированию. Так что вам нужно поддерживать нужной температуры сервера и диска. Высокие температуры могут привести к завершении работы сервера или повреждения системы и файлов на диске. Только современные жесткие диски имеют датчик температуры. Hddtemp поддерживает чтение SMART информации от SCSI-диски тоже. Hddtemp может работать как простой инструмент командной строки или как демон, чтобы получить информацию от всех серверов:
Русские — Организуйтесь !
Увы, в моём ноутбуке прозошёл сбой в работе жёсткого диска и я уже было приготовился идти в ближайший магазин компьтерных запчастей подсчитывая в голове предстоящие раcходы на замену вышедшего из строя диска фирмы Seagate, 160 гигабитного Momentus ST9160827AS . но на даный момент всё оказалось не так уж плачевно — диск работает, и это всё я пишу со своего ноутбука под управлением всё той же ОС Linux того же самого програмного обеспечения при котором и произошёл предыдущий катастрофичесикий сбой . однако же это надо исправить и перейти на что-то другое — в надежде что в ближайшем будущем ничего подобного не повторится.
В начале
Ничто не предвещало страшного! Но страшное рано или поздно приходит к каждому не спрашивая на то позволения, не учитывая готовы вы к этому или нет. И вот однажды, после короткого зависания системы во время обычного выключения ноутбука, я затем примерно в течении 15-ти минут смотрел на чёрный экран на котором нехотя и еле-еле появлялись сообщения системных скриптов выключения системы которые обычно исполняются перед выключением питания. Я уже было хотел сдаться и нажать на блестящую кнопку ВКЛ/ВЫКЛ на поверхности корпуса ноута что бы закончить быстрее это тягостное ожидание перед внезапно ставшей неисправной системой, но как раз кстати ноутбук всё таки соизволил отключиться. Включил я его снова только на следующий день.
По экрану друг за другом пошли странные и непонятные сообщения от ядра о какой то ошибке в S(ATA) подсистеме которые мне были совершенно не понятны, да и врятли кто либо другой кроме тех кто в этом очень хорошо разбирается смог бы что-то там понять.
Вот оно и пришло — компьютерный бука добрался и до моего нотбука. И насколько я был на тот момент готов к этому — абсолютно не готов! Учитывая что ноутбук достался мне новый и с неполадками в его работе с помощью и в условиях програмной среды ОС Linux я не имел на тот момент. Т.е. счастье моё было полным и окончательным.
Из имевшихся средств спасения, у меня был только некий установочный диск с неким дистрибутивом Linux, название которого я сейчас не хочу называть так как собираюсь в ближйшее время перейти к использованию на ноутбуке дистрибутива Ubuntu Linux 10.04, который очевидно немного лучше чем тот что мне приходится использовать сейчас.
Но как бы там ни было, его вполне хватило что бы разобраться с возникшими проблемами. Так что не нужно быть слишком жестоким и говорить только плохое об этом дистрибутиве, в конце концов люди вложили в его разработку какие то усилия с которыми можно считаться.
Из средств спасения мне были доступны програмы из пакета e2fsprogs т.к. на диске разделы содержали файловые системы семейства Ext3 и Ext4, но прежде чем приступать к каким либо действиям, предстояло понять что же вообще за неполадки встали на моём жизненом пути. И как раз это было не так очевидно, ведь как я уже говорил, что о работе жёстких дисков и файловых систем я практически ничего не знал. Хотя чего греха таить, опредёлённый опыт всё же был, но ровно настолько что бы знать и помнить что нужные мне програмы начинаются на e2+имя_програмы, так что с этого и пришлось начать.
Хотя, всё было несколько не так. Кроме установочного диска, пришлось задействовать второй старый компьютер с Dial-Up интернетом и вообще события тех дней пуже покрываются в моей памяти туманом забвения и ореолом быллинных приключений. Я уже успел забыть всё череду судорожных метаний и перезагрузок и размышлений о том как же выбраться из этой катастрофы с наименьшим ущербом, судорожных проверок разделов с помощью e2fsk при этом даже не подозревая что некторые сектора на поверхности диска безвозвратно повреждены головками чтения и что всё это в общем то бестолку и может скорее повредить чем помочь сохранить данные. Поиcтине ученье свет а неученье тьма, но этот опыт слишком часто приходит к человеку слишком поздно.
Долго ли коротко, но я всё таки вытащил с одного и двух неисправных разделов нужные мне файлы скопировав их на 1 гигабитную флашку. Попутно я пытался также загрузить «другой» установочный диск и с помощью Acronis Disk Director Suite посмотреть на имеющиеся разделы, но увидел сообщение о том что у меня вообще нет жёстких дисков. Печально но факт.
Что касается Linux то после того как программа dumpe2fs выдала ошибки только в отношении первых двух разделов, остальные оказались в порядке, и после того как я убедился в их исправности смонтировав их сначала только в режиме для чтения а затем и чтения/записи, было принято решение установить имевшийся Linux на один из исправных разделов и настроив там ADSL интернет (старый компьтер был очень неудобен в этом плане) и найти информацию и такого типа проблеммах и конечно поискать способы решения таких проблем. Это было рисковано, в том смысле что диск всё таки был сломан неизвестным образом и в неизвестной степени и в любой момент мог сломаться совсем — или же мои настроения были таковы в тот момент.
Всё было довольно просто. Я смог найти инcтрукцию по разрешению проблем с сбойными блоками на диске стандартными средствами без необходимости обращаться к специализированым средствам. А эта страница весьма доходчиво обьяснила о том что реалокацией неисправных секторов диска занимается программное обеспечение встроеное в сам диск, но делает оно это только когда происходит неудачная запись в неисправный сектор. Когда такое происходит все последующие обращения перенаправляются на сектор который был выделен для этого из специального резерва на диске. Следуя этим принципам я попытался с помощью dd if=/dev/zero of=/dev/sda1 bs=512 conv=noerror,sync забить сектора раздела нулями и при записи в неисправный сектор должна была происходить автоматическая перелокация неисправных секторов, но не тут то было, на неисправных секторах dd вылетал с ошибкой ввода/вывода. Это было неожидано, т.к. здесь насколько я смог это усвоить ни о чём таком не упоминалось. Ну, горе не беда, dd при сбое в работе показывает на каком секторе прозошёл сбой записи и поэтому сложив номер проблемного сектора с размером сектора диска т.е. 512 можно применить парметр seek=NNN где NNN количество секторов которые нужно пропустить при записи. Так вот, пришлось запускать dd на запись несколько раз, но при этом возникала ещё одна проблемма, диск нагревался до 56-57 градусов цельсия и при этом нормализованое значение S.M.A.R.T по выводимой информации smartctl -a /dev/sda было меньше порогового значения и приближалось к худшему . и в такой ситуации не очень понятно что выбрать — пытаться исправить диск и при этом испортить его окончательно перегревом или времено выключить ноутбук и потом попробовать снова когда всё остынет. Я выбирал средний вариант потому что сколько бы я не остужал ноутбук, когда процедура записи раздела в 50 гигабит подходила к середине, диск уже был обычно перегрет изрядно и SMART наивно информировал меня что в данный момент диск перегрет и происходит его отказ. Между всего этого я вспомнил про свои предыдущие попытки применить програму проверки исправности блоков диска под названием badblocks из того же пакета програм e2fsprogs, но раньше я использовал эту програму неграмотно, теперь же я прочитал внимательно man-страницу этой программы и решил использоавть её там где dd не мог справиться — хотя это была надежда а не чёткое знание что это сработает, хотя и выбора то другого не было. И всё получилось, команда badblocks -b 512 -s -v -w /dev/sda5 сделала то что и должна была — четыре раза попыталась произвести запись в сектора одних и тех же последовательностей данных а затем считать их и сравнив записаное со считаным установить исправность блоков. Правда, нужно отметить что при применение этой команды к 50Гб разделу, уже при первом проходе диск начинал разогреваться как уголёк, что и привело в итоге к тому что приходилось это прекращать и ограничиться одним циклом записи/чтения для проверки.
В итоге, неисправные секторы были переалоцированы, всего по данным SMART их сейчас 56, а насколько это много я не знаю, и оба раздела которые создали столько проблем сейчас отформатированы и судя по всему исправны насколько можно это отнести к диску прошедешу такие испытания — head crash и перегревы до ненормальных значений температур.
В заключение, скажу ещё раз — лучше подготовится к таким проблемам заранее и не думать что их не будет.