SSD VPS nedir ve neden tercih edilmelidir?
SSD VPS teknolojisinin geleneksel sabit disklerden farkını ve sunduğu IOPS avantajlarını öğrenin. Satın almadan önce sormanız gereken üç kritik soru bu rehberde.
SSD VPS nedir?
SSD VPS, diski dönen bir sabit disk yerine flash bellek ile desteklenen bir sanal özel sunucudur. SSD, solid state drive (katı hal sürücüsü) ifadesinin kısaltmasıdır: içinde hareketli parça bulunmayan, NAND flash yongalarından üretilmiş depolama birimidir. VPS ise virtual private server (sanal özel sunucu) ifadesinin kısaltmasıdır: fiziksel bir ana makinenin, kendi işletim sistemini çalıştıran ve size sanki tam bir sunucuymuş gibi satılan izole edilmiş bir dilimidir. İkisini birleştirdiğinizde, bu etiket tek bir şeyi vaat eder. Sunucunuz bir veri bloğunu okuduğunda, mekanik hiçbir parçanın hareket etmesi gerekmez.
Tanımın tamamı budur. Aşağıdaki her şey, etiketin dışarıda bıraktığı detaylarla ilgilidir; çünkü bir fiyatlandırma sayfasındaki "SSD hosting" ifadesi, arkasındaki depolama dizisi hakkında çok az bilgi verir.
Eğer bir VPS'in standart bir sanal makineden farkının ne olduğunu hala çözmeye çalışıyorsanız, VPS, VM ve VPC arasındaki fark öncelikle okunması gereken daha uygun bir sayfadır.
Sunucu sağlayıcıları neden depolama boyutu yerine depolama hızını öne çıkarır
Bir plan sayfası CPU çekirdeklerini, belleği, disk boyutunu ve bant genişliğini listeler, ardından disk hakkında boyutla ilgisi olmayan tek bir kelime ekler. Sağlayıcılar bunu yapar çünkü kapasite, yıllar önce depolama birimiyle ilgili ilgi çekici sayı olmaktan çıkmıştır. Bir sunucunun performansını belirleyen iki temel değer IOPS (saniyedeki girdi/çıktı işlemi) ve gecikme süresidir (bir işlemin tamamlanmasının ne kadar sürdüğü).
Bunun nedeni mekanik farktır. Sabit diskler veriyi dönen plakalar üzerinde tutar ve hareketli bir kol üzerindeki okuyucu kafa ile okur. Plaka üzerindeki başka bir bloktaki veriye ulaşmak için kolun hareket etmesi (seek) ve diskin doğru sektör kafa altına gelene kadar dönmesi gerekir. Dakikada 7200 devir hızında, yarım tur yaklaşık 4 ms sürer ve arama süresi buna birkaç milisaniye daha ekler. Flash teknolojisinde ise kol veya plaka yoktur; bu nedenle okuma işlemi, onlarca mikrosaniyede sonuçlanan elektriksel bir sorgulamadır.
The data behind this chart
[
{
"device": "7200 rpm hard disk",
"random_read_iops": "125",
"read_latency_ms": 8
},
{
"device": "SATA SSD",
"random_read_iops": "90,000",
"read_latency_ms": 0.15
},
{
"device": "NVMe SSD",
"random_read_iops": "600,000",
"read_latency_ms": 0.08
}
]7200 rpm hızındaki bir sabit disk yaklaşık 125 rastgele 4k okuma işlemi için derecelendirilmiştir ve bu okumalardan biri yaklaşık 8 ms sürer. Bir NVMe sürücü ise aynı okuma işlemlerinde yaklaşık 600,000 değerine ve her biri için yaklaşık 0.08 ms gecikme süresine sahiptir. Bu ikisi arasındaki SATA SSD ise yaklaşık 90,000 değerine yakındır. Bu değerleri yüzde bazında bir iyileşme olarak değil, büyüklük mertebesi olarak okuyun.
Bu verilerle ilgili iki uyarı mevcuttur. Bunlar, her sınıfın sürücüleri için yayınlanmış teknik özelliklerdir; yani üretici verileridir ve bir VPS üzerinde ölçülmüş değerler değildir. Ayrıca hiçbir zaman tüm sürücüye sahip olmazsınız: hacminiz, aynı donanım üzerinde diğer müşterilerle paylaşılan bir cihazın veya bir disk dizisinin parçasıdır.
Bu iki sütun farklı sorulara yanıt verir, bu yüzden onları birlikte değerlendirin. Gecikme süresi, tek bir işlem için ne kadar beklediğinizi gösterir. IOPS ise sürücünün aynı anda kaç işlem üzerinde çalışabileceğini ifade eder. Flash, yüksek IOPS değerlerine paralellik sayesinde ulaşır; çünkü birçok flash yongası aynı anda birçok isteğe yanıt verirken derin bir kuyruk yapısı onları meşgul tutar. Tek iş parçacıklı (single-threaded) bir program, bir okuma isteği gönderip yanıtını bekledikten sonra diğerini gönderirse, bu tablonun üst değerlerine asla ulaşamaz. Bunun yerine sadece gecikme süresi sütunundaki değerleri görür.
SSD, NVMe, SATA ve PCIe: dört farklı katmanda dört farklı terim
Alıcılar, her bir terim sistemin farklı bir parçasını tanımladığı için bu kelimeleri birbirine karıştırır.
- SSD depolama ortamıdır. Verinin manyetik plakalar yerine NAND flash yongaları üzerinde tutulduğu anlamına gelir.
- SATA mekanik diskler döneminde tasarlanmış bir arayüzdür. Maksimum 6 Gbit/s hıza ulaşır, bu da yaklaşık 550 MB/s gerçek aktarım hızı demektir ve komut kuyruğu 32 bekleyen komutu destekler.
- NVMe (non-volatile memory express), özellikle flash depolama için yazılmış bir protokoldür. Her biri binlerce komut tutabilen çok sayıda kuyruğu destekler; böylece birden fazla CPU çekirdeği, tek bir dar kuyruğu paylaşmak zorunda kalmadan sürücüyle aynı anda iletişim kurabilir.
- PCIe (peripheral component interconnect express), NVMe'nin üzerinde çalıştığı veri yoludur; ekran kartlarının bağlandığı hatlarla aynı türdendir.
Dolayısıyla bir SATA SSD ve bir NVMe SSD, veriyi flash üzerinde saklar. Aralarındaki fark, kullandıkları arayüzdür. Bir SATA SSD, herhangi bir sabit diskten çok daha hızlıdır ancak 32 komutluk kuyruk, paralel çalışma kapasitesini sınırlar; oysa flash depolamanın en güçlü olduğu alan tam olarak paralel çalışmadır. Hangisinin tercih edilmesi gerektiği iş yükünüze bağlıdır ve NVMe ile SATA SSD karşılaştırması bu konuyu detaylıca ele almaktadır.
Yerel flash depolama mı yoksa ağ tabanlı depolama mı?
Aynı terim altında iki çok farklı yapı sunulmaktadır.
Yerel depolama, flash sürücülerin VPS'niz ile aynı fiziksel sunucu içerisinde bulunması anlamına gelir. Bir istek, tek bir makine içerisinde PCIe üzerinden iletilir ve doğrudan geri döner; gecikme süresinin onlarca mikrosaniye seviyesinde kalmasının nedeni budur.
Ağ tabanlı depolama, sanal diskinizin ayrı bir depolama kümesinde (genellikle Ceph veya SAN - storage area network) barındırılması anlamına gelir ve her okuma/yazma işlemi, veriye ulaşmak için bir ağ üzerinden geçer. Sağlayıcılar bunu genellikle "cloud block storage" veya "elastic volumes" olarak adlandırır. Flash teknolojisi gerçektir; ancak ağ üzerinden yapılan yolculuk da gerçektir ve her işleme eklenir. Bu nedenle gecikme süresi onlarca mikrosaniye yerine yüzlerce mikrosaniye veya birkaç milisaniye seviyesine çıkar.
İkisi de yanlış bir seçenek değildir. Ağ tabanlı depolama, bir sunucunun arızalanması durumunda veriyi korur; çünkü veri o sunucuda değildir. Sağlayıcı, sunucunuzu başka bir donanım üzerinde başlatabilir ve disk de onunla birlikte gelir. Yerel NVMe ise daha hızlıdır ancak tek bir fiziksel makineye bağlıdır; bu nedenle donanım arızası durumunda yedekten geri yükleme yapılması gerekir. Bir planın hangisini kullandığını mutlaka sorun. Neredeyse kimse bunu sormaz.
Gerçek bir sunucuda farkın hissedilmesi
Sunucu iş yükleri, uzun süreli ardışık aktarımlardan ziyade çoğunlukla küçük ve rastgele okuma/yazma işlemlerinden oluşur. Bu nedenle, pazarlama materyallerindeki MB/s değeri, bir sayfadaki en işlevsiz veridir.
- Veritabanı commit işlemleri. Dayanıklılık garantisi veren bir veritabanı, bir işlem commit edildiğinde
fsyncçağrısı yapar ve verinin gerçekten depolandığına dair sürücüden onay bekler. Sabit disklerde bu bekleme süresi milisaniyeler sürer; bu da küçük bir veritabanını saniyede birkaç yüz commit ile sınırlar. Flash depolamada ise aynı bekleme süresi milisaniyenin çok küçük bir kısmıdır. PostgreSQL, MySQL veya üretim veritabanı olarak SQLite kullanıyor olun, farkın en belirgin olduğu nokta burasıdır. - Paket kurulumları.
apt install, binlerce küçük dosyayı açar ve işlem sırasında bunları diske senkronize eder. Bu işin neredeyse hiçbir kısmı ardışık değildir, bu yüzden IOPS değerine bağlıdır. - Container imajı çekme.
docker pull, sıkıştırılmış katmanları ağ üzerinden indirir ve ardından bunları binlerce küçük dosyaya çıkarır. İndirme işlemi ağ hızına bağlıdır. Çıkarma işlemi ise disk hızına bağlıdır; yavaş bir birimde beklediğiniz kısım tam olarak bu çıkarma aşamasıdır. - Açılış ve yeniden başlatma. Başlangıç süreci bir kernel ve initramfs dosyasını okur, ardından birim genelinde dağılmış yüzlerce küçük unit dosyasını ve paylaşılan kütüphaneyi yükler.
Bunların hiçbiri büyük bir ardışık okuma işlemi değildir. Saniyede 500 MB veri akışı sağlayan ancak yalnızca 3.000 IOPS sunabilen bir birim, docker compose pull sırasında yine de yavaş hissettirecektir; çünkü bekleme süresi megabayt başına değil, dosya başına hesaplanır.
Fiyatlandırma sayfasındaki "SSD bulut barındırma" ifadesi neden neredeyse hiçbir şey anlatmaz
Bu terim yalnızca depolama ortamını tanımlar ve orada kalır. Sürücünün kullandığı arayüz hakkında veya sürücünün sunucunuzla aynı fiziksel makinede olup olmadığı konusunda hiçbir bilgi vermez. Ayrıca planınızın ulaşabileceği üst sınır hakkında da bir şey söylemez.
Bu üst sınır en önemli konudur ancak en az reklamı yapılan kısımdır. Sağlayıcılar, bir ana makine birçok müşteriye hizmet verdiği ve sınırsız bir komşu diğerlerini yavaşlatabileceği için birim başına IOPS ve iş hacmini sınırlar. Yüz binlerce IOPS kapasitesine sahip donanımlarda birkaç bin IOPS'lik bir sınır normal ve dürüst bir uygulamadır; ancak bu durum plan açıklamasında görünmez. İki plan da "SSD" ibaresini taşıyabilir; biri birim başına sınır olmayan yerel NVMe iken diğeri 3.000 IOPS ile sınırlandırılmış paylaşımlı bir küme birimi olabilir.
Sınırlar iki şekilde karşımıza çıkar. Sürekli sınır, asla değişmeyen sabit bir tavan değeridir. Ani yükselme (burst) sınırı ise size düşük bir temel değer ve bunu bir süreliğine aşmanızı sağlayan krediler sunar; bu krediler birim boşta kaldığında yeniden dolar. Ani yükselme sınırı beş dakikalık bir testte mükemmel görünür ancak bir veritabanı içe aktarma veya büyük bir geri yükleme işleminin ortasında temel seviyeye düşer. Bir sağlayıcı yüksek bir rakam veriyorsa, bu hızı ne kadar süre korumanıza izin verildiğini sorun.
VPS'nizin size gerçekte ne sunduğunu kontrol etme
Misafir sistemin içinden yalnızca hipervizörün size bildirdiği verileri görebilirsiniz.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalvda ifadesini, diskiniz için yazdırılan lsblk aygıt adıyla değiştirin. ROTA ve rotational dosyası, çekirdeğe aygıtın dönen bir disk olmadığı bilgisi verildiğinde 0, aksi belirtildiğinde ise 1 değerini okur. Sanal bir disk, bu bayrağı hipervizörün sunduğu bilgilere göre ayarlar; dolayısıyla bu, alttaki fiziksel donanımı değil, sanal aygıtı tanımlar. MODEL, vda gibi bir virtio diski için genellikle boştur veya emüle edilmiş bir SATA denetleyicisi üzerinde QEMU HARDDISK gibi genel bir dizgidir. Misafir sistemlerin ana makinenin dizisini görmesi amaçlanmamıştır ve görmezler.
Bu nedenle bayrağı bir ipucu olarak değerlendirin ve geri kalanını ölçümleyin. Uygulamanızın gerçekte kullandığı kuyruk derinliğinde, birim üzerindeki bir dosyaya karşı fio ile rastgele 4k testi çalıştırın ve testi, tüm ani yükleme (burst) kredisini tüketecek kadar uzun süre devam ettirin. Bir VPS'yi doğru şekilde kıyaslama bölümünde, fio komutları ve yanıltıcı derecede yüksek sonuçlar üreten yaygın hatalar yer almaktadır.
Bir sağlayıcıdan hizmet almadan önce sorulması gereken üç soru
- Depolama birimi hipervizöre yerel mi, yoksa ağ üzerinden mi bağlı? Bu sorunun cevabı gecikme sürenizin alt sınırını belirler ve fiziksel bir sunucu arızalandığında verilerinizin akıbetini tayin eder. Bu soruya net bir yanıt veren sağlayıcı, altyapısı üzerinde düşünmüş demektir.
- Disk birimimin IOPS sınırı nedir? Bir sayı isteyin. "Sınırsız" veya "kurumsal seviye" ifadeleri birer sayı değildir. Eğer gerçekten bir sınır yoksa, aynı sunucudaki bir komşunuzun yedekleme penceresi sırasında tüm diziyi meşgul etmesini neyin engellediğini sorun.
- Bu sınır sürekli mi yoksa anlık (burst) mı? Eğer anlık bir artış söz konusuysa, temel performans değerini ve bu artışın süresini öğrenin. Gece çalışan işleriniz temel performans değeri üzerinden yürütüleceği için planlamanızı bu rakama göre yapmalısınız.
Flash bellekler aşınır mı ve sorununuz bu mu?
Flash hücreleri sınırlı sayıda yazma döngüsünü kabul eder, bu nedenle sürücüler TBW (yazılan terabayt) veya DWPD (günlük sürücü yazma sayısı) cinsinden bir dayanıklılık derecesi yayınlar. Sürücü, yazma işlemlerini hücreleri arasında eşit şekilde dağıtır; buna aşınma dengeleme (wear levelling) denir ve bozulan hücrelerin yerine geçmek üzere yedek bloklar tutar. Bir VPS üzerinde aşınma, sağlayıcının sorunudur: kendi sürücülerindeki SMART sayaçlarını izlerler ve donanımı, derecelendirme dolmadan önce değiştirirler. Sizin sorununuz flash teknolojisinden daha eskidir. Bir sürücü yedekleme değildir; birimin altındaki yedeklilik (redundancy) de yedekleme değildir, çünkü veriyi kopyaladığı kadar sadakatle silme işlemini de kopyalar.
Gerçekte yaptığınız takas, gigabayt başına fiyattır. Flash, dönen disklerden gigabayt başına daha maliyetlidir, bu nedenle bir SSD planı genellikle aynı fiyattaki bir sabit disk planından daha az kapasite sunar. Medya veya arşivler için büyük miktarda alana ihtiyacınız varsa, hızlı birimi küçük tutun ve büyük miktardaki veriyi daha ucuz bir yere koyun; bu aynı zamanda yedekleri sunucu dışında tutmak için de doğru yöntemdir. Depolamanın fatura içindeki yerine dair bilgi için bir VPS'in gerçek maliyeti kalemleri detaylandırmaktadır.
FAQ
SSD VPS ile NVMe VPS aynı şey midir?
Her NVMe VPS bir SSD VPS'tir, çünkü NVMe sürücüler flash tabanlıdır. Bunun tersi her zaman geçerli değildir. "SSD" olarak pazarlanan bir plan, mekanik diskler için tasarlanmış bir arayüzün arkasında çalışan, 32 komutluk kuyruk derinliğine ve 550 MB/s civarında bir sınıra sahip SATA SSD olabilir. Her iki teknoloji de sabit disklerden çok daha hızlıdır. Eğer bu fark iş yükünüz için önemliyse, plan ismine bakmak yerine sağlayıcıya hangi teknolojinin kullanıldığını doğrudan sorun.
SSD VPS web sitemi hızlandırır mı?
Sadece disk işlemlerini hızlandırır. İstek başına birden fazla veritabanı sorgusu çalıştıran bir sayfa hızlanır, çünkü bu sorgular ve commit işlemleri küçük rastgele G/Ç (I/O) işlemleridir. Bellekten veya önbellekten sunulan bir sayfa ise çıkış sırasında diske hiç uğramaz, bu nedenle hızında çok az değişiklik olur. Bir depolama yükseltmesi için ödeme yapmadan önce, isteğin hangi kısmının yavaş olduğunu ölçün.
VPS'imin gerçekten SSD depolama kullandığını nasıl kontrol edebilirim?
Konuk işletim sistemi içerisinden fiziksel donanımı doğrulayamazsınız. lsblk -d -o NAME,ROTA komutu sanal aygıtın ne bildirdiğini gösterir; bu değer hipervizör tarafından belirlendiği için oradaki bir 0 ibaresi kanıt değil, sadece bir ipucudur. Pratik kontrol bir ölçümdür: fio komutunu rastgele 4k okuma iş yüküyle birkaç dakika boyunca çalıştırın ve raporladığı gecikme süresine bakın. Tek haneli milisaniyelik rastgele okumalar, dönen disklere veya yoğun bir ağ birimine işaret eder. Onlarca mikrosaniyelik değerler ise yerel flash depolamaya işaret eder.
Ağ tabanlı SSD depolama, yerel NVMe'den daha mı kötüdür?
İşlem başına daha yavaştır ve hata yapısı farklıdır. Ağ gidiş-dönüş süresi her okuma ve yazma işlemine eklendiği için, her ikisi de flash tabanlı olsa bile gecikme daha yüksektir. Buna karşılık verileriniz tek bir fiziksel sunucuda barınmaz; bu sayede bir sunucu arızası birimi beraberinde götürmez, ayrıca snapshot ve canlı taşıma işlemleri sağlayıcı için daha kolaydır. Gecikmeye duyarlı veritabanları için yerel flash depolamayı, birimin sürekliliği mikrosaniyelerden daha önemli olduğunda ise ağ depolamayı seçin.