Rocky Linux’ta Disk ve LVM Yönetimi

Disk yönetimi, bir sistem yöneticisinin günlük hayatında en çok karşılaştığı konulardan biridir. Storage doldu, yeni disk eklendi, partition yeniden boyutlandırılması gerekiyor… Bu senaryolar her ortamda kaçınılmaz olarak karşımıza çıkıyor. Rocky Linux üzerinde disk ve LVM yönetimini sıfırdan kavramak, hem fiziksel hem de sanal ortamlarda hayatınızı ciddi ölçüde kolaylaştıracak.

Disk Durumunu İnceleme ve Temel Araçlar

Herhangi bir işlem yapmadan önce mevcut durumu anlamak gerekiyor. Rocky Linux’ta disk durumunu incelemek için birkaç temel araç kullanıyoruz.

# Blok cihazlarını listele
lsblk -f

# Disk kullanımını göster
df -hT

# Tüm diskleri ve partitionları göster
fdisk -l

# Disk UUID bilgilerini görüntüle
blkid

lsblk -f komutu size disk hiyerarşisini, dosya sistemlerini ve mount noktalarını düzgünce gösterir. Yeni bir disk eklediğinizde ilk bakacağınız komut bu olmalı.

Gerçek dünya senaryosu: Bir müşterinin production sunucusuna yeni disk eklendi ve siz SSH ile bağlandınız. lsblk çıktısı şöyle görünüyor:

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   50G  0 disk
├─sda1        8:1    0    1G  0 part /boot
├─sda2        8:2    0    4G  0 part [SWAP]
└─sda3        8:3    0   45G  0 part
  └─rl-root 253:0    0   45G  0 lvm  /
sdb           8:16   0  100G  0 disk

sdb diski var ama üzerinde hiçbir şey yok. Buradan devam edelim.

Partition Oluşturma

Yeni diski kullanabilmek için önce partition tablosu ve partition oluşturmamız gerekiyor. GPT veya MBR formatı seçimi burada önemli. 2TB’tan büyük diskler için GPT zorunlu, daha küçükler için MBR de kullanılabilir ama GPT tercih edin.

# gdisk ile GPT partition tablosu oluştur
gdisk /dev/sdb

# Sırasıyla şu komutları gir:
# o -> yeni GPT tablosu oluştur
# n -> yeni partition
# 1 -> partition numarası
# Enter -> başlangıç sektörü (varsayılan)
# +50G -> boyut
# 8e00 -> Linux LVM tipi
# w -> yaz ve çık

Ya da parted kullanmayı tercih ediyorsanız:

parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary 0% 50%
parted /dev/sdb mkpart primary 50% 100%
parted /dev/sdb print

Not: partprobe komutunu çalıştırmayı unutmayın. Kernel’in yeni partition tablosunu okuması için bu gerekli:

partprobe /dev/sdb
lsblk /dev/sdb

LVM’ye Giriş: Fiziksel Volume Oluşturma

LVM (Logical Volume Manager), Rocky Linux’ta neredeyse her kurulumda varsayılan olarak kullanılıyor. Esnekliği sayesinde disk yönetimini çok daha kolay hale getiriyor. LVM’nin üç temel katmanı var:

  • PV (Physical Volume): Fiziksel disk veya partition
  • VG (Volume Group): PV’lerin bir araya gelmesiyle oluşan havuz
  • LV (Logical Volume): VG’den ayrılan mantıksal birimler, bunları partition gibi kullanırsınız

Yeni diskimizi LVM’ye dahil edelim:

# Physical Volume oluştur
pvcreate /dev/sdb1

# PV durumunu kontrol et
pvdisplay /dev/sdb1
pvs

pvs komutu size kısa ve öz bir çıktı verir:

  PV         VG  Fmt  Attr PSize   PFree
  /dev/sda3  rl  lvm2 a--  <45.00g     0
  /dev/sdb1      lvm2 ---  <50.00g <50.00g

