SSD Nodes Learn 🎉 VPS $4.99/aydan başlayan
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-07

Linux VPS uzerinde NVMe disk dogrulama yontemleri

Linux VPS ortaminda disk turunu dogrulamak icin lsblk, sysfs ve nvme-cli komutlarini kullanin. Fio ile gecikme testi yaparak sanal disk arkasindaki gercek donanimi teshis edin.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, August 3, 2026.

Linux üzerinde bir NVMe diski dört adımda doğrulama

Bir Linux VPS üzerinde bir NVMe diski doğrulamak için şu dört kontrolü sırasıyla çalıştırın: cihaz adı için lsblk, dönen medya kontrolü için sysfs içindeki rotational bayrağı, gerçek bir NVMe denetleyicisi için nvme list ve bir ana makinenin taklit edemeyeceği tek sayı için kısa bir fio çalıştırın. İlk üçü birer saniye sürer. Sonuncusu ise konuyu kesinleştirir, çünkü çoğu VPS platformunda hipervizör fiziksel diski konuk sistemden gizler.

NVMe (non-volatile memory express), flash depolamanın PCIe (peripheral component interconnect express) hatları üzerinden konuştuğu protokoldür. Dönen sürücüler için tasarlanmış SATA ve AHCI yolunun yerini almıştır ve CPU ile flash arasındaki kuyruklama darboğazını ortadan kaldırdığı için hızlıdır. Bir sanal makine içinde bu protokolü nadiren doğrudan kullanırsınız. Ana makinenin sizin için oluşturduğu sanal bir diskle iletişim kurarsınız; bu nedenle konuk sisteminizdeki cihaz adı, raftaki medyayı değil, bir sürücüyü tanımlar.

Adım 1: lsblk ne gösterir?

lsblk, çekirdeğin blok aygıt listesini okur. -d bayrağı bölümleri gizler, böylece disk başına tek bir satır görürsünüz.

lsblk -d -o NAME,ROTA,SIZE,TYPE,TRAN,MODEL

Bir KVM VPS genellikle şu şekilde yanıt verir:

NAME ROTA  SIZE TYPE TRAN MODEL
vda     0   80G disk

Üç adlandırma düzeni neredeyse tüm Linux sunucularını kapsar:

  • nvme0n1, NVMe denetleyicisi 0 üzerindeki 1 numaralı ad alanıdır. Konuk sisteminiz gerçek veya emüle edilmiş bir NVMe aygıtı kullanmaktadır.
  • sda, SCSI katmanıdır. Gerçek SATA ve SAS diskler burada yer alır; virtio-scsi sürücüsü de bu katmanı kullanır.
  • vda, çoğu KVM ana bilgisayarının varsayılan olarak kullandığı paravirtual blok sürücüsü olan virtio-blk'dir.

TRAN (taşıma) sütunu, NVMe aygıtı için nvme, konuğun doğrudan görebildiği bir SATA diski için ise sata değerini okur. virtio-blk altında bu sütun genellikle boştur, çünkü konuğun raporlayabileceği fiziksel bir taşıma katmanı yoktur. MODEL de aynı nedenle boştur. Bir VPS üzerinde boş bir model dizgisi normaldir ve donanım hakkında herhangi bir bilgi vermez.

Adım 2: dönen disk ihtimalini eleme

DISK=$(lsblk -dno NAME,TYPE | awk '$2 == "disk" { print $1; exit }')
echo "checking $DISK"
cat "/sys/block/$DISK/queue/rotational"
readlink -f "/sys/block/$DISK"

rotational dosyası, çekirdek cihazın dönen plakalara sahip olduğuna inandığında 1, diğer tüm durumlar için ise 0 değerini tutar. Fiziksel sunucularda (bare metal) bu değer doğrudan sürücüden gelir. virtio-blk altında ise değer, ana makinenin (host) belirlediği bir özellik bitinden gelir; bu nedenle 0 değeri, standart bir sabit diski eler ancak bunun ötesinde kesin bir kanıt sunmaz. Yine de dosyayı okuyun: SSD olarak satılan bir üründe 1 değerinin görülmesi açık bir çelişkidir ve destek ekibinin itiraz edemeyeceği somut bir kanıttır.

