كيفية استخدام LVM لإدارة التخزين على أوبونتو

LVM Manage Storage On Ubuntu 18.04/20.04/22.04
centos redhat debian

إن إدارة المجلدات المنطقية (LVM) هي أداة مفيدة لإدارة مجلدات التخزين الكبيرة في أوبونتو. إنها تتيح لك إنشاء مجلدات منطقية يمكن أن تمتد عبر أجهزة تخزين فيزيائية متعددة. هذا يوفر لك مرونة في تخصيص مساحة القرص تتجاوز قيود الأقسام المادية للقرص.

في هذا الدليل، سنغطي الأساسيات لإعداد وإدارة مجلدات LVM على أوبونتو 18.04 و 20.04 و 22.04.

نظرة عامة على LVM

بعض المصطلحات والمفاهيم الرئيسية المتعلقة بـ LVM:

  • المجلدات الفيزيائية (PV) – أجهزة التخزين المادية الأساسية التي توفر السعة الفعلية للتخزين، مثل الأقسام على أقراص الأتش دي أو SSD.
  • مجموعات المجلدات (VG) – مجموعة من المجلدات الفيزيائية المجمعة معًا. هذا يتيح دمج أجهزة التخزين الفيزيائية في مجموعات تخزين أكبر.
  • المجلدات المنطقية (LV) – أجهزة كتل افتراضية يتم تخصيص المساحة لها من مجموعة المجلدات الأساسية. يمكنك إنشاء وتغيير حجم وحذف المجلدات المنطقية حسب الحاجة.
  • الامتدادات – قطع صغيرة متساوية الحجم من المساحة المتجاورة على مجلد فيزيائي. عند تخصيصها لمجلد منطقي، فإنها توفر مساحة تخزين للمجلد.

الميزة الرئيسية لـ LVM هي التجريد بين الأقراص الفيزيائية والمجلدات المنطقية. باستخدام LVM، لا داعي للقلق بشأن تفاصيل التخزين الفيزيائي. يمكنك تغيير حجم المجلدات المنطقية وأخذ لقطات منها ونقلها دون الحاجة إلى تعديل الأجهزة الفيزيائية الأساسية.

تثبيت LVM

للبدء باستخدام LVM، تحتاج أولاً إلى تثبيت حزمة lvm2:

$ sudo apt install lvm2

سيثبّت هذا كل الأدوات اللازمة لإدارة مجلدات LVM.

إنشاء المجلدات الفيزيائية

الخطوة الأولى هي تهيئة الأقراص أو الأقسام كمجلدات فيزيائية (PV) لاستخدامها من قبل LVM.

على سبيل المثال، لتهيئة القسم /dev/sdb1 كمجلد فيزيائي LVM:

$ sudo pvcreate /dev/sdb1

Output:

  Physical volume "/dev/sdb1" successfully created

يمكنك التحقق من المجلدات الفيزيائية المتوفرة:

$ sudo pvs

Output:

PV         VG        Fmt  Attr PSize   PFree
/dev/sdb1             lvm2 ---  <223.57G <223.57G 

سيسرد هذا كل المجلدات الفيزيائية التي يمكن لـ LVM الوصول إليها.

إنشاء مجموعات المجلدات

بعد ذلك، تحتاج إلى دمج واحد أو أكثر من المجلدات الفيزيائية في مجموعة مجلدات (VG). سيتم تخصيص مساحة VG من المجلدات الفيزيائية المدمجة.

على سبيل المثال، لإنشاء مجموعة مجلدات تُسمى data باستخدام المجلد الفيزيائي /dev/sdb1:

$ sudo vgcreate data /dev/sdb1

Output:

  Volume group "data" successfully created

يمكنك التحقق من مجموعات المجلدات المتوفرة:

$ sudo vgs

Output:

VG   #PV #LV #SN Attr   VSize  VFree
data   1   0   0 wz--n- <223.57G <223.57G

اعرض تفاصيل مجموعة مجلدات محددة:

$ sudo vgdisplay data

