Disk Doldu Dediğinde Neyin Dolduğunu Bulmak: inode, Silinmiş Ama Açık Dosyalar ve Ayrılmış Bloklar
"Disk doldu" en az üç ayrı duruma karşılık gelir: bloklar, inode'lar ve root'a ayrılmış alan. Üçünün belirtisi aynı, çözümü farklı. Silmeden önce ölçmenin yolları.
Bir sunucuda "disk doldu" alarmı çaldığında ilk refleks en büyük dizini bulup bir şeyler silmek olur. Bu refleks zamanın yarısında işe yaramaz, çünkü "dolu" kelimesi en az üç ayrı duruma karşılık gelir: veri blokları bitmiş olabilir, inode'lar bitmiş olabilir, ya da blokların bir kısmı root kullanıcısına ayrıldığı için uygulama çoktan yazamaz hale gelmiş olabilir. Üçünün belirtisi aynıdır, çözümü farklıdır. Bu yazı doluluğun hangi cinsten olduğunu ayırt etmeye ve silmeden önce ölçmeye odaklanıyor.
Önce hangi doluluk olduğunu ölçün
Blok doluluğu df -h ile, inode doluluğu df -i ile görünür. İkinci komut çoğu teşhis akışında hiç çalıştırılmaz ve bu yüzden de en çok vakit kaybettiren durum inode tükenmesidir: df -h yüzde 40 boş gösterirken yazma işlemi "No space left on device" ile düşer. Küçük dosya üreten iş yükleri (oturum dosyaları, mail kuyruğu, önbellek parçaları, milyonlarca küçük nesne) blokları tüketmeden inode'ları tüketir. ext4'te inode sayısı dosya sistemi oluşturulurken sabitlenir ve sonradan büyütülemez, yani çözüm silmek ya da dosya sistemini yeniden oluşturmaktır. XFS inode'ları dinamik ayırır ve bu sınıf arızayı büyük ölçüde ortadan kaldırır; küçük dosya sayısının yüz binleri aştığı bir bölüm planlıyorsanız bu tek başına dosya sistemi seçimi için yeterli bir gerekçedir.
Üçüncü durum daha sinsidir. ext2, ext3 ve ext4 varsayılan olarak blokların yüzde 5'ini ayrılmış tutar; bu alan yalnızca root tarafından kullanılabilir. Amacı iyidir, parçalanmayı azaltır ve dolu bir diskte yöneticiye hareket alanı bırakır. Sonucu ise şudur: df yüzde 100 demeden önce, root olmayan kullanıcı adına çalışan servis yazmayı bırakır. Veri bölümlerinde bu rezervin 20 TB'lık bir diskte bir terabayta yaklaştığını da hesaba katın. Veri için ayrılmış bir bölümde tune2fs -m 1 /dev/sdX makul bir ayardır; kök bölümde rezervi sıfıra indirmek ise sonradan toparlama şansınızı yok eder.
df ile du neden farklı söyler
Teşhiste en sık görülen çelişki df ile du arasındaki fark. du dizin ağacını dolaşarak görünen dosyaları toplar, df dosya sisteminin kendi muhasebesini okur. Fark üç nedenden doğar.
Birincisi silinmiş ama hâlâ açık dosyalar. Bir süreç bir dosyayı açıkken dosya unlink edilirse dizin girdisi gider, du onu artık görmez, ama bloklar son açık tanımlayıcı kapanana kadar serbest kalmaz. Klasik örnek, log dosyasının rotasyon yerine rm ile silinmesi ve servisin aynı tanımlayıcıya yazmaya devam etmesidir. Bulma yolu lsof +L1 çıktısıdır: NLINK değeri sıfır olan satırlar tam olarak bunlardır. Çözüm silmek değil, dosyayı tutan sürece sinyal vermek ya da onu yeniden başlatmaktır. Acil durumda : > /proc/<pid>/fd/<n> ile dosyayı yerinde boşaltmak alan kazandırır, ama bu geçici bir müdahaledir ve kök neden rotasyon yapılandırmasındadır.
İkincisi gölgelenmiş mount noktaları. Bir dizine bir şey mount edilmişse, mount edilmeden önce o dizine yazılmış dosyalar yer tutmaya devam eder ama hiçbir yerden görünmez. Bunu ölçmenin yolu dosya sistemini başka bir yere bind mount edip oraya bakmaktır:
mkdir -p /mnt/kok
mount --bind / /mnt/kok
du -xh --max-depth=1 /mnt/kok
Üçüncüsü du komutunun dosya sistemi sınırını geçmesi. -x bayrağı olmadan başka bir diskteki ya da ağ üzerindeki dizinleri de sayar ve toplam anlamsız çıkar.
Konteyner çalıştıran bir makinede büyüyen şey genelde uygulamanın veri dizini değil, üç ayrı birikimdir: imaj katmanları, konteyner logları ve isimsiz veri birimleri. docker system df -v bu üçünü ayrı ayrı gösterir ve "hangisini temizlesem" sorusunun tek doğru cevap yeri burasıdır.
Loglar varsayılan olarak sınırsız büyür. Bir servis saniyede birkaç satır bastığında bu haftalar içinde gigabaytlara ulaşır. Doğru çözüm log sürücüsüne sınır koymaktır; günlük dosyaları elle silmek, yukarıda anlatılan "silinmiş ama açık dosya" durumunu üretir:
Veri birimleri tarafında dikkatli olun. Kullanılmayan birimleri toptan silen komutlar, o anda ayakta olmayan bir servisin verisini de kullanılmıyor sayar. Bir birim gerçekten sahipsiz mi, önce onu kanıtlayın; toptan temizlik komutunu alışkanlık haline getirmek, bir gün durdurulmuş bir veritabanının diskini silmekle sonuçlanır.
systemd journal de aynı mantıkla sınırlanır. journalctl --disk-usage ile ölçün, kalıcı sınır için SystemMaxUse değerini yapılandırın, acil alan için journalctl --vacuum-size=200M çalıştırın.
Eşik, kota ve ayrı bölüm arasında seçim
Doluluğa karşı üç farklı savunma var ve üçü birbirinin yerine geçmez.
Alarm eşiği en ucuzudur ama tek başına yetersizdir: yüzde 90'da uyarı veren bir alarm, saatte yüzde 5 büyüyen bir log için çok geç kalır. Kullanılabilir alanın mutlak değerine ve büyüme hızına bakan bir kural daha iyi davranır: "iki saat içinde dolacak" bilgisi, "yüzde 90 dolu" bilgisinden daha eyleme dönüktür.
Disk kotası, çok kullanıcılı ya da çok kiracılı sistemlerde tek bir hesabın bütün diski tüketmesini engeller. Bedeli işletme karmaşıklığıdır ve kota aşıldığında uygulamanın verdiği hata mesajı genelde anlaşılmazdır.
Ayrı bölüm, kanaatimce üçünün en etkilisi. Logları, veritabanını, konteyner katmanlarını ve kök dosya sistemini ayrı bölümlere koyan bir düzende tek bir bileşenin taşması makineyi boot edilemez hale getirmez. Bu düzenin maliyeti baştan planlama ve biraz atıl alandır, karşılığında ise arızanın yarıçapını küçültür. Hepsini tek bölüme koyup eşiğe güvenmek, bütün yumurtaları aynı sepete koyup sepeti tartmaktır.
Tuzaklar
Doluluk krizlerinde tekrar eden birkaç tuzak var. En büyük dosyayı silmek, dosya başka bir süreç tarafından açıksa alanı geri getirmez. Yüzde 100 dolu bir diskte bazı veritabanları yazmayı kesmekle kalmaz, kurtarma için de alana ihtiyaç duyar: boş alan yaratmadan servisi yeniden başlatmak kurtarmayı uzatır. Sparse dosyalar (seyrek dosyalar) du ile ls -l arasında büyük fark gösterir ve sanal makine diskleri genelde böyledir. Snapshot alan dosya sistemlerinde silinen veri, snapshot tutulduğu sürece yer kaplamaya devam eder; orada silmek değil, snapshot'ı kaldırmak alan açar. Son olarak /tmp bir tmpfs ise oradaki dosyalar diski değil belleği tüketir, yani belirtileri disk değil bellek tarafında aranır.
Ne zaman bu işe hiç girmemek gerek
Tek seferlik bir doluluk olayını araştırmaya değer kılan şey tekrar etme ihtimalidir. Bir defaya mahsus büyük bir dosya bırakıldıysa ve büyüme kaynağı belliyse, kota ve bölüm planına girmeden o kaynağı düzeltmek yeterli. Asıl yatırım yapılması gereken yer, aynı alarmın ikinci kez çaldığı andır: o noktada çözüm silmek değil, büyümenin sınırlandığı bir yapı kurmaktır.
1-5 tab geçiş ·
tab sonraki ·
esc geri al ·
↓ kaydır
> ls -lah ~/services/ --sort=tier
[OK] 25 records · 8 featured · 1 retainer · 16 standard
/02 hizmetler
services.tree
> note
· Fiyatlar USD cinsindendir. 6-12 günlük projelerde %7, 13+ günlük projelerde %14 hacim indirimi uygulanmaktadır. 100 adam-gün ve üzeri kapsamlı programlarda proje bazlı özel fiyatlandırma yapılır. Fiyatlar kapsam, aciliyet ve uzun dönem iş birliğine göre müzakere edilebilir.
> ls ~/products/ --open-source
[OK] 2 entries · 1 live · 1 pre-release
/03 ürünler
products.list
liveaçık kaynak · mit/prod/01
filex
her yere gömülebilen self-hosted dosya yöneticisi
tek go binary · vue/react/web-component embed · 5 storage sürücüsü · realtime collab · rbac · native multi-tenancy · ai ajanları için mcp server
Altyapıyı kurar, otomasyonu sağlar, sistemi ayakta tutar.
BRF Teknoloji, Bursa merkezli bir DevSecOps ve yazılım danışmanlık firmasıdır. Kubernetes cluster yönetiminden serverless platform kurulumuna, CI/CD pipeline tasarımından AI agent geliştirmeye kadar 25 farklı hizmet alanında çalışıyoruz.
İşimizin özü basit: sisteminizi ayağa kaldırır, otomatize eder ve gece 3'te sizi uyandırmayacak hale getiririz. Terraform ile altyapınızı kodlar, ArgoCD ile deploy sürecinizi GitOps'a taşır, Prometheus ile her şeyi izleriz. Bir şey bozulursa — biz bozulmadan önce müdahale ederiz.
Vendor lock-in'e karşıyız. Açık kaynak araçlarla, self-hosted çözümlerle ve endüstri standardı teknolojilerle çalışırız. Knative üzerinde kendi serverless platformunuzu kurarız, Kata Containers ile izole ederiz, Vault ile secret'larınızı yönetiriz. Her projeyi net kapsam, net süre, net fiyatla teslim ederiz.
DevSecOps & CI/CD
Kubernetes & Serverless
Infrastructure as Code
AI & Agent (MCP/ACP)
Güvenlik & Sıfır Güven
Full-Stack Geliştirme
Self-Hosted Çözümler
> grep -i question ~/faq.md
[OK] 3 entries · click to expand
[?]BRF Teknoloji'nin DevOps çözümleri hangi hizmetleri içerir?▾
CI/CD pipeline kurulumu, Kubernetes cluster yönetimi, container migrasyonu, Terraform ile altyapı otomasyonu, monitoring & alerting, şirket içi teknoloji kurulumları ve DevOps danışmanlık hizmetleri sunuyoruz.
[?]Yazılım geliştirme hizmetleriniz nelerdir?▾
MVP geliştirme, mevcut yazılım performans optimizasyonu, backend API geliştirme (Node.js, Go, Python) ve tam stack uygulama geliştirme hizmetleri sunuyoruz. Her projede teknik borç minimumda tutularak teslim edilir.
[?]Hangi DevOps araçlarıyla çalışıyorsunuz?▾
Kubernetes ve Docker’dan Talos Linux’a, Terraform ve OpenTofu’dan Ansible’a, Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD, Flux, Helm ve Rancher’a kadar endüstri standardı araçlarla çalışıyoruz. İzleme ve hata takibinde Prometheus, Grafana, Loki, Tempo, OpenTelemetry ve GlitchTip; ağ katmanında Cilium ve Envoy; test otomasyonunda Playwright, Cypress, k6, Locust, Testcontainers ve Trivy kullanıyoruz. Projenizin ihtiyacına göre en uygun araç setini birlikte belirliyoruz.
brf.sh / 2026
·bursa/tr·
timezone utc+3·
tüm sistemler nominal
> ./connect --target=brf.sh
/05 iletişim
contact.txt
> cat contact.txt
[email][email protected] [phone]+90 530 871 2248 [location] Üçevler Mah. İzmir Yolu Cad 241D 16120 Nilüfer/Bursa [hours] Hafta içi 09:00 — 18:00 UTC+3 [eta] <24s iş günü
[OK] handshake ready
· turnstile enabled
· yanıt süresi: <24s · saat dilimi UTC+3 / bursa
CI/CD Pipeline Kurulumu
GitHub Actions, GitLab CI/CD ile otomatik build, test ve deploy süreçleri.
Mevcut ya da sıfırdan bir repo için otomatik build, test ve deploy pipeline'ı kurulur. GitHub Actions, GitLab CI/CD veya tercih edilen araç kullanılır. Staging + production ortamları için ayrı akışlar tanımlanır.
Mevcut uygulamaların container mimarisine taşınması.
Mevcut uygulamaların container mimarisine taşınması. Docker image tasarımı, Compose yapılandırması ve Kubernetes manifest'lerine dönüştürme. İleri düzey izolasyon için Kata Containers / gVisor dahil edilebilir.
Prometheus, Grafana, Loki ile altyapı ve servis izleme.
Prometheus + Grafana stack kurulumu, servis ve altyapı metrikleri için dashboard'lar, kritik eşikler için alert tanımları. İsteğe bağlı: Zabbix, Loki log aggregation.
GitLab, Nextcloud, VPN, mail sunucusu gibi şirket içi araçlar.
GitLab, Mattermost, Nextcloud, mail sunucusu, VPN, iç monitoring gibi araçların şirket sunucularında kurulumu. Docker Compose veya Kubernetes üzerinde deploy edilir.
MCP/ACP agent'lar, RAG pipeline, multi-agent orchestration, model serving.
LLM entegrasyonu (OpenAI, Claude, Gemini, lokal modeller), MCP (Model Context Protocol) ve ACP (Agent Communication Protocol) ile tool-augmented AI agent'lar. RAG pipeline, multi-agent orchestration, model serving (vLLM/Ollama). Mevcut iş süreçlerine yapay zeka katmanı.
Apache Kafka, RabbitMQ, NATS ile event-driven data pipeline. Apache Airflow ile ETL/ELT orkestrasyon, real-time data akışı, CDC (Change Data Capture). Data lake/warehouse tasarımı, schema registry, dead letter queue yönetimi.
Paketler
Kafka/RabbitMQ kurulumu + temel producer/consumer
$3,500
5–7 adam/gün
ETL pipeline (Airflow + source → warehouse)
$5,200
8–12 adam/gün
Tam event-driven architecture (CDC + streaming + DLQ)
ELK Stack veya Loki + Grafana ile merkezi log yönetimi. OpenTelemetry ile distributed tracing, Jaeger/Tempo entegrasyonu. Log retention politikası, structured logging standartları, anomaly detection. Tüm servislerde uçtan uca observability.
Playwright, Cypress ile E2E test otomasyonu, k6/Gatling ile yük testi. CI/CD pipeline'a entegre pre-deploy quality gate, test coverage raporlama, visual regression testing. AI-assisted test generation ile test yazım süresini %60'a kadar düşürme.
Backstage veya Port ile internal developer portal kurulumu. Self-service ortam oluşturma, golden path template'leri, service catalog, TechDocs entegrasyonu. Developer experience (DX) metrikleri, DORA metrics takibi, cognitive load azaltma.
Paketler
Backstage/Port kurulumu + service catalog
$3,900
6–8 adam/gün
Golden path templates + self-service ortam
$6,500
10–14 adam/gün
Tam platform (portal + templates + DORA + DX metrikleri)
Toplanan Kişisel Verileriniz, Toplanma Yöntemi ve Hukuki Sebebi
Kimliğinizi belirli ya da belirlenebilir kılan her türlü bilgi "kişisel veri" olarak kabul edilmektedir. Web sitemizi ziyaret ettiğinizde veya hizmetlerimizi kullandığınızda; ad, soyad, e-posta adresi, telefon numarası gibi iletişim bilgileriniz, IP adresiniz ve tarayıcı çerez verileri otomatik ya da yarı-otomatik yollarla toplanabilir. Bu veriler, 6698 sayılı Kişisel Verilerin Korunması Kanunu'nun 5. maddesinde belirtilen "bir sözleşmenin kurulması veya ifasıyla doğrudan doğruya ilgili olması" ve "ilgili kişinin temel hak ve özgürlüklerine zarar vermemek kaydıyla, veri sorumlusunun meşru menfaatleri için veri işlenmesinin zorunlu olması" hukuki sebeplerine dayanılarak işlenmektedir.
Kişisel Verilerinizin İşlenme Amacı
Toplanan kişisel verileriniz; hizmetlerimizin sunulması ve iyileştirilmesi, müşteri taleplerinin karşılanması, yasal yükümlülüklerin yerine getirilmesi, bilgi güvenliği süreçlerinin yürütülmesi ve iletişim faaliyetlerinin yönetilmesi amaçlarıyla işlenmektedir. Verileriniz, belirtilen amaçlarla sınırlı ve ölçülü olarak işlenir; amacın ortadan kalkması halinde silinir, yok edilir veya anonim hale getirilir.
Toplanan Kişisel Verilerin Kimlere ve Hangi Amaçlarla Aktarılabileceği
Kişisel verileriniz; yasal düzenlemelerin gerektirdiği hallerde kamu kurum ve kuruluşlarına, hizmetlerin sunulması amacıyla iş ortaklarımıza ve teknik altyapı sağlayıcılarına, hukuki uyuşmazlıklarda avukatlar ve danışmanlara aktarılabilir. Aktarım, Kanun'un 8. ve 9. maddelerine uygun olarak, gerekli teknik ve idari tedbirler alınarak gerçekleştirilir.
Kişisel Verileri İşlenen Kişi Olarak Haklarınız
6698 sayılı Kanun'un 11. maddesi uyarınca; kişisel verilerinizin işlenip işlenmediğini öğrenme, işlenmişse bilgi talep etme, işlenme amacını ve amacına uygun kullanılıp kullanılmadığını öğrenme, yurt içinde veya yurt dışında aktarıldığı üçüncü kişileri bilme, eksik veya yanlış işlenmişse düzeltilmesini isteme, Kanun'un 7. maddesindeki şartlar çerçevesinde silinmesini veya yok edilmesini isteme, yapılan işlemlerin aktarıldığı üçüncü kişilere bildirilmesini isteme, münhasıran otomatik sistemler vasıtasıyla analiz edilmesi suretiyle aleyhinize bir sonucun ortaya çıkmasına itiraz etme ve kanuna aykırı işleme sebebiyle zarara uğramanız halinde zararın giderilmesini talep etme haklarına sahipsiniz. Bu haklarınızı kullanmak için web sitemizdeki iletişim kanalları aracılığıyla bize başvurabilirsiniz.
Şartlar ve Koşullar
Şartlar ve Koşullar
1. Hizmet Kapsamı ve Değişiklikler
BRF Teknoloji, sunduğu yazılım geliştirme, DevOps danışmanlık, altyapı kurulumu ve teknik destek hizmetlerini bu şartlar ve koşullar çerçevesinde yürütür. Hizmet kapsamı, her proje için ayrıca belirlenir ve karşılıklı mutabakat ile kesinleştirilir. BRF Teknoloji, sunduğu hizmetlerin kapsamını, fiyatlandırmasını ve teknik detaylarını önceden bildirmek kaydıyla güncelleme hakkını saklı tutar.
2. Gizlilik Politikası
Hizmetlerimiz kapsamında toplanan kişisel veriler, Gizlilik Politikamız çerçevesinde işlenir. Detaylı bilgi için Gizlilik Politikası sayfamızı inceleyebilirsiniz.
3. Hizmet Kullanımı ve Sorumluluklar
Müşteriler, sunulan hizmetleri yalnızca yasal ve etik çerçevede kullanmayı kabul eder. Hizmetlerin kötüye kullanılması, üçüncü taraf haklarının ihlali veya yasa dışı faaliyetler için kullanılması durumunda BRF Teknoloji hizmeti askıya alma veya sonlandırma hakkına sahiptir. Müşteri, proje kapsamında sağladığı bilgilerin doğruluğundan ve güncelliğinden sorumludur.
4. Ödeme Şartları
Ödeme koşulları proje bazında belirlenir ve proje başlangıcında karşılıklı mutabakat ile kesinleştirilir. Aksi belirtilmedikçe, faturalar proje tesliminden itibaren 15 gün içinde ödenir. Geciken ödemelerde aylık %2 gecikme faizi uygulanabilir.
5. İptal ve İade Politikası
İptal talepleri, hizmetin başlangıç tarihinden en az 7 gün önce yazılı olarak bildirilmelidir. Başlamış projelerde, tamamlanan iş oranına göre ücretlendirme yapılır. Proje kapsamında özel olarak geliştirilen yazılım ve altyapı bileşenleri için iade yapılmaz.