Sistem/DevOps•7 dk okuma

Veeam Yedeklemesinde MS SQL ve Exchange VSS Writer Hataları (0x8004231f) ve Log Truncation Sorunları

Veritabanı sunucularında yedek alırken Volume Shadow Copy Service (VSS) kilitlenmeleri, Event ID 12289, kararsız duruma düşen SqlServerWriter ve Exchange işlem günlüklerinin (transaction log) temizlenememesi sorununun kalıcı çözümü.

AE

Ahmet Ertekin

19 May 2023

Veeam Yedeklemesinde MS SQL ve Exchange VSS Writer Hataları (0x8004231f) ve Log Truncation Sorunları

Veeam Yedeklemesinde MS SQL ve Exchange VSS Writer Hataları (0x8004231f) ve Log Truncation Sorunları

Bir sistem yöneticisinin Veeam konsolunda en sık gördüğü kırmızı hata mesajı şudur: "Processing SQL-PROD Error: VSSControl: Cannot freeze guest methods using VSS. Transaction logs will not be truncated." Bu durum yalnızca yedeğin yarım kalmasına yol açmaz; temizlenemeyen SQL veya Exchange .ldf log dosyalarının diski tamamen doldurarak veritabanını kilitlemesine neden olur. VSS mekanizmasını ve hata çözümlerini inceliyoruz.

1. Windows VSS (Volume Shadow Copy) Mantığı

Veeam gibi kurumsal yedekleme yazılımları canlı bir SQL sunucusunun yedeğini alırken makineyi durduramaz. Microsoft VSS servisi şu sırayla çalışır:

  1. VSS Requestor (Veeam): İşletim sistemine "Yedek alıyorum, hazırlanın" der.
  2. VSS Writer (SqlServerWriter / ExchangeWriter): Bellekteki (RAM) tamamlanmış verileri hızla diske yazar, yeni gelen yazma isteklerini birkaç saniyeliğine bellekte bekletir (Freeze).
  3. VSS Provider: Diskin anlık gölge kopyasını (Shadow Copy) oluşturur.
  4. Thaw (Serbest Bırakma): Bekleyen işlemler diske yazılmaya devam eder.
  5. Log Truncation: Başarılı yedek sonrası eski işlem logları (.ldf) silinerek disk alanı boşaltılır.

2. VSS Writer Durumunu Teşhis Etme

Komut istemini (CMD) yönetici olarak açıp VSS yazıcılarının durumunu sorgulayın:

vssadmin list writers

Eğer çıktıda SqlServerWriter veya Microsoft Exchange Writer için: State: [8] Failed veya Last error: Non-retryable error görüyorsanız o servis kilitlenmiştir.

3. Adım Adım Sorun Giderme Reçetesi

Adım 1: Gölge Depolama Alanı Boyutunu Artırma (Hata 0x8004231f)

Genellikle VSS alanı yetersiz kaldığında gölge kopya patlar:

# Gölge kopya depolama alanını sınırsız (Unbounded) yapma
vssadmin resize shadowstorage /for=C: /on=C: /maxsize=unbounded
vssadmin resize shadowstorage /for=D: /on=D: /maxsize=unbounded

Adım 2: Kilitlenen Writer'ı Yeniden Başlatma

Sunucuyu yeniden başlatmadan VSS yazıcısını ayağa kaldırmak için ilgili Windows servisini yeniden başlatın:

  • SQL Server Writer için: SQL Server VSS Writer servisini yeniden başlatın.
  • Exchange için: Microsoft Exchange Information Store servisini yeniden başlatın.
Restart-Service -Name "SQLWriter" -Force

Adım 3: SQL Yetkilendirmesi (Sysadmin Rolü)

Veeam'in sanal makine içine enjekte ettiği misafir ajanın (Guest Interaction Proxy) SQL üzerinde işlem yapabilmesi için, Veeam servis hesabının SQL Server üzerinde Sysadmin rolüne sahip olması şarttır!

Karşılaşılan Kritik Hatalar ve Çözüm İpuçları

  • Auto-Close Özelliğinin Açık Kalması: Bazı küçük veritabanlarında AUTO_CLOSE = ON bırakılmıştır. VSS snapshot anında veritabanı kapandığı için SqlServerWriter çöker. Tüm SQL veritabanlarında AUTO_CLOSE özelliği kapatılmalıdır:
ALTER DATABASE [OrnekDB] SET AUTO_CLOSE OFF;
  • Üçüncü Parti Snapshot Çakışması: Sunucuda aynı anda hem Windows yerel gölge kopyası (Shadow Copies) hem de SAN depolama snapshot'ı tetikleniyorsa VSS kilitlenir. Yedekleme saatlerinde diğer snapshot görevleri durdurulmalıdır.

Mühendis Notu

Log truncation çalışmadığında geçici çözüm olarak SQL log dosyasını SHRINK edip geçmeyin. Kök neden VSS Writer'ın yedekleme sırasında hata almasıdır. Sorunu VSS seviyesinde çözmediğiniz sürece o disk 3 gün sonra tekrar dolacaktır.