السلام عليكم ورحمة الله وبركاته
كيف يمكننا زيادة حجم البارتشن عندما نحتاج لذلك ؟ بالعامية لما يصير البارتشن full ومحتاج مساحة زايدة من أي بارتشن آخر ، متى يمكنني الاستفادة من تلك المساحة واضافتها للبارتشن المطلوب ؟
اجابة هذا السؤال سهلة بشرط ان يكون البارتشن مهيأ لذلك ، بمعنى آخر يجب ان يكون البارتشن Logical Volume ويستخدم تقنية LVM لأعادة تحجيمة سواء بزيادة أو نقصان.
سأشرح في هذا الموضوع طريقة عمل هذا النوع من البارتشن ( 8e ) بالاضافة الى طريقة اعادة التحكم واضافة بارتشن جديد وما اليه من أمور تهم المستخدم ، وسيكون السيناريو كما يلي.
سنعمل 4 بارتشنات من نوع ( 8e ) ثم نربطهم جميعا ببارتشن جديد لنتحكم بحجمه كما نريد ، للتوضيح أكثر نقول أن البارتشنات الاربعه تسمى ( PV ) ، بعد ذلك يجب ربط الـ PV's الاربعه في بارتشن واحد يسمى ( VG ) للدلاله على انه يجمع عدة بارتشنات ، واخيرا سنقوم بعمل بارتشن من المساحة المتوفرة في ( VG ) الى بارتشن جديد يسمى ( LV ) وهو محور حديثنا.
تعريف الاختصارات
هذه هي الخطوات فنحن سنقوم بانشاء عدد 4 بارتشن من نوع 8e يمكننا باستخدام الاداة fdisk ومن لا يعرف استخدامها لا انصحه بتطبيق الدرس ، يكتفي بالقراءة معي ، لان انشاء بارتشن جديد يجب ان يكون شي بديهي لمدير النظام ، ويمكنك الحصول على شرح للاداة ممن هنا و هنا ايضاكود:PV = Physical Volume الاربع البارتشنات الحقيقية VG = Volume Group مجموعة تضم تلك البارتشنات وحجمها مجموع الاحجام LV = Logical Volume بارتشن حقيقي يمكننا من اعادة تحجيمة بسهولة
بعد ذلك نقوم بجمع هذه البارتشنات تحت مجموعة واحدة VG ، ثم نستخرج من هذه المجموعة بارتشن جديد نستطيع اعادة تحجيمة ان احتجنا لذلك
ستكون العملية أسهل عندما نتذكر التسمية المختصرة كما كتبتها أنا ، لان جميع الاوامر التي سنستخدمها ستبدأ بنفس التسمية كما سنرى في هذا الموضوع
قبل كل شي ، يجب علينا اضافة المودل المطلوب للكيرنل بالنسبة لردهات ، هذا يعني اضافة مايلي في ملف /etc/modprobe.conf
ثم احفظ الملفكود:alias block-major-58 lvm-mod alias char-major-109 lvm-mod
بعد انشاء البارتشنز المطلوبة وبعد اعادة التشغيل ، ناتج الامر fdisk -l يجب ان يحتوي على مايلي
انظر لنوع البارتشنات لدي من hda10 حتى hda13 هو Linux LVMكود:[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
نجعل هذه البارتشنات ( PV ) كما ذكرنا ، بالامر pvcreate كمايلي
بعد ذلك نجمعها داخل مجموعة ( VG ) كما أسلفت سابقا ، بالامر vgcreateكود:[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]#
لاحظ اسم المجموعة lvmhard كما كتبته انا ويمكنك كتابة أي اسم تريدكود:[root@ex4mple init.d]# vgcreate lvmhard /dev/hda10 /dev/hda11 /dev/hda12 /dev/hda13 Volume group "lvmhard" successfully created [root@ex4mple init.d]#
الان ننشئ البارتشن النهائي ( LV ) بالامر lvcreate على النحو التالي
لاحظ الامر بعد الخيار (L-) قمت بتحديد الحجم 1 قيقاكود:[root@ex4mple init.d]# lvcreate -L 1G -n lvmpart lvmhard Logical volume "lvmpart" created [root@ex4mple init.d]#
وبعد الخيار (n-) قمت بتحديد اسم البارتشن lvmpart ، والمجموعة التي ينتمي اليها lvmhard التي أنشأناها قبل قليل.
هذه هي الصيغه ، ويمكنك تحديد الحجم الذي تريد حسب مجموع الاحجام في البارتشنات الحقيقية ( PV ) لو كان كل واحد فيهم 1 قيقا هذا يعني يمكنك استخدام حتى 4 قيقا لان هذا هو حجم المجموعة بعد ضم البارتشنات لها
الان يصبح مكان البارتشن هنا
على حسب التمسية التي اعطيت ، ولا يحتاج هذا البارتشن الا لفورمات فقط ليصبح نظام الملفات فيه ext3 نكتب الامر التاليكود:/dev/lvmhard/lvmpart
بعد ذلك أعمل mount له كما تعلمنا من هذا الدرسكود:[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]#
نتحقق من عمل البارتشن الجديد بالامر dfكود:[root@ex4mple ~]# mount /dev/lvmhard/lvmpart /root/lvm [root@ex4mple ~]#
يعمل كما يجب مثل مانشوف في السطر الاخيركود:[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
هذا كل ماعلينا فعله لانشاء بارتشن LVM ، وسأشرح الان كيف يمكننا اعادة تحجيمة بالاوامر المناسبةكود:[root@ex4mple ~]# mount -a
ويمكننا رؤية حالة البارتشن وحجمه ومعلومات اخرى من خلال الامر lvdisplay قم بكتابتة وانظر للخانه LV Size
كما ترى ان حجم البارتشن 1 قيقاكود:[root@ex4mple ~]# lvdisplay --- Logical volume --- .... .... LV Size 1.00 GB .... [root@ex4mple ~]#
لزيادة حجم البارتشن lvmpart نفعل ذلك بالامر lvextend كمايلي
قمنا باضافة 1 قيقا للبارتشن واصبح حجمه 2 قيقا ، تحقق من ذلك باستخدام الامر lvdisplay مره اخرىكود:[root@ex4mple ~]# lvextend -L +1G /dev/lvmhard/lvmpart Extending logical volume lvmpart to 2.00 GB Logical volume lvmpart successfully resized
ولتصغير حجم البارتشن /dev/lvmhard/lvmpart نفعل ذلك بالامر lvreduce على النحو التالي
بحيث ان 1.5 قيقا هو الحجم الجديد بدلا من 2 قيقا ، يمكنك التحقق من ذلك باستخدام الامر lvdisplay مره ثالثهكود:[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
طبعا عند زيادة الحجم او انقاصها يجب علينا تنفيذ الامر التالي ، حتى تصبح التغيرات مفعله بشكل نهائي بالامر ext2onlineكود:[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
بعد ذلك تحقق من صحة الحجم ، بالامر df -hكود:ext2online -d /dev/lvmhard/lvmpart
لاضافة بارتشن جديد للمجموعة :
نقوم بعمل البارتشن باستخدام الاداة fdisk من نوع 8e ثم نجعله (PV) بالامر pvcreate ، ثم نضيفة للمجموعة بالامر vgextend.
تبدو العملية طويله ولكنها قصيره بالنظر الى اللون الاحمر فقط من مسلسل الاوامر التالية
كما ترى قمت بانشاء البارتشن وحددت نوعه فأعدت تشغيل الجهاز ثم طبقت عليه الامر pvcreate ثم الامر vgextend على اعتبار ان hda14 هو البارتشن الجديد للمجموعة lvmhardكود:[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 ~]#
لازالة البارتشن من المجموعة نستخدم الامر 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 وطريقته اسهل ، لكنه لم يعمل معي لذا لم أكتب عنه واستخدمت الاوامر المذكورة في الموضوع
هذا المقال خالص لوجه الله تعالى فللجميع حق التعديل عليه بتحديثه ليكون افضل ، علماً أنه أول مقال عربي يتحدث عن هذه التقنية في أنظمة لينوكس.


رد مع اقتباس