readlink -f, sysfs sembolik bağını çözer ve cihazın bağlı olduğu veri yolunu (bus) yazdırır:

/sys/devices/pci0000:00/0000:00:05.0/virtio2/block/vda

Bu yoldaki virtio kelimesi, bu adım için aradığınız cevaptır. Bir NVMe cihazı, /sys/devices/pci0000:00/0000:01:00.0/nvme/nvme0/nvme0n1 gibi nvme içeren bir yol verir; doğrudan bağlı bir ATA diski ise ata1 içeren bir yol verir. Bu, lsblk komutunun yazdırdığı bilgiyle aynıdır; ancak biçimlendirilmiş bir sütun yerine doğrudan çekirdekten alınmıştır. Bu yöntem, TRAN alanı boş olduğunda oldukça kullanışlıdır.

Adım 3: nvme-cli ve PCI veri yolunu sorgulama

sudo apt update
sudo apt install -y nvme-cli pciutils
sudo nvme list || echo "nvme-cli found no NVMe device"
lspci | grep -i -e nvme -e 'non-volatile' || echo "no NVMe controller on this guest's PCI bus"

nvme list, her namespace için denetleyicinin seri numarası, model dizisi ve aygıt yazılımı sürümünü içeren bir satır yazdırır. Boş bir tablo, konuk sisteminize hiçbir NVMe aygıtının sunulmadığı anlamına gelir. lspci komutunun eşleşen bir satır döndürmemesi de aynı durumu diğer taraftan doğrular: konuk sisteminizin görebildiği sanal PCI veri yolunda hiçbir NVMe denetleyicisi bulunmamaktadır. Her iki sonucun da boş olması, virtio tabanlı bir VPS üzerinde normal bir durumdur ve ana makinede NVMe sürücüsü olmadığı anlamına gelmez.

Eğer bir namespace listelenirse, nvme-cli ile daha fazla bilgi alınabilir. sudo nvme id-ctrl /dev/nvme0 denetleyici kimliğini, sudo nvme smart-log /dev/nvme0n1 ise sıcaklık, çalışma saati ve tahmini yazma ömrünün yüzde kaçının kullanıldığını yazdırır. Bu komutları yalnızca nvme list bir aygıt listelediğinde çalıştırın; çünkü her iki komut da işlem yapabilmek için gerçek bir /dev/nvme* düğümüne ihtiyaç duyar.

Gerçek bir NVMe ana makinesinde neden hala /dev/vda görünür

Hipervizör, konuk işletim sisteminizin hangi cihaz modelini göreceğine karar verir ve bu seçim, alttaki fiziksel ortamdan bağımsızdır. Üç yaygın yapılandırma mevcuttur.

  • NVMe sürücüler üzerinde bulunan bir dosya, mantıksal bir birim veya ZFS veri kümesi üzerinde çalışan virtio-blk veya virtio-scsi. Bu durumda vda veya sda görürsünüz. Depolama birimi NVMe'dir ancak konuk sistemin bunu öğrenmesinin bir yolu yoktur.
  • Herhangi bir depolama biriminin önünde emüle edilmiş bir NVMe denetleyicisi. Veriler bir SATA dizisine veya iki raf ötedeki bir ağ birimine yazılsa bile nvme0n1 görürsünüz.
  • Ana makinenin fiziksel bir denetleyiciyi tek bir konuğa atadığı PCIe passthrough. Bu durumda gerçek bir model dizisine sahip gerçek bir nvme0n1 görürsünüz. Bu durum paylaşımlı VPS planlarında nadirdir, çünkü kart o müşteriye özel hale gelir.

