Secara default systemd jatuh ke shell darurat jika ada kesalahan sedikit pun. Sebagai contoh, jika salah satu mount di fstab gagal karena suatu alasan sistem menjadi tidak dapat di-boot segera. Saya mengelola banyak sistem produksi yang beragam dan saya merasa perilaku ini sangat merusak. (Sebenarnya saya pikir ini kegagalan desain utama, tapi itu pendapat pribadi).
Saya ingin meningkatkan ketahanan boot sistem. Secara optimal sistem harus selalu boot, driver yang hilang, mount, dll. Tidak boleh drop shell darurat, (hanya menunjukkan peringatan saja) kecuali kesalahan yang diberikan akan membuat login konsol benar-benar mustahil. Apa yang bisa dijalankan, itu harus dijalankan.
Saya tahu systemd secara otomatis menghasilkan file * .mount dari / etc / fstab dan saya bisa menggunakan opsi nofail dengan timeout x-systemd.device kecil (atau menentukan sendiri file .mount yang relevan). Namun itu tidak akan menyelesaikan masalah saya, saya ingin membuat sistem lebih tangguh, "menambal" fstab setiap kali sangat tidak nyaman dan saya tidak yakin berapa banyak "masalah" yang mungkin ada yang akan membuat sistem saya tidak dapat di-boot hanya karena beberapa pengembang di suatu tempat berpikir itu cukup penting.
Singkatnya, saya ingin mendapatkan kembali kontrol atas mesin saya dan tidak membiarkan systemd memutuskan masalah apa yang cukup serius untuk menghancurkan proses boot. Apa itu mungkin?
sumber
Jawaban:
Secara harfiah hanya me-mount kegagalan, itu saja yang perlu Anda ubah.
Jadi surat permintaan Anda akan sepele untuk dijawab. Buat file tarik-turun:
Saya percaya ini tidak akan menambah masalah baru, di luar yang sudah dialami oleh linux sysvinit dengan membiarkan skenario kegagalan parsial ini.
Namun Anda juga menunjukkan pertanyaan tentang berapa lama systemd harus menunggu perangkat blok yang ditentukan tersedia. Saya tidak dapat melihat cara untuk mengkonfigurasi ini, tanpa memberikan pengganti untuk generator fstab secara keseluruhan. https://www.freedesktop.org/software/systemd/man/systemd.generator.html
Jika Anda membuang sejumlah besar kode yang kurang banyak digunakan di sini, tampaknya tidak mungkin untuk meningkatkan ketahanan sistem. Saya pikir solusi terdekat adalah dengan menambal generator fstab yang ada. Ini tidak terlalu rumit, saya kira Anda bisa lolos / mengikuti perubahan signifikan.
Secara teknis, jika distribusi Anda memiliki
mountall
skrip sysvinit mandiri , Anda dapat mencoba mengaitkannya. Tetapi itu akan secara signifikan mengubah proses boot - sebenarnya lebih dari garpu. Saya tidak akan merekomendasikan pendekatan itu.https://unix.stackexchange.com/a/393711/29483
sumber
[Unit]\nOnFailure=
nofail.conf saya. Tampaknya mungkin untuk mengkonfigurasi waktu tunggu di /etc/systemd/system.conf (melalui opsi DefaultTimeoutStartSec generik). Sistem saya biasanya cukup cepat, 90-an sepertinya merupakan pembunuhan berat. Solusi ini tampaknya menjanjikan.OnFailure=
di/lib/systemd/system/local-fs.target
bukan/etc/systemd
(Ubuntu 16.04 pada AWS)[Unit]
sebelumnyaOnFailure=
.Matikan pemasangan otomatis dari setiap sistem file yang tidak penting untuk operasi boot dengan menambahkan
noauto
opsi mount ke/etc/fstab
entri:untuk:
dan kemudian pasang sistem file setelah boot dengan menggunakan baris di
/etc/rc.local
:Contoh ini menggunakan NFS tetapi juga berlaku untuk LUN yang diimpor dari server file.
sumber
Coba ini mungkin?
sumber