Будь-який спосіб перезапустити машину Linux через SSH, якщо коренева файлова система не працює?


15

Так само як цікавість; щось пішло не так з машиною Linux, завдяки чому коренева файлова система відображається як "64Z". Кілька команд працюють, як top, dfі kill, але інші подібні rebootпридумують "команду не знайдено" (оскільки вона не може прочитати кореневу файлову систему) і chmodприходить з помилкою сегментації.

Чи є спосіб перезапустити систему все-таки, тобто без rebootпрограми? Я спробував kill -PWR 1(відправити SIGPWR до init), але це, здається, нічого не зробило.

Це здебільшого академічна цікавість. Лаборант, який виконував будь-яку роботу з великою базою даних, яка спричинила збій, незабаром фізично перезапустить машину.


Сподіваюся, це врятує мене від проблеми наступного разу ... [ cyberciti.biz/tips/reboot-linux-box-after-a-kernel-panic.html ]
gatoatigrado

Чи бачили ви, що проблема з коренем fs викликала паніку ядра?
Ханан Н.

Відповіді:


25

Спробуйте перезавантажити за допомогою магічної клавіші sysrq:

echo b > /proc/sysrq-trigger

Для отримання додаткової інформації прочитайте wiki або документацію на ядро .


1
Спасибі! Це перезавантажило систему. (На жаль, все, що трапилося з кореневою файловою системою, видається неповернутим ... сумно).
gatoatigrado

5

RAC (карта віддаленого доступу) або iLO (інтегроване освітлення) або MP (процесор управління) нададуть вам засоби для скидання вашого сервера.

Наприклад, якщо у вас Dell PowerEdge з RAC-карткою (називається DRAC), ви можете запустити живлення на сервер за допомогою ssh:

ssh drac "racadm serveraction powercycle"

Інший варіант - використовувати Web-GUI для RAC / iLO і робити те саме там.

Існує також відкритий стандарт для цього матеріалу: IPMI.


3

Ще цікавіше, ніж відповідь @Rush, - це можливість перезапустити (і багато іншого), навіть якщо система взагалі не відповідає клавіатурі. Але він повинен відповідати пакетам ping (ICMP).

Дивіться тут повну документацію та інструкції, як це здійснити.


4
Як насправді дати короткий опис інструкцій / резюме принципів, а не просто посилання?
kizzx2

вам потрібно зробити трохи налаштування для цього підходу, але, безумовно, акуратну ідею.
gatoatigrado

Це звучить цікаво - але чи не пов'язаний із значним ризиком безпеки? Дозволити перезавантажувати сервер через один пакет ICMP, схоже, атака відмови в обслуговуванні, яка чекає, що станеться.
bgvaughan

@bgvaughan: ти маєш рацію, і за посиланням, яке я наводив вище, є плюси і мінуси щодо цього, і один з них - безпека, хоча ви можете обмежити, хто це може зробити.
Ханан Н.

2

Найпростіший спосіб, як правило, просто змінити рівень запуску.

У Linux ви можете:

Prompt# init 6

Більше інформації тут: http://linux.about.com/od/itl_guide/a/gdeitl36t04.htm


1
Це не вийде в цій ситуації. Команда init знаходиться в / sbin (принаймні, в ubuntu), тому для неї потрібен доступ до файлової системи.
Сонячно

1

Для цього потрібні попередні налаштування, але якщо ви звикли до збоїв на машині (наприклад, тому, що ви робите на ній низький рівень розробки), можливо, ви захочете створити сторожову собаку , тобто завдання ядра або користувача, які автоматично перезавантажують її, коли вона стає невідповідною. Linux може використовувати апаратну сторожову службу, якщо вона має материнську плату, а інший - сторожовий програмний продукт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.