VMware ESXi yapısının doğru çalışabilmesi için en kritik bileşenlerden biri genellikle göz ardı edilen scratch alanıdır.

Scratch alanı VMware ESXi host’un geçici dosyaları, loglar, coredump çıktıları, güncelleme işlemleri ve system swap gibi bir dizi veriyi depoladığı özel bir çalışma dizinidir. Bu alan kalıcı değilse birçok yönetim fonksiyonu başarısız olabilir, log’lar kaybolur, host stabilitesinde bozulmalar meydana gelir.

Scratch Alanı Nedir? Neden Kritik?

Scratch alanı VMware ESXi host’un aşağıdaki geçici verileri depoladığı çalışma dizinidir.

  • Host logları (/var/log),
  • Güncelleme sırasında kullanılan geçici dosyalar,
  • Diagnostik çıktılar,
  • Coredump verileri,
  • Bazı servislerin çalışma dosyaları,
  • Paket kurulum (esxcli software) geçici alanı,

Eğer kalıcı bir scratch alanınız yoksa VMware ESXi bu dizini ramdisk üzerinde (/tmp/scratch) oluşturur.

Bu durumda

  • Host yeniden başladığında tüm geçici veriler kaybolur,
  • Log dosyaları yazılamaz veya sık sık silinir,
  • Update Manager taramaları başarısız olur,
  • HA agent kurulumu başarısız olabilir,
  • esxcli komutları hatalar verir,
  • SD kart üzerinde çalışan host’larda yaygın görülen stabilite problemleri yaşanır,

VMware ESXi 7.x ve 8.x ile Birlikte Değişen Mimari = ESX-OSData

VMware ESXi 7.0 itibarıyla VMware geleneksel FAT16 scratch bölümünü büyük ölçüde ESX-OSData volume içerisine taşıdı. Bu yeni mimaride;

  • Konfigürasyon, log, coredump gibi bileşenler OSData VMFS-L bölümünde bulunur.
  • Yine de scratch path manuel olarak değiştirilebilir ve bazı durumlarda değiştirilmesi gerekir.

Örneğin

  • SD kart üzerine ESXi kurulduysa
  • USB’den boot edilen sistemlerde
  • Boot From SAN yapılarında
  • SAS disklerde Local flag “false” ise Scratch otomatik oluşturulamaz ve ramdisk kullanılır.

Persistent Scratch Alanı Olmadığında Görülen Belirtiler

Aşağıdaki hatalar genellikle scratch alanının persistant olmamasıyla doğrudan ilişkilidir.

esxcli komut hataları

socket.error: [Errno 2] No such file or directory

Update Manager taramalarının başarısız olması

"General System Error"

Log dosyalarının güncellenmemesi

/var/log içeriği yeniden boot sonrası boşalır

HA agent yüklenememesi

Birkaç gün çalıştıktan sonra host üzerinde tekrar eden problemler

SD/USB tabanlı hostlarda sık rastlanan sorunlar.

VMware Neden Scratch’ı SD Kart / USB Üzerinde Önermez?

VMware teknik dokümanlarında çok net şekilde belirtir: SD card ve USB aygıtların write-cycle ömrü sınırlıdır. Scratch alanı sürekli yazma yaptığı için bu cihazlar hızla bozulabilir. Bu yüzden scratch path için önerilen depolama tipleri;

  • VMFS datastore
  • Local disk
  • NFS datastore (host’a özel dizin olması şartıyla)

(Not: vSAN datastore üzerinde scratch ayarlamak resmi olarak desteklenmez.)

VMware ESXi Scratch Alanı Seçim Önceliği (Boot Sırasında)

VMware ESXi her boot’ta aşağıdaki sırayla uygun scratch alanı arar;

  1. locker.conf içinde tanımlanan ScratchConfig.ConfiguredScratchLocation
  2. Local boot device üzerindeki 4 GB FAT16 bölümü
  3. Local bir cihaz üzerindeki FAT16 bölümü
  4. Local cihaz üzerindeki bir VMFS datastore .locker dizini
  5. Ramdisk (/tmp/scratch) → En riskli, kalıcı olmayan seçenek.

Eğer scratch ramdisk’e düşüyorsa sistemde sorun yaşamanız kaçınılmazdır.

Persistent Scratch Dizini Oluşturma Yöntemleri

