Ortopedi ve travmatoloji cerrahisinde kırık bir kemiği sabitlemek için titanyum plak ve vidalar kullanılırken hekimin kemiğin anatomik referans noktalarını milimetrik olarak tespit etmesi şarttır. Vida sabit, hareketsiz ve kemik korteksine mutlak biyomekanik uyum sağlayan bir koda göre yerleştirilir. Şimdi bir cerrahın, "Nasılsa ameliyat sırasında bu kas grubu tam buradaydı, vidayı kasın o anki geçici duruşuna göre tutturalım" dediğini düşünün. Hasta ameliyattan çıkıp bacağını hareket ettirdiği an, kaslar kayar; vida boşluğa düşer veya ana damarı deler. Hasta aniden derin bir bacak iskemisine girer ve acil revizyon cerrahisine alınmak zorunda kalır. Çünkü anatomik tespit geçici pozisyonlara değil, kemiğin mutlak koordinatlarına yapılmak zorundadır.

Linux sistem mühendisliğinde sunucuya yeni bir NVMe veya blok depolama (Block Storage / EBS) ekleyen sistem yöneticisinin, diski kalıcı montaj tablosuna (/etc/fstab) evrensel benzersiz kimliği (UUID) yerine /dev/sdb veya /dev/vdb gibi dinamik aygıt adlarıyla eklemesi, tam olarak bu gevşek cerrahi vidanın dijital karşılığıdır.


Linux Aygıt İsimlendirmesinin İllüzyonu: /dev/sdX Neden Sabit Değildir?

Linux çekirdeği (Kernel) donanımları önyükleme (boot) sırasında udev kurallarıyla asenkron olarak tarar. SATA kontrolcüsü, SCSI veriyolu, NVMe arabirimi veya bulut hipervizörünün (KVM/Xen/VMware) sanal diskleri tarama sırası her açılışta mikrosaniyelik farklarla değişebilir:

  • Bugün /dev/sda ana işletim sistemi diskiniz, /dev/sdb ise sonradan taktığınız 2 TB'lık veri diskiniz olabilir.
  • Yarın sunucu yeniden başladığında, SCSI veriyolu yeni diski 5 milisaniye daha erken yanıtlayabilir ve çekirdek o yeni diski /dev/sda olarak etiketleyebilir!
  • Veya bulut sağlayıcınız sunucuyu başka bir hipervizör düğümüne (node migration) taşıdığında aygıt harfleri aniden /dev/vda yerine /dev/xvda haline gelebilir.

Eğer siz /etc/fstab dosyasına şu satırı yazdıysanız:

/dev/sdb1    /mnt/data    ext4    defaults    0    2

Sisteminizi pimi çekilmiş bir el bombasının üzerine oturtmuşsunuz demektir.


systemd'nin Tavizsiz Önyükleme Mantığı ve "Emergency Mode"

Eski SysVinit çağında bir disk bağlanamazsa sistem açılış sırasında ekrana bir uyarı basar ve diğer servisleri ayağa kaldırmaya devam ederdi. Ancak modern Linux dağıtımlarının (Ubuntu, Debian, RHEL, CentOS, Rocky Linux) kalbi olan systemd, montaj işlemlerine karşı acımasız ve tavizsiz bir disipline sahiptir.

systemd önyükleme sırasında /etc/fstab dosyasındaki her bir girdiyi kritik bir sistem bağımlılığı (local-fs.target) olarak kabul eder.

                           ┌────────────────────────┐
                           │    SUNUCU REBOOT ATTI  │
                           └───────────┬────────────┘
                                       │
                                       ▼
                         [systemd Önyükleme Başladı]
                         Hedef: local-fs.target
                                       │
                                       ▼
                         [/etc/fstab Taranıyor...]
                         Satır: /dev/sdb1 -> /mnt/data
                                       │
                         [90 Saniye Aygıt Bekleniyor]
                         Job dev-sdb1.device/start timed out! ❌
                                       │
                                       ▼
                   [KRİTİK BAĞIMLILIK HATASI: FAIL!]
                   "Dependency failed for Local File Systems"
                                       │
                                       ▼
                   [EMERGENCY MODE / ACİL DURUM KABUĞU]
                   - Ağ servisleri (Network / SSH) BAŞLATILMADI!
                   - Nginx / MySQL BAŞLATILMADI!
                   - Sunucu KONSOLDA KİLİTLENDİ! ❌

Sunucu 90 saniye boyunca /dev/sdb1 aygıtının gelmesini bekler. Aygıt adı kaydıysa veya disk o an hazır değilse systemd kırmızı bayrağı çeker:
You are in emergency mode. After logging in, type "journalctl -xb" to view system logs.

Ve en dehşet verici kısım: Ağ kartları (network interfaces) ve SSH servisi ayağa kaldırılmaz!
Sunucu internete tamamen kapalıdır. İnternet üzerinden SSH atamazsınız; sunucu ping almaz. Uzaktan bakan biri sunucunun fiziksel olarak yandığını veya veri merkezinin elektriğinin kesildiğini sanır.


