--- title: "Hetzner'da 34GB Volume'ü 68GB'a Güvenli Genişletme Rehberim" slug: "018-hetznerda-34gb-volumeu-68gba-guvenli-genisletme-rehberim" date: "2025-09-15" category: "linux" tags: ["linux"] excerpt: "Selamlar! Bu yazıda, Hetzner üzerinde sunucularınızın Volume’larını nasıl güvenli bir şekilde alan yükseltmesi yapabileceğinizi anlatacağım... Hetzner, uygun..." coverImage: "/images/posts/018-hetznerda-34gb-volumeu-68gba-guvenli-genisletme-rehberim/cover.webp" author: "Erhan ÜRGÜN" featured: false published: true --- Selamlar! Bu yazıda, Hetzner üzerinde sunucularınızın Volume’larını nasıl güvenli bir şekilde alan yükseltmesi yapabileceğinizi anlatacağım... Hetzner, uygun fiyatlı ve güçlü sunucu çözümleri sunan bir hizmet sağlayıcıdır. Başlangıçtan itibaren adım adım ilerleyerek, sunucumda Docker projeleri için ayırdığım alanı nasıl yükselttiğimden bahsedeceğim… Linux komutlarıyla mevcut olan diskinizi hatasız ve güvenli bir şekilde genişletmeye dair tüm süreci adım adım anlatıyorum... Eğer Linux tabanlı farklı bir firmada sunucunuz varsa, aynı şekilde güvenle genişletebilirsiniz! Ben burada Docker hizmeti için anlattım ama siz sadece Docker için değill diğer diskleriniz içinde (docker komutlarını atlayarak) aynısını yapabilirsiniz… Hazırsanız, başlayalım! --- ## Mevcut Durumun Detaylı Analizi ```bash # Mevcut Volume Durumu: # - Volume.....: /dev/sdb # - Mount Point: /mnt/HC_Volume_102406908 # - Boyut......: 34GB (32GB kullanılmış, 818MB boş) # - Filesystem.: ext4 ``` ## Adım 1: Kritik Backup İşlemleri İlk olarak, tüm verilerimizi güvence altına alıyorum: ```bash # Backup dizini oluşturuyorum mkdir -p /root/volume_backup_$(date +%Y%m%d_%H%M) # Hangi dizinlerde docker-compose.yml var kontrol ediyorum find /mnt/HC_Volume_102406908 -name "docker-compose.yml" -type f 2>/dev/null | head -20 # Docker volume listesini alıyorum ve kaydediyorum docker volume ls > /root/volume_backup_20250915_1314/docker_volumes_list.txt # Container listesini kaydediyorum docker ps -a > /root/volume_backup_20250915_1314/container_list.txt # Docker compose projelerini ve konfigürasyonları yedekliyorum cd /mnt/HC_Volume_102406908 tar -czf /root/volume_backup_20250915_1314/docker_configs.tar.gz \ --exclude='*.log' \ --exclude='*/logs/*' \ --exclude='*/cache/*' \ .env* docker-compose* */docker-compose.yml */docker-compose.yaml */.env 2>/dev/null || true ``` ## Adım 2: Docker Container'ları Güvenli Durdurma Container'larınızı tek tek kontrollü bir şekilde durduruyorum: ```bash # Önce container'ların durumunu kaydediyorum docker ps --format "table {{.Names}}\t{{.Status}}" > /root/volume_backup_20250915_1314/containers_status.txt # Container'ları güvenli bir şekilde durduruyorum (graceful shutdown) echo "Container'ları durduruyorum..." docker stop -t 30 $(docker ps -q) # Durduğundan emin oluyorum docker ps # Docker servisini durduruyorum systemctl stop docker.socket systemctl stop docker ``` ## Adım 3: Volume'ü Güvenli Unmount Etme ```bash # Hangi process'lerin volume'ü kullandığını kontrol ediyorum lsof +D /mnt/HC_Volume_102406908 2>/dev/null # Eğer hala kullanan process varsa, bunları listele fuser -v /mnt/HC_Volume_102406908 2>/dev/null # Volume'ü unmount ediyorum umount /mnt/HC_Volume_102406908 # Unmount başarılı mı kontrol ediyorum mount | grep HC_Volume_102406908 # Eğer hala mount edilmişse, force unmount deneyelim # umount -l /mnt/HC_Volume_102406908 # Sadece gerekirse! ``` ## Adım 4: Hetzner Cloud Panel'de Volume Genişletme Şimdi Hetzner Cloud Console'a geçiyorum: 1. [**Hetzner Cloud Console**](https://console.hetzner.cloud/) sayfasına giriş yapıyorum 2. Sol menüden **"Volumes"** sekmesine tıklıyorum 3. **HC\_Volume\_102406908** volume'ümü buluyorum 4. Volume'ün yanındaki **⋮ (üç nokta)** menüsünden **"Resize"** seçeneğini seçiyorum 5. Slider'ı veya input alanını kullanarak boyutu 68 **GB** olarak ayarlıyorum… (Toplam aylık 3$ karşılığında) 6. **"Resize Volume"** butonuna tıklayıp işlemi onaylıyorum **Önemli:** Bu işlem 2-5 dakika sürebilir. Panel'de "Resizing" durumunu göreceksiniz. İşlem tamamlanana kadar bekleyin! ## Adım 5: Filesystem'i Genişletme Hetzner panel işlemi tamamlandıktan sonra: ```bash # Volume'ü tekrar mount ediyorum mount /dev/sdb /mnt/HC_Volume_102406908 # Mount durumunu kontrol ediyorum df -h /mnt/HC_Volume_102406908 # Bu aşamada hala 34GB görebilirsiniz, normal! # Partition tablosunu kontrol ediyorum fdisk -l /dev/sdb # ext4 filesystem'i genişletiyorum (online resize) resize2fs /dev/sdb # İşlem tamamlandıktan sonra yeni boyutu kontrol ediyorum df -h /mnt/HC_Volume_102406908 # Şimdi 68GB görmelisiniz! ``` ## Adım 6: Docker'ı Yeniden Başlatma ```bash # Docker servisini başlatıyorum systemctl start docker systemctl start docker.socket # Docker'ın düzgün başladığını kontrol ediyorum systemctl status docker # Container'ları başlatıyorum docker start $(docker ps -aq) # Tüm container'ların çalıştığını kontrol ediyorum docker ps # Container'ların sağlık durumunu kontrol ediyorum docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" ``` ## Adım 7: Son Kontroller ve Doğrulama ```bash # Disk durumunu son kez kontrol ediyorum df -h /mnt/HC_Volume_102406908 # Docker'ın düzgün çalıştığını doğruluyorum docker system df # Birkaç container'ın logunu kontrol ediyorum docker logs --tail=10 app-portainer docker logs --tail=10 app-uptime-kuma # Mount durumunu kontrol ediyorum mount | grep HC_Volume_102406908 # IO performansını test ediyorum dd if=/dev/zero of=/mnt/HC_Volume_102406908/test.img bs=1M count=100 conv=fdatasync rm /mnt/HC_Volume_102406908/test.img ``` ## Kalıcı Mount Ayarı Kontrolü ```bash # fstab'da mount ayarını kontrol ediyorum grep -E "sdb|HC_Volume" /etc/fstab # Eğer yoksa, otomatik mount için ekliyorum # NOT: UUID'yi kullanmak daha güvenli blkid /dev/sdb # UUID'yi alıp fstab'a ekleyebilirsiniz: # echo 'UUID=YOUR-UUID-HERE /mnt/HC_Volume_102406908 ext4 defaults,nofail,discard 0 0' >> /etc/fstab ``` ## İşlem Sonrası Temizlik ve Öneriler ```bash # Docker'da kullanılmayan verileri temizleme (opsiyonel) docker system prune -a --volumes --force # Backup dosyalarını saklama süresi (7 gün sonra silebilirsiniz) echo "Backup files saved at: /root/volume_backup_20250915_1314" # Sistem durumunu genel kontrol htop # CPU ve RAM kullanımı normal mi? iotop # Disk I/O normal mi? ``` ## Sorun Giderme Eğer herhangi bir aşamada sorun yaşarsanız: 1. **Unmount edilemiyorsa:** ```bash systemctl stop docker docker.socket fuser -km /mnt/HC_Volume_102406908 umount -l /mnt/HC_Volume_102406908 ``` 2. **resize2fs hata verirse:** ```bash e2fsck -f /dev/sdb # Önce filesystem check resize2fs /dev/sdb # Sonra tekrar dene ``` 3. **Container'lar başlamazsa:** ```bash docker logs docker-compose up -d # İlgili dizinde ``` ## Sonuç İşte bu kadar! Volume'mümüzü başarıyla 34GB'dan 68GB'a yükselttik… Artık: * Tüm verilerimiz güvende * Container'larımız çalışıyor * Yeni alan kullanıma hazır * Backup'larımız `/root/volume_backup_*` dizininde **Pro İpucu:** Gelecekte alan sorunları yaşamamak için Docker'ı düzenli temizleyin: ```bash # Haftalık cron job ekleyebilirsiniz echo "0 3 * * 0 docker system prune -af --volumes" >> /etc/crontab ``` ### Bu Komutun Açıklaması: #### Crontab Formatı: ```php 0 3 * * 0 docker system prune -af --volumes ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ └─── Haftanın günü (0 = Pazar) VEYA sun,mon,tue,wed,thu,fri,sat │ │ │ └───── Ay (1-12) │ │ └─────── Ayın günü (1-31) │ └───────── Saat (0-23) └─────────── Dakika (0-59) ``` **Bu ayar:** Her Pazar günü saat 03:00'te çalışır #### Docker Komutunun Anlamı: * `docker system prune`: Docker'da kullanılmayan kaynakları temizler * `-a`: Kullanılmayan TÜM image'ları siler (sadece dangling olanları değil) * `-f`: Force - onay istemeden direkt siler * `--volumes`: Kullanılmayan volume'leri de siler ### ÖNEMLİ UYARI: Bu komut **tehlikeli olabilir** çünkü: 1. **Tüm durmuş container'ları siler** 2. **Hiçbir container tarafından kullanılmayan TÜM image'ları siler** 3. **Kullanılmayan volume'leri siler** (veri kaybına yol açabilir!) 4. **Onay istemeden yapar** (-f flag'i yüzünden) ### Daha Güvenli Alternatifler: ```bash # Volume'leri SİLMEDEN temizlik (daha güvenli) echo "0 3 * * 0 docker system prune -f" >> /etc/crontab # Sadece 1 haftadan eski olanları sil echo "0 3 * * 0 docker system prune -f --filter 'until=168h'" >> /etc/crontab # Sadece dangling image'ları temizle (en güvenli) echo "0 3 * * 0 docker image prune -f" >> /etc/crontab # 1. tercihim # Eklenip eklenmediğini kontrol edin cat /etc/crontab ``` **Tavsiyem:** `--volumes` flag'ini kullanmayın, çünkü önemli verilerinizi kaybedebilirsiniz! **BONUS:** htop veya btop gibi bir araç ile mevcut tüm durumu kontrol etmeniz önemle rica olunur! ![Volume Panel](/images/posts/018-hetznerda-34gb-volumeu-68gba-guvenli-genisletme-rehberim/img/volume-panel.webp) Herhangi bir sorunla karşılaşırsanız, backup'larınız güvenle geri yükleyebilirsiniz...