deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

systemd soft-reboot, çekirdek çalışmaya devam ederken userspace'i yeniden başlatıyor

dev.to'da yayımlanan bir rehber, systemctl soft-reboot'un paket güncellemelerinden sonra Linux'ta userspace'i; firmware, bootloader ve çekirdek (kernel) başlatma maliyetine katlanmadan nasıl yeniden kurduğunu anlatıyor.

systemd soft-reboot, çekirdek çalışmaya devam ederken userspace'i yeniden başlatıyor

Makineyi yeniden başlatmadan userspace'i yeniden başlatmak

dev.to'da yayımlanan pratik bir operatör rehberi, çekirdek çalışmaya devam ederken bir Linux sunucusunun userspace'inin tamamını yıkıp yeniden kurabilen bir systemd yeteneği olan systemctl soft-rebootu ele alıyor. Hedeflenen senaryo tanıdık: bir userspace paket güncellemesi kütüphaneleri ve daemon'ları değiştirdi, makine teknik olarak ayakta ama yığının büyük kısmı hâlâ önceki nesli çalıştırıyor. Refleks tam bir reboot atmaktır; oysa çekirdeğin kendisi değişmediği halde bu, firmware başlatma, bootloader, çekirdek başlatma ve initrd maliyetini öder. Soft-reboot, kesintiyi makalenin "service manager yeniden çalıştırma artı yeni bir boot transaction" olarak tanımladığı şeye indirir.

Komut systemd 254 ile geldi; yazar, güncel nesil dağıtımların daha yeni sürümler taşıdığını — örneğin Debian 13'ün 257.x ile geldiğini — bu yüzden özelliğin güncel sistemlerde geniş ölçüde kullanılabilir olduğunu belirtiyor.

Gerçekte ne oluyor

Yazıda alıntılanan man sayfalarına göre systemctl soft-reboot, systemd-soft-reboot.service'i gerektiren soft-reboot.targeta doğru isolate yapar. Transaction'ın sonuna doğru, hayatta kalan süreçlere önce SIGTERM sonra SIGKILL gönderilir; son öldürme dalgasında kibarca beklenmez. Ardından PID 1 service manager'ı yeniden çalıştırır ve sıradan bir reboot'un userspace aşamasına benzer biçimde taze bir boot transaction'ı kuyruğa koyar.

Bilinçli olarak atlanan şeyler ise şunlar: systemd-shutdown'un üstlendiği ikinci kapatma aşaması, initrd bağlamına dönüş, donanım reboot'u, firmware ve bootloader başlatması ile çekirdek ve initrd başlatma. Çekirdeğin elinde tuttuğu durum — yönlendirmeler (route), bazı aygıt yapılandırmaları, sysctl ayarları — dokunulmadan aktarılır.

Bir güvenlik mekanizması da встроенmiştir: hedef, soft-reboot-force'a tırmanan 30 dakikalık bir iş zaman aşımı taşır; böylece takılan bir soft yol, sonsuza dek yarı kapalı durumda asılı kalmak yerine zorla yolunu açar.

Rehberin altını çizdiği keskin bir kenar da var: systemd-soft-reboot.service'i asla elle başlatmayın. İşlemi systemctl soft-reboot ile tetikleyin; bu komut, hedefi --job-mode=replace-irreversibly --no-block ile başlatmaya denk davranır. Komut asenkrondur ve iş kuyruğa girer girmez döner; diğer güç komutları gibi --when= ile zamanlama ve iptal kabul eder.

Reboot'un üç derinliği

Makale araçları üç kademe olarak çerçeveliyor:

  • Soft-reboot: yalnızca userspace; çekirdek kalır, firmware ve bootloader atlanır. Userspace tazelemeleri ve A/B kök geçişlerine uygundur.
  • kexec: firmware yolu büyük ölçüde atlanan yeni bir çekirdek; tam POST olmadan çekirdek güncellemeleri için.
  • Tam reboot: firmware, çekirdek, initrd veya aygıt topolojisi değişiklikleri için tam döngü.

