Turizm sektöründe ve gastronomi dünyasında herkesin çok iyi bildiği meşhur bir "Açık Büfe İllüzyonu" vardır. Otelin broşüründe büyük puntolarla parıldar: "Sınırsız Açık Büfe! Sınırsız İçecek! Dilediğiniz kadar yiyin!"
Gözü aç bir tatilci o büfenin başına geçtiğinde, tabağına tepeleme kırmızı etleri, tatlıları, börekleri doldurur. "Nasıl olsa sınırsız, çatlayana kadar yiyeceğim" der.
Fakat bu insanın unuttuğu çok temel bir anatomi gerçeği vardır: İnsan midesinin esneme ve depolama kapasitesi biyolojik olarak en fazla 1.5 ila 2 litredir.
O sınır aşıldığı anda gastrointestinal sistem isyan eder: Akut gastrik dilatasyon, şiddetli kramplar, kusma ve reflü başlar. Büfe teoride sonsuz olabilir; fakat o yiyeceği alacak olan mide fiziksel bir sınırla kilitlenmiştir. Otel yönetimi o "sınırsız" vaadini verirken insanın biyolojik sınırına güvenmektedir; kimsenin 10 kilo et yiyemeyeceğini çok iyi bilirler.
Web hosting ve internet altyapısı sektöründe de tam olarak bu açık büfe illüzyonunu pazarlama malzemesi yapan, Türkiye'deki ve dünyadaki yüz binlerce web sitesi sahibini kriz masasına oturtan meşhur bir şehir efsanesi vardır: "Sınırsız Disk Alanı" Masalı ve Arkasındaki Gizli Inode Tuzağı.
Yıllık 49 Liraya Satılan "Sonsuzluk"
Bir hosting firmasının ana sayfasına girersiniz. Karşınıza neon ışıklı bir paket çıkar:
- Sınırsız Disk Alanı (SSD/NVMe)
- Sınırsız Aylık Trafik
- Sınırsız E-Posta Hesabı
- Sınırsız MySQL Veritabanı
- Fiyat: Sadece aylık 49 TL!
Temel fizik ve ekonomi eğitimi almış herhangi bir insanın bu tabloya baktığında kahkahalarla gülmesi gerekir: Dünyadaki en büyük veri depolama üreticisi bile terabaytlık disklere yüzlerce dolar öderken; yıllık birkaç yüz liraya bir insana "sonsuz fiziksel disk alanı" nasıl tahsis edilebilir?
Elbette edilemez. Çünkü sektörde "sınırsız" diye bir kavram yoktur; sadece "ortalamanın sınırlarına güvenmek" (overselling) vardır.
Hosting şirketi bilir ki, o paketi alan 100 müşterinin 95 tanesi sadece 3 sayfalık bir kurumsal tanıtım sitesi kuracak ve 300 Megabayt alan kullanacaktır. Kalan 5 kişinin alanı o 95 kişinin boşluğundan finanse edilir.
Ta ki o müşterilerden biri o "sınırsız" vaadini gerçekten ciddiye alıp kullanmaya kalkana kadar!
Kriz Sabahı: 8 Gigabayt ile Çöken "Sonsuz" Disk
Müşteri bir e-ticaret sitesi kurar veya bir haber portalı açar.
Siteye binlerce ürün eklenir. WordPress'in arkasına popüler bir önbellek (cache) eklentisi (WP Rocket, LiteSpeed Cache vb.) kurulur. Eklenti sitenin hızlı açılması için her bir sayfanın ve görselin onlarca farklı mobil, masaüstü, webp varyasyonunu önbelleğe yazar.
Birkaç ay geçer. Müşteri cPanel kontrol paneline girer.
Disk kullanımına bakar: 8.4 GB.
Müşteri sevinçle gülümser: "Oh ne güzel, sınırsız diskimin sadece 8 gigabaytını kullandım, daha önümde sonsuz yer var!"
Ve ertesi sabah...
Müşteri sitesine girmeye çalışır:
HTTP 500 Internal Server Error
Fatal Error: Unable to write to cache directory: No space left on device.
Müşteri şok içinde hosting firmasına acil bilet (ticket) açar:
"Kardeşim siteniz çöktü! 'Disk dolu' hatası veriyor. Hani benim diskim sınırsızdı? Ben sadece 8 GB kullandım, derhal düzeltin!"
On dakika sonra destek ekibinden o soğuk, ezberlenmiş, küçük puntolu yanıt gelir:
"Sayın müşterimiz, paketinizdeki disk alanı sınırsızdır; ancak paketinizin Inode (Dosya Sayısı) Limiti 100.000'dir. Hesabınızda 100.001 adet dosya tespit edildiği için dosya yazma yetkiniz sistem tarafından otomatik olarak kilitlenmiştir."
Müşteri ekrana bakar: Inode nedir?
Linux Dosya Sisteminin Ruhsatı: Inode Nedir?
Linux ve Unix tabanlı dosya sistemlerinde (ext4, XFS vb.) bir dosya oluşturduğunuzda, o dosya sadece disk üzerinde sektörleri (blokları) kaplamaz.
İşletim sisteminin o dosyanın nerede durduğunu, boyutunu, izinlerini (chmod), sahibini ve oluşturulma tarihini tutabilmesi için özel bir veri yapısına ihtiyacı vardır.
İşte bu meta veri kaydına "Inode" (Index Node) denir.
İşin can alıcı kuralı şudur:
Boyutu ne olursa olsun; diske yazılan her bir dosya, her bir klasör, her bir e-posta, her bir geçici oturum (session) dosyası TAM BİR ADET INODE tüketir!
Gelin matematiği yapalım:
- 10 Gigabaytlık tek bir büyük film dosyası indirip sunucuya atarsanız: 1 Inode tüketirsiniz. Diskiniz 10 GB dolar ama Inode limitinizin sadece yüzde birini bile harcamazsınız.
- Fakat bir WordPress cache eklentisi veya e-posta sunucusu, her biri sadece 500 baytlık (küçücük bir metin) 150.000 adet önbellek ve session dosyası üretirse:
Diskte kapladığı toplam alan sadece 75 Megabayttır!
Fakat sistemdeki 150.000 adet Inode hakkının tamamını yutmuştur!
Ve Linux çekirdeği (kernel) için Inode tablosu dolduğu an; diskte isterse 10 Terabayt boş alan olsun, işletim sistemi tek bir baytlık yeni bir dosya bile yazamaz!
Veritabanı geçici dosya açamaz, e-posta içeriği kaydedilemez, oturum açılamaz. Sistem duvara toslar.
Küçük Puntolu Sözleşmeler ve Pazarlama İkiyüzlülüğü
Hosting firmalarının ana sayfalarında kocaman harflerle "SINIRSIZ" yazarken, Hizmet Şartları Sözleşmesi'nin (ToS) 42. maddesinin alt bendine gizledikleri bu Inode limiti, bilişim sektörünün en büyük yasal illüzyonudur.
Neden Inode limiti koyarlar?
Teknik olarak savunmaları şudur: "Sunucuda 500 müşteri var, bir müşteri milyonlarca dosya oluşturursa sunucunun dosya sistemi tarama (fsck) performansı çöker, yedekleme (backup) süreleri günlerce sürer."
Bu teknik gerekçe yüzde yüz doğrudur! Gerçekten de milyonlarca küçük dosya depolama ünitelerinin I/O dengesini felç eder.
Fakat ahlaki olmayan taraf şudur:
Eğer bir müşterinin hesabında 100 binden fazla dosya barındırmasına izin vermeyecekseniz; o paketin tabelasına neden utanmadan "SINIRSIZ DİSK" yazıyorsunuz?
Bir müşterinin 100 bin adet ortalama web dosyasıyla (HTML, CSS, küçük resimler) doldurabileceği maksimum alan zaten 5 ila 10 Gigabayttır!
Yani aslında müşteriye en fazla 10 GB disk alanı satıyorsunuzdur; ama bunu açıkça söylemek yerine "Sınırsız" diyerek pazarlayıp, müşterinin arkasından dolanıyorsunuzdur.
Müşterinin Çıkış Yolu: Sınırsız Masalını Bırakmak
Eğer internet üzerinde gerçek bir iş yapıyorsanız, bu ucuz kelime oyunlarına kanmayı bırakmalısınız:
- Sınırları Net Olan Paketleri Seçin: "Sınırsız" diyen firmalardan uzak durun. Size "20 GB NVMe Disk, 250.000 Inode Limiti, 2 Core CPU, 4 GB RAM" gibi sınırlarını şeffafça taahhüt eden profesyonel kurumsal hosting sağlayıcılarını tercih edin. Sınırı bilmek, sürprizle karşılaşmaktan bin kat iyidir.
- Inode Temizliği Disiplini: WordPress kullanıyorsanız; haftada bir
wp-content/cache, eski log dosyaları ve birikmiş spam e-postaları temizleyen zamanlanmış cron görevleri kurun. - VPS / Bulut Sunucuya Geçiş: Projeniz 100 binden fazla dosya veya ürün barındıracak büyüklüğe ulaştıysa; paylaşımlı hostingin o dar havuzundan çıkıp kendi Inode limitinizi kendinizin belirlediği bağımsız bir Sanal Sunucuya (VDS / VPS / Cloud Instance) geçme vaktiniz çoktan gelmiştir.
Tıpta sınırsız açık büfeye güvenip midesini patlatan insana acınmaz.
Web dünyasında da yıllık 50 liralık pakette "sınırsız diskim var" diye terabaytlarca dosya yükleyebileceğini sanan kişi; gerçek mühendisliğin pazarlama sloganlarıyla değil, dosya sistemlerinin katı matematik kurallarıyla çalıştığını en acı yoldan öğrenecektir. Sınırsız olan tek şey, teknolojideki illüzyonlardır.