Автор Тема: Бутлуп на Debian  (Прочитано 2010 раз)

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

Оффлайн Stealch

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Бутлуп на Debian
« : 22 Сентябрь 2018, 20:07:05 »
Служивший верой и правдой Sun Cobalt RAQ4 ни с того ни с сего ушел в бутлуп. Покопавшись я наткнулся на неприятнейшую проблему: поскольку железка старенькая, у нее контроллер ATA не позволяет диски больше чем 40 GB. Решение простое: в слот расширения поселил SATA контроллер и поставил диск на 2 TB - все без проблем, пока я не прописал его в fstab... После ребута я получил бутлуп. Суть такова: модуль sata_via для контроллера подгружается ПОСЛЕ выполнения монтирования, соответственно ОС виснет на том, что один диск из fstab не работает. Как решить? Debian 4, новее ничего этот раритет не потянет.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1362
Re: Бутлуп на Debian
« Ответ #1 : 22 Сентябрь 2018, 20:51:28 »
Как решить?

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

Оффлайн Stealch

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Бутлуп на Debian
« Ответ #2 : 22 Сентябрь 2018, 21:32:19 »
Монтировать этот диск не из fstab а позже, после загрузки модуля sata_via.
Спасибо, Кэп! А нет ли варианта подгрузки модуля ДО монтирования этого диска? Я например не знаю куда впихнуть подгрузку модуля, кроме /etc/modules. Сейчас копаю init-скрипты, но все они подгружаются после монтирования ФС...  А вот когда и что выполняет монтирование - я не знаю.
« Последнее редактирование: 22 Сентябрь 2018, 22:32:09 от Stealch »
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1362
Re: Бутлуп на Debian
« Ответ #3 : 22 Сентябрь 2018, 22:06:02 »
Спасибо, Кэп!

Не за что.

А нет ли варианта подгрузки модуля ДО монтирования этого диска?

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

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

Оффлайн Stealch

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Бутлуп на Debian
« Ответ #4 : 22 Сентябрь 2018, 22:38:56 »
что вы УЖЕ пробовали и что не получается.
Да пока я ничего не пробовал. Если ушатаю эту ОС - восстановить уже не получится, все инструкции почили в бозе вместе с сайтами, на которых были. Что-то я умудрился сохранить, а что-то потеряно бесследно. Забутиться и исправить свои художества я всегда смогу - у этого серва нет биоса как такового, у него там родное ядро вшито.
В любом случае, автоматически смонтировать ваш диск на 5 или 10 секунд позже, когда гарантированно загрузится модуль, намного проще, чем заставить сам модуль грузиться раньше.
Ну я тоже пришел к такому выводу. Только как это сделать? В fstab паузу не поставить (или поставить, а я не знаю как?). Копание в init скриптах ничего не дало, да и не могло дать, ибо они все же стартуют после того, как ФС смонтированы... Может где-то есть правила монтирования, где можно прописать зависимость от загрузки модуля? Или Вы предлагаете прописать монтирование диска в rc.local?
« Последнее редактирование: 22 Сентябрь 2018, 22:48:11 от Stealch »
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1362
Re: Бутлуп на Debian
« Ответ #5 : 22 Сентябрь 2018, 23:06:16 »
В файл /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
Всё.

« Последнее редактирование: 24 Сентябрь 2018, 17:30:25 от ecc83 »
 

Оффлайн Stealch

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Бутлуп на Debian
« Ответ #6 : 23 Сентябрь 2018, 12:54:45 »
Спасибо, попробую. Вчера пробовал переделать initramfs по инструкции - результата нет, видимо возникает race condition. Вот тут описывается схожая ситуация.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1362
Re: Бутлуп на Debian
« Ответ #7 : 24 Сентябрь 2018, 13:02:43 »
Подправил своё сообщение выше. Думаю с проверкой будет надёжнее.

Вот тут описывается схожая ситуация.

Вообще то не совсем схожая. Там описывается проблема подключения nfs сетевого диска ДО запуска сетевого интерфейса.
В вашем случае, к сети это отношения не имеет, потому что у вас монтирование обычного локального диска :)
« Последнее редактирование: 24 Сентябрь 2018, 14:00:52 от ecc83 »
 

Оффлайн Stealch

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Бутлуп на Debian
« Ответ #8 : 26 Сентябрь 2018, 10:02:55 »
В вашем случае, к сети это отношения не имеет, потому что у вас монтирование обычного локального диска
Ну тут суть в том, что в описанной ситуации у него race condition возникает из-за отсутствия поднятого сетевого интерфейса, а у меня из-за отсутствия подгруженного модуля на момент монтирования. Выскочила еще одна проблема, подозреваю что в ней кроется  загвоздка, ибо initramfs я переделал и модуль по идее должен быть подгружен вовремя. Странная ситуация с самим диском. При монтировании возникает ошибка, а при проверке e2fschk пишет мне какую-то ересь. Он мне написал, что контроллер в режиме ATA33, что, конечно, верно, но для основного контроллера сервера и никак не верно для SATA-контроллера. При этом он видит порядка 8 проблемных inodes, но не исправляет их. Самое интересное в том, что диск монтируется и работает, данные доступны. Попытаюсь выполнить проверку диска на другой машине, возможно что проблема кроется именно тут. Или допишу errors=ro в fstab.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1362
Re: Бутлуп на Debian
« Ответ #9 : 26 Сентябрь 2018, 10:09:32 »
Странная ситуация с самим диском. При монтировании возникает ошибка, а при проверке e2fschk пишет мне какую-то ересь. Он мне написал, что контроллер в режиме ATA33, что, конечно, верно, но для основного контроллера сервера и никак не верно для SATA-контроллера. При этом он видит порядка 8 проблемных inodes, но не исправляет их.

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

Оффлайн Stealch

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Бутлуп на Debian
« Ответ #10 : 26 Сентябрь 2018, 10:15:05 »
А как было ДО ваших манипуляций с initramfs? Когда вы вручную монтировали, такой ошибки небыло?
Была. Ошибку на диске вызвало отключение питания в момент заливки файла. Тогда я просто бросил на диск пустой файл forcefsck и забил на это. Собственно после этого сервак лег и я отложил решение проблемы. Сейчас, спустя год, что-то вспомнилось и захотелось продолжить.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1362
Re: Бутлуп на Debian
« Ответ #11 : 26 Сентябрь 2018, 12:46:16 »
В самом первом сообщении вы писали:

поселил SATA контроллер и поставил диск на 2 TB - все без проблем, пока я не прописал его в fstab...

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

Теги: