ESXI Linux Windows

PowerCLI ile ESXi’de NVMe Drives TBW nasıl kontrol edilir?

PCLI10 Install
Share

SSD’lerle çalışırken, TBW’sine (“Yazılan Toplam Bayt” veya “Yazılan Terabayt”) dikkat etmeniz gerekir. Maksimum TBW garantisi genellikle satıcı tarafından spesifikasyonlarında sağlanır. Bu değer, garanti sona erene kadar verilerin tüm cihaza nasıl yazılacağını açıklar. Geçerli değer SMART ile kontrol edilebilir. Bu makalede, PowerShell ile veya komut satırından bir ESXi ana bilgisayarında çalışan NVMe tabanlı sürücülerde TBW değerinin nasıl kontrol edileceği açıklanmaktadır . 

 

Bu örnekte, biz Samsung 950 PRO NVMe tabanlı flash sürücü kullandığımızı belirtmek isteriz. Bu cihazın dayanıklılığı 400 TBW olarak derecelendirilmiştir. Şunu bilmelisiniz ki bu disk son kullanıcı sınıfı bir SSD. Örneğin, Virtual SAN için en düşük dayanıklılık Sınıfı 365TBW’den başlar.

Adım adım ilerleyelim;

  1. ESXi Ana Bilgisayarına SSH ile bağlanın
  2. NVMe sürücülerini tanımlayın

# esxcli nvme device list
HBA Name Status Signature
-------- ------ ---------------------
vmhba0 Çevrimiçi nvmeMgmt-nvme00610000

 

3. “Data Unit Written” sayacını alın. vmhbaX kimliğini 2. adımda tanımlanan bağdaştırıcıyla değiştirin.

 

# esxcli nvme device log smart get -A vmhba0 |grep Written

Data Units Written: 0xe1c78d

4. Sayaç onaltılıktır. Ondalık sayıya dönüştürün. Bu, komut satırından veya Programcı modundaki Windows Hesap Makinesi’nden de yapılabilir.

# printf "%d\n" 0xe1c78d

Sayaç, 512 baytlık birimlerin 1000’ini ifade ettiğinden biraz sıra dışıdır. Sonucu 512000 ile çarpın ve TBW için 1TB’ye (1.099.511.627.776) veya GBW için 1GB’a (1.073.741.824) bölün. 14796685 * 512000 / 1099511627776 = 6,9 TBW
14796685 * 512000 / 1073741824 = 7055 GBW
GBW hesaplamasını yapmak için bu tek satırı da kullanabilirsiniz:


# i=$(esxcli nvme device log smart get -A vmhba0 |grep Written | cut -d ":" -f 2);
echo $(($(printf "%d\n"
$i)*512000/1073741824)) GBW
7055 GBW

veya TBW:

# i=$(esxcli nvme device log smart get -A vmhba0 |grep Written | cut -d ":" -f 2);
echo $(($(printf "%d\n"
$i)*512000/1099511627776)) TBW
6 TBW

PowerShell / PowerCLI Komut Dosyası

Aşağıdaki PowerShell betiği, bir vCenter Server örneğindeki tüm NVMe cihazları hakkında bir rapor görüntüler.


$AllInfo = @()
Foreach ($vmhost in Get-VMHost |Where-object {$_.powerstate -eq "PoweredOn"}) {
$esxcli = get-esxcli -V2 -vmhost $vmhost
$devices = $esxcli.nvme.device.list.Invoke()
Foreach ($device in $devices) {
$nvme = $esxcli.nvme.device.get.CreateArgs()
$nvme.adapter = $device.HBAName
$Info = "" | Select VMHost, HBA, Model, DataUnitsWritten, GBW, TBW
$Info.VMHost = $vmhost.Name
$Info.HBA = $device.HBAName
$Info.Model = ($esxcli.nvme.device.get.invoke($nvme) | Select-Object ModelNumber).ModelNumber
$Info.DataUnitsWritten = [int]($esxcli.nvme.device.log.smart.get.Invoke($nvme) |Select-Object DataUnitsWritten).DataUnitsWritten
$Info.GBW = [math]::round($Info.DataUnitsWritten*512000/1Gb)
$Info.TBW = [math]::round($Info.DataUnitsWritten*512000/1Tb, 1)
$AllInfo += $Info
}
}

$AllInfo

 

Ekran çıktısı şu şekilde olacaktır:


VMHost : esx4.virten.lab
HBA : vmhba0
Model : Samsung SSD 950 PRO 256GB
DataUnitsWritten : 14797188
GBW : 7056
TBW : 6,9

512 Bayt ve 4k Blok Boyutu

Sayaç açıklamasına göre, fiziksel blok boyutunun 512 bayt veya daha büyük olması fark etmez. Değer her zaman 512 Bayt olarak hesaplanır:

Data units written: Ana bilgisayarın denetleyiciye yazdığı 512 bayt veri birimi sayısını içerir;
bu değer meta verileri içermez. Bu değer binler olarak bildirilir (yani, 1 değeri yazılan 512 baytlık 1000 birime karşılık gelir) ve yukarı yuvarlanır. LBA boyutu 512 bayttan farklı bir değer olduğunda, kontrolör yazılan veri miktarını 512 bayt birime çevirecektir.
NVM komut seti için, Yazma işlemlerinin bir parçası olarak yazılan mantıksal bloklar bu değere dahil edilecektir.