Adakah cara untuk me-restart mesin Linux melalui SSH jika sistem file root tidak berfungsi?

15

Sama seperti rasa ingin tahu; ada yang salah dengan mesin Linux, membuat sistem file root muncul sebagai "64Z". Beberapa perintah berfungsi, seperti top,, dfdan kill, tetapi yang lain suka rebootdengan "perintah tidak ditemukan" (karena tidak dapat membaca sistem file root), dan chmodmuncul dengan kesalahan segmentasi.

Apakah ada cara untuk me-restart sistem, yaitu tanpa rebootprogram? Saya mencoba kill -PWR 1(mengirim SIGPWR ke init), tetapi ini sepertinya tidak melakukan apa-apa.

Ini sebagian besar keingintahuan akademik. Rekan kerja yang melakukan apa pun pekerjaan database besar yang menyebabkan kegagalan akan secara fisik memulai kembali mesin segera.

gatoatigrado
sumber
Semoga ini akan menyelamatkan saya dari masalah lain kali ... [ cyberciti.biz/tips/reboot-linux-box-after-a-kernel-panic.html ]
gatoatigrado
Pernahkah Anda melihat bahwa masalah dengan root fs telah memicu kepanikan kernel?
Hanan N.

Jawaban:

25

Cobalah untuk reboot dengan kunci sysrq ajaib:

echo b > /proc/sysrq-trigger

Untuk informasi lebih lanjut baca dokumentasi wiki atau kernel .

buru-buru
sumber
1
Terima kasih! Ini memang reboot sistem. (Sayangnya, apa pun yang terjadi pada sistem berkas root tampaknya tidak dapat dipulihkan ... sedih)
gatoatigrado
5

RAC (kartu akses jarak jauh) atau iLO (lampu padam terintegrasi) atau MP (prosesor manajemen) akan memberi Anda sarana untuk mereset server Anda.

Misalnya jika Anda memiliki Dell PowerEdge dengan kartu RAC (disebut DRAC), Anda dapat memberi daya siklus server melalui ssh:

ssh drac "racadm serveraction powercycle"

Opsi lainnya adalah menggunakan Web-GUI untuk RAC / iLO dan melakukan hal yang sama di sana.

Ada standar terbuka untuk hal ini juga: IPMI.

Nils
sumber
3

Yang lebih menarik daripada jawaban @Rush, adalah kemampuan untuk me-restart (dan lebih banyak lagi) sistem, bahkan jika sistem sama sekali tidak menanggapi keyboard. Tetapi itu harus ditanggapi dengan paket ping (ICMP).

Lihat di sini untuk dokumentasi & instruksi lengkap tentang cara mengimplementasikannya.

Hanan N.
sumber
4
Bagaimana kalau benar-benar memberikan arahan / ringkasan prinsip alih-alih hanya tautan?
kizzx2
Anda perlu melakukan sedikit pengaturan untuk pendekatan itu, tapi jelas ide yang rapi.
gatoatigrado
Kedengarannya menarik - tetapi bukankah ada risiko keamanan yang cukup besar yang terlibat? Mengizinkan server untuk di-boot ulang melalui satu paket ICMP tampaknya seperti serangan penolakan layanan yang menunggu untuk terjadi.
bgvaughan
@ bgvaughan: Anda benar, dan pada tautan yang saya berikan di atas, ada pro dan kontra tentang hal itu, dan salah satunya adalah keamanan, meskipun Anda dapat membatasi siapa yang dapat melakukan itu.
Hanan N.
2

Cara termudah biasanya dengan hanya mengubah runlevel.

Di Linux, Anda dapat melakukan:

Prompt# init 6

Informasi lebih lanjut di sini: http://linux.about.com/od/itl_guide/a/gdeitl36t04.htm

Patrick
sumber
1
Ini tidak akan berfungsi dalam situasi ini. perintah init ada di / sbin (setidaknya di ubuntu), jadi itu membutuhkan akses sistem file.
Cerah
1

Ini membutuhkan pengaturan sebelumnya, tetapi jika Anda terbiasa dengan mesin crash (misalnya karena Anda melakukan pengembangan tingkat rendah di atasnya), Anda mungkin ingin mengatur pengawas , yaitu tugas-tugas kernel atau pengguna yang reboot secara otomatis ketika itu menjadi tidak responsif. Linux dapat menggunakan pengawas perangkat keras jika motherboard Anda memilikinya, atau pengawas perangkat lunak sebaliknya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber