Алексей Стахнов - Linux
Повреждение или удаление разделяемых библиотек
В случае повреждения разделяемых библиотек операционную систему, как правило, можно будет перезагрузить только с помощью аварийной загрузочной дискеты.
Поскольку работа всех компонентов операционной системы Linux полностью зависит от разделяемых библиотек, в случае их отсутствия или повреждения ни одну из обычных команд и утилит выполнить невозможно. В последних версиях Linux лишь очень небольшое количество программ связано с библиотеками статически. Именно по этой причине стандарт File Hierarchy Standard (Стандарт иерархии размещения файлов) требует, чтобы каталог /lib находился непосредственно в корневом каталоге, а также рекомендует избегать его использования в качестве точки монтирования.
Поскольку программы, используемые в нормальном процессе остановки системы, также могут быть динамически связаны с системными библиотеками, самым лучшим способом безопасной перезагрузки систем будет использование метода Magic SysRq, описанного ранее.
В противном случае потребуется перезагрузить машину с аварийной дискеты, после чего восстановить в системе корректные копии разделяемых библиотек.
Сообщение «getcwd: cannot access parent directories»
Это сообщение выводится в том случае, если некоторый процесс переходит в каталог с ограниченным доступом. Здесь этот процесс отменяет свои привилегии или вызывает функции setuido или setgido для объекта, который не имеет права доступа к одному из родительских каталогов, входящих в путь, ведущий в текущий рабочий каталог.
Как правило, в этом случае дочерний процесс, не имеющий необходимых привилегий, не может использовать команду is или даже команду echo *.
Чаще всего подобная ситуация возникает тогда, когда некоторым пользователям присвоены неверные права по отношению к каталогу, ведущему к их основному каталогу.
Программа вызывает SIG11
Если программа сообщила, что было вызвано прерывание SIG11 и получен дамп ядра, это обычно означает, что в вашей системе проблемы с оборудованием.
Обычно такого плана ошибки вызывают модули памяти, отдельные ячейки микросхем которых некорректно работают, причем эта проблема может не проявляться неделями. Реже подобную ошибку вызывает нестабильно работающая материнская плата.
Народное средство проверки нестабильной памяти – несколько раз подряд произвести компиляцию ядра операционной системы. Если попытка откомпилировать ядро операционной системы Linux завершится выдачей сообщения Internal compiler error со ссылкой на прерывание SIG11, причина, вероятнее всего, в ненадежной работе оперативной памяти.
К сожалению, в современных микросхемах оперативной памяти чрезвычайно трудно надежно выявить непостоянные отказы. Компьютеры и операционные системы настолько сложны, что простая последовательность операций "запись, чтение, проверка" в оперативной памяти едва ли будет пригодна для выявления проблем с оборудованием.
Если предполагается, что ошибка связана с оборудованием, попробуйте установить в компьютер другие модули памяти.
Превышение максимального количества открытых файлов
Ядро имеет ограничение, связанное с максимальным количеством одновременно открытых файлов, которое задается при компиляции ядра операционной системы. Достижение операционной системой этого предела приводит к тому, что операционная система отказывает в открытии файла.
Изменить текущее значение этого параметра можно отредактировав псевдофайлы /proc/sys/kernel/file-max и /proc/ sys/kernel/inode-max.
Например:
inode-max = 32768 file-max .=5.120
Два параметра системы – максимальное количество задач в системе и максимальное количество задач для одного пользователя – переопределяются при компиляции ядра. Используемые значения задаются в файле параметров ядра.
Проблемы с файловыми системами
Далее речь пойдет об устранении различных проблем, которые возникают при работе с файловыми системами.
Ошибка «unable to find swap-space signature»
Подобная ошибка может возникнуть в том случае, когда одно и то же дисковое пространство страниц виртуальной памяти используется одновременно несколькими операционными системами, либо была повреждена таблица swap-раздела.
При появлении такой ошибки необходимо воспользоваться командой fdisk для повторной проверки типов разделов, описанных в таблице разделов диска. Убедившись, что все выполненные для разделов назначения корректны, введите команду mkswap.
Переполнение файловой системы
Если пользователь заполнит все дисковое пространство, выделенное файловой системе, то за пользователем root резервируется некоторый свободный объем дискового пространства. Как справедливо предусмотрели разработчики файловой системы, администратору и некоторым утилитам необходимо наличие некоторого пустого дискового пространства для нормальной работы с переполненным разделом.
Разрешение на использование этого резервного пространства может быть предоставлено отдельному пользователю или группе пользователей при помощи утилиты tune2fs.
Очевидным решением этой проблемы является удаление некоторых файлов, либо архивирование редко используемых файлов.
В том случае, если пользователь root или процесс, запущенный с правами пользователя root, вызовет переполнение диска, начнется заполнение резервного пространства диска. По этой причине почта для пользователя root всегда должна посылаться на учетную запись, не имеющую особых привилегий, а ротация файлов журналов должна тщательно контролироваться.
Для предупреждения случаев переполнения файловых систем целесообразно использовать какую-либо программу мониторинга состояния операционной системы.
Переполнение числа блоков индекса файловой системы
Переполнение числа блоков индекса файловой системы возможно даже в том случае, когда основное пространство файловой системы еще не заполнено. Этот показатель не имеет отношения к параметру ядра, описывающему максимальное количество одновременно открытых блоков индексов. Если файловая система содержит большое количество файлов размером менее 4 Кбайт, то все блоки индекса такой файловой системы могут оказаться заполненными раньше, чем ее основное пространство.
Отношение количества блоков индекса к количеству блоков данных любой заданной файловой системы устанавливается при ее создании (параметр -i команды mke2fs). Файловые системы, предназначенные для размещения спула групп новостей, всегда должны иметь увеличенное отношение числа блоков индекса.
Подозрение на наличие сбойного кластера или сектора
В том случае, если вы заподозрили, что на вашем жестком диске появились сбойные кластеры, можно запустить утилиту для проверки жесткого диска на наличие сбойных секторов. Эту операцию необходимо производить в то время, когда никто не работает с компьютером, поскольку она может затянуться на достаточно длительное время.
Для выявления сбойных блоков и помещения сведений о них в соответствующий список файловой системы типа Ext2 можно использовать команду e2fsck -c.
При выполнении команды mount доступ к системе блокируется
В некоторых случаях выполняемый процесс может «зависнуть», если команда mount применяется к файловой системе на устройстве, не отвечающем на запросы системы. Кроме того, подобная ситуация иногда возникает при обращении к устройствам активной SCSI-цепочки, которые отсоединены или выключены.
Подобные ситуации могут происходить и при переключении на другие виртуальные консоли, регистрации через последовательные терминалы или соединения telnet и т. п. Если запустить утилиту ps, то подобные «подвешенные» процессы отмечаются как находящиеся в состоянии D. Выполнение для подобного процесса команды kin -9 не оказывает на этот процесс никакого влияния, поскольку обработка сигналов блокируется на все время, пока процесс ожидает завершения выполнения подпрограммы системного вызова ядра операционной системы.
В подобном состоянии операционная система может находиться сколько угодно долго, причем она будет нормально функционировать до тех пор, пока не будет предпринята попытка обращения к «подвешенному» процессу или устройству. Чтобы выйти из этого положения, необходимо корректно завершить все процессы операционной системы (которые не находятся в «подвешенном» состоянии), после чего компьютер можно будет перезагрузить.
Случайное удаление файла
Если все ссылки на файл и все связанные с ним блоки обработки уже удалены, то после закрытия последнего открытого для него дескриптора занятое файлом пространство становится доступным для системного драйвера сборки мусора. Как только занимаемое ранее файлом пространство будет очищено этим драйвером, файл будет утрачен навсегда.
В состав Linux включен документ "Undelete HOWTO" и несколько редакторов шестнадцатеричных данных. В частности, программы ext2ed и debugfs предоставляют некоторые инструменты, которые могут оказаться полезными при устранении проблем подобного рода.