/dev/sdb1 henüz bir Volume Group’a bağlı değil, bu normal.

Volume Group Yönetimi

Yeni bir VG oluşturabilir ya da mevcut VG’ye disk ekleyebilirsiniz. Üretim ortamında çoğu zaman mevcut VG’yi genişletmek gerekiyor.

# Yeni VG oluştur
vgcreate data_vg /dev/sdb1

# Ya da mevcut VG'ye ekle
vgextend rl /dev/sdb1

# VG durumunu kontrol et
vgdisplay data_vg
vgs

VG oluştururken anlamlı isimler kullanın. vg01, vg02 gibi isimler bir ay sonra ne olduğunu anlamayı zorlaştırır. data_vg, backup_vg, db_vg gibi isimler çok daha anlaşılır.

Logical Volume Oluşturma ve Dosya Sistemi Hazırlama

VG hazır olduğunda LV oluşturabilirsiniz:

# 20GB LV oluştur
lvcreate -L 20G -n data_lv data_vg

# Ya da VG alanının %80'ini kullan
lvcreate -l 80%VG -n data_lv data_vg

# LV durumunu kontrol et
lvdisplay /dev/data_vg/data_lv
lvs

LV oluşturduktan sonra dosya sistemi kurun:

# XFS dosya sistemi (Rocky Linux varsayılanı)
mkfs.xfs /dev/data_vg/data_lv

# Ya da ext4 tercih ederseniz
mkfs.ext4 /dev/data_vg/data_lv

Rocky Linux ve CentOS dünyasında XFS varsayılan dosya sistemidir. Büyük dosyalar ve yoğun I/O yükleri için XFS tercih edin. Snapshot desteği ve araç olgunluğu açısından production’da XFS güvenilir bir seçim.

Mount İşlemleri ve /etc/fstab Ayarları

Geçici mount için:

mkdir -p /data
mount /dev/data_vg/data_lv /data
df -hT /data

Kalıcı mount için /etc/fstab düzenlenmesi gerekiyor. UUID kullanmak daha güvenli:

# UUID'yi öğren
blkid /dev/data_vg/data_lv

# /etc/fstab'a ekle
echo "UUID=<buraya-uuid> /data xfs defaults 0 0" >> /etc/fstab

# fstab'ı test et (reboot gerektirmez)
mount -a
df -hT

Önemli uyarı: /etc/fstab düzenlerken dikkatli olun. Yanlış bir giriş sistemi boot etmez. mount -a komutuyla her zaman test edin.

LV Genişletme: En Sık Yapılan İşlem

Disk doldu, log partition şişti, database büyüdü… LV genişletmek sysadmin hayatının en sık tekrarlanan işlemlerinden biri. Rocky Linux’ta bunu canlı sistemde, servis kesintisi olmadan yapabilirsiniz.

# Mevcut durumu kontrol et
df -hT /data
lvs /dev/data_vg/data_lv

# LV'yi 10GB genişlet
lvextend -L +10G /dev/data_vg/data_lv

# Ya da VG'deki tüm boş alanı kullan
lvextend -l +100%FREE /dev/data_vg/data_lv

# XFS dosya sistemini genişlet (online yapılabilir)
xfs_growfs /data

# ext4 için
resize2fs /dev/data_vg/data_lv

# Sonucu kontrol et
df -hT /data

XFS ile ext4 arasındaki önemli fark: XFS dosya sistemi yalnızca genişletilebilir, küçültülemez. ext4 ise hem genişletilebilir hem de küçültülebilir (küçültmek risklidir, data backup’ı olmadan yapmayın).

Tek komutla hem genişletip hem dosya sistemini büyütmek isterseniz:

lvextend -r -L +10G /dev/data_vg/data_lv

-r parametresi resize işlemini otomatik yapar. XFS ve ext4 için ayrı ayrı komut girmek zorunda kalmazsınız.

