تفاوت Storage VPS و VPS معمولی چیست؟
تفاوت اصلی در نوع دیسک و قدرت پردازشی است. در حالی که VPS معمولی از NVMe سریع استفاده میکند، Storage VPS برای ذخیره ترابایتی داده با هزینه کم و CPU محدود طراحی شده است.
تفاوت Storage VPS با VPS معمولی: پاسخ کوتاه
یک Storage VPS سرور مجازی خصوصی است که بر اساس ترابایت فروخته میشود، در حالی که یک VPS معمولی بر اساس تعداد هسته پردازنده به فروش میرسد. طرحهای ذخیرهسازی، چندین ترابایت فضای دیسک کند را در کنار سهم کوچکی از CPU در اختیار شما قرار میدهند. طرح استاندارد، یک دیسک سریع NVMe (حافظه غیرفرار سریع) ارائه میدهد که اغلب 20 برابر کوچکتر است، اما در ازای همان هزینه، پردازنده و حافظه بیشتری در اختیار شما میگذارد. سایر ویژگیهای این دو محصول یکسان است: هایپروایزر مشابه، دسترسی root shell یکسان، ایمیج Ubuntu مشابه و پشته شبکه یکسان.
همین یک تفاوت، تعیینکننده مناسب بودن هر کدام است. یک Storage VPS برای مقاصد پشتیبانگیری، کتابخانههای رسانهای، آرشیوهای سرد و هر چیزی که یک بار مینویسید و بهندرت میخوانید، مناسب است. این گزینه برای پایگاه داده یا هر صفحهای که کاربر باید منتظر بارگذاری آن بماند، نامناسب است؛ زیرا این نوع بار کاری نیازمند خواندنهای تصادفی کوچک در حدود یک میلیثانیه است و ارزان بودن ظرفیت ذخیرهسازی دقیقاً به این دلیل است که چنین عملکردی را ارائه نمیدهد.
نامگذاری پلنهایی که در صفحات قیمتگذاری میبینید
چهار برچسب تقریباً تمام ارائهدهندگان را پوشش میدهند و تنها دو مورد از آنها معنای خاصی دارند.
- Standard VPS. دارای 2 تا 8 هسته vCPU، رم 2 تا 32 گیگابایت و 20 تا 400 گیگابایت حافظه NVMe یا SATA SSD که مستقیماً روی نود میزبان قرار دارد.
- Storage VPS. دارای 1 تا 20 ترابایت یا بیشتر، معمولاً با دیسکهای چرخشی SATA یا SATA SSD با ظرفیت بالا، به همراه 1 تا 4 هسته vCPU اشتراکی و مقدار کمی رم. هزینه ماهانه آن اغلب با یک پلن استاندارد کوچک برابر است.
- VDS. مخفف virtual dedicated server. تعریف واحدی برای این واژه وجود ندارد و بخش زیر توضیح میدهد که به جای آن باید به دنبال چه چیزی باشید.
- Block storage volume. اصلاً یک پلن نیست: یک دیسک متصل به شبکه است که آن را به یک VPS موجود اضافه میکنید و هزینه آن را به ازای هر گیگابایت در ماه میپردازید. این تنها مورد از چهار مورد بالاست که میتوانید بدون جابهجایی سرور، ظرفیت آن را افزایش دهید.
این بازهها شکل رایج در بازار هستند، نه پیشنهاد یک شرکت خاص. برچسب روی پلن یک دستهبندی است و به شما میگوید که سرورتان تقریباً روی چه سختافزاری قرار دارد. این برچسب نوع دیسک، سیاست تخصیص CPU یا میزان پهنای باند مجاز را مشخص نمیکند؛ در حالی که این موارد تعیینکننده عملکرد مناسب بار کاری شما هستند.
تفاوتهای واقعی بین این دو طرح چیست
نوع و تعداد دیسک. این تمام تفاوت محصول است. طرح استاندارد شما را روی حافظه فلش NVMe قرار میدهد که از طریق گذرگاه PCI Express در دسترس است. طرح ذخیرهسازی (Storage) شما را روی آرایه بزرگی از دیسکهای چرخان یا SSDهای SATA با ظرفیت بالا قرار میدهد. اگر مطمئن نیستید کدامیک از این موارد برای شما اهمیت دارد، با اینکه SSD VPS چیست و چه تفاوتی با طرحهای دیسک قدیمی دارد شروع کنید و سپس شکاف عملی بین NVMe و SATA SSD را مطالعه کنید.
نسبت CPU. طرحهای ذخیرهسازی به ازای هر ترابایت، vCPU کمتری دارند و این vCPUها تقریباً همیشه با سایر مستأجران (tenants) به اشتراک گذاشته میشوند. این یک نقص نیست. یک مقصد پشتیبانگیری (backup target) تمام عمر خود را در انتظار شبکه سپری میکند، بنابراین نیازی به هستههای پردازشی ندارد.
رم (RAM). طرحهای ذخیرهسازی نسبت به قیمتشان، رم کمی دارند. این موضوع در یک مورد خاص مشکلساز میشود: متادیتای سیستم فایل. میلیونها فایل کوچک برای کش دایرکتوری و inode به حافظه نیاز دارند و بدون آن، هر لیستکردن فایلها به دیسک ارجاع داده میشود.
سهمیه شبکه. این سطر را در طرحهای ذخیرهسازی با دقت بخوانید. ظرفیتی که نتوانید از آن بازیابی (restore) انجام دهید، پشتیبان نیست. سهمیه انتقال ماهانه به TB و سرعت پورت به Gbit/s را بررسی کنید، زیرا بازیابی کامل 4 TB روی یک پورت 1 Gbit/s با نرخ خط حدود نه ساعت طول میکشد و اگر پورت اشتراکی باشد، بسیار طولانیتر خواهد بود.
The data behind this chart
[
{
"plan": "Storage VPS, HDD",
"usd_per_tb_month": 3
},
{
"plan": "Storage VPS, SATA SSD",
"usd_per_tb_month": 9
},
{
"plan": "Standard VPS, NVMe",
"usd_per_tb_month": 40
},
{
"plan": "Block storage add-on",
"usd_per_tb_month": 90
}
]اینها ارقام گردشدهای هستند که از صفحات قیمتگذاری عمومی چندین ارائهدهنده در اوت 2026 استخراج شدهاند و نه یک پیشفاکتور از شرکتی خاص؛ این ارقام تغییر میکنند. ساختار کلی، بخشی است که ثابت میماند. یک ترابایت در طرح ذخیرهسازی با دیسک چرخان، حدود 3 دلار آمریکا در ماه هزینه دارد. همان یک ترابایت NVMe در طرح استاندارد حدود 40 هزینه دارد و یک volume بلوکی متصل به شبکه، گرانترین گزینه در میان 4 گزینه موجود با قیمت 90 است. برای دیدگاهی وسیعتر از اینکه صورتحساب ماهانه از چه چیزی تشکیل شده است، اینکه یک VPS واقعاً در ماه چقدر هزینه دارد را ببینید.
چرا قیمت به ازای هر ترابایت و قیمت به ازای هر هسته در جهت مخالف یکدیگر حرکت میکنند
یک نود ذخیرهسازی (storage node) شاسیای است که دوازده تا شانزده دیسک بزرگ را در خود جای داده و یک پردازنده معمولی در جلوی آنها قرار دارد. یک نود پردازشی (compute node) دقیقاً برعکس است: هستههای زیاد، رم فراوان و دو یا چهار درایو NVMe. ارائهدهنده، ظرفیتهای مازاد همان شاسی را به فروش میرساند. بنابراین، طرحی که به ازای هر ترابایت ارزان است، به ازای هر هسته گران تمام میشود و طرحی که به ازای هر هسته ارزان است، به ازای هر ترابایت هزینه بالایی دارد. هیچ طرحی وجود ندارد که در هر دو مورد ارزان باشد، زیرا هیچ شاسیای با چنین مشخصاتی ساخته نشده است.
به همین دلیل است که پاسخ صادقانه به پرسش «کدام را باید بخرم؟» اغلب «هر دو» است. یک VPS کوچک با حافظه NVMe برای اجرای برنامه، به همراه یک VPS ذخیرهسازی برای نگهداری بکآپها، هزینه کمتری نسبت به یک ماشین واحد دارد که به اندازه کافی بزرگ باشد تا هر دو کار را بهخوبی انجام دهد. زمانی که یک ماشین واقعاً باید هر دو وظیفه را انجام دهد، شما از محدوده VPS خارج شدهاید: به زمانی که سرور اختصاصی بهتر از VPS عمل میکند مراجعه کنید.
خواندن تصادفی کاری است که دیسکهای ارزانقیمت از عهده آن برنمیآیند
The data behind this chart
[
{
"disk": "7200 rpm SATA HDD",
"random_read_iops": "180",
"typical_latency_ms": 8.5
},
{
"disk": "SATA SSD",
"random_read_iops": "75,000",
"typical_latency_ms": 0.2
},
{
"disk": "NVMe SSD",
"random_read_iops": "600,000",
"typical_latency_ms": 0.08
}
]این ارقام مربوط به دادهبرگ (datasheet) هستند و نه بنچمارک یک ارائهدهنده خاص. یک دیسک 7200 دور در دقیقه تقریباً 180 عملیات خواندن تصادفی 4k در ثانیه انجام میدهد، زیرا هد دیسک باید بهصورت فیزیکی به شیار (track) مربوطه حرکت کند و سپس منتظر بماند تا چرخش صفحه (platter)، سکتور مورد نظر را زیر هد قرار دهد؛ این فرآیند هر بار حدود 8.5 میلیثانیه زمان میبرد. در حافظههای فلش قطعه متحرکی وجود ندارد، بنابراین یک SATA SSD به حدود 75,000 و یک دستگاه NVMe به حدود 600,000 عملیات IOPS با تأخیر 0.08 میلیثانیه دست مییابند. این شکاف بیش از سه هزار برابر است و هیچ مقدار RAM یا CPU نمیتواند آن را جبران کند.
عملیات ترتیبی (Sequential) داستانی کاملاً متفاوت دارد و به همین دلیل است که پلنهای ذخیرهسازی اصلاً کاربردی هستند. یک دیسک چرخان تکی همچنان میتواند با سرعت 150 MB/s تا 250 MB/s داده منتقل کند و یک آرایه از آنها سرعت بیشتری ارائه میدهد. این مقدار، یک پورت 1 Gbit/s را اشباع میکند، بنابراین آپلود نسخه پشتیبان با حداکثر سرعت شبکه انجام میشود و دیسک هرگز گلوگاه نخواهد بود. ارقام شما همچنین به نحوه ساخت آرایه بستگی دارد، زیرا striping یک درخواست را بین چندین دیسک پخش میکند: چگونه RAID 10 عملکرد پلن ذخیرهسازی را تغییر میدهد این موضوع را بررسی میکند.
VDS به چه معناست؟
این عبارت معمولاً یک برچسب بازاریابی است. سه معنای رایج برای آن وجود دارد و ارائهدهنده بهندرت مشخص میکند که کدامیک مد نظر است. برخی از VDS برای اشاره به هستههای CPU اختصاصی یا رزرو شده استفاده میکنند تا هیچ کاربر دیگری برای چرخههای پردازشی شما رقابت نکند. برخی دیگر از آن برای مجازیسازی کامل مانند KVM استفاده میکنند، در مقابل مجازیسازی کانتینری مانند LXC یا OpenVZ که در آن هسته سیستمعامل (kernel) میزبان به اشتراک گذاشته میشود. برخی نیز صرفاً از این نام استفاده میکنند چون قدرتمندتر از VPS به نظر میرسد.
شما میتوانید بخشی از این موضوع را از داخل سرور بررسی کنید. systemd-detect-virt در یک ماشین مجازی کامل، kvm را چاپ میکند و در یک کانتینر، lxc را نمایش میدهد؛ کانتینر به این معناست که شما نمیتوانید ماژولهای هسته را بارگذاری کنید یا هسته اختصاصی خود را اجرا نمایید. ادعای اختصاصی بودن CPU را باید با استفاده از بررسی steal time که در ادامه آمده است، اندازهگیری کنید. حروف درجشده در طرح فروش را تنها به عنوان یک راهنما در نظر بگیرید و مشخصات فنی ذکر شده را به عنوان قرارداد اصلی تلقی کنید.
کدام خطوط مشخصات را بهجای نام بررسی کنیم
- کلمهای که کنار ظرفیت چاپ شده است:
NVMe،SSD،SATAیاHDD. اگر هیچ کلمهای مربوط به دیسک در صفحه دیده نمیشود، ارزانترین سختافزاری که با قیمت مطابقت دارد را در نظر بگیرید. - اینکه دیسک محلی (local) است یا به شبکه متصل (network attached) است. فضای ذخیرهسازی متصل به شبکه، تأخیر (latency) را در هر درخواست افزایش میدهد و در صورت خرابی نود، دادهها باقی میمانند. دیسک محلی سریعتر است اما با خرابی نود از بین میرود.
- عبارت مربوط به CPU: «اختصاصی» (dedicated) یا «پینشده» (pinned) در مقابل «اشتراکی» (shared)، «سهم منصفانه» (fair share) یا حالتی که هیچ توضیحی ندارد.
- هرگونه محدودیت IOPS یا MB/s که در طرح ذکر شده است. محدودیت 500 IOPS باعث میشود نوع دیسک تقریباً بیاهمیت شود.
- سهمیه انتقال ماهانه و سرعت پورت، که تعیین میکنند یک بازیابی کامل چقدر طول میکشد.
- اینکه آیا اسنپشاتها، بکآپها و آدرسهای IP اضافی شامل طرح هستند یا جداگانه محاسبه میشوند.
نحوه بررسی دیسکی که واقعاً دریافت کردهاید
با آنچه هسته گزارش میدهد شروع کنید، اما به آن اعتماد نکنید.
lsblk -d -o NAME,ROTA,SIZE,MODEL
df -h /
nproc
free -hمقدار ROTA برای دستگاههای چرخشی برابر 1 و برای حافظههای فلش 0 است. در داخل یک VPS به این مقدار تکیه نکنید: دیسکهای virtio معمولاً فارغ از اینکه چه چیزی در پشت آنها قرار دارد، مقدار ROTA=0 را گزارش میدهند، زیرا هایپروایزر یک دستگاه بلوکی عمومی ارائه میدهد و سیستمعامل مهمان هرگز درایو فیزیکی را نمیبیند. مقدار MODEL نیز به همین دلیل خالی است. این پرچم چیزی را توصیف میکند که هایپروایزر اعلام کرده است، نه آنچه در رک میچرخد؛ بنابراین به جای آن، اندازهگیری کنید.
sudo apt update && sudo apt install -y fio
fio --name=randread --filename=/var/tmp/fio.test --size=1G --bs=4k --rw=randread \
--ioengine=libaio --direct=1 --iodepth=32 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fio.testدستور --direct=1 کش صفحه (page cache) را دور میزند، بنابراین شما دیسک را اندازهگیری میکنید نه RAM را. خطی که باید خوانده شود read: IOPS= است و توزیع آن در زیر آن در clat percentiles (usec) قرار دارد. یک پلن استاندارد NVMe دهها هزار IOPS با صدک نود و نهم زیر یک میلیثانیه گزارش میدهد. یک پلن ذخیرهسازی چرخشی، چند صد IOPS با صدک نود و نهم در محدوده دو رقمی میلیثانیه گزارش میدهد. اگر fio گزارش داد که موتور libaio قابل بارگذاری نیست، از --ioengine=psync --iodepth=1 استفاده کنید و انتظار اعداد پایینتری را داشته باشید، زیرا آن موتور در هر لحظه فقط یک درخواست ارسال میکند.
vmstat 1 5
sudo apt install -y sysstat
iostat -x 1 5در vmstat، ستون st نشاندهنده steal time است: سهم زمانی که vCPU شما آماده اجرا بوده اما هایپروایزر آن چرخهها را به مهمان دیگری اختصاص داده است. عدد ثابت بالای 5 به این معنی است که نود بیش از حد اشتراکگذاری شده (oversubscribed) است، که این آزمون واقعی ادعای "CPU اختصاصی" است. در iostat -x، مقادیر %util، r_await و w_await را زیر نظر بگیرید. مقدار %util نزدیک به 100 همراه با w_await در محدوده دهها میلیثانیه به این معنی است که دیسک گلوگاه است و هیچ بهینهسازی نرمافزاری کمکی نخواهد کرد. برای بررسیهای اختصاصی حافظه فلش، تأیید اینکه دیسک NVMe واقعاً NVMe است جزئیات بیشتری ارائه میدهد.
انتخاب بر اساس نوع بار کاری
- مقصد پشتیبانگیری برای restic، Borg یا rsync. این مورد استفادهٔ اصلی برای Storage VPS است. عملیات نوشتن بهصورت حجیم و متوالی انجام میشود، deduplication در مبدأ صورت میگیرد و هیچ پردازشی منتظر نتیجه نمیماند. یک نکته مهم:
restic pruneوrestic check --read-dataکل مخزن را در قطعات کوچک میخوانند، بنابراین برای آنها زمان کافی در نظر بگیرید و طبق زمانبندی اجرا کنید. به اجرای پشتیبانگیری restic روی یک VPS مراجعه کنید. - کتابخانه رسانه Immich یا Jellyfin. برای فایلها از Storage VPS استفاده کنید، اما مراقب محدودیت CPU باشید. Immich هنگام import کردن، پیشنمایش (thumbnail) تولید میکند و کارهای یادگیری ماشین انجام میدهد، و Jellyfin هنگام پخش، transcoding انجام میدهد. دو vCPU اشتراکی برای اولین import از 200 GB عکس بسیار کند عمل خواهند کرد. پایگاه داده و کش پیشنمایشها را روی سریعترین دیسک موجود قرار دهید. میزبانی شخصی Immich به عنوان جایگزین Google Photos جزئیات مربوط به تعیین ابعاد را پوشش میدهد.
- PostgreSQL یا MySQL. از پلن Standard NVMe استفاده کنید. هر commit به یک
fsyncختم میشود که باید پیش از بازگشت تراکنش به حافظه پایدار برسد، بنابراین تأخیر commit همان تأخیر دیسک است و جستجوی ایندکس شامل خواندن تصادفی 8 kB است که دیسکهای چرخشی (HDD) در آن ضعیفترین عملکرد را دارند. - برنامه وب، API یا کنترل پنل. از پلن Standard استفاده کنید. این سرویسها به هسته پردازشی و تأخیر قابل پیشبینی نیاز دارند و بهندرت به بیش از 100 GB فضا نیاز پیدا میکنند.
- کش CI یا مخزن آرتیفکت. بستگی به اندازه فایل دارد. فایلهای tarball بزرگ با سرعت کامل شبکه از پلنهای ذخیرهسازی استریم میشوند. اما کش کردن صدها هزار فایل کوچک که بهصورت موازی توسط چندین runner فراخوانی میشوند، در واقع همان IO تصادفی است و عملکرد آن شما را ناامید خواهد کرد.
وقتی این کار را اشتباه انجام میدهید چه اتفاقی میافتد
شکست هرگز بلافاصله رخ نمیدهد. یک پایگاه داده روی یک پلن ذخیرهسازی چرخشی (HDD) با یک کاربر بهخوبی کار میکند، اما با ده کاربر از هم میپاشد؛ زیرا کوئریهایی که قبلاً از RAM پاسخ میگرفتند، حالا به دیسک برخورد میکنند و هر کدام بهجای میکروثانیه، میلیثانیهها زمان میبرند. میانگین بار (Load average) بالا میرود در حالی که top نشان میدهد CPU عمدتاً بیکار است و مقدار %wa بالاست؛ این یعنی پردازشها بهجای محاسبه، در انتظار دیسک مسدود شدهاند. iostat -x 1 نشان میدهد که %util نزدیک به 100 درصد است.
PostgreSQL این موضوع را بهوضوح در لاگ خود بیان میکند، زیرا log_checkpoints از نسخه 15 بهصورت پیشفرض فعال است:
LOG: checkpoint complete: wrote 8241 buffers (2.5%); ... write=112.402 s, sync=9.318 s, total=121.914 sمقدار sync= همان چیزی است که اهمیت دارد. این زمان، مدتی است که checkpoint صرف انتظار برای بازگشت fsync کرده است؛ بنابراین مقداری که بر حسب ثانیه باشد، یعنی دیسک نمیتواند نوشتنها را با سرعتی که پایگاه داده تولید میکند، جذب کند. اتصالات کلاینت در آن بازه زمانی متوقف میشوند، حتی اگر خود کوئری سبک باشد. راهحل، تغییر پیکربندی نیست. دایرکتوری داده را به NVMe منتقل کنید و پلن ذخیرهسازی فعلی را برای کاری که در آن خوب است، یعنی نگهداری بکآپهای همان پایگاه داده، حفظ کنید.
FAQ
آیا یک VPS ذخیرهسازی از یک VPS معمولی کندتر است؟
برای خواندن و نوشتن تصادفی (random)، بله، با اختلاف زیاد. یک پلن ذخیرهسازی مبتنی بر دیسکهای چرخشی (spinning) در هر ثانیه چند صد درخواست کوچک را با تأخیر حدود 8 میلیثانیه پاسخ میدهد، در حالی که یک پلن NVMe دهها هزار درخواست را با تأخیر بسیار کمتر از 1 میلیثانیه پردازش میکند. برای انتقالهای ترتیبی (sequential)، عملکرد این دو به هم نزدیکتر است، زیرا یک آرایه ذخیرهسازی همچنان میتواند با سرعت 150 MB/s یا بیشتر داده منتقل کند که برای پر کردن یک پورت 1 Gbit/s کافی است. پیش از تصمیمگیری، عملکرد دیسک خود را با fio --rw=randread --bs=4k --direct=1 اندازهگیری کنید.
آیا میتوانم PostgreSQL را روی یک VPS ذخیرهسازی اجرا کنم؟
میتوانید آن را اجرا کنید و تا زمانی که مجموعه دادههای فعال (working set) در RAM جا میشود، کار خواهد کرد. پس از آن، هر عملیات commit منتظر یک fsync روی دیسک کند میماند و Postgres آن را به عنوان یک عدد sync= بر حسب ثانیه در checkpoint complete ثبت میکند، در حالی که iostat -x 1 مقدار %util را نزدیک به 100 با w_await بالا نشان میدهد. چیدمان معمول به این صورت است که یک VPS کوچک با دیسک NVMe برای پایگاه داده و یک VPS ذخیرهسازی به عنوان مقصد برای فایلهای dump آن استفاده شود.
آیا VDS به معنای در اختیار داشتن سختافزار اختصاصی است؟
لزوماً خیر. VDS معنای استانداردی ندارد. برخی ارائهدهندگان از این عبارت برای هستههای CPU پینشده (pinned)، برخی برای مجازیسازی کامل KVM در مقابل کانتینرهای با هسته مشترک، و برخی صرفاً به عنوان یک نام تجاری استفاده میکنند. دستور systemd-detect-virt را اجرا کنید تا ببینید آیا روی kvm هستید یا lxc، و vmstat 1 5 را اجرا کرده و ستون st را زیر نظر بگیرید تا ببینید آیا سایر کاربران در حال استفاده از چرخههای CPU شما هستند یا خیر.
چگونه بفهمم دیسک VPS من واقعاً NVMe است؟
به lsblk -d -o NAME,ROTA,MODEL اعتماد نکنید، زیرا دیسکهای virtio معمولاً بدون توجه به سختافزار زیرین، ROTA=0 و یک رشته مدل خالی گزارش میدهند. یک تست خواندن تصادفی 30 ثانیهای fio با استفاده از --direct=1 انجام دهید و مقادیر IOPS و تأخیر صدک 99 (99th percentile) را بررسی کنید. صدها IOPS با تأخیر دو رقمی میلیثانیه نشاندهنده یک آرایه دیسک چرخشی است. دهها هزار IOPS با تأخیر کمتر از یک میلیثانیه نشاندهنده حافظه فلش است.