Sözleşme önemli: soft-reboot salt daha hızlı bir reboot değildir. Çekirdek durumu süreklidir ama userspace durumu — hayatta kalanlar bilinçli olarak sabitlenmedikçe — değildir. Rehberde atıf yapılan ArchWiki, kilidi açılmış dm-crypt aygıtlarının bir soft-reboot boyunca bağlı kalabileceğini ekler ve soft-reboot'u çekirdeği ve initramfs'i değiştiren güncellemelerden sonra yeterli saymamanız gerektiği konusunda uyarır — bunlar hâlâ kexec veya tam reboot gerektirir.

Doğrulama ve sınırlar

Etkileşimli bir SSH oturumu tıpkı bir reboot sırasında düşeceği gibi düşer; bu yüzden konsol veya out-of-band erişim planlayın. Önerilen öncesi-sonrası kontroller: uname -r sonradan değişmemiş olmalı, çünkü değişen bir sürüm gerçekten soft-reboot yapmadığınız anlamına gelir; UserspaceTimestamp ilerlemeliyken FirmwareTimestamp, LoaderTimestamp ve KernelTimestamp sürekliliğini korumalıdır; systemctl --failed ve taze bir journalctl -b ise yeni userspace döngüsünün durumunu ortaya koyar. Yazar, her boot-sayaç arayüzünün aynı fikirde olmayacağını varsaymamak konusunda uyarır, çünkü boot_id bu yollarda farklı davranır.

Başka bir sınır: systemd-shutdown çağrılmadığı için /usr/lib/systemd/system-shutdown/ altındaki çalıştırılabilir dosyalar hiçbir zaman çalışmaz. Kritik her şey — disk flush mantığı, LED betikleri — bunun yerine normal birimlerin ExecStop= veya ExecStopPost= işleyicilerine aittir.

/run/nextroot/ ile kök değiştirme

Özelliğin güç hamlesi imaj tabanlı kök devri. /run/nextroot/ bir dizin, mount noktası veya ikisinden birine symlink olarak varsa, soft-reboot kök dosya sistemini ona geçirir ve systemd gerekli olduğunda mount olmayan bir yolu otomatik olarak mount noktasına yükseltir. Bu; ağ yönlendirmeleri, kilidi açılmış LUKS eşlemeleri ve sıfırlanmayan sysctl'ler gibi çekirdeğin elindeki durum geçişi atlarken userspace'in yeni imaja boot ettiği A/B tarzı güncellemelere olanak tanır. Yazar mekanizmayı, eğitim amaçlı minimal bir kökle tek kullanımlık bir VM üzerinde gösteriyor ve gerçek bir sonraki kökün boot edilebilir bir userspace'e ihtiyaç duyduğunu vurguluyor: /usr, /etc, bir /var iskeleti, aygıt düğümü veya devtmpfs politikası ve bir systemd binary'si.

Neden önemli

Bakım penceresinin pahalı kısmı kesinti zamanıdır ve tam bir reboot'un maliyetinin büyük kısmı — firmware POST'u, bootloader, çekirdek ve initrd başlatma — yalnızca userspace değiştiğinde boşa harcanan iştir. Soft-reboot, kesintiyi bir service manager yeniden çalıştırmasına ve yeni bir boot transaction'a indirir; tüm o donanım düzeyindeki yükü atlar. İmaj tabanlı ve A/B dağıtımları için /run/nextroot/, çekirdek durumu yerinde kalırken userspace takası sunar. Sınırlar da bir o kadar pratiktir: çekirdek ve initramfs güncellemeleri hâlâ kexec veya tam döngü gerektirir, shutdown kancaları sessizce atlanır ve çekirdek düzeyindeki ayarlar hiçbir zaman sıfırlanmaz. Bu, evrensel bir reboot alternatifi değil, userspace biçimli bakım için hassas bir araçtır.

  • #systemd
  • #linux
  • #devops
  • #sysadmin
  • #server-maintenance

İlgili yazılar