LVM Snapshot: Backup ve Test Ortamları İçin Kritik Özellik

LVM snapshot, production sistemlerde backup almadan önce ya da riskli bir işlem yapmadan önce hayat kurtarır. Snapshot anlık bir görüntü alır ve değişiklikler original LV’yi bozmaz.

# /dev/data_vg/data_lv için 5GB snapshot al
lvcreate -L 5G -s -n data_snap /dev/data_vg/data_lv

# Snapshot durumunu kontrol et
lvs -a /dev/data_vg

# Snapshot'ı mount et ve incele
mkdir -p /mnt/snapshot
mount -o ro /dev/data_vg/data_snap /mnt/snapshot
ls /mnt/snapshot

# İşin bitince snapshot'ı unmount et ve sil
umount /mnt/snapshot
lvremove /dev/data_vg/data_snap

Snapshot boyutu hakkında: Snapshot, orijinal LV’de yapılan değişiklikleri tutar. Yoğun yazma yapılan bir LV için snapshot boyutunu büyük tutun. Snapshot dolup taşarsa geçersiz hale gelir.

Gerçek senaryo: Database migration öncesi snapshot alıp, migration başarısız olursa geri dönmek için:

# Migration öncesi snapshot
lvcreate -L 10G -s -n db_before_migration /dev/data_vg/mysql_lv

# Migration yap...
# Bir şeyler ters gitti! Geri dönelim:
lvconvert --merge /dev/data_vg/db_before_migration
# Sistemi reboot et, LV otomatik merge edilir

Disk Değiştirme ve PV Taşıma

Bir disk arızalı ya da küçük, yenisiyle değiştirmeniz gerekiyor. LVM bunu canlı sistemde yapmanıza imkan veriyor.

# Yeni diski ekle ve PV oluştur
pvcreate /dev/sdc1
vgextend data_vg /dev/sdc1

# Eski diskten yeni diske verileri taşı
pvmove /dev/sdb1 /dev/sdc1

# Taşıma tamamlandıktan sonra eski diski VG'den çıkar
vgreduce data_vg /dev/sdb1
pvremove /dev/sdb1

pvmove işlemi zaman alabilir, büyük disklerde saatler sürebilir. İşlemi arka planda çalıştırıp durumunu izleyebilirsiniz:

# Arka planda başlat
pvmove -b /dev/sdb1 /dev/sdc1

# Durumu izle
pvmove

Thin Provisioning ile Akıllı Disk Yönetimi

Thin provisioning, fiziksel alanı gerçek kullanım anında tahsis eder. 100GB’lık bir thin pool’dan 10 tane 20GB LV oluşturabilirsiniz ama gerçek kullanım 50GB’ta kalırsa sadece 50GB fiziksel alan kullanılır.

# Thin pool oluştur
lvcreate -L 80G -T data_vg/thin_pool

# Thin pool'dan thin LV oluştur
lvcreate -V 20G -T data_vg/thin_pool -n thin_lv1
lvcreate -V 20G -T data_vg/thin_pool -n thin_lv2

# Dosya sistemi oluştur ve mount et
mkfs.xfs /dev/data_vg/thin_lv1
mount /dev/data_vg/thin_lv1 /mnt/thin1

# Thin pool kullanımını izle
lvs -a data_vg

Dikkat: Thin provisioning kullanıyorsanız pool doluluk oranını mutlaka izleyin. Pool dolduğunda tüm thin LV’ler erişilemez hale gelir. Monitoring ve alert kurulumu şart.

Sorun Giderme: Yaygın Durumlar

VG Aktif Değil

Sistem yeniden başlatıldıktan sonra VG görünmüyor:

# Tüm VG'leri tara ve aktif et
vgscan
vgchange -ay

# Tek bir VG için
vgchange -ay data_vg

PV Metadata Bozulması

# PV metadata'yı yeniden oluştur
pvcreate --restorefile /etc/lvm/archive/data_vg_xxxxx.vg 
  --uuid <eski-uuid> /dev/sdb1

