أهلاً يا شباب! اليوم راح نتكلم عن موضوع حيوي جداً في عالم Linux: إدارة الأقراص والتخزين. هذا الدرس بيغطي الأساسيات وصولاً لـ LVM، يعني لو حابب تكون مهندس أنظمة Linux محترف، هذا الكلام لك.
الأقراص الصلبة (Disks)
في Linux، كل قرص صلب، سواء كان HDD أو SSD أو حتى NVMe، يظهر كملف في مجلد /dev. الأسماء الشائعة هي:
sda,sdb,sdc... للأقراص المتصلة بواجهة SATA أو SCSI.nvme0n1,nvme1n1... لأقراص NVMe.
علشان تشوف الأقراص الموجودة عندك، فيه أوامر بسيطة ومفيدة:
lsblk: يعرض لك شجرة الأقراص والتقسيمات (partitions) ونقاط التركيب (mount points).fdisk -l: يعرض معلومات تفصيلية عن الأقراص والتقسيمات.
مثال على lsblk:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─vgmain-root 254:0 0 40G 0 lvm /
└─vgmain-swap 254:1 0 9G 0 lvm [SWAP]
sdb 8:16 0 100G 0 disk
sr0 11:0 1 1024M 0 rom
ملاحظة:
sdaهو القرص الأول،sdbالثاني، وهكذا. الأرقام مثلsda1هي للتقسيمات داخل القرص.
التقسيمات (Partitions)
التقسيم هو جزء من القرص الصلب. ممكن تقسم قرص واحد لأكثر من قسم، وكل قسم يعتبر كوحدة تخزين منفصلة. ليه نسوي كذا؟
- تنظيم: تفصل نظام التشغيل عن بيانات المستخدمين، أو تفصل مجلدات معينة مثل
/varأو/home. - أمان: لو حصل مشكلة في قسم معين، ما تأثر على باقي الأقسام.
- مرونة: ممكن تستخدم أنظمة ملفات مختلفة لكل قسم.
أنواع جداول التقسيم (Partition Tables)
- MBR (Master Boot Record): قديم، يدعم حتى 4 تقسيمات أساسية (Primary Partitions) وبحد أقصى 2 تيرابايت للقرص. ممكن يكون عندك 3 Primary و 1 Extended، والـ Extended ممكن يحتوي على عدد لا نهائي من Logical Partitions.
- GPT (GUID Partition Table): أحدث وأفضل، يدعم عدد كبير من التقسيمات (عادة 128) وأحجام أقراص ضخمة جداً (أكثر من 2 تيرابايت). هو الخيار المفضل حالياً.
أدوات التقسيم
fdisk: أداة قوية للأقراص بنظام MBR.gdisk: نسخةfdiskللأقراص بنظام GPT.parted: أداة حديثة تدعم MBR و GPT، وأكثر مرونة في التعامل مع التقسيمات وتغيير أحجامها.
مثال: إنشاء قسم جديد باستخدام parted (على قرص sdb مثلاً):
sudo parted /dev/sdb
(parted) mklabel gpt # إنشاء جدول تقسيم GPT
(parted) mkpart primary ext4 0% 100% # إنشاء قسم أساسي بنظام ملفات ext4 يملأ القرص بالكامل
(parted) print # لعرض التقسيمات
(parted) quit # للخروج
بعد ما تنشئ القسم، لازم تسوي له تهيئة (Format) بنظام ملفات (Filesystem) عشان تقدر تخزن فيه بيانات. الأكثر شيوعاً هو ext4.
sudo mkfs.ext4 /dev/sdb1 # تهيئة القسم الأول في sdb بنظام ext4
الآن صار عندك قسم جاهز للاستخدام. علشان تشوف محتوياته، لازم تسوي له تركيب (Mount) على مجلد معين.
sudo mkdir /mnt/mydisk # إنشاء مجلد لنقطة التركيب
sudo mount /dev/sdb1 /mnt/mydisk # تركيب القسم
ملاحظة: هذا التركيب مؤقت. إذا سويت إعادة تشغيل، راح يختفي. عشان يكون دائم، لازم تضيفه لملف
/etc/fstab.
مثال على إدخال في /etc/fstab:
/dev/sdb1 /mnt/mydisk ext4 defaults 0 0
بعد إضافة الإدخال في fstab، تقدر تسوي sudo mount -a عشان تركب كل الأقسام المحددة في الملف، أو تسوي إعادة تشغيل.
إدارة وحدات التخزين المنطقية (LVM - Logical Volume Management)
LVM هي طبقة تجريدية فوق التقسيمات الفيزيائية. تخيل إنك عندك أكثر من قرص أو قسم، وودك تجمعهم كأنهم قرص واحد كبير، وتقدر تعدل حجمه بسهولة بدون ما تحتاج تعيد تقسيم الأقراص. هذا هو LVM!
فوائد LVM:
- مرونة الحجم: تقدر توسع أو تقلص حجم أي Logical Volume (LV) وهو شغال.
- تجميع الأقراص: تجمع أكثر من قرص في مجموعة واحدة (Volume Group).
- لقطات (Snapshots): تاخذ لقطة سريعة لحالة البيانات في نقطة زمنية معينة.
مكونات LVM
- Physical Volumes (PVs): أقراص أو تقسيمات فيزيائية تم تهيئتها لـ LVM.
- Volume Groups (VGs): مجموعة من الـ PVs. هذا هو "القرص الكبير" الوهمي.
- Logical Volumes (LVs): هي الأقسام المنطقية اللي تنشئها من الـ VG. عليها تسوي نظام الملفات وتركبها.
خطوات استخدام LVM (مثال على القرص sdb بعد تهيئته):
1. تحضير الأقراص/التقسيمات كـ Physical Volumes (PVs):
نفترض إنك سويت قسم جديد sdb1 وودك تستخدمه كـ PV. لازم تغير نوع القسم أول شيء لـ LVM (في parted يكون نوعه lvm).
sudo pvcreate /dev/sdb1
للتحقق: sudo pvs
2. إنشاء Volume Group (VG) من الـ PVs:
نسمي الـ VG مثلاً data_vg.
sudo vgcreate data_vg /dev/sdb1
للتحقق: sudo vgs
3. إنشاء Logical Volume (LV) من الـ VG:
ننشئ LV بحجم 50 جيجابايت ونسميه mydatalv داخل data_vg.
sudo lvcreate -L 50G -n mydatalv data_vg
للتحقق: sudo lvs
4. تهيئة الـ LV بنظام ملفات:
sudo mkfs.ext4 /dev/data_vg/mydatalv
5. تركيب الـ LV:
sudo mkdir /mnt/data
sudo mount /dev/data_vg/mydatalv /mnt/data
ولجعله دائم في fstab:
/dev/data_vg/mydatalv /mnt/data ext4 defaults 0 0
تغيير حجم Logical Volume (LV)
هذي هي قوة LVM! تقدر توسع الـ LV بسهولة:
1. توسيع الـ LV نفسه (مثلاً 10 جيجا إضافية):
sudo lvextend -L +10G /dev/data_vg/mydatalv
2. توسيع نظام الملفات ليملأ المساحة الجديدة:
إذا كان ext4 أو ext3:
sudo resize2fs /dev/data_vg/mydatalv
إذا كان xfs:
sudo xfs_growfs /mnt/data # لازم يكون الـ LV مركب
ملاحظة: تقليص حجم الـ LV أصعب وأخطر. لازم تسوي نسخة احتياطية أول شيء، وبعدين تقلص نظام الملفات قبل تقليص الـ LV.
وبكذا نكون غطينا الأساسيات المهمة جداً في التعامل مع التخزين في Linux. من الأقراص الخام، للتقسيمات، وصولاً للمرونة اللي يقدمها LVM. طبق هالأوامر على آلة افتراضية عشان تتعود عليها وتفهمها صح!