ما هو VPS المزود بـ SSD؟ شرح التخزين الفلاش
تعرّف إلى معنى VPS المزود بـ SSD، وكيف تمنحك ذاكرة فلاش NAND عدد IOPS أعلى ووقت استجابة أقل من الأقراص الدوّارة، وما الأسئلة الثلاثة التي تطرحها قبل الشراء.
ما هو VPS مزود بقرص SSD؟
إن VPS المزود بقرص SSD هو خادم خاص افتراضي يعتمد قرصه على ذاكرة فلاش بدلاً من القرص الصلب الدوّار. يرمز SSD إلى محرك أقراص الحالة الصلبة، وهو وحدة تخزين مبنية من شرائح فلاش NAND ولا تحتوي على أجزاء متحركة. يرمز VPS إلى الخادم الخاص الافتراضي، وهو جزء معزول من جهاز مضيف فعلي يشغّل نظام التشغيل الخاص به، ويُباع لك كما لو كان خادمًا كاملًا. عند الجمع بين المصطلحين، يشير الوصف إلى أمر واحد: عندما يقرأ خادمك كتلة من البيانات، لا يحتاج أي مكوّن ميكانيكي إلى الحركة أولاً.
هذا هو التعريف الكامل. أما كل ما يلي فيتناول ما لا يوضحه هذا الوصف، لأن عبارة "استضافة SSD" في صفحة الأسعار لا تخبرك بالكثير عن مصفوفة التخزين المستخدمة فعليًا.
إذا كنت لا تزال تحاول فهم اختلاف VPS عن الآلة الافتراضية العادية، فصفحة الفرق بين VPS وVM وVPC هي الصفحة الأنسب لقراءتها أولاً.
لماذا يعلن مزودو الاستضافة عن سرعة التخزين بدلاً من سعته
تعرض صفحة الخطة عدد أنوية CPU والذاكرة وحجم القرص وعرض النطاق الترددي، ثم تضيف كلمة واحدة عن القرص لا تتعلق بالحجم على الإطلاق. يفعل مزودو الاستضافة ذلك لأن السعة لم تعد منذ سنوات الرقم المهم عند تقييم التخزين. الرقمان اللذان يحددان أداء الخادم هما IOPS (عمليات الإدخال والإخراج في الثانية) ووقت الاستجابة (المدة اللازمة لعودة عملية واحدة).
يكمن السبب في الاختلاف الميكانيكي. يحتفظ القرص الصلب بالبيانات على أقراص دوارة ويقرأها بواسطة رأس مثبت على ذراع متحركة. للوصول إلى كتلة في موضع آخر من القرص، يجب أن يتحرك الذراع إلى موضعها، ثم يجب أن يدور القرص حتى يصل القطاع الصحيح أسفل الرأس. عند سرعة 7200 دورة في الدقيقة، يستغرق نصف الدوران في المتوسط نحو 4 ms، وتضيف حركة الذراع عدة أجزاء من المللي ثانية. لا يحتوي التخزين الفلاشي على ذراع أو قرص دوار، لذلك تكون القراءة عملية بحث كهربائية تعود نتيجتها خلال عشرات الميكروثواني.
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 دورة في الدقيقة عادةً لتنفيذ نحو 125 قراءة عشوائية بحجم 4k في الثانية، وتستغرق كل قراءة نحو 8 ms حتى تعود نتيجتها. ويُصنَّف محرك NVMe قريبًا من 600,000 من القراءات نفسها، بمدة تقارب 0.08 ms لكل قراءة. أما SATA SSD الواقع بينهما، فيُصنَّف قريبًا من 90,000. اقرأ هذه القيم باعتبارها فروقًا في الرتبة، لا نسبة تحسن مئوية.
هناك تحذيران بشأن هذه البيانات. هذه مواصفات منشورة لمحركات كاملة من كل فئة، ولذلك فهي أرقام واردة في أوراق الشركات المصنّعة وليست نتائج قياس على VPS. كما أنك لا تحصل على محرك كامل أبدًا: وحدة التخزين لديك هي حصة من جهاز واحد أو حصة من مصفوفة، وتوجد إلى جانب وحدات عملاء آخرين على العتاد نفسه.
يجيب العمودان أيضًا عن سؤالين مختلفين، لذلك اقرأهما معًا. يوضح وقت الاستجابة المدة التي تنتظرها لعملية واحدة. يوضح IOPS عدد العمليات التي يستطيع محرك التخزين تنفيذها في الوقت نفسه. يصل التخزين الفلاشي إلى أرقام IOPS المرتفعة من خلال التوازي، إذ تستجيب شرائح فلاش كثيرة لطلبات كثيرة في الوقت نفسه، بينما تحافظ قائمة انتظار عميقة على انشغالها. لن يرى برنامج ذو مسار تنفيذ واحد، يُصدر قراءة واحدة وينتظر نتيجتها ثم يُصدر القراءة التالية، أعلى قيمة في ذلك المخطط أبدًا. بل سيرى عمود وقت الاستجابة.
SSD وNVMe وSATA وPCIe: أربعة مصطلحات في أربع طبقات مختلفة
يخلط المشترون بين هذه المصطلحات لأن كل مصطلح يصف جزءًا مختلفًا من النظام.
- SSD هو وسيط التخزين. ويعني أن البيانات تُخزَّن على شرائح ذاكرة فلاش NAND بدلًا من الأقراص المغناطيسية.
- SATA هي واجهة صُممت في عصر الأقراص الميكانيكية. وتصل سرعتها القصوى إلى 6 Gbit/s، أي نحو 550 MB/s من معدل النقل الفعلي، كما أن قائمة أوامرها تستوعب 32 أمرًا قيد التنفيذ.
- NVMe (non-volatile memory express) هو بروتوكول صُمم خصيصًا لذاكرة الفلاش. ويدعم قوائم انتظار متعددة، تستوعب كل منها آلاف الأوامر، لذلك يمكن لعدة أنوية CPU التواصل مع محرك الأقراص في الوقت نفسه من دون مشاركة قائمة انتظار ضيقة واحدة.
- PCIe (peripheral component interconnect express) هي الناقل الذي يعمل عبره NVMe، وهي من النوع نفسه من المسارات التي تُوصل بها بطاقة الرسومات.
لذلك، يخزن كل من SATA SSD وNVMe SSD البيانات على ذاكرة الفلاش. ويكمن الفرق بينهما في الواجهة التي يستخدمها كل منهما. يظل SATA SSD أسرع بكثير من أي قرص صلب، لكن قائمة الأوامر التي تتسع لـ32 أمرًا تحد من مقدار العمل المتوازي الذي يمكنه تنفيذه، والعمل المتوازي هو تحديدًا ما تتفوق فيه ذاكرة الفلاش. يعتمد تحديد الخيار الذي يستحق التكلفة على عبء العمل لديك، ويحلل القرار بين NVMe وSATA SSD هذه المسألة بالتفصيل.
وحدة تخزين فلاش محلية أم وحدة تخزين متصلة بالشبكة؟
يُباع نوعان مختلفان جدًا من الترتيبات تحت الاسم نفسه.
التخزين المحلي يعني أن وحدات تخزين فلاش موجودة داخل المضيف الفعلي نفسه الذي يستضيف VPS لديك. ينتقل الطلب عبر PCIe داخل جهاز واحد ثم يعود مباشرة، ولذلك يظل زمن الاستجابة في نطاق عشرات الميكروثواني.
وحدة التخزين المتصلة بالشبكة تعني أن القرص الافتراضي لديك موجود على مجموعة تخزين منفصلة، وغالبًا ما تكون Ceph أو SAN (شبكة منطقة التخزين)، وأن كل عملية قراءة وكتابة تعبر الشبكة للوصول إليها. يسمي موفرو الخدمة ذلك عادةً "تخزين الكتل السحابي" أو "وحدات التخزين المرنة". وحدات الفلاش حقيقية. ورحلة الشبكة حقيقية أيضًا، وتُضاف إلى كل عملية، لذلك يصل زمن الاستجابة إلى مئات الميكروثواني المرتفعة أو إلى بضعة ميليثواني، بدلًا من عشرات الميكروثواني.
لا يُعد أي منهما خيارًا خاطئًا. يظل التخزين الشبكي متاحًا عند تعطل المضيف، لأن البيانات لم تكن موجودة على ذلك المضيف أصلًا؛ إذ يستطيع موفر الخدمة تشغيل خادمك على أجهزة أخرى، ويتبعه القرص. أما NVMe المحلي فأسرع ومرتبط بجهاز فعلي واحد، ولذلك يعني تعطل الأجهزة في ذلك الجهاز استعادة البيانات من نسخة احتياطية. اسأل عن نوع التخزين الذي تستخدمه الخطة. لا يفعل ذلك أحد تقريبًا.
كيف يظهر الفرق على خادم فعلي
تتكون أعمال الخادم غالبًا من عمليات قراءة وكتابة عشوائية صغيرة، وليس من عمليات نقل تسلسلية طويلة. لذلك يكون الرقم MB/s الوارد في النص التسويقي أقل الأرقام فائدة في الصفحة.
- عمليات تثبيت قاعدة البيانات. تستدعي قاعدة البيانات التي تضمن استمرارية البيانات
fsyncعند تنفيذ المعاملة، ثم تنتظر تأكيد محرك الأقراص أن البيانات حُفظت فعليًا. في القرص الصلب يستغرق هذا الانتظار عدة أجزاء من الألف من الثانية، ما يحد قاعدة البيانات الصغيرة إلى بضع مئات منخفضة من عمليات التنفيذ في الثانية. في وحدات التخزين الفلاشية يستغرق الانتظار نفسه جزءًا من الألف من الثانية. يظهر الفرق هنا بأكبر قدر، سواء كنت تستخدم PostgreSQL أو MySQL أو SQLite كقاعدة بيانات إنتاجية. - تثبيت الحزم. يفك
apt installضغط آلاف الملفات الصغيرة ويزامنها مع القرص أثناء تقدمه. لا يكون أيٌّ من ذلك تقريبًا تسلسليًا، لذا تحدده قيمة IOPS. - سحب صور الحاويات. يجلب
docker pullالطبقات المضغوطة عبر الشبكة، ثم يستخرجها إلى آلاف الملفات الصغيرة. يكون التنزيل مقيدًا بسرعة الشبكة. ويكون الاستخراج مقيدًا بسرعة القرص. في وحدة تخزين بطيئة، يكون الاستخراج هو الجزء الذي تنتظر اكتماله. - الإقلاع وإعادة الإقلاع. يقرأ النظام عند بدء التشغيل نواة النظام وinitramfs، ثم يقرأ مئات من ملفات الوحدات والمكتبات المشتركة المتناثرة على وحدة التخزين.
لا تتضمن أي من هذه العمليات قراءة تسلسلية كبيرة. ستظل وحدة تخزين تنقل البيانات بسرعة 500 MB/s أثناء تنفيذ 3,000 IOPS فقط بطيئة الاستجابة عند تنفيذ docker compose pull، لأن زمن الانتظار يُحتسب لكل ملف، وليس لكل ميغابايت.
لماذا لا يخبرك تعبير "استضافة سحابية على SSD" في صفحة الأسعار بشيء يُذكر
تصف العبارة وسيط التخزين فقط، ولا توضح نوع الواجهة التي يستخدمها محرك الأقراص. ولا توضح ما إذا كان محرك الأقراص موجودًا في الجهاز نفسه الذي يستضيف خادمك. كما لا توضح الحد الأقصى الذي يُسمح لخطتك ببلوغه.
هذا الحد هو الأهم، لكنه الأقل ورودًا في الإعلانات. يفرض مزودو الخدمة حدًا أقصى على IOPS ومعدل النقل لكل وحدة تخزين، لأن مضيفًا واحدًا يخدم عملاء كثيرين، ولأن جارًا بلا حدود قد يستنفد الموارد المتاحة للباقين. يُعد فرض حد يبلغ بضعة آلاف من IOPS على أجهزة قادرة على توفير مئات الآلاف أمرًا عاديًا وصريحًا، لكنه لا يظهر في وصف الخطة. قد تذكر خطتان كلتاهما "SSD"، بينما تستخدم إحداهما NVMe محليًا بلا حد لكل وحدة تخزين، وتستخدم الأخرى وحدة تخزين مشتركة في عنقود ومحدودة بـ 3,000 IOPS.
تأتي الحدود في شكلين. الحد المستمر هو سقف ثابت لا يتغير. أما حد الاندفاع، فيمنحك مستوى أساسيًا منخفضًا مع أرصدة تتيح لك تجاوزه لفترة من الوقت، ثم تُعاد تعبئة هذه الأرصدة عندما تكون وحدة التخزين خاملة. قد يبدو حد الاندفاع ممتازًا في اختبار مدته خمس دقائق، ثم ينخفض إلى المستوى الأساسي أثناء استيراد قاعدة بيانات أو استعادة كبيرة. إذا ذكر مزود الخدمة رقمًا كبيرًا، فاسأله عن المدة التي يُسمح لك بالحفاظ خلالها على هذا الأداء.
كيفية التحقق مما منحه لك VPS فعليًا
من داخل الضيف، لا يمكنك رؤية سوى ما يخبرك به برنامج مراقبة الآلات الافتراضية.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalاستبدل vda باسم الجهاز lsblk الظاهر للقرص. يعرض كل من ROTA وملف rotational القيمة 0 عندما تكون النواة قد أُبلغت بأن الجهاز غير دوّار، والقيمة 1 عندما تكون قد أُبلغت بالعكس. يضبط القرص الافتراضي هذه العلامة بناءً على ما يعلنه برنامج مراقبة الآلات الافتراضية، لذلك فهي تصف الجهاز الافتراضي، لا العتاد الفعلي الموجود تحته. يكون MODEL فارغًا عادةً لقرص virtio مثل vda، أو يحتوي على سلسلة عامة مثل QEMU HARDDISK في وحدة تحكم SATA محاكاة. لا يُفترض أن يرى الضيوف مصفوفة المضيف، وهم لا يرونها.
لذلك تعامل مع العلامة على أنها مؤشر، وقِس الجوانب الأخرى. شغّل اختبارًا عشوائيًا بحجم 4k باستخدام fio على ملف موجود على وحدة التخزين، وبعمق قائمة الانتظار الذي يستخدمه تطبيقك فعليًا، وشغّله مدة كافية لاستهلاك أي رصيد للدفعات. يشرح إجراء اختبار أداء VPS بطريقة صحيحة أوامر fio والأخطاء الشائعة التي تنتج أرقامًا محسّنة ظاهريًا.
ثلاثة أسئلة يجب طرحها على مزود الخدمة قبل الشراء
- هل التخزين محلي على الـ hypervisor، أم متصل عبر الشبكة؟ تحدد الإجابة الحد الأدنى لزمن الاستجابة لديك، كما تحدد ما يحدث لبياناتك عند تعطل مضيف فعلي. مزود الخدمة الذي يجيب بوضوح عن هذا السؤال يكون قد فكر في الأمر.
- ما حد IOPS لوحدة التخزين الخاصة بي؟ اطلب رقمًا. كلمتا "غير محدود" و"بمستوى المؤسسات" ليستا رقمين. إذا لم يكن هناك حد فعليًا، فاسأل عما يمنع جارًا على المضيف نفسه من استهلاك المصفوفة بأكملها أثناء فترة النسخ الاحتياطي لديه.
- هل هذا الحد مستمر أم مؤقت؟ إذا كان مؤقتًا، فاسأل عن خط الأساس ومدة الزيادة المؤقتة. خط الأساس هو القيمة التي سيعمل عندها مجدولك الليلي، ولذلك يجب أن تبني خطتك عليها.
هل تتلف ذاكرة Flash، وهل هذه مشكلتك؟
تقبل خلايا Flash عددًا محدودًا من دورات الكتابة، لذلك تنشر وحدات التخزين تصنيفًا للتحمل بوحدة TBW (تيرابايتات مكتوبة) أو DWPD (عمليات كتابة على الوحدة يوميًا). توزّع الوحدة عمليات الكتابة بالتساوي على خلاياها، ويُسمّى ذلك موازنة الاستهلاك، كما تحتفظ بكتل احتياطية لاستبدال الخلايا التي تتعطل. في VPS، يتحمل المزوّد مسؤولية الاستهلاك: فهو يراقب عدادات SMART في وحداته ويستبدل الأجهزة قبل انتهاء التصنيف. لكن مشكلتك أقدم من Flash. وحدة التخزين ليست نسخة احتياطية، كما أن التكرار أسفل وحدة التخزين ليس نسخة احتياطية أيضًا، لأنه ينسخ الحذف بالقدر نفسه الذي ينسخ به البيانات.
المقايضة الفعلية التي تجريها هي السعر لكل غيغابايت. تكلف Flash أكثر لكل غيغابايت من الأقراص الدوارة، لذلك تبيع خطة SSD عادةً سعة أقل من خطة القرص الصلب بالسعر نفسه. إذا كنت تحتاج إلى مساحة كبيرة للوسائط أو الأرشيفات، فأبقِ وحدة التخزين السريعة صغيرة، وضع المساحة الكبيرة في مكان أقل تكلفة. وهذا هو التصميم المناسب أيضًا من أجل إبقاء النسخ الاحتياطية خارج الخادم. لمعرفة موقع التخزين ضمن بقية الفاتورة، يوضّح ما الذي تكلّفه VPS فعليًا بنود التكلفة بالتفصيل.
FAQ
هل VPS المزود بوحدة SSD هو نفسه VPS المزود بوحدة NVMe؟
كل VPS مزود بوحدة NVMe هو VPS مزود بوحدة SSD، لأن وحدات NVMe تعتمد على ذاكرة فلاش. لكن العكس غير صحيح. قد تكون الخطة المعلَن عنها باسم "SSD" مزودة بوحدة SATA SSD، وهي ذاكرة فلاش تعمل عبر واجهة صُممت للأقراص الميكانيكية، مع قائمة انتظار تضم 32 أمرًا وسرعة قصوى تقارب 550 MB/s. كلاهما أسرع بكثير من القرص الصلب. إذا كان الفرق بينهما مهمًا لأحمال العمل لديك، فاسأل المزوّد عن نوع الوحدة التي تستخدمها الخطة بدلًا من استنتاج ذلك من اسم الخطة.
هل يجعل VPS المزود بوحدة SSD موقعي أسرع؟
يجعل عمليات القرص أسرع، ولا يؤثر إلا في هذه العمليات. تصبح الصفحة التي تنفذ عدة استعلامات لقاعدة البيانات في كل طلب أسرع، لأن هذه الاستعلامات وعمليات تثبيتها تتضمن عمليات إدخال وإخراج عشوائية صغيرة. أما الصفحة التي تُخدَم من الذاكرة أو من ذاكرة التخزين المؤقت فلا تصل إلى القرص أثناء إرسالها، ولذلك لا تتغير سرعتها كثيرًا. قِس الجزء البطيء من الطلب قبل أن تدفع مقابل مساحة تخزين لمعالجة المشكلة.
كيف يمكنني التحقق من أن VPS لدي يستخدم فعلًا مساحة تخزين SSD؟
لا يمكنك التحقق من العتاد الفعلي من داخل النظام الضيف. يعرض lsblk -d -o NAME,ROTA ما يعلنه الجهاز الافتراضي، ويحدد برنامج مراقبة الأجهزة الافتراضية هذه القيمة، لذلك فإن ظهور 0 هناك يُعد مؤشرًا وليس إثباتًا. الفحص العملي هو إجراء قياس: شغّل fio باستخدام حمل عمل يتضمن قراءات عشوائية بحجم 4k لعدة دقائق، وراقب زمن الاستجابة الذي يعرضه. تشير القراءات العشوائية بزمن استجابة من خانة واحدة بالمللي ثانية إلى أقراص دوارة أو وحدة تخزين شبكية مزدحمة. أما الأزمنة التي تبلغ عشرات الميكروثواني فتشير إلى ذاكرة فلاش محلية.
هل مساحة تخزين SSD المتصلة بالشبكة أسوأ من NVMe المحلية؟
هي أبطأ لكل عملية، وتتعرض لأنواع مختلفة من الأعطال. تُضاف مدة ذهاب وإياب الشبكة إلى كل قراءة وكل كتابة، لذلك يكون زمن الاستجابة أعلى رغم أن كلتيهما تعتمدان على ذاكرة فلاش. في المقابل، لا توجد بياناتك على مضيف فعلي واحد، لذلك لا يؤدي تعطل المضيف إلى فقدان وحدة التخزين معه، كما تصبح اللقطات والترحيل المباشر أسهل على المزوّد. اختر ذاكرة فلاش محلية لقاعدة بيانات حساسة لزمن الاستجابة. واختر مساحة تخزين شبكية عندما تكون سلامة وحدة التخزين أهم من فروق الميكروثواني.