Ders 22 / 22
Disk Ekleme ve Genişletme
Yeni bir aygıtı sisteme katma zinciri dokuz adımdır ve kırk beş okumanın on üçü işin bittiğini söylerken bitmemiştir; aygıt adına yazılmış kalıcı girdi kırk önyüklemenin yalnız onunda doğru dosya sistemini takar.
İçindekiler
Bu konu boyunca depolama hep var olan bir şeydi: bir aygıt, üzerinde bölümler, içlerinde dosya sistemleri, üstlerinde takma noktaları. Kursun son dersi zincirin başına döner ve bir aygıtın sisteme katılmasını baştan sona izler.
İzlenecek şey adımların kendisi değil, adımlar arasındaki boşluktur. Her adımda bir araç “tamam” der ve bir üst katman henüz haberdar değildir. Ölçülecek sayı, zincirin kaç okumasında “iş bitti” tanısının yanlış olduğudur.
Zincirin Halkaları
Yeni bir aygıt fiziksel olarak bağlandığında sistem onu kendiliğinden kullanmaz. Arada dokuz adım vardır ve her adım bir öncekine bağlıdır.
Aygıt önce tanınmalıdır: çekirdek veri yolunu tarar ve aygıtı ağacına ekler. Sonra bölümlenir; bölümleme tablosu aygıta yazılır, ama çekirdek eski tabloyu bellekte tutmaya devam edebilir ve bir yeniden okuma gerekir. Ardından bölüme dosya sistemi kurulur. Kurulan dosya sistemi ağaçta görünmez; takılması gerekir. Elle takma yeniden başlatmada kaybolduğu için bir kalıcı takma girdisi yazılır. Son olarak veriyi üretecek birim yeni yola yazmaya başlamalıdır; yolun değişmesi tek başına birimin yapılandırmasını değiştirmez.
- DP38 — Zincir dokuz adımdır ve adımların sırası bu ölçümde sabittir; kalıcı takma girdisi elle takmadan önce yazılmıştır, çünkü yaygın uygulama budur.
- DP39 — Kâhin, “yeni alan kalıcı olarak kullanımda” durumudur: dosya sistemi takılı, girdi kalıcı ve birim yeni yola yazıyor. Üçü birden sağlanmadan iş bitmemiştir.
- DP40 — Beş araç okunur ve her biri zincirin tek bir halkasını görür:
lsblkaygıtı,blkiddosya sistemini,findmntvedftakmayı, girdi denetimi kalıcılığı. - DP41 — Doğrulama önyüklemesinde keşif sırası ortak tanımın üretecinden çekilir; 40 önyükleme gözlenir ve girdi iki biçimde yazılır.
"""Yeni aygiti sisteme katma zinciri: her adimda hangi arac ne diyor.""" TOHUM = 20260218 ONYUKLEME = 40 ALAN = ("gorunur", "bolum", "cekirdek_okudu", "fs", "takili", "birim_yazar", "kalici") ADIM = ( ("0 aygit takildi", 0, 0, 0, 0, 0, 0, 0), ("1 yeniden tarandi", 1, 0, 0, 0, 0, 0, 0), ("2 bolum olusturuldu", 1, 1, 0, 0, 0, 0, 0), ("3 cekirdek tabloyu okudu", 1, 1, 1, 0, 0, 0, 0), ("4 dosya sistemi kuruldu", 1, 1, 1, 1, 0, 0, 0), ("5 kalici girdi yazildi", 1, 1, 1, 1, 0, 0, 1), ("6 elle takildi", 1, 1, 1, 1, 1, 0, 1), ("7 birim yeni yola yazar", 1, 1, 1, 1, 1, 1, 1), ("8 yeniden baslatildi", 1, 1, 1, 1, 1, 1, 1), ) ARAC = {"lsblk": "gorunur", "blkid": "fs", "findmnt": "takili", "df": "takili", "girdi denetimi": "kalici"} def durum(a): d = dict(zip(ALAN, a[1:])) d["kahin"] = d["takili"] and d["kalici"] and d["birim_yazar"] return d print("adim ", " ".join(f"{k:>14s}" for k in ARAC), " kahin") for a in ADIM: d = durum(a) print(f"{a[0]:26s}", " ".join(f"{str(bool(d[v])):>14s}" for v in ARAC.values()), f" {str(bool(d['kahin'])):>5s}") print() print("arac dogru okuma yanlis okuma") toplam = 0 for arac, alan in ARAC.items(): y = sum(bool(durum(a)[alan]) != bool(durum(a)["kahin"]) for a in ADIM) toplam += y print(f" {arac:14s} {len(ADIM) - y:11d} {y:12d}") print("yanlis tani:", toplam, "/", len(ADIM) * len(ARAC)) print() def uretec(tohum): d = tohum def sonraki(n): nonlocal d d = (d * 1103515245 + 12345) % 2147483648 return d % n return sonraki def dogrulama(tohum, girdi_bicimi, aygit=5, sayi=ONYUKLEME): """Kalici girdi aygit ADINA yazildiysa , kesif sirasi degisince kayar.""" r = uretec(tohum) dogru = 0 for _ in range(sayi): kalan, sira = list(range(aygit)), [] while kalan: sira.append(kalan.pop(r(len(kalan)))) dogru += 1 if girdi_bicimi == "kimlik" else sira[1] == 1 return dogru for tohum in (TOHUM, 20260219): print(f"tohum {tohum}: {ONYUKLEME} onyukleme |" f" ada yazili girdi dogru {dogrulama(tohum, 'ad'):3d}" f" | kimlige yazili girdi dogru {dogrulama(tohum, 'kimlik'):3d}")
adim lsblk blkid findmnt df girdi denetimi kahin 0 aygit takildi False False False False False False 1 yeniden tarandi True False False False False False 2 bolum olusturuldu True False False False False False 3 cekirdek tabloyu okudu True False False False False False 4 dosya sistemi kuruldu True True False False False False 5 kalici girdi yazildi True True False False True False 6 elle takildi True True True True True False 7 birim yeni yola yazar True True True True True True 8 yeniden baslatildi True True True True True True arac dogru okuma yanlis okuma lsblk 3 6 blkid 6 3 findmnt 8 1 df 8 1 girdi denetimi 7 2 yanlis tani: 13 / 45 tohum 20260218: 40 onyukleme | ada yazili girdi dogru 10 | kimlige yazili girdi dogru 40 tohum 20260219: 40 onyukleme | ada yazili girdi dogru 6 | kimlige yazili girdi dogru 40
Üç sayı yan yana. Kâhin: iş yedinci adımda bitiyor; ondan önceki hiçbir durumda yeni
alan kalıcı olarak kullanımda değil. Araç çıktısı: lsblk birinci adımdan itibaren aygıtı
gösteriyor ve gösterdiği şey doğru — yalnız sorulan soruya cevap değil. Yanlış tanı: kırk
beş okumanın on üçü işin bittiğini söylüyor.
Dağılım zincirin biçimini veriyor. En alttaki araç en çok yanılıyor: lsblk altı kez, blkid
üç kez. En üsttekiler en az yanılıyor ama sıfır değil — findmnt ve df birer kez, çünkü
altıncı adımda dosya sistemi takılıdır ve birim hâlâ eski yola yazmaktadır. Girdi denetimi
iki kez yanılıyor, çünkü kalıcı girdi takmadan önce yazılmıştır ve dosya kâğıt üzerinde
doğrudur. Hiçbir araç zincirin tamamını görmüyor ve her biri kendi halkasında doğruyu
söylüyor.
Bu dağılımın pratik sonucu bir sıralama kuralıdır: doğrulama zincirin altından değil, üstünden başlar. Önce birimin gerçekten yeni yola yazdığı, sonra takmanın kalıcı olduğu, en son aygıtın göründüğü sorulur; ters sırada sorulduğunda ilk üç yanıt olumlu gelir ve soru orada kesilir.
Son iki satır zincirin sekizinci adımını ölçüyor. Doğrulama önyüklemesinde girdi aygıt adına yazılmışsa kırk önyüklemenin yalnız onunda doğru dosya sistemi takılıyor; ikinci tohumda bu sayı altıya düşüyor. Kimliğe yazılmış girdide kırkın kırkı doğru. Yeniden başlatmadan doğrulanmamış bir zincir, tamamlanmış sayılmaz.
Geri Alınamaz Adımlar
Zincirin dokuz adımından üçü geri alınamaz ve üçü de aynı yerde toplanıyor: aygıta yazan adımlar. Bölümleme tablosunu yazmak eski yerleşimi siler, dosya sistemi kurmak bölümdeki her şeyi siler, takas alanı olarak biçimlendirmek de aynı şeyi yapar. Üçünün ortak riski hedefin yanlış seçilmesidir ve hiçbiri “emin misiniz” diye sormaz. Bu ders o komutları çalıştırılabilir tam biçimde vermez.
Güvenli yol dört adımdır ve dördü de ölçülebilir. Birincisi hedefi kimliğinden
doğrulamaktır: lsblk ve blkid çıktısında hedef aygıtın boş olduğu, üzerinde takılı
dosya sistemi bulunmadığı ve beklenen boyutta olduğu okunur. İkincisi kuru çalışmadur:
bölümleme araçlarının uygulamadan gösteren seçeneği ve tablonun metin dökümü, değişikliğin
ne olacağını önceden yazdırır. Üçüncüsü ayrı aygıtta denemedir: bir dosyayı geri döngü
aygıtı olarak bağlamak, bütün zinciri gerçek veriden uzakta çalıştırmayı sağlar. Dördüncüsü
anlık görüntüdür: değişiklik mantıksal birim üzerindeyse, öncesinde alınan bir anlık
görüntü geri dönüşü mümkün kılar.
Genişletme yönü de aynı kurala uyar ve bir ek sıralaması vardır. Aygıt büyütüldüğünde çekirdek yeni boyutu kendiliğinden görmez; bölüm büyütülmeden mantıksal birim, mantıksal birim büyütülmeden dosya sistemi büyüyemez. Sıra yukarı doğru işler ve küçültmede tersine döner. Tersine çevrilmediğinde ortaya çıkan şey bir hata iletisi değil, sessiz bir veri kaybıdır.
Özet
- Yeni bir aygıtı sisteme katmak dokuz adımlık bir zincirdir: tanıma, bölümleme, tablonun yeniden okunması, dosya sistemi kurulumu, kalıcı girdi, takma ve birimin yeni yola yönlendirilmesi.
- Beş araç zincirin beş ayrı halkasını görür ve hiçbiri tamamını görmez; kırk beş okumanın
on üçü işin bittiğini söylerken bitmemiştir. En alttaki araç en çok yanılır:
lsblkaltı,blkidüç kez. - Zincir yeniden başlatmayla doğrulanmadan tamamlanmış sayılmaz: aygıt adına yazılmış girdi kırk önyüklemenin onunda, ikinci tohumda altısında doğru dosya sistemini takıyor; kimliğe yazılmış girdide kırkın kırkı doğru.
- Zincirin üç adımı geri alınamaz ve hiçbiri onay istemez; güvenli yol hedefi kimliğinden doğrulamak, kuru çalışma çıktısını okumak, ayrı aygıtta denemek ve anlık görüntü almaktır.
- Genişletme aşağıdan yukarı, küçültme yukarıdan aşağı yapılır; sıranın tersine çevrilmesi hata iletisi değil, sessiz veri kaybı üretir.
Kurs Kapanışı
Bu kurs bir soruyu yirmi iki kez sordu: çıktının söylediği ile sistemin gerçeği arasındaki fark ne kadar. Her derste üç sayı yan yana durdu — kâhin, aracın gösterdiği ve o gösterimden çıkarılan tanının kaç kez yanlış olduğu. Kursun kuralı buydu: bir komutun sayısı gösterdiği satır değil, o satırlardan çıkarılan tanının kaç kez yanlış olduğudur.
Aşağıdaki tablo yirmi iki dersin ölçüsünü tek yerde toplar. Boş bırakılan satırlar uydurulmamıştır: her satır yalnız kendi kaynak dersinden yazılır ve o dersler bu payda üretilmedi.
| Ders | Kâhin | Araç çıktısı | Yanlış tanı |
|---|---|---|---|
| Süreç Listeleme ve Arama | 24 sürecin 14’ü ağır | aralık 1/5/15/30/60 → 14, 14, 11, 9, 9 | 0, 0, 3, 5, 5; ömür ortalaması sütunu 7 |
| Ön Plan ve Arka Plan İşleri | 13 işten & ile 0’ı, ayırmayla 4’ü yaşıyor |
jobs 13 satır |
& 13, ayırma 9, uçtermini kesen yol 0 |
| Sinyaller | isteği kabul eden 2, direnen 5; zorlayanda 7/7 | çıkış kodu her denemede 0 | bekleme 0/10/30 saniye → 7, 6, 5 |
| Süreç Öncelikleri | toplam iş 237.906 → 238.244, yük 3,97’de sabit | NI sütunu 6/6 değişti |
6/6; boşalan payın yüzde 94’ü öteki ağır süreçlere gidiyor |
| Kaynak Sınırları | 8 arıza nedeni | 3 ileti + 1 sessizlik, her ileti iki nedene | yalnız ileti 21, yalnız sınır 29, birleşik 13 |
| Servis Yöneticisi Modeli | 6 birim, 7 geçişli bağımlılık | düz 0 / doğrudan 4 / geçişli 7 / sıralı 9 satır | 3 / 2 / 0 / 2 — en çok satır basan okuma en iyi tanıyı vermiyor |
| Servis Durumu ve Denetimi | 6 birimin 6’sı arızalı, 60 yeniden başlatma | 4 birim “çalışıyor”, görünmez süre 600 | 4/6; yoklama 1/5/15/30/60 → 480/99/33/18/10 |
| Yeni Servis Tanımlama | 60 çöküş, 9 bileşimin 9’unda arızalı | 5 “çalışıyor”, 2 “çıktı”, 2 “arızalı” | 7/9; başlatma sınırı yok/20/10/5/3 → görünmez süre 600/600/106/62/41 |
| Önyükleme Süreci | veri-alma → 4 etkilenen, kesinti gören 5 |
“1 birim”; 4 birim hiç denenmiyor | 3/6 |
| Önyükleyiciler | 24 değişikliğin 11’i iş görüyor | üretici 24, komut satırı 21, davranış sınaması 11 | 13 / 10 / 0; kurtarma günlüğü ikisinde de 0 satır |
| Günlük Mimarisi | 4000 satırda 86 hata, gerçek kaynak 31 ile isleme |
altı birim dosyası: 28, 0, 31, 0, 27, 0 | 5/6; üç dosya tamamen sessiz |
| Kimlik Doğrulama Günlükleri | 601 satırda 41 saldırı satırı | dört süzgeç: 153, 67, 51, 43 satır | 114 / 28 / 12 / 2 |
| Günlük Filtreleme ve Döndürme | 86 hata, ilki 6,1. saniyede | döndürmede kalan 86, 42, 19, 12, 5 | altı sorudan 0/3/4/4/4; oran 0,2209 ve 0,0581 |
| Sistem Sağlığı Ölçümleri | anlık yük eşiği 54 saniye aşıyor | ortalama bant 6,18–6,25, eşiği hiç aşmıyor | 54; yanlış alarm 0 |
| Başarım Sorunlarının İzi | 18 olay (4/4/10) | beş görüntü: 432, 1728, 432, 54, 54 satır | 12 / 12 / 8 / 2 / 0 — satır dörde katlanınca tanı değişmiyor |
| Blok Aygıtları ve Bölümler | boş alan dört parça, en büyük bitişik 2.881.536 sektör | bölüm listesi 3.702.784 boş sektör | 6 / 12 karar |
| Dosya Sistemleri | bozuk bloğa dokunan 54 okuma | sağlama toplamsız tasarımda 0 hata | 54 sessiz okuma |
| Dosya Düğümleri ve Meta Veri | 32.768 dosyada yazma başarısız | blok doluluk 0,0125 | 2 / 12 uyarı |
| Takma ve Kalıcı Takma | 717 dosya gerçekten eskimiş | 1504 dosya eski görünüyor | 787 yanlış silme |
| Mantıksal Birim Yönetimi | yazılabilir alan 296 blok | lvs 4392, vgs 8488 blok | 7 / 21 okuma |
| Takas Alanı | bellek baskısı 84 saniye | kullanılan takas 533’te duruyor | 272 yersiz uyarı |
| Disk Ekleme ve Genişletme | iş yedinci adımda bitiyor | lsblk birinci adımdan beri aygıtı gösteriyor | 13 / 45 okuma |
Depolama bölümünün yedi dersi tek bir örüntüyü tekrar tekrar gösterdi. Araçlar yalan söylemiyor; her biri kendi katmanında doğruyu söylüyor ve sorulan soru o katmanın sorusu değil. Bölüm listesi boşluk haritası değildir, doluluk yüzdesi yazılabilirlik değildir, mantıksal birimin boyutu dosya sisteminin boyutu değildir, kullanılan takas bellek baskısı değildir. Yanlış tanı bu boşluklarda doğuyor ve sayısı sütun eklemekle azalmıyor: dosya düğümü ölçümünde üç ayrı uyarı kuralı da on iki durumda ikişer yanlış verdi, yalnız yanlışın türü değişti.
İkinci bir örüntü zamanla ilgiliydi. Anlık görüntü dört yüz on üçüncü saniyede doldu ve altmış saniyede bir bakan izleme o ana kadar kıpırdamayan bir sayı gördü; takas hızı iki bakış arasına düştüğünde kaçırılan saniye 2’den 49’a çıktı. Kanıt kendiliğinden yok oluyor ve depolamada bu, dolan bir alanın ya da düşen bir anlık görüntünün ardında hiçbir iz bırakmamasıyla oluyor. Geç bakan az görür.
Kurs boyunca yıkıcı komutlar tam biçimde yazılmadı ve bu bir eksiklik değil, ölçümün bir parçasıydı. Bölümleme tablosunu yazan, dosya sistemi kuran, mantıksal birim silen ve takas alanı biçimlendiren komutların ortak yanı, hedefin yanlış seçilmesi hâlinde hiçbir uyarı üretmemeleridir. Güvenli yol her derste aynı dört adımdı: hedefi kimliğinden doğrulamak, kuru çalışma çıktısını okumak, denemeyi ayrı bir aygıtta yapmak ve geri dönüş noktası bırakmak.
Bir sonraki kurs, Linux Ağ Yönetimi ve Sorun Giderme, aynı soruyu tek makinenin dışına taşır. Orada da bir arayüz listesi vardır ve listede görünen adres bağlantının kurulabildiği anlamına gelmez; orada da bir yönlendirme tablosu vardır ve tablodaki satır paketin oraya ulaştığını göstermez. Katmanlı tanı yöntemi, bu kursun katman katman ayırdığı depolama zincirinin ağ üzerindeki karşılığıdır: fiziksel bağlantıdan uygulamaya doğru daralan bir sorgu dizisi ve her katmanda “burada doğru, üstte değil” diyen bir araç. Ayrıca orada kanıt daha da hızlı yok olur, çünkü paket geçip gider ve yakalanmadığı sürece hiçbir yerde durmaz.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.