Masadaki Hastaya Ulaşmak: Acil Kurtarma Operasyonu

Bu kilitlenme yaşandığında sistem yöneticisi fiziksel veri merkezinde bir monitör ve klavyeyle kabinin arkasına geçmek ya da bulut panelinden (AWS EC2 Serial Console, Hetzner VNC, DigitalOcean Web Console) KVM konsolunu açmak zorundadır.

Konsol açıldığında ekranda root şifresi istenir. Ancak birçok bulut imajında root kullanıcısının parolası yoktur (yalnızca SSH anahtarıyla girilecek şekilde ayarlanmıştır)! Parola olmadığı için konsola giriş bile yapılamaz.

Çözüm Adımları:

  1. GRUB Müdahalesi:
    Sunucu yeniden başlatılırken GRUB menüsünde e tuşuna basılır.
    Kernel satırının (linux ...) sonuna şu parametre eklenir:
    init=/bin/bash veya systemd.unit=rescue.target
    Ctrl + X ile sistem tek kullanıcı modunda doğrudan root kabuğuna düşürülür.
  2. Kök Dosya Sistemini Yazılabilir Yapmak:
    Kurtarma kabuğunda kök dizin varsayılan olarak salt-okunur (read-only) bağlanır:
    mount -o remount,rw /
  3. Suçluyu Etkisiz Hale Getirmek:
    /etc/fstab dosyası nano veya vi ile açılır. Hatalı eklenen /dev/sdb1 satırının başına bir # işareti konularak satır yoruma alınır:
    # /dev/sdb1    /mnt/data    ext4    defaults    0    2
  4. Yeniden Başlatma:
    exec /sbin/init

Sunucu başarıyla ayağa kalkar, SSH bağlantısı geri gelir. Ancak 2 saatlik planlanmamış kesinti şirket hanesine yazılmıştır.


Doğru Cerrahi Reçete: UUID ve nofail Zırhı

Bir diski Linux dosya sistemine bağlarken asla aygıt harfleri (/dev/sdX) kullanılmaz. Çözüm iki temel parametrenin doğru yapılandırılmasından geçer:

1. Diski Her Zaman Evrensel Benzersiz Kimliğiyle (UUID) Bağlayın!

UUID (Universally Unique Identifier), diskin dosya sistemi biçimlendirildiğinde disk bloklarının üzerine kazınan ve aygıt portu değişse bile asla değişmeyen mutlak kimlik numarasıdır.

# Bağlanacak diskin UUID'sini öğrenin:
sudo blkid /dev/sdb1
 
# Çıktı:
# /dev/sdb1: UUID="3a7b8e12-4f5c-4d32-98ab-8c9f0e1d2c3b" TYPE="ext4"

2. nofail Bayrağı: Hayat Kurtaran Emniyet Supabı!

En kritik püf noktası /etc/fstab montaj seçeneklerine nofail parametresini eklemektir.

nofail parametresi systemd'ye şu emri verir: "Bu disk önyükleme sırasında fiziksel olarak bulunamazsa veya arızalıysa, sakın sistemi Emergency Mode'a sokma! Bu diski atla, montajı geç ve işletim sistemini, ağ kartlarını ve SSH servisini çalıştırmaya devam et!"

# KUSURSUZ VE GÜVENLİ /etc/fstab SATIRI:
UUID=3a7b8e12-4f5c-4d32-98ab-8c9f0e1d2c3b  /mnt/data  ext4  defaults,nofail  0  2

Bu tek bir kelime (nofail), sunucunuzun harici bir disk hatası yüzünden komaya girmesini engeller. Disk bağlanamasa bile sunucunuz açılır, SSH ile bağlanıp sorunu canlı sistemde incelersiniz.


Altın Kural: Reboot Atmadan Önce Mutlaka mount -a Yapın!

Sistem yöneticisinin /etc/fstab dosyasını düzenledikten sonra yapması gereken en kutsal kontrol şudur:

# Dosyadaki tüm kayıtları test eder, bir hata varsa hemen konsola basar:
sudo mount -a

Eğer mount -a komutu sessizce tamamlanıyorsa yapılandırmanız doğrudur. Eğer bir sözdizimi veya UUID hatası varsa ekrana hemen hata basar:
mount: /mnt/data: mount point does not exist.
Hatanızı sunucu canlıyken görür ve düzeltirsiniz; sunucu reboot olduğunda acil serviste uyanmak zorunda kalmazsınız.

Sonuç

Cerrahi vidayı rastgele bir kas dokusuna tutturan hekim ameliyat sonrası komplikasyonlardan kaçamaz; diski /dev/sdb gibi değişken bir harfe bağlayan sistem mühendisi de Emergency Mode kabusundan kurtulamaz.

Linux'ta hiçbir donanım adı kalıcı değildir; kalıcı olan tek şey UUID'dir. Montaj satırlarınıza UUID ve nofail yazmak 10 saniyenizi alır; ancak ihmal etmek gecenizin 3 saatini kurtarma konsollarında çaresizce geçirmenize mal olur.