Dolayısıyla cihaz adı sizi her iki yönde de yanıltabilir. Daha da kötüsü, ana makine yazma işlemleriniz ile flash bellek arasına bir write-back önbelleği, bir RAID katmanı veya çoğaltılmış bir ağ birimi koyabilir; bunların her biri /sys içindeki tek bir ismi bile değiştirmeden elde ettiğiniz performansı değiştirir. Bu yüzden cihaz adı, incelemeye başladığınız yerdir, bitirdiğiniz yer değil. Eğer hala bir plan seçme aşamasındaysanız, NVMe ve SATA SSD depolama arasındaki fark her bir katmanın gerçekte ne kadar ödemeye değer olduğunu açıklar.

Gecikme süresi en dürüst testtir, bu yüzden ölçün

fio (flexible I/O tester), gerçek bir dosya üzerinde gerçek okuma işlemleri gerçekleştirir ve her birinin ne kadar sürdüğünü raporlar. Küçük rastgele okumalar bu senaryo için doğru iş yüküdür; çünkü bu işlemler depolama birimine gidiş-dönüş süresini ortaya çıkarır ve "read-ahead" (önceden okuma) mekanizmasıyla hızlandırılamazlar.

Öncelikle test dosyasını oluşturun ve dosya sisteminin arabelleksiz (unbuffered) I/O işlemlerini kabul ettiğini doğrulayın. --direct=1, dosyayı O_DIRECT bayrağı ile açar; bu bayrak sayfa önbelleğini (page cache) devre dışı bırakır. Bu bayrak kullanılmazsa, disklerin asla ulaşamayacağı RAM hızlarını ölçmüş olursunuz.

sudo apt install -y fio
fio --name=prep --filename=/var/tmp/nvme-check.tmp --size=256M --bs=1M --rw=write --direct=1 --end_fsync=1 > /dev/null \
  && echo "unbuffered writes work here, the timing test is valid" \
  || echo "this filesystem refuses direct=1, so the timing test below will not run"

Eğer bu komut bir reddetme mesajı döndürürse, seçtiğiniz yol O_DIRECT desteği olmayan bir dosya sistemi üzerindedir. Konteyner overlay dosya sistemleri ve bazı ağ dosya sistemleri bu şekilde davranır. VPS kök dosya sistemi üzerinde bir dizin seçin ve tekrar deneyin. Eğer başarı mesajı döndürürse, ölçümü başlatın:

fio --name=randread4k --filename=/var/tmp/nvme-check.tmp --bs=4k --rw=randread \
  --direct=1 --iodepth=1 --numjobs=1 --runtime=20 --time_based --group_reporting \
  || echo "fio stopped early, read its first line for the reason"
rm -f /var/tmp/nvme-check.tmp

Testin kapsamı bilinçli olarak sınırlandırılmıştır: tek bir iş, 1 kuyruk derinliği, yirmi saniye ve 256 MB veri. Bu işlem diskinizi doldurmaz ve kötüye kullanım nedeniyle işaretlenmenize yol açmaz. Kuyruk derinliğinin 1 olması, bu soru için en dürüst ayardır; çünkü derin kuyruklar, gecikme süresi yüksek kalsa bile yavaş bir cihazın paralellik arkasına saklanmasına olanak tanır.

fio çıktısını okuma

İki satır önem taşır. Özet satırı read: IOPS=9012, BW=35.2MiB/s şeklinde görünür ve altında fio bir clat bloğu yazdırır. clat, tamamlanma gecikmesidir: fio'nun bir okuma isteği göndermesi ile çekirdeğin veriyi geri teslim etmesi arasında geçen süredir. avg değerini okuyun, ardından clat percentiles listesindeki 99.00th yüzdelik dilimini inceleyin. Ortalama değer size depolama sınıfını söyler. Yüzde 99'luk dilim ise aynı sunucudaki bir komşunun sizi ne sıklıkla beklettiğini gösterir.

fio, değerler küçük olduğunda gecikmeyi mikrosaniye cinsinden yazdırır, değerler büyüdüğünde ise milisaniyeye geçer. Herhangi bir karşılaştırma yapmadan önce satırdaki birimi kontrol edin.