Aşağıdaki her yöntem farklı yönetim alışkanlıklarına hitap eder. Hepsinin ortak özelliği son adımda host’un reboot edilmesinin zorunlu olmasıdır.

Yöntem 1 : vSphere Client (HTML5) İle Scratch Konfigürasyonu

  1. vCenter’a giriş yapın
  2. Hosts and Clusters → İlgili ESXi host → Configure sekmesi
  3. System → Advanced System Settings
  4. ScratchConfig.ConfiguredScratchLocation ayarını bulun
  5. Edit deyin
  6. Aşağı formatta bir dizin girin:
/vmfs/volumes/DatastoreUUID/.locker-ESXHostname
  1. Host’u reboot edin

Datastore UUID → Datastore → Summary → URL alanında bulunur

/vmfs/volumes/PURE01-DS1/.locker-nodename01

İki parametre çoğu zaman aynı sanılsa da farklıdır:

AyarNe Yapar?
ScratchConfig.ConfiguredScratchLocationESXi geçici çalışma alanını belirler
Syslog.global.logDirLogların yazılacağı dizini belirler
  • Eğer Syslog.global.logDir = /scratch/log ise sadece scratch’ı değiştirmeniz yeterlidir
  • Farklı bir log dizini kullanıyorsanız scratch değişse de loglar buraya gitmez

En Sağlıklı Senaryo:

Syslog → scratch/log
Scratch → persistent bir VMFS dizini

Yöntem 2 : VMware Host Client ile Scratch Ayarlama (Direkt ESXi Bağlantısı)

  1. https://ESXi-IP/ui ile host’a bağlanın
  2. Storage → Datastore Browser
  3. Yeni bir klasör oluşturun:
.locker-ESXHostname
  1. Manage → System → Advanced Settings
  2. ScratchConfig.ConfiguredScratchLocation alanına tam path’i yazın:
/vmfs/volumes/DatastoreUUID/.locker-ESXHostname
  1. Host’u reboot edin

Yöntem 3 : PowerCLI ile Scratch Konfigürasyonu

PowerShell üzerinde:

Connect-VIServer ESX-IP
Get-Datastore
New-PSDrive -Name "dstore" -Root \ -PSProvider VimDatastore -Datastore (Get-Datastore "Datastore1")
Set-Location dstore:\
New-Item ".locker-ESXHostname" -ItemType Directory
Get-VMHost | Get-AdvancedSetting -Name ScratchConfig.ConfiguredScratchLocation | Set-AdvancedSetting -Value "/vmfs/volumes/Datastore1/.locker-ESXHostname"

Son adım olarak sunuyu yeniden başlatmak için;

Restart-VMHost –Confirm:$false

Yöntem 4 : Tech Support Mode / SSH ile Scratch Ayarlama

SSH aktifse bu yöntem daha hızlıdır.

ls /vmfs/volumes

mkdir /vmfs/volumes/Datastore1/.locker-ESXHostname

vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string /vmfs/volumes/Datastore1/.locker-ESXHostname

Reboot şarttır.

Yöntem 5 : Kickstart (Otomatik Kurulum) ile Scratch Tanımlama

Otomatik VMware ESXi kurulumu yapıyorsanız aşağıdaki komutları kickstart dosyasına ekleyiniz.

scratchdirectory=/vmfs/volumes/DatastoreName/.locker-$(hostname)-$(esxcfg-info -b)
mkdir -p $scratchdirectory

vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string $scratchdirectory

Kurulum sonrası ilk reboot’ta aktif olacaktır.

Scratch Konfigürasyonunu Silmek ve Ramdisk’e Geri Döndürmek

Eğer scratch konfigürasyonunu temizlemek istiyorsanız:

  1. Host’u Maintenance Mode’a alın
  2. Aşağı değeri girin:
ScratchConfig.ConfiguredScratchLocation = /tmp
  1. Reboot edin
  2. CurrentScratchLocation → /tmp olarak görünür
  3. Artık datastore’u güvenle unmount edebilirsiniz
# mevcut konfig deki dizini görüntülemek
vim-cmd hostsvc/advopt/view ScratchConfig.ConfiguredScratchLocation

# yeni dizini eklemek
vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string /vmfs/volumes/PURE01-DS01/.locker-servername01