Output:

  --- Volume group --- 
  VG Name               data
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0  
  Cur PV                1
  Act PV                1
  VG Size               <223.57 GiB
  PE Size               4.00 MiB
  Total PE              57313
  Alloc PE / Size       0 / 0    
  Free  PE / Size       57313 / <223.57 GiB

إنشاء المجلدات المنطقية

بمجرد أن يكون لديك مجموعة مجلدات، يمكنك إنشاء مجلدات منطقية (LV) داخل تلك المجموعة.

على سبيل المثال، لإنشاء مجلد منطقي بحجم 10 غيغابايت يُدعى logs:

$ sudo lvcreate -L 10G -n logs data

Output:

  Logical volume "logs" created.

هذا ينشئ مجلدًا منطقيًا بحجم 10 غيغابايت يُدعى logs في مجموعة المجلدات data.

لإنشاء مجلد منطقي يستخدم كل المساحة الحرة المتبقية في مجموعة المجلدات:

$ sudo lvcreate -l 100%FREE -n apps data

Output:

  Logical volume "apps" created.

تحقق من المجلدات المنطقية:

$ sudo lvs  

Output:

LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  
apps data -wi-a----- <213.57G                                                 
logs data -wi-a----- 10.00G

يمكنك أيضًا رؤية المسار الكامل للمجلدات المنطقية المنشأة باستخدام:

$ sudo lvdisplay

Output:

  --- Logical volume ---
  LV Path                /dev/data/apps
  LV Name                apps
  VG Name                data
  LV UUID                XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
  LV Status              available
  # open                 0
  LV Size                <213.57 GiB
  Current LE             54698
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256  
  Block device           253:2

سيتم تخطيط المجلدات المنطقية إلى أجهزة /dev/VG/LV التي يمكن تنسيقها وتوصيلها، مثل الأقسام الاعتيادية.

تنسيق وتوصيل المجلدات المنطقية

لاستخدام المجلدات المنطقية LVM، يجب تنسيقها بنظام ملفات مثل أي جهاز كتلة آخر.

على سبيل المثال، لتنسيق المجلد المنطقي logs إلى ext4 وتوصيله في /var/log:

$ sudo mkfs.ext4 /dev/data/logs
$ sudo mkdir /var/log
$ sudo mount /dev/data/logs /var/log

لتوصيل هذا تلقائيًا عند إعادة التشغيل، أضف هذا إلى /etc/fstab:

/dev/data/logs /var/log ext4 defaults 0 0

افعل الشيء نفسه لأي مجلدات منطقية أخرى تريد استخدامها بشكل دائم.

توسيع المجلد المنطقي

إحدى مزايا LVM هي إمكانية توسيع المجلدات المنطقية بسهولة.

على سبيل المثال، لتوسيع المجلد المنطقي logs بمقدار 5 غيغابايت، قم أولاً بتوسيع مجموعة المجلدات بمقدار 5 غيغابايت:

$ sudo lvextend -L +5G /dev/data/logs

Output:

  Size of logical volume data/logs changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume data/logs successfully resized.

ثم قم بتغيير حجم نظام الملفات ليطابق ذلك:

$ sudo resize2fs /dev/data/logs

Output:

resize2fs 1.45.5 (07-Jan-2020)  
Filesystem at /dev/data/logs is mounted on /var/log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/data/logs is now 153600 (4k) blocks long.

المجلد المنطقي الآن أكبر بمقدار 5 غيغابايت.

هذا أسهل بكثير من توسيع أقسام القرص، والتي تتطلب خطوات مؤلمة مثل نقل وتغيير حجم الأقسام المجاورة.

تصغير المجلد المنطقي

لتصغير مجلد منطقي، قم أولاً بتغيير حجم نظام الملفات:

$ sudo resize2fs /dev/data/logs 20G

Output:

resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/data/logs to 5242880 (4k) blocks. 
The filesystem on /dev/data/logs is now 5242880 (4k) blocks long.

هذا يقلل نظام الملفات إلى 20 غيغابايت.

ثم قم بتقليل حجم المجلد المنطقي ليطابق ذلك:

$ sudo lvreduce -L 20G /dev/data/logs