NVMe sınıfını SATA sınıfından ayıran değerler nelerdir

Aşağıdaki rakamlar, Ağustos 2026 itibarıyla üretici belgelerinden ve topluluk kıyaslamalarından derlenen, 1 kuyruk derinliğinde (queue depth 1) tek işli 4k rastgele okuma işlemleri için tipik yayınlanmış değerlerdir. Bunlar sunucunuzdan alınan ölçümler değil, karşılaştırma yapabileceğiniz referans aralıklarıdır.

ChartTypical 4k random read latency at queue depth 1, by storage class
The data behind this chart
[
  {
    "label": "Local NVMe",
    "avg_latency_us": 110
  },
  {
    "label": "Local SATA SSD",
    "avg_latency_us": 320
  },
  {
    "label": "Network block storage",
    "avg_latency_us": 900
  }
]
ChartTypical 4k random read IOPS at queue depth 1, by storage class
The data behind this chart
[
  {
    "label": "Local NVMe",
    "iops": "9,000"
  },
  {
    "label": "Local SATA SSD",
    "iops": "3,100"
  },
  {
    "label": "Network block storage",
    "iops": "1,100"
  }
]

Yerel bir NVMe birimi, 4k rastgele okuma isteğine yaklaşık 110 mikrosaniyede yanıt verir ve 1 kuyruk derinliğinde yaklaşık 9,000 IOPS değerine ulaşır. Yerel bir SATA SSD ise 320 mikrosaniye ve 3,100 IOPS civarındadır. Ağ üzerinden bağlanan blok depolama (network attached block storage) ise 900 mikrosaniye ve 1,100 IOPS civarında kalır; çünkü her bir okuma işlemi, flash belleğe dokunulmadan önce bir ağ sekmesinden geçer.

1 kuyruk derinliğinde bu iki sütun aslında aynı gerçeğin iki farklı ifadesidir: aynı anda tek bir okuma yapılması, verimliliğin (throughput) basitçe birin gecikme süresine bölünmesi anlamına gelir. Ortalama değeriniz 320 mikrosaniyeden ziyade 110 mikrosaniyeye daha yakınsa, lsblk cihazı nasıl adlandırmış olursa olsun NVMe sınıfı bir depolama kullanıyorsunuz demektir. Eğer değer 900 mikrosaniyeye daha yakınsa, veri yolunda yerel flash bellekten daha yavaş bir bileşen bulunmaktadır ve sipariş sayfasındaki NVMe ifadesi, biriminizden ziyade ana bilgisayarın sürücülerini tanımlıyor olabilir.

Şikayet etmeden önce birden fazla kez çalıştırın

Tek bir çalıştırma sonuç değil, yalnızca bir örnektir. Bir VPS diskleri paylaşımlı kullanır; bu nedenle yoğun bir komşu, gecikme sürenizi on dakikalığına iki katına çıkarıp sonra ortadan kaybolabilir. Bazı platformlar, testin ilk dakikalarının mükemmel görünmesini sağlayan ani performans artışı (burst) kredileri tanımlar. Aynı komutu günün farklı saatlerinde üç veya dört kez çalıştırın ve en iyi sonucu değil, en kötü sonucu karşılaştırın. Tek bir kötü sonuç hava durumuna bağlı geçici bir durumdur. Bir örüntü ise destek talebi açmaya değer bir hatadır; destek talebi, zaman damgalı üç adet fio çıktısı eklendiğinde daha etkili olur. CPU ve ağı da kapsayan daha geniş bir disk performansı resmi için tam bir VPS benchmark testi, diğer alt sistemlerde de aynı disiplini kullanır.

Yanıt ile ne yapılmalı

Gecikme NVMe bandındaysa, cihaz adını dert etmeyi bırakın ve devam edin. vda bir sürüm düşürme değildir. Çoğu ana makinenin sunduğu en hızlı sanal disk sürücüsüdür ve kullanmanız gereken de budur.