# VG'yi geri yükle
vgcfgrestore data_vg

LVM, her değişiklikte /etc/lvm/archive/ dizinine backup alır. Bu dizini düzenli kontrol edin.

Disk Kullanım Uyarısı Almak

Bir shell scripti ile disk doluluk takibi:

#!/bin/bash
# /usr/local/bin/disk_check.sh

THRESHOLD=85
HOSTNAME=$(hostname)

df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output; do
    USAGE=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
    PARTITION=$(echo $output | awk '{ print $2 }')
    if [ $USAGE -ge $THRESHOLD ]; then
        echo "UYARI: $HOSTNAME - $PARTITION doluluk orani: %$USAGE"
        # Mail veya Slack notification ekleyebilirsiniz
    fi
done
chmod +x /usr/local/bin/disk_check.sh
# Crontab'a ekle: her 30 dakikada bir çalıştır
echo "*/30 * * * * root /usr/local/bin/disk_check.sh" >> /etc/cron.d/disk_check

Stratis: Rocky Linux’ta Modern Depolama Yönetimi

Rocky Linux 8 ve 9 ile birlikte Stratis depolama yöneticisi kullanıma sunuldu. LVM ve XFS’in üzerine oturmuş, daha basit bir arayüz sunuyor.

# Stratis kurulumu
dnf install stratisd stratis-cli -y
systemctl enable --now stratisd

# Pool oluştur
stratis pool create my_pool /dev/sdb

# Dosya sistemi oluştur
stratis filesystem create my_pool my_fs

# Mount et
mount /stratis/my_pool/my_fs /data

# Pool durumunu kontrol et
stratis pool list
stratis filesystem list

Stratis henüz production’da LVM kadar yaygın kullanılmıyor ama basitliği ile dikkat çekiyor. Küçük ve orta ölçekli ortamlarda denemeye değer.

Performans İzleme ve I/O Analizi

Disk yönetimi sadece alan yönetiminden ibaret değil, performans da kritik:

# Disk I/O istatistikleri
iostat -xz 1 5

# LVM seviyesinde I/O takibi
dmstat -d

# Hangi process disk kullanıyor
iotop -o

# Belirli bir disk için detaylı istatistik
iostat -d /dev/sda 2 10

iostat çıktısında dikkat etmeniz gereken metrikler:

  • %util: Disk meşguliyet oranı. %90 üzeri sorun işareti
  • await: I/O bekleme süresi milisaniye cinsinden. SSD için 1-2ms, HDD için 10-20ms normal
  • r/s ve w/s: Saniyedeki okuma/yazma işlemi sayısı

Sonuç

Rocky Linux’ta disk ve LVM yönetimi, doğru araçları ve kavramları öğrendikten sonra son derece güçlü ve esnek bir yapıya dönüşüyor. PV, VG ve LV hiyerarşisini kavradıktan sonra büyük çoğunluğu servis kesintisi olmadan yapabileceğiniz işlemlerin önü açılıyor: online genişletme, canlı disk değişimi, snapshot ile anında backup.

Günlük operasyonlarda şu alışkanlıkları edinin: her kritik işlemden önce lvs, vgs, pvs ile durumu kontrol edin, LVM archive dizinini temiz tutun, snapshot’ları düzenli alın ve doluluk oranlarını mutlaka monitörleyin. Thin provisioning gibi gelişmiş özellikleri production’a almadan önce test ortamında iyice deneyin.

Disk yönetiminde yapılan hatalar çoğunlukla telafi edilemez sonuçlar doğurur. Ama doğru planlama, düzenli monitoring ve LVM’nin sunduğu esneklikle bu riskleri minimize edebilirsiniz. Rocky Linux’un sağladığı araç seti, kurumsal ortamlarda ihtiyaç duyulan her senaryoyu karşılayacak olgunlukta.

Yorum yapın