Output:

  Size of logical volume data/logs changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
  Logical volume data/logs successfully resized.

المجلد المنطقي logs الآن مصغر إلى 20 غيغابايت.

إنشاء لقطات

تتيح لك LVM إنشاء لقطات للمجلدات المنطقية. يمكن استخدام هذا لأخذ نسخ احتياطية من المجلدات.

على سبيل المثال، أنشئ لقطة للمجلد المنطقي logs:

$ sudo lvcreate --size 10G --snapshot --name logs-snap /dev/data/logs

Output:

  Logical volume "logs-snap" created.

سينشئ هذا لقطة تُدعى logs-snap وهي نسخة من logs في الوقت الذي تم فيه أخذ اللقطة.

في البداية، لا تستخدم اللقطة أي مساحة، ولكن مع تغيّر المجلد الأصلي، ستنمو اللقطة لتخزن الكتل القديمة مع استبدالها.

يمكن توصيل اللقطة والنسخ الاحتياطي منها أو استعادة البيانات منها مثل أي مجلد عادي.

مراقبة استخدام LVM

من المهم مراقبة مجموعات المجلدات والمجلدات المنطقية LVM الخاصة بك للتأكد من عدم نفاد المساحة.

لرؤية الامتدادات الفيزيائية المخصصة لكل VG:

$ sudo vgdisplay -v data

Output:

  --- Volume group ---
  VG Name               data
  VG Access             read/write 
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1 
  VG Size               <223.57 GiB
  PE Size               4.00 MiB
  Total PE              57313
  Alloc PE / Size       15360 / 60.00 GiB
  Free  PE / Size       41953 / <163.57 GiB

لمراقبة استخدام LV:

$ sudo lvdisplay

Output:

  --- Logical volume ---
  LV Path                /dev/data/logs
  LV Name                logs
  VG Name                data
  LV UUID                XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-03-05 10:17:11 +0200
  LV Status              available
  # open                 0
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/data/apps 
  LV Name                apps
  VG Name                data
  LV UUID                XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
  LV Status              available
  # open                 0
  LV Size                <193.57 GiB
  Current LE             49408
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1  

يمكنك أيضًا تثبيت أداة مراقبة LVM مثل lvm2 snarf للحصول على تنبيهات عند تجاوز الاستخدام لعتبات معينة.

مزايا LVM

بعض المزايا الرئيسية لـ LVM:

  • المرونة في توسيع وتصغير المجلدات المنطقية حسب الحاجة، بدون قيود الأقسام.
  • سهولة أخذ لقطات ونسخ احتياطية للمجلدات.
  • دمج التخزين من أجهزة متعددة في مجموعة مجلدات مشتركة.
  • تهجير البيانات عبر نقل المجلدات المنطقية بين أجهزة التخزين.
  • تخصيص مجلدات منطقية مقسمة، مرآتة أو مشفرة.

بشكل عام، يوفر LVM إدارة مرنة وقوية للتخزين في خوادم أوبونتو الخاصة بك. مع بعض التعلم، يمكن أن يكون مفيدًا للغاية في إدارة احتياجات التخزين الضخمة والمتزايدة.

توفر LVM طريقة قوية لإدارة التخزين على نطاق واسع والديناميكي في أوبونتو. من خلال استخدام LVM، يمكنك التعامل بفعالية مع احتياجات التخزين المتغيرة باستمرار، مع تمكين وظائف رئيسية مثل اللقطات والتخصيص الرقيق. ومع ذلك، فإنه يتطلب تعلم مفاهيم وأوامر جديدة. مع بعض الممارسة العملية، يمكن أن يصبح LVM جزءًا لا يتجزأ من كيفية نشرك وإدارة تخزين أوبونتو. عند استخدامه بشكل صحيح، يمكن أن يوفر عليك الكثير من الوقت والمتاعب مع تطور احتياجاتك. توفر المرونة في توسيع وتقليص وتهجير المجلدات بشكل ديناميكي الجهد الأولي الذي يستحق تعلم LVM.

LEAVE A COMMENT