Eğer gecikme, yerel NVMe olarak satılan bir planda ağ depolama bandındaysa, elinizde belirli ve tekrarlanabilir bir iddia var demektir: tam fio komutu, ortalama tamamlama gecikmesi ve testi çalıştırdığınız zamanlar. Bu, bir forum tartışmasından ziyade bir destek talebi konusudur. Göndermeden önce diskin dolu veya aşırı parçalanmış olmadığını doğrulayın ve test sırasında sunucuda yoğun yazma işlemi yapan başka bir süreç olmadığından emin olun.

Bu kontrolü, bir şeylerin yavaş hissettirdiği gün değil, sunucuyu teslim aldığınız gün yapın; böylece daha sonra karşılaştırma yapabileceğiniz bir temel veriniz olur. Bu işlem, yeni bir VPS'teki ilk on dakika rehberine, güvenlik duvarı ve SSH anahtarlarının ayarlanmasıyla birlikte doğal bir şekilde uyum sağlar. Depolama katmanları arasındaki fark hala belirsizse, bir SSD VPS'in size gerçekte ne sunduğu konusu bu temel bilgileri kapsamaktadır.

FAQ

lsblk komutu neden host NVMe desteği sunduğu halde /dev/vda çıktısını veriyor?

Çünkü vda, guest üzerindeki virtio-blk sürücüsünü isimlendirir, host üzerindeki donanımı değil. Bir KVM hipervizörü, bir dosya, mantıksal bir birim veya bir veri kümesi tarafından desteklenen paravirtual bir blok aygıtı sunar; bu destekleyici depolama alanı, guest tarafının haberi olmadan NVMe sürücüler üzerinde çalışıyor olabilir. İsim, sanallaştırma katmanını tanımlar. Sadece bir gecikme ölçümü ortamın niteliğini belirleyebilir.

rotational 0 değeri NVMe diske sahip olduğumu kanıtlar mı?

Hayır. /sys/block/<dev>/queue/rotational değerinin 0 olması, çekirdeğin aygıtın dönen plakalara sahip olmadığına inandığı anlamına gelir; virtio altında bu değer, host tarafından seçilen bir özellik biti ile belirlenir. Bu, standart bir sabit diski eler. NVMe ile SATA SSD arasındaki farkı veya yerel flash ile ağ birimi arasındaki farkı ayırt edemez. Bir 1 değeri, solid state depolama olarak satılan bir plana aykırı olduğu için yine de dikkate alınmalıdır.

VPS üzerinde nvme list komutu neden boş dönüyor?

Çünkü guest tarafına herhangi bir NVMe denetleyicisi sunulmamıştır. nvme list ve lspci komutlarının her ikisi de sanal makinenin görebildiği aygıtları okur; virtio-blk veya virtio-scsi diskleri, listelenecek bir NVMe denetleyicisi sunmaz. Çoğu VPS planında boş bir tablo normal bir sonuçtur ve host üzerinde NVMe sürücülerin bulunmadığının kanıtı değildir. nvme-cli aracını sudo apt install -y nvme-cli ile kurun; bir denetleyici doğrudan geçirilmediği (passthrough) sürece boş bir tablo görmeyi bekleyin.

Hangi fio sonucu NVMe sınıfı depolama olarak kabul edilir?

Kuyruk derinliği (queue depth) 1 ve 4k rastgele okuma ile --direct=1 değerinde, 110 mikrosaniye civarındaki ortalama tamamlama gecikmesi NVMe sınıfıdır ve yaklaşık 9,000 IOPS değeri buna karşılık gelir. 320 mikrosaniye civarı bir SATA SSD'ye, 900 mikrosaniye civarı ise her okuma işleminin bir ağ sekmesi geçtiği ağ tabanlı depolamaya işaret eder. Bunlar Ağustos 2026 itibarıyla tipik yayınlanmış bant aralıklarıdır; bu nedenle kesin rakamlardan ziyade büyüklük sıralarını karşılaştırın ve bir sonuca varmadan önce testi farklı saatlerde tekrarlayın.