النتائج 1 إلى 3 من 3

الموضوع: Logical Volume Manager - LVM

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    142

    Logical Volume Manager - LVM



    السلام عليكم ورحمة الله وبركاته

    كيف يمكننا زيادة حجم البارتشن عندما نحتاج لذلك ؟ بالعامية لما يصير البارتشن full ومحتاج مساحة زايدة من أي بارتشن آخر ، متى يمكنني الاستفادة من تلك المساحة واضافتها للبارتشن المطلوب ؟

    اجابة هذا السؤال سهلة بشرط ان يكون البارتشن مهيأ لذلك ، بمعنى آخر يجب ان يكون البارتشن Logical Volume ويستخدم تقنية LVM لأعادة تحجيمة سواء بزيادة أو نقصان.

    سأشرح في هذا الموضوع طريقة عمل هذا النوع من البارتشن ( 8e ) بالاضافة الى طريقة اعادة التحكم واضافة بارتشن جديد وما اليه من أمور تهم المستخدم ، وسيكون السيناريو كما يلي.

    سنعمل 4 بارتشنات من نوع ( 8e ) ثم نربطهم جميعا ببارتشن جديد لنتحكم بحجمه كما نريد ، للتوضيح أكثر نقول أن البارتشنات الاربعه تسمى ( PV ) ، بعد ذلك يجب ربط الـ PV's الاربعه في بارتشن واحد يسمى ( VG ) للدلاله على انه يجمع عدة بارتشنات ، واخيرا سنقوم بعمل بارتشن من المساحة المتوفرة في ( VG ) الى بارتشن جديد يسمى ( LV ) وهو محور حديثنا.

    تعريف الاختصارات

    كود:
    PV = Physical Volume الاربع البارتشنات الحقيقية
    VG = Volume Group مجموعة تضم تلك البارتشنات وحجمها مجموع الاحجام
    LV = Logical Volume بارتشن حقيقي يمكننا من اعادة تحجيمة بسهولة
    هذه هي الخطوات فنحن سنقوم بانشاء عدد 4 بارتشن من نوع 8e يمكننا باستخدام الاداة fdisk ومن لا يعرف استخدامها لا انصحه بتطبيق الدرس ، يكتفي بالقراءة معي ، لان انشاء بارتشن جديد يجب ان يكون شي بديهي لمدير النظام ، ويمكنك الحصول على شرح للاداة ممن هنا و هنا ايضا

    بعد ذلك نقوم بجمع هذه البارتشنات تحت مجموعة واحدة VG ، ثم نستخرج من هذه المجموعة بارتشن جديد نستطيع اعادة تحجيمة ان احتجنا لذلك

    ستكون العملية أسهل عندما نتذكر التسمية المختصرة كما كتبتها أنا ، لان جميع الاوامر التي سنستخدمها ستبدأ بنفس التسمية كما سنرى في هذا الموضوع

    قبل كل شي ، يجب علينا اضافة المودل المطلوب للكيرنل بالنسبة لردهات ، هذا يعني اضافة مايلي في ملف /etc/modprobe.conf

    كود:
    alias block-major-58 lvm-mod
    alias char-major-109 lvm-mod
    ثم احفظ الملف

    بعد انشاء البارتشنز المطلوبة وبعد اعادة التشغيل ، ناتج الامر fdisk -l يجب ان يحتوي على مايلي

    كود:
    [root@ex4mple init.d]# fdisk -l
    
    Disk /dev/hda: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot   Start       End      Blocks   Id  System
    /dev/hda1   *      1         255     2048256   83  Linux
    /dev/hda2         256        2805    20482875   83  Linux
    /dev/hda3         2806        4080    10241437+  83  Linux
    /dev/hda4         4081        9729    45375592+   5  Extended
    /dev/hda5         4081        4203      987966   fd  Linux raid autodetect
    /dev/hda6         4204        4326      987966   fd  Linux raid autodetect
    /dev/hda7         4327        4449      987966   fd  Linux raid autodetect
    /dev/hda8         4450        4572      987966   fd  Linux raid autodetect
    /dev/hda9         4573        5181     4891761   83  Linux
    /dev/hda10        5182        5304      987966   8e  Linux LVM
    /dev/hda11        5305        5427      987966   8e  Linux LVM
    /dev/hda12        5428        5550      987966   8e  Linux LVM
    /dev/hda13        5551        5673      987966   8e  Linux LVM
    انظر لنوع البارتشنات لدي من hda10 حتى hda13 هو Linux LVM

    نجعل هذه البارتشنات ( PV ) كما ذكرنا ، بالامر pvcreate كمايلي
    كود:
    [root@ex4mple init.d]# pvcreate /dev/hda10 /dev/hda11 /dev/hda12 /dev/hda13
      Physical volume "/dev/hda10" successfully created
      Physical volume "/dev/hda11" successfully created
      Physical volume "/dev/hda12" successfully created
      Physical volume "/dev/hda13" successfully created
    [root@ex4mple init.d]#
    بعد ذلك نجمعها داخل مجموعة ( VG ) كما أسلفت سابقا ، بالامر vgcreate
    كود:
    [root@ex4mple init.d]# vgcreate lvmhard /dev/hda10 /dev/hda11 /dev/hda12 /dev/hda13
      Volume group "lvmhard" successfully created
    [root@ex4mple init.d]#
    لاحظ اسم المجموعة lvmhard كما كتبته انا ويمكنك كتابة أي اسم تريد

    الان ننشئ البارتشن النهائي ( LV ) بالامر lvcreate على النحو التالي
    كود:
    [root@ex4mple init.d]# lvcreate -L 1G -n lvmpart lvmhard
      Logical volume "lvmpart" created
    [root@ex4mple init.d]#
    لاحظ الامر بعد الخيار (L-) قمت بتحديد الحجم 1 قيقا
    وبعد الخيار (n-) قمت بتحديد اسم البارتشن lvmpart ، والمجموعة التي ينتمي اليها lvmhard التي أنشأناها قبل قليل.

    هذه هي الصيغه ، ويمكنك تحديد الحجم الذي تريد حسب مجموع الاحجام في البارتشنات الحقيقية ( PV ) لو كان كل واحد فيهم 1 قيقا هذا يعني يمكنك استخدام حتى 4 قيقا لان هذا هو حجم المجموعة بعد ضم البارتشنات لها

    الان يصبح مكان البارتشن هنا
    كود:
    /dev/lvmhard/lvmpart
    على حسب التمسية التي اعطيت ، ولا يحتاج هذا البارتشن الا لفورمات فقط ليصبح نظام الملفات فيه ext3 نكتب الامر التالي
    كود:
    [root@ex4mple init.d]# mke2fs -j /dev/lvmhard/lvmpart
    mke2fs 1.35 (28-Feb-2004)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131072 inodes, 262144 blocks
    13107 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=268435456
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376
    
    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 37 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@ex4mple init.d]#
    بعد ذلك أعمل mount له كما تعلمنا من هذا الدرس
    كود:
    [root@ex4mple ~]# mount /dev/lvmhard/lvmpart /root/lvm
    [root@ex4mple ~]#
    نتحقق من عمل البارتشن الجديد بالامر df
    كود:
    [root@ex4mple ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/hda2              20G  6.2G   13G  34% /
    /dev/hda1             2.0G   38M  1.8G   3% /boot
    /dev/hda3             9.7G   57M  9.1G   1% /home
    /dev/hdc              5.0M  5.0M     0 100% /media/cdrom
    /dev/md0              2.8G   37M  2.7G   2% /root/raid
    /dev/mapper/lvmhard-lvmpart 1008M   34M  924M   4% /root/lvm
    يعمل كما يجب مثل مانشوف في السطر الاخير

    ولجعل ال mount دائم نضيف هذا السطر في ملف fstab
    كود:
    [root@ex4mple ~]# nano /etc/fstab
    
    /dev/lvmhard/lvmpart    /root/lvm               ext3    defaults        1 2
    ثم نكتب الامر
    كود:
    [root@ex4mple ~]# mount -a
    هذا كل ماعلينا فعله لانشاء بارتشن LVM ، وسأشرح الان كيف يمكننا اعادة تحجيمة بالاوامر المناسبة

    ويمكننا رؤية حالة البارتشن وحجمه ومعلومات اخرى من خلال الامر lvdisplay قم بكتابتة وانظر للخانه LV Size
    كود:
    [root@ex4mple ~]# lvdisplay
      --- Logical volume ---
      ....
      ....
     LV Size                1.00 GB
      ....
    [root@ex4mple ~]#
    كما ترى ان حجم البارتشن 1 قيقا

    لزيادة حجم البارتشن lvmpart نفعل ذلك بالامر lvextend كمايلي
    كود:
    [root@ex4mple ~]# lvextend -L +1G /dev/lvmhard/lvmpart
      Extending logical volume lvmpart to 2.00 GB
      Logical volume lvmpart successfully resized
    قمنا باضافة 1 قيقا للبارتشن واصبح حجمه 2 قيقا ، تحقق من ذلك باستخدام الامر lvdisplay مره اخرى

    ولتصغير حجم البارتشن /dev/lvmhard/lvmpart نفعل ذلك بالامر lvreduce على النحو التالي
    كود:
    [root@ex4mple ~]# lvreduce -L 1.5G /dev/lvmhard/lvmpart
      WARNING: Reducing active and open logical volume to 1.50 GB
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce lvmpart? [y/n]: y
      Reducing logical volume lvmpart to 1.50 GB
      Logical volume lvmpart successfully resized
    بحيث ان 1.5 قيقا هو الحجم الجديد بدلا من 2 قيقا ، يمكنك التحقق من ذلك باستخدام الامر lvdisplay مره ثالثه
    كود:
    [root@ex4mple ~]# lvdisplay
      --- Logical volume ---
      LV Name                /dev/lvmhard/lvmpart
      VG Name                lvmhard
      LV UUID                34Hqdd-Yqk3-qCnv-U4bm-7WQJ-z8ba-oT2729
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                1.50 GB
      Current LE             384
      Segments               2
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:0
    طبعا عند زيادة الحجم او انقاصها يجب علينا تنفيذ الامر التالي ، حتى تصبح التغيرات مفعله بشكل نهائي بالامر ext2online

    كود:
    ext2online -d /dev/lvmhard/lvmpart
    بعد ذلك تحقق من صحة الحجم ، بالامر df -h

    لاضافة بارتشن جديد للمجموعة :

    نقوم بعمل البارتشن باستخدام الاداة fdisk من نوع 8e ثم نجعله (PV) بالامر pvcreate ، ثم نضيفة للمجموعة بالامر vgextend.

    تبدو العملية طويله ولكنها قصيره بالنظر الى اللون الاحمر فقط من مسلسل الاوامر التالية
    كود:
    [root@ex4mple ~]# fdisk /dev/hda
    
    The number of cylinders for this disk is set to 9729.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
       (e.g., DOS FDISK, OS/2 FDISK)
    
    Command (m for help): n
    First cylinder (5674-9729, default 5674):
    Using default value 5674
    Last cylinder or +size or +sizeM or +sizeK (5674-9729, default 9729): +1GB
    
    Command (m for help): t
    Partition number (1-14): 14
    Hex code (type L to list codes): 8e
    Changed system type of partition 14 to 8e (Linux LVM)
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    [root@ex4mple ~]# init 6 <-- لاعادة تشغيل الجهاز
    [root@ex4mple ~]# pvcreate /dev/hda14
      Physical volume "/dev/hda14" successfully created
    [root@ex4mple ~]# vgextend lvmhard /dev/hda14
      Volume group "lvmhard" successfully extended
    [root@ex4mple ~]#
    كما ترى قمت بانشاء البارتشن وحددت نوعه فأعدت تشغيل الجهاز ثم طبقت عليه الامر pvcreate ثم الامر vgextend على اعتبار ان hda14 هو البارتشن الجديد للمجموعة lvmhard


    لازالة البارتشن من المجموعة نستخدم الامر vgreduce كما يلي
    كود:
    [root@ex4mple ~]# vgreduce lvmhard /dev/hda14
      Removed "/dev/hda14" from volume group "lvmhard"
    [root@ex4mple ~]#


    وسلامتكم ،،،




    بعد فهم السيناريو وقرائته مرتين على الاقل ، وطريقة تطبيق الاوامر ، يمكنك تذكر كل شي بسهولة بعد قراءة السطور التاليه

    لانشاء ( PV ) استخدم الامر pvcreate
    لانشاء ( VG ) استخدم الامر vgcreate
    لانشاء ( LV ) استخدم الامر lvcreate
    لمعرفة معلومات عن ( PV ) اكتب الامر pvdisplay
    لمعرفة معلومات عن ( VG ) اكتب الامر vgdisplay
    لمعرفة معلومات عن ( LV ) اكتب الامر lvdisplay
    لاضافة بارتشن للمجموعه ، نجعله ( PV ) ثم نستخدم الامر vgextend
    لازالة بارتشن من المجموعة ، نستخدم الامر vgreduce
    لزيادة حجم البارتشن ( LV ) استخدم الامر lvextend
    لتصغير حجم البارتشن ( LV ) استخدم الامر lvreduce


    لاعادة التحجيم يمكنك استخدام الامر e2fsadm وطريقته اسهل ، لكنه لم يعمل معي لذا لم أكتب عنه واستخدمت الاوامر المذكورة في الموضوع


    هذا المقال خالص لوجه الله تعالى فللجميع حق التعديل عليه بتحديثه ليكون افضل ، علماً أنه أول مقال عربي يتحدث عن هذه التقنية في أنظمة لينوكس.







  2. #2


    شكرا لك ...

    ====================

    سما التصميم

    Www.SmaDes.Net

    ====================






  3. #3
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    142


    الشكر لله

    هل استفدت فعلاً من المقال ؟










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض