Бутлуп на Debian

Автор Stealch, 22 сентября 2018, 20:07:05

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Stealch

Служивший верой и правдой Sun Cobalt RAQ4 ни с того ни с сего ушел в бутлуп. Покопавшись я наткнулся на неприятнейшую проблему: поскольку железка старенькая, у нее контроллер ATA не позволяет диски больше чем 40 GB. Решение простое: в слот расширения поселил SATA контроллер и поставил диск на 2 TB - все без проблем, пока я не прописал его в fstab... После ребута я получил бутлуп. Суть такова: модуль sata_via для контроллера подгружается ПОСЛЕ выполнения монтирования, соответственно ОС виснет на том, что один диск из fstab не работает. Как решить? Debian 4, новее ничего этот раритет не потянет.

ecc83

Цитата: Stealch от 22 сентября 2018, 20:07:05Как решить?

Монтировать этот диск не из fstab а позже, после загрузки модуля sata_via.

Stealch

#2
Цитата: Stealch от 22 сентября 2018, 20:07:05Монтировать этот диск не из fstab а позже, после загрузки модуля sata_via.
Спасибо, Кэп! А нет ли варианта подгрузки модуля ДО монтирования этого диска? Я например не знаю куда впихнуть подгрузку модуля, кроме /etc/modules. Сейчас копаю init-скрипты, но все они подгружаются после монтирования ФС...  А вот когда и что выполняет монтирование - я не знаю.

ecc83

Цитата: Stealch от 22 сентября 2018, 21:32:19Спасибо, Кэп!

Не за что.

Цитата: Stealch от 22 сентября 2018, 21:32:19А нет ли варианта подгрузки модуля ДО монтирования этого диска?

Для того, что бы вам чего либо советовать, нужно знать, что вы УЖЕ пробовали и что не получается. Но поскольку вы немногословны, вероятно вы привыкли общаться с экстрасенсами. К сожалению к ним я не отношусь.

В любом случае, автоматически смонтировать ваш диск на 5 или 10 секунд позже, когда гарантированно загрузится модуль, намного проще, чем заставить сам модуль грузиться раньше.
К тому же Debian 4 помнят только "пенсионеры", которых не много (или вовсе нет) на форуме.
Поэтому выход один, ждать экстрасенсов ;)

Stealch

#4
Цитата: ecc83 от 22 сентября 2018, 22:06:02что вы УЖЕ пробовали и что не получается.
Да пока я ничего не пробовал. Если ушатаю эту ОС - восстановить уже не получится, все инструкции почили в бозе вместе с сайтами, на которых были. Что-то я умудрился сохранить, а что-то потеряно бесследно. Забутиться и исправить свои художества я всегда смогу - у этого серва нет биоса как такового, у него там родное ядро вшито.
Цитата: ecc83 от 22 сентября 2018, 22:06:02В любом случае, автоматически смонтировать ваш диск на 5 или 10 секунд позже, когда гарантированно загрузится модуль, намного проще, чем заставить сам модуль грузиться раньше.
Ну я тоже пришел к такому выводу. Только как это сделать? В fstab паузу не поставить (или поставить, а я не знаю как?). Копание в init скриптах ничего не дало, да и не могло дать, ибо они все же стартуют после того, как ФС смонтированы... Может где-то есть правила монтирования, где можно прописать зависимость от загрузки модуля? Или Вы предлагаете прописать монтирование диска в rc.local?

ecc83

#5
В файл /etc/crontab в самый низ вставляете такую строку:


@reboot root    /root/bin/sata_mount
#


В каталоге /root/bin создаёте файл sata_mount с командой монтирования своего диска.

Например так:


#!/bin/bash

MODULE=sata_via
DISK=/dev/sdb1
DIR=/media/sata

if [[ $EUID -ne 0 ]]; then
    clear; echo "This script must be run as root"
    exit 1
fi

sleep 5

if lsmod | grep "$MODULE" &> /dev/null; then
if [ ! -d $DIR ]; then mkdir -p $DIR; fi
    mount -t ext4 $DISK $DIR
    exit 0
else
    echo $(date '+%b %d %T') $(uname -n) Module "$MODULE" not found... >> /var/log/syslog
fi


Имя устройства и точку монтирования (переменные DISK и DIR) исправьте на свои.

Скрипт запускается с задержкой 5 секунд, проверяет что модуль sata_via уже загружен, создаёт при необходимости точку монтирования и монтирует ваш диск. Подразумевается, что файловая система на диске ext4.
В случае неудачи, в var/log/syslog будет сообщение, что модуль не найден, тогда придётся увеличить время "ожидания" sleep.

Не забудьте сделать файл исполняемым:

chmod a+x /root/bin/sata_mount

Всё.


Stealch

Спасибо, попробую. Вчера пробовал переделать initramfs по инструкции - результата нет, видимо возникает race condition. Вот тут описывается схожая ситуация.

ecc83

#7
Подправил своё сообщение выше. Думаю с проверкой будет надёжнее.

Цитата: Stealch от 23 сентября 2018, 12:54:45Вот тут описывается схожая ситуация.

Вообще то не совсем схожая. Там описывается проблема подключения nfs сетевого диска ДО запуска сетевого интерфейса.
В вашем случае, к сети это отношения не имеет, потому что у вас монтирование обычного локального диска :)

Stealch

Цитата: ecc83 от 24 сентября 2018, 13:02:43В вашем случае, к сети это отношения не имеет, потому что у вас монтирование обычного локального диска
Ну тут суть в том, что в описанной ситуации у него race condition возникает из-за отсутствия поднятого сетевого интерфейса, а у меня из-за отсутствия подгруженного модуля на момент монтирования. Выскочила еще одна проблема, подозреваю что в ней кроется  загвоздка, ибо initramfs я переделал и модуль по идее должен быть подгружен вовремя. Странная ситуация с самим диском. При монтировании возникает ошибка, а при проверке e2fschk пишет мне какую-то ересь. Он мне написал, что контроллер в режиме ATA33, что, конечно, верно, но для основного контроллера сервера и никак не верно для SATA-контроллера. При этом он видит порядка 8 проблемных inodes, но не исправляет их. Самое интересное в том, что диск монтируется и работает, данные доступны. Попытаюсь выполнить проверку диска на другой машине, возможно что проблема кроется именно тут. Или допишу errors=ro в fstab.

ecc83

Цитата: Stealch от 26 сентября 2018, 10:02:55Странная ситуация с самим диском. При монтировании возникает ошибка, а при проверке e2fschk пишет мне какую-то ересь. Он мне написал, что контроллер в режиме ATA33, что, конечно, верно, но для основного контроллера сервера и никак не верно для SATA-контроллера. При этом он видит порядка 8 проблемных inodes, но не исправляет их.

А как было ДО ваших манипуляций с initramfs? Когда вы вручную монтировали, такой ошибки небыло?

Stealch

Цитата: ecc83 от 26 сентября 2018, 10:09:32А как было ДО ваших манипуляций с initramfs? Когда вы вручную монтировали, такой ошибки небыло?
Была. Ошибку на диске вызвало отключение питания в момент заливки файла. Тогда я просто бросил на диск пустой файл forcefsck и забил на это. Собственно после этого сервак лег и я отложил решение проблемы. Сейчас, спустя год, что-то вспомнилось и захотелось продолжить.

ecc83

В самом первом сообщении вы писали:

Цитата: Stealch от 22 сентября 2018, 20:07:05поселил SATA контроллер и поставил диск на 2 TB - все без проблем, пока я не прописал его в fstab...

Что у вас означает "все без проблем" ? И что вы сейчас "лечите"?