مقدمة
لينكس لديه أنظمة وأدوات قوية لإدارة أجهزة الهاردوير، بما في ذلك أقراص التخزين. في هذه المقالة سنغطي، على المستوى العالي، كيف يمثل لينكس هذه الأجهزة وكيف يتم تحويل التخزين الخام إلى مساحة قابلة للاستخدام على الخادم.
ما هو تخزين البلوك؟
تخزين البلوك هو اسم آخر لما يسميه نواة لينكس بجهاز البلوك. جهاز البلوك هو قطعة من الهاردوير يمكن استخدامها لتخزين البيانات، مثل قرص الهارد ديسك الدوار التقليدي (HDD)، وقرص الحالة الصلبة (SSD)، وذاكرة الفلاش، وما إلى ذلك. يسمى جهاز البلوك بهذا الاسم لأن النواة تتفاعل مع الهاردوير عن طريق الإشارة إلى كتل ذات أحجام ثابتة، أو أجزاء من المساحة.
بعبارة أخرى، تخزين البلوك هو ما تفكر فيه كتخزين القرص العادي على الكمبيوتر. بمجرد إعداده، يعمل كامتداد لشجرة نظام الملفات الحالية، ويجب أن تكون قادراً على الكتابة أو قراءة المعلومات من كل قرص بشكل متبادل.
ما هي أجزاء الأقراص؟
تقسيمات الأقراص هي طريقة لتقسيم وحدة تخزين الأقراص إلى وحدات صغيرة قابلة للإستخدام. التقسيم هو جزء من وحدة تخزين الأقراص التي يمكن التعامل معها بنفس الطريقة التي يتم التعامل بها مع الوحدة نفسها.
يتيح التقسيم لك تجزئة المساحة المتاحة واستخدام كل جزء لأغراض مختلفة. وهذا يمنح المستخدم مرونة أكبر، مما يسمح لهم بتجزئة قرص واحد لأنظمة تشغيل متعددة، ومساحة تبادل، أو أنظمة ملفات متخصصة.
بينما يمكن استخدام الأقراص بتنسيق واستخدام دون التقسيم، فإن أنظمة التشغيل عادة ما تتوقع وجود جدول تقسيم، حتى إذا كان هناك جزء واحد فقط مكتوب على القرص. عمومًا، يُوصى عادةً بتقسيم الأقراص الجديدة للحصول على مرونة أكبر.
MBR مقابل GPT
عند تقسيم القرص، من المهم معرفة أي تنسيق تقسيم سيتم استخدامه. وعادةً ما يتعلق ذلك باختيار بين MBR (Master Boot Record) و GPT (GUID Partition Table).
MBR يعود تاريخه لأكثر من 30 عامًا. بسبب عمره، فإن لديه بعض القيود الجدية. على سبيل المثال، فإنه لا يمكن استخدامه للأقراص بحجم أكثر من 2 تيرابايت، ويمكن أن يحتوي فقط على أربعة أقسام أساسية كحد أقصى.
GPT هو نظام تقسيم أحدث يحل بعض المشاكل الكامنة في نظام MBR. يمكن للأنظمة التي تعمل بنظام GPT أن تحتوي على المزيد من التقسيمات في كل قرص. وتقتصر هذه القدرة عادةً على القيود المفروضة من جانب نظام التشغيل نفسه. بالإضافة إلى ذلك، لا يوجد قيد حجم القرص مع GPT ومعلومات جدول التقسيم متاحة في أماكن متعددة للحماية من التلف. يمكن أيضًا لـ GPT كتابة “MBR الواقية” لتوافقها مع أدوات تعمل بنظام MBR فقط.
في معظم الحالات، GPT هو الاختيار الأفضل ما لم يمنعك نظام التشغيل من استخدامه.
التهيئة ونظم الملفات
على الرغم من أن نواة Linux يمكنها التعرف على قرص غير مهيأ، إلا أنه يجب تهيئته لاستخدامه. يعد التهيئة عملية كتابة نظام الملفات على القرص وإعداده لعمليات الملفات. نظام الملفات هو النظام الذي ينظم البيانات ويتحكم في كيفية كتابة المعلومات إلى القرص الأساسي واستردادها منه. بدون نظام الملفات، لا يمكنك استخدام جهاز التخزين لأي عمليات ملفات قياسية.
هناك العديد من تنسيقات نظم الملفات المختلفة، وكل منها له تجارب واضحة، بما في ذلك دعم نظام التشغيل. جميعها تعرض للمستخدم تمثيلًا مشابهًا للقرص، ولكن الميزات والمنصات التي تدعمها يمكن أن تكون مختلفة جدًا.
بعض نظم الملفات الأكثر شيوعًا لنظام Linux هي:
- Ext4: أشهر نظام ملفات افتراضي هو Ext4، وهو خلف لنظامي الملفات Ext2 و Ext3. يتميز نظام الملفات Ext4 بأنه مسجل، متوافق مع الأنظمة القديمة، مستقر، ويحتوي على دعم وأدوات ناضجة. إنه خيار جيد إذا لم يكن لديك احتياجات متخصصة.
- XFS: يتميز XFS بالأداء العالي وقدرته على التعامل مع ملفات البيانات الكبيرة. يتم تهيئته بسرعة ويتمتع بخصائص جيدة في الأداء عند التعامل مع ملفات كبيرة وعند العمل مع أقراص كبيرة. كما يحتوي على ميزات الحصول على لقطات مباشرة. يستخدم XFS سجل البيانات التوضيحية بدلاً من توضيح كل من البيانات والبيانات الوصفية. وهذا يؤدي إلى أداء سريع، ولكن قد يؤدي في حالة فقدان الطاقة المفاجئ إلى تلف البيانات.
- Btrfs: Btrfs هو نظام ملفات حديث وغني بالميزات يستخدم نسخ الكتابة في القراءة. تتيح هذه الهندسة بعض وظائف إدارة الأحجام أن تكون مدمجة في طبقة نظام الملفات، بما في ذلك إنشاء لقطات واستنساخ. يُستخدم افتراضيًا في بعض أجهزة NAS (تخزين متصل بالشبكة) المستهلك والتجاري، وهو شائع لأجهزة التخزين المخصصة التي تحتوي على مجموعات أقراص متعددة.
- ZFS: ZFS هو نظام ملفات ومدير أحجام آخر يستخدم نسخ الكتابة في القراءة ويحتوي على مجموعة كبيرة وناضجة من الميزات. يتنافس مباشرة مع Btrfs، ويحتوي على ميزات سلامة البيانات، ويمكنه التعامل مع أحجام ملفات كبيرة، ويحتوي على ميزات مألوفة للحصول على لقطات واستنساخ، ويمكن تنظيم الأحجام في مجموعات RAID ومجموعات شبيهة بـ RAID لضمان الاستمرارية وزيادة الأداء. يتمتع ZFS بتاريخ مثير للجدل بسبب مشاكل الترخيص، ولكنه ليس أكثر أو أقل شهرة من Btrfs عند مراعاة الدعم التجاري.
بالإضافة إلى ذلك، يستخدم نظام التشغيل ويندوز بشكل أساسي نظامي الملفات NTFS وExFAT، بينما يستخدم نظام التشغيل macOS بشكل أساسي نظامي الملفات HFS+ وAPFS. عادةً ما يكون من الممكن قراءة وأحيانًا كتابة هذه الأنظمة عبر منصات مختلفة، ولكن قد يتطلب ذلك استخدام أدوات توافق إضافية.
كيف يدير نظام لينكس أجهزة التخزين
ملفات الأجهزة في /dev
في نظام لينكس، يتم تمثيل كل شيء تقريبًا بملف في التسلسل الهرمي لنظام الملفات، بما في ذلك الأجهزة مثل محركات التخزين، التي تمثل على النظام على شكل ملفات في الدليل /dev
. عادةً، تبدأ الملفات التي تمثل أجهزة التخزين بـ sd
أو hd
تليها حرف. على سبيل المثال، يكون المحرك الأول في الخادم عادةً ما يكون بشكل ما مثل /dev/sda
.
الأقسام على هذه المحركات لها أيضًا ملفات داخل /dev
، وتمثل عن طريق إضافة رقم القسم إلى نهاية اسم المحرك. على سبيل المثال، ستكون القسم الأول على المحرك من المثال السابق مثل /dev/sda1
.
على الرغم من أن ملفات الجهاز /dev/sd*
و /dev/hd*
تمثل الطريقة التقليدية للإشارة إلى محركات الأقراص والأقسام، إلا أن هناك عيباً كبيراً في استخدام هذه القيم وحدها. يقرر نواة Linux أي جهاز يحصل على أي اسم في كل مرة يتم فيها تشغيل النظام، وبالتالي يمكن أن يؤدي ذلك إلى وضعيات مربكة حيث يتغير جهازك.
للتغلب على هذه المشكلة، يحتوي الدليل /dev/disk
على أدلة فرعية تتوافق مع طرق مختلفة وأكثر استمرارًا لتحديد الأقراص والأقسام في النظام. تحتوي هذه الأدلة على روابط رمزية تم إنشاؤها عند التمهيد للعودة إلى الملفات /dev/[sh]da*
الصحيحة. يتم تسمية الروابط وفقًا لخاصية تحديد الدليل (على سبيل المثال، حسب تسمية القسم في الدليل /dev/disk/by-partlabel
). ستشير هذه الروابط دائمًا إلى الأجهزة الصحيحة، لذلك يمكن استخدامها كمعرفات ثابتة لمساحات التخزين.
قد تحتوي بعض أو كل الدلائل الفرعية التالية على الدليل /dev/disk
:
by-label
: معظم أنظمة الملفات لديها آلية تسمية تسمح بتعيين أسماء محددة من قبل المستخدم للقرص أو القسم. يتكون هذا الدليل من روابط تحمل اسماء التسميات التي يحددها المستخدم.by-uuid
: تعتبر UUIDs، أو معرفات فريدة عالميا، سلسلة طويلة وفريدة من الأحرف والأرقام يمكن استخدامها كهوية لمورد التخزين. عادةً ما لا تكون قابلة للقراءة بوضوح من قبل البشر، لكنها تكون فريدة تقريبًا دائمًا ، حتى عبر الأنظمة. ولذلك، قد يكون من الجيد استخدام UUIDs للإشارة إلى التخزين الذي قد ينتقل بين الأنظمة، حيث تكون اصطدامات التسمية أقل احتمالية.by-partlabel
وby-partuuid
: تقدم جداول GPT مجموعة خاصة من العلامات ومعرفات UUID الخاصة بها ، والتي يمكن أيضًا استخدامها للتعرف. يعمل هذا بنفس طريقة الدلائل السابقتين تقريبًا ، ولكنه يستخدم معرفات GPT المحددة.by-id
: يحتوي هذا الدليل على روابط يتم إنشاؤها بواسطة أرقام السلسلة الخاصة بالأجهزة والأجهزة التي تم توصيلها بها. هذا ليس دائمًا بشكل كامل ، لأن طريقة توصيل الجهاز بالنظام قد يؤدي إلى تغيير اسمby-id
الخاص به.by-path
: مثلby-id
، يعتمد هذا الدليل على اتصال جهاز التخزين بالنظام نفسه. يتم بناء الروابط هنا باستخدام تفسير النظام للأجهزة المستخدمة للوصول إلى الجهاز. يعاني هذا النهج من نفس العيوب المرتبطة بـby-id
حيث يمكن لتوصيل الجهاز بمنفذ مختلف أن يؤدي إلى تغيير هذه القيمة.
عادةً ما تكون by-label
أو by-uuid
هما أفضل الخيارات للتعرف المستمر على الأجهزة المحددة.
ملاحظة: تتحكم أجهزة تخزين الكتل في DigitalOcean في أرقام السلسلة التي يتم الإبلاغ عنها إلى نظام التشغيل. يتيح هذا للتصنيف by-id
أن يكون دائمًا بشكل موثوق به في هذه المنصة. هذه هي الطريقة المفضلة للإشارة إلى أجهزة التخزين الخاصة بـ DigitalOcean حيث إنها دائمة وقابلة للتنبؤ عند التشغيل الأول.
تركيب أجهزة الكتلة
في نظام لينكس وغيره من أنظمة التشغيل المشابهة ليونكس ، يتم تمثيل النظام بأكمله ، بغض النظر عن عدد الأجهزة الفعلية المشاركة ، بشجرة ملف واحدة موحدة. عندما يتعين استخدام نظام الملفات على محرك أو قسم معين ، يجب ربطه بالشجرة الموجودة بالفعل. عملية التركيب هي عملية تعليق تقسيم أو محرك مهيئ على دليل داخل نظام ملفات لينكس. يمكن الوصول إلى محتويات المحرك من ذلك الدليل.
عادةً ما يتم تعليق الأقراص على دلائل فارغة خاصة – تعليقها على دليل غير فارغ يعني أن محتويات الدليل العادية لن تكون متاحة حتى يتم إلغاء تعليق المحرك). هناك العديد من الخيارات المختلفة للتركيب يمكن تعيينها لتغيير سلوك الجهاز المركب. على سبيل المثال ، يمكن تعليق المحرك في وضع القراءة فقط لضمان عدم تغيير محتوياته.
توصي معيار تسلسل النظام الملفي باستخدام /mnt
أو مجلد فرعي تحته لتوصيل نظم الملفات المؤقتة. لا توجد توصيات بشأن مكان تركيب التخزين الدائم ، لذا يمكنك اختيار النظام الذي تفضله. في كثير من الحالات ، يتم استخدام مجلدي /mnt
أو /mnt
لتخزين دائم أيضًا.
جعل التركيبات دائمة باستخدام /etc/fstab
تستخدم أنظمة Linux ملفًا يسمى /etc/fstab
(جدول نظام الملفات) لتحديد أي نظام ملفات يجب تركيبه خلال عملية التمهيد. لن يتم تركيب أنظمة الملفات التي ليس لها إدخال في هذا الملف بشكل تلقائي ما لم يتم كتابتها بواسطة برنامج آخر.
تمثل كل سطر في ملف /etc/fstab
نظام ملفات مختلف يجب تركيبه. يحدد هذا السطر جهاز الكتلة، ونقطة التركيب التي يجب توصيلها بها، وتنسيق القرص، وخيارات التركيب، بالإضافة إلى بعض المعلومات الأخرى.
إدارة التخزين المعقدة أكثر
على الرغم من أن العديد من حالات الاستخدام يمكن تلبيتها باستخدام هذه الميزات الأساسية، إلا أن هناك تصورات إدارة أكثر تعقيدًا متاحة لربط عدة أقراص معًا، على سبيل المثال RAID.
ما هو RAID؟
RAID هو اختصار لـ redundant array of independent disks. RAID هي تقنية إدارة التخزين والتجاوز البيانات التي تتيح لك تجميع الأقراص معًا وإدارتها كوحدة واحدة بإمكانات إضافية.
خصائص مجموعة RAID تعتمد على مستوى RAID الذي يحدد كيفية ارتباط الأقراص في المجموعة مع بعضها البعض. وبعض المستويات الأكثر شيوعًا هي:
- RAID 0: يشير هذا المستوى إلى تجزئة القرص. وهذا يعني أنه عندما يتم كتابة البيانات إلى المجموعة ، يتم تجزئتها وتوزيعها بشكل خطي عبر الأقراص في المجموعة. يوفر هذا زيادة في الأداء حيث يمكن كتابة البيانات إلى العديد من الأقراص أو قراءتها منها في نفس الوقت. السلبية في ذلك هو أن فشل قرص واحد يمكن أن يفقد جميع البيانات في المجموعة بأكملها ، حيث لا يحتوي أي قرص على معلومات كافية عن المحتوى لإعادة البناء. عادةً ما لا يتم استخدام RAID 0 في الإنتاج لهذا السبب ، على الرغم من أنه يمكن أن يكون مفيدًا كنقطة مقارنة.
- RAID 1: يشير RAID 1 إلى تطابق الأقراص. أي شيء يتم كتابته إلى مجموعة RAID 1 يتم كتابته على أقراص متعددة. ميزته الرئيسية هي التكرار الاحتياطي للبيانات ، مما يسمح للبيانات بالبقاء على قيد الحياة في حالة فقدان القرص الصلب على أي جانب من جوانب المرآة. نظرًا لأن العديد من الأقراص ستحتوي على نفس البيانات بالضبط ، فإن السعة المستخدمة تقل بنسبة لا تقل عن النصف.
- RAID 5: يجزئ RAID 5 البيانات عبر العديد من الأقراص ، بشكل مشابه لـ RAID 0. ومع ذلك ، يقوم هذا المستوى أيضًا بتنفيذ تكافؤ موزع عبر الأقراص. وهذا يعني أنه إذا فشل أحد الأقراص ، يمكن للأقراص المتبقية إعادة بناء المجموعة باستخدام معلومات التكافؤ المشتركة بينها. عادةً ما يكون هذا كافيًا لإعادة بناء قرص واحد ، مما يعني أن المجموعة يمكن أن تتحمل فقدان أي قرص. يقلل RAID 5 من المساحة المتاحة في المجموعة بسعة قرص واحد.
- RAID 6: تتمتع RAID 6 بنفس الخصائص الموجودة في RAID 5، ولكنها توفر مضاعفة للتوافق. وهذا يعني أن مصفوفات RAID 6 يمكنها تحمل فقدان أي قرصين. يتأثر سعة المجموعة مجددًا بكمية التوافق، مما يعني أن السعة المستخدمة تقل بمقدار قرصين من المساحة.
- RAID 10: RAID 10 هو مزيج من المستويين 1 و 0. أولاً، يتم إنشاء مجموعتين من المصفوفات المتماثلة. ثم يتم تعطيل البيانات عبرهما. يتم بذلك إنشاء مجموعة تتمتع ببعض الخصائص التوافقية مع توفير أداء جيد. ومع ذلك، يتطلب هذا عددًا كبيرًا من الأقراص، والسعة الإجمالية لا تزال أقل من نصف المساحة المجمعة للأقراص.
إلى أين الذهاب بعد ذلك؟
إذا كان لديك جهاز تخزين جديد ترغب في استخدامه في نظام Linux الخاص بك، سيوجهك هذا المقال خلال عملية تقسيم الأقسام وتهيئتها وتركيب نظام الملفات الجديد الخاص بك. يجب أن يكون هذا كافيًا لمعظم الحالات التي تهتم فيها بإضافة سعة إضافية بشكل رئيسي. لمعرفة كيفية أداء مهام إدارة التخزين، تحقق من كيفية أداء المهام الأساسية لإدارة أجهزة التخزين في Linux.