استبدال الأقراص الصغيرة بأقراص أكبر في Linux

مرحبا بالجميع. تحسبا لبدء مجموعة جديدة من دورة Linux Administrator ، فإننا ننشر مواد مفيدة كتبها طالبنا ، وكذلك معلم الدورة ، أخصائي الدعم الفني لمنتجات REG.RU في شركة REG.RU.

في هذه المقالة ، سننظر في حالتين لاستبدال الأقراص ونقل المعلومات إلى أقراص جديدة ذات حجم أكبر مع مزيد من التوسع في الصفيف ونظام الملفات. تتعلق الحالة الأولى باستبدال الأقراص بنفس علامة MBR / MBR أو GPT / GPT ، أما الحالة الثانية فتتعلق باستبدال الأقراص بعلامة MBR على الأقراص بسعة تزيد عن 2 تيرابايت ، والتي ستكون عليها علامة GPT مع قسم biosboot. في كلتا الحالتين ، يتم بالفعل تثبيت الأقراص التي ننقل البيانات إليها على الخادم. نظام الملفات المستخدم للقسم الجذر هو ext4.



الحالة 1: استبدال محركات الأقراص الأصغر بمحركات أقراص أكبر (سعة تصل إلى 2 تيرابايت)


المهمة: استبدل الأقراص الحالية بأقراص أكبر (تصل إلى 2 تيرابايت) بنقل المعلومات. في هذه الحالة ، لدينا أقراص SSD (RAID-1) 2 × 240 جيجا بايت مع النظام المثبت وأقراص SATA 2 × 1 تيرابايت التي تحتاج إلى نقل النظام إليها.

النظر في تخطيط القرص الحالي.

[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sda2 8:2 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk sdd 8:48 0 931,5G 0 disk 

تحقق من مساحة نظام الملفات الحالية المستخدمة.

 [root@localhost ~]# df -h      % C  devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 9,6M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/vg0-root 204G 1,3G 192G 1% / /dev/md126 1007M 120M 837M 13% /boot tmpfs 6,3G 0 6,3G 0% /run/user/0 

حجم نظام الملفات قبل استبدال الأقراص هو 204 جيجا بايت ، يتم استخدام صفيفين md126 للبرامج ، والتي يتم تثبيتها في /boot و md127 ، والتي تستخدم كوحدة تخزين فعلية لمجموعة VG0 vg0 .

1. إزالة أقسام القرص من المصفوفات


تحقق من حالة المصفوفة

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sda1[0] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sda2[0] sdb2[1] 233206784 blocks super 1.2 [2/2] [UU] bitmap: 0/2 pages [0KB], 65536KB chunk unused devices: <none> 

يستخدم النظام md126 : md126 (نقطة تحميل /boot ) - يتكون من md127 /dev/sda1 و /dev/sdb1 ، md127 (LVM md127 وجذر نظام الملفات) - يتكون من /dev/sda2 و /dev/sdb2 .

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

 mdadm /dev/md126 --fail /dev/sda1 mdadm /dev/md127 --fail /dev/sda2 

نحن نزيل أجزاء من كتلة الجهاز / dev / sda من المصفوفات.

 mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2 

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

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk sdd 8:48 0 931,5G 0 disk 

حالة الصفائف بعد إزالة الأقراص.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdb1[1] 1047552 blocks super 1.2 [2/1] [_U] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] bitmap: 1/2 pages [4KB], 65536KB chunk unused devices: <none> 

2. نسخ جدول القسم إلى قرص جديد


يمكنك التحقق من جدول القسم المستخدم على القرص باستخدام الأمر التالي.

 fdisk -l /dev/sdb | grep 'Disk label type' 

سيكون الإخراج MBR:

 Disk label type: dos 

بالنسبة إلى GPT:

 Disk label type: gpt 

نسخ جدول العلامات لـ MBR:

 sfdisk -d /dev/sdb | sfdisk /dev/sdc 

في هذا الأمر ، الأول هو محرك الأقراص الذي يتم نسخ العلامات منه ، والثاني هو مكان النسخ.

تنبيه : بالنسبة إلى GPT ، فإن محرك الأقراص الذي يقوم بنسخ العلامة هو أول من تتم الإشارة إليه ، وهو محرك الأقراص الذي يقوم بنسخ العلامة إليه من محرك الأقراص الثاني . إذا قمت بخلط الأقراص ، فستتم الكتابة فوق العلامات الصحيحة في البداية وتدميرها.

نسخ جدول العلامات لـ GPT:

 sgdisk -R /dev/sd /dev/sdb 

بعد ذلك ، قم بتعيين UUID عشوائي على القرص (لـ GPT).

 sgdisk -G /dev/sdc 

بعد تنفيذ الأمر ، يجب أن تظهر الأقسام على القرص /dev/sdc .

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part └─sdc2 8:34 0 222,5G 0 part sdd 8:48 0 931,5G 0 disk 

إذا لم يتم تعريف الأقسام الموجودة في النظام على القرص /dev/sdc بعد الإجراء المنجز ، فإننا ننفذ الأمر لإعادة قراءة جدول القسم.

 sfdisk -R /dev/sdc 

إذا كانت الأقراص الحالية تستخدم جدول MBR وتحتاج المعلومات إلى نقلها إلى أقراص بسعة تزيد عن 2 تيرابايت ، فستحتاج الأقراص الجديدة إلى إنشاء ترميز GPT يدويًا باستخدام قسم التمهيد الحيوي. سيتم النظر في هذه الحالة في الجزء 2 من هذه المقالة.

3. إضافة أقسام من القرص الجديد إلى الصفيف


إضافة أقسام القرص إلى المصفوفات المقابلة.

 mdadm /dev/md126 --add /dev/sdc1 mdadm /dev/md127 --add /dev/sdc2 

تحقق من أنه تمت إضافة أقسام.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk 

بعد ذلك ، ننتظر تزامن الصفائف.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdc1[2] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdc2[2] sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] [==>..................] recovery = 10.6% (24859136/233206784) finish=29.3min speed=118119K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

يمكنك مراقبة عملية المزامنة باستمرار باستخدام أداة watch .

 watch -n 2 cat /proc/mdstat 

يحدد -n الفترات الزمنية بالثواني التي يجب تشغيل الأمر للتحقق من التقدم.

كرر الخطوات من 1 إلى 3 لمحرك الأقراص البديل التالي.

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

 mdadm /dev/md126 --fail /dev/sdb1 mdadm /dev/md127 --fail /dev/sdb2 

نحن نزيل أقسام كتلة الجهاز /dev/sdb من المصفوفات.

 mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2 

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

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk 

حالة الصفائف بعد إزالة الأقراص.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdc1[2] 1047552 blocks super 1.2 [2/1] [U_] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdc2[2] 233206784 blocks super 1.2 [2/1] [U_] bitmap: 1/2 pages [4KB], 65536KB chunk unused devices: <none> 

انسخ جدول ترميز MBR من محرك الأقراص /dev/sd إلى محرك الأقراص /dev/sdd .

 sfdisk -d /dev/sd | sfdisk /dev/sdd 

بعد تنفيذ الأمر ، يجب أن تظهر الأقسام على محرك الأقراص /dev/sdd .

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part └─sdd2 8:50 0 222,5G 0 part 

إضافة أقسام القرص إلى المصفوفات.

 mdadm /dev/md126 --add /dev/sdd1 mdadm /dev/md127 --add /dev/sdd2 

تحقق من أنه تمت إضافة أقسام.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

بعد ذلك ، ننتظر تزامن الصفائف.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdd1[3] sdc1[2] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdd2[3] sdc2[2] 233206784 blocks super 1.2 [2/1] [U_] [>....................] recovery = 0.5% (1200000/233206784) finish=35.4min speed=109090K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

5. تثبيت GRUB على محركات أقراص جديدة


بالنسبة إلى CentOS:

 grub2-install /dev/sdX 

بالنسبة إلى دبيان / أوبونتو:

 grub-install /dev/sdX 

حيث X هو حرف جهاز الكتلة. في هذه الحالة ، قم بتثبيت GRUB على /dev/sdc و /dev/sdd .

6. تمديد نظام الملفات (ext4) من قسم الجذر


تتوفر 931.5 جيجابايت على محركات الأقراص الجديدة /dev/sdc و /dev/sdd . نظرًا لنسخ جدول الأقسام من الأقراص الأصغر حجمًا ، يتوفر 222.5 جيجابايت على /dev/sdc2 و /dev/sdd2 .

 sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

من الضروري:

  1. تمديد القسم 2 على كل محرك ،
  2. تمديد مجموعة md127 ،
  3. توسيع PV (الحجم الفعلي) ،
  4. تمديد LV (حجم منطقي) vg0 الجذر ،
  5. تمديد نظام الملفات.

باستخدام الأداة المساعدة /dev/sdc2 ، قم بتوسيع القسم /dev/sdc2 إلى الحد الأقصى للقيمة. parted /dev/sdc (1) وعرض جدول القسم الحالي باستخدام الأمر p (2).



كما ترون ، ينتهي القسم الثاني بـ 240 جيجابايت. لنقم بتوسيع القسم باستخدام الأمر resizepart 2 ، حيث 2 هو رقم القسم (3). نشير إلى القيمة بالتنسيق الرقمي ، على سبيل المثال 1000 جيجابايت ، أو نستخدم إشارة مشاركة القرص - 100٪. مرة أخرى ، نتحقق من أن القسم له حجم جديد (4).

كرر الخطوات المذكورة أعلاه لمحرك الأقراص /dev/sdd . بعد توسيع الأقسام ، أصبح /dev/sdc2 و /dev/sdd2 مساويا 930.5 جيجابايت.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 930,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 930,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

بعد ذلك ، نقوم بتوسيع مجموعة md127 إلى الحد الأقصى.

 mdadm --grow /dev/md127 --size=max 

تحقق من توسيع الصفيف. الآن أصبح حجمها 930.4 جيجابايت.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 930,5G 0 part └─md127 9:127 0 930,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 930,5G 0 part └─md127 9:127 0 930,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

نحن أداء التوسع في الحجم المادي . قبل التوسع ، تحقق من الحالة الحالية لل PV.

 [root@localhost ~]# pvscan PV /dev/md127 VG vg0 lvm2 [222,40 GiB / 0 free] Total: 1 [222,40 GiB] / in use: 1 [222,40 GiB] / in no VG: 0 [0 ] 

كما ترون ، PV /dev/md127 يستخدم 222.4 غيغابايت من المساحة.

قم بتوسيع PV باستخدام الأمر التالي.

 pvresize /dev/md127 

تحقق نتيجة التمديد الكهروضوئية.

[
 root@localhost ~]# pvscan PV /dev/md127 VG vg0 lvm2 [930,38 GiB / 707,98 GiB free] Total: 1 [930,38 GiB] / in use: 1 [930,38 GiB] / in no VG: 0 [0 ] 

توسيع حجم المنطقي . قبل التمديد ، تحقق من الحالة الحالية لل LV (1).

 [root@localhost ~]# lvscan ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit ACTIVE '/dev/vg0/root' [<206,41 GiB] inherit 

LV /dev/vg0/root يستخدم 206.41 جيجابايت.

نحن نوسع LV مع الأمر التالي (2).

 lvextend -l +100%FREE /dev/mapper/vg0-root 


تحقق من العمل المنجز (3).

 [root@localhost ~]# lvscan ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit 

كما ترون ، بعد توسيع LV ، أصبح حجم مساحة القرص المحتلة 914.39 جيجابايت.



زاد حجم وحدة التخزين ذات الجهد المنخفض (4) ، لكن نظام الملفات لا يزال يشغل 204 جيجابايت (5).

1. تنفيذ ملحق نظام الملفات.

 resize2fs /dev/mapper/vg0-root 

نتحقق بعد الأمر المنفذ من حجم نظام الملفات.

 [root@localhost ~]# df -h      % C  devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 9,5M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/vg0-root 900G 1,3G 860G 1% / /dev/md126 1007M 120M 837M 13% /boot tmpfs 6,3G 0 6,3G 0% /run/user/0 

سيزداد حجم نظام الملفات الجذرية إلى 900 جيجابايت. بعد الانتهاء من الخطوات ، يمكنك إزالة الأقراص القديمة.

الحالة 2: استبدال محركات أصغر مع محركات أقراص أكبر (أكثر من 2 تيرابايت)


المهمة: استبدل الأقراص الحالية بأقراص أكبر (2 × 3 تيرابايت) بحفظ المعلومات. في هذه الحالة ، لدينا أقراص SSD (RAID-1) بحجم 2 × 240 جيجا بايت مع النظام المثبت وأقراص SATA 2 × 3 تيرابايت التي تحتاج إلى نقل النظام عليها. تستخدم محركات الأقراص الحالية جدول قسم MBR. نظرًا لأن الأقراص الجديدة لديها سعة تزيد عن 2 تيرابايت ، فسوف تحتاج إلى استخدام جدول GPT ، نظرًا لأن MBR لا يمكنها العمل مع أقراص أكبر من 2 تيرابايت.

عرض تخطيط القرص الحالي.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sda2 8:2 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 2,7T 0 disk sdd 8:48 0 2,7T 0 disk 

تحقق من جدول القسم المستخدم على محرك الأقراص /dev/sda .

 [root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type' Disk label type: dos 

يستخدم محرك الأقراص /dev/sdb جدول قسم مماثل. تحقق من مساحة القرص المستخدمة في النظام.

 [root@localhost ~]# df -h      % C  devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 9,5M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/vg0-root 204G 1,3G 192G 1% / /dev/md126 1007M 120M 837M 13% /boot tmpfs 3,2G 0 3,2G 0% /run/user/0 

كما ترون ، فإن جذر نظام الملفات هو 204 جيجابايت. تحقق من الحالة الحالية للبرنامج RAID.

1. تثبيت جدول تقسيم GPT وتقسيم القرص


تحقق تخطيط القرص حسب القطاع.

 [root@localhost ~]# parted /dev/sda print : ATA KINGSTON SVP200S (scsi)  /dev/sda: 240GB   (./.): 512B/512B  : msdos Disk Flags:         1 1049kB 1076MB 1075MB primary , raid 2 1076MB 240GB 239GB primary raid 

على محرك الأقراص الجديد 3 تيرابايت ، سنحتاج إلى إنشاء 3 أقسام:

  1. قسم bios_grub للتوافق مع GPT مع BIOS ،
  2. القسم لصفيف RAID ليتم تحميله في /boot .
  3. القسم الخاص بمصفوفة RAID والتي سيتم تبديل LV root و LV عليها .

قم بتثبيت الأداة المساعدة المفصولة باستخدام الأمر yum install -y parted (لـ CentOS) ، apt install -y parted (لـ Debian / Ubuntu).

باستخدام مفصولة ، قم بتنفيذ الأوامر التالية لتقسيم القرص.

parted /dev/sdc إلى وضع تحرير تخطيط القرص.

إنشاء جدول قسم GPT.

 (parted) mktable gpt 

إنشاء قسم 1 قسم bios_grub وتعيين علامة لذلك.

 (parted) mkpart primary 1MiB 3MiB (parted) set 1 bios_grub on 

إنشاء قسم 2 وتعيين علامة لذلك. سيستخدم القسم ككتلة لصفيف RAID ويقوم بتثبيته في /boot .

 (parted) mkpart primary ext2 3MiB 1028MiB (parted) set 2 boot on 

نقوم بإنشاء قسم 3 ، والذي سيتم استخدامه أيضًا ككتلة صفيف سيكون فيها LVM.

 (parted) mkpart primary 1028MiB 100% 

في هذه الحالة ، ليس من الضروري تعيين العلامة ، ولكن إذا لزم الأمر ، فمن الممكن تعيينها باستخدام الأمر التالي.

 (parted) set 3 raid on 

تحقق من الجدول الذي تم إنشاؤه.

 (parted) p : ATA TOSHIBA DT01ACA3 (scsi)  /dev/sdc: 3001GB   (./.): 512B/4096B  : gpt Disk Flags:         1 1049kB 3146kB 2097kB primary bios_grub 2 3146kB 1077MB 1074MB primary  3 1077MB 3001GB 3000GB primary 

عيّن محرك الأقراص GUID عشوائيًا جديدًا.

 sgdisk -G /dev/sdd 

2. إزالة أجزاء من القرص الأول من المصفوفات


تحقق من حالة المصفوفة

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sda1[0] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sda2[0] sdb2[1] 233206784 blocks super 1.2 [2/2] [UU] bitmap: 0/2 pages [0KB], 65536KB chunk unused devices: <none> 

يستخدم النظام صفيفتين: md126 (نقطة تحميل / تمهيد) - يتكون من /dev/sda1 و /dev/sdb1 ، md127 (LVM md127 وجذر نظام الملفات) - يتكون من /dev/sda2 و /dev/sdb2 .

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

 mdadm /dev/md126 --fail /dev/sda1 mdadm /dev/md127 --fail /dev/sda2 

نحن نزيل أجزاء من كتلة الجهاز /dev/sda من المصفوفات.

 mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2 

تحقق من حالة الصفيف بعد إزالة القرص.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdb1[1] 1047552 blocks super 1.2 [2/1] [_U] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

3. إضافة أقسام من القرص الجديد إلى الصفيف


الخطوة التالية هي إضافة أقسام القرص الجديد إلى المصفوفات للمزامنة. نحن ننظر إلى الوضع الحالي لتخطيط القرص.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part └─sdc3 8:35 0 2,7T 0 part sdd 8:48 0 2,7T 0 disk 

القسم /dev/sdc1 هو /dev/sdc1 bios_grub ولا يشارك في إنشاء المصفوفات. لن تستخدم /dev/sdc2 سوى /dev/sdc2 و /dev/sdc3 . أضف هذه المقاطع إلى المصفوفات المقابلة.

 mdadm /dev/md126 --add /dev/sdc2 mdadm /dev/md127 --add /dev/sdc3 

ثم ننتظر تزامن الصفيف.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdc2[2] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdc3[2] sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] [>....................] recovery = 0.2% (619904/233206784) finish=31.2min speed=123980K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

تقسيم الأقراص بعد إضافة أقسام إلى صفيف.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk 

4. إزالة أجزاء من القرص الثاني من المصفوفات


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

 mdadm /dev/md126 --fail /dev/sdb1 mdadm /dev/md127 --fail /dev/sdb2 

نحن نزيل أجزاء من كتلة الجهاز /dev/sda من المصفوفات.

 mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2 

5. انسخ جدول ترميز GPT ومزامنة الصفيف


لنسخ جدول ترميز GPT ، نستخدم الأداة المساعدة sgdisk ، والتي يتم تضمينها في الحزمة للعمل مع أقسام القرص وجدول GPT - gdisk .

تثبيت gdisk لنظام CentOS:

 yum install -y gdisk 

تثبيت gdisk لـ Debian / Ubuntu:

 apt install -y gdisk 

تنبيه : بالنسبة إلى GPT ، يتم أولاً الإشارة إلى القرص الذي يتم نسخ العلامات إليه ، والثاني هو القرص الذي يتم نسخ العلامات منه. إذا قمت بخلط الأقراص ، فستتم الكتابة فوق العلامات الصحيحة في البداية وتدميرها.

انسخ جدول علامات GPT.

 sgdisk -R /dev/sdd /dev/sdc 

تقسيم الأقراص بعد نقل جدول إلى محرك الأقراص /dev/sdd .

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part └─sdd3 8:51 0 2,7T 0 part 

بعد ذلك ، نضيف كل قسم من الأقسام المشاركة في صفيفات RAID الخاصة بالبرنامج.

 mdadm /dev/md126 --add /dev/sdd2 mdadm /dev/md127 --add /dev/sdd3 

نحن في انتظار تزامن الصفيف.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdd2[3] sdc2[2] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 1/1 pages [4KB], 65536KB chunk md127 : active raid1 sdd3[3] sdc3[2] 233206784 blocks super 1.2 [2/1] [U_] [>....................] recovery = 0.0% (148224/233206784) finish=26.2min speed=148224K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

بعد نسخ علامة GPT إلى قرص جديد ثانٍ ، ستبدو العلامات هكذا.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd3 8:51 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

بعد ذلك ، قم بتثبيت GRUB على محركات الأقراص الجديدة.

التثبيت ل CentOS:

 grub2-install /dev/sdX 

التثبيت لديبيان / أوبونتو:

 grub-install /dev/sdX 

حيث X هي حرف محرك الأقراص ، وفي حالتنا ، فإن /dev/sdc drives /dev/sdc و /dev/sdd .

تحديث المعلومات حول الصفيف.

بالنسبة إلى CentOS:

 mdadm --detail --scan --verbose > /etc/mdadm.conf 

بالنسبة إلى دبيان / أوبونتو:

 echo "DEVICE partitions" > /etc/mdadm/mdadm.conf mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf 

تحديث الصورة initrd :
بالنسبة إلى CentOS:

 dracut -f -v --regenerate-all 

بالنسبة إلى دبيان / أوبونتو:

 update-initramfs -u -k all 

تحديث التكوين GRUB.

بالنسبة إلى CentOS:

 grub2-mkconfig -o /boot/grub2/grub.cfg 

بالنسبة إلى دبيان / أوبونتو:

 update-grub 

بعد الخطوات المكتملة ، يمكن إزالة الأقراص القديمة.

6. تمديد نظام الملفات (ext4) من قسم الجذر


تقسيم الأقراص قبل توسيع نظام الملفات بعد نقل النظام إلى 2 × 3 تيرابايت (RAID-1) الأقراص.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk sdb 8:16 0 223,6G 0 disk sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md126 9:126 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdd3 8:51 0 2,7T 0 part └─md126 9:126 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

تحتل /dev/sdd3 /dev/sdc3 و /dev/sdd3 2.7 تيرابايت. منذ أن أنشأنا تقسيمًا جديدًا للأقراص مع جدول GPT ، تم تعيين حجم الأقسام الثلاثة على الفور إلى الحد الأقصى لمساحة القرص الممكنة ، وفي هذه الحالة ، لا يلزم توسيع القسم.

من الضروري:

  1. تمديد مجموعة md126 ،
  2. توسيع PV (الحجم الفعلي) ،
  3. تمديد LV (حجم منطقي) vg0 الجذر ،
  4. تمديد نظام الملفات.

1. md126 مجموعة md126 إلى الحد الأقصى.

 mdadm --grow /dev/md126 --size=max 

بعد توسيع مجموعة md126 حجم المساحة المشغولة إلى 2.7 تيرابايت.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk sdb 8:16 0 223,6G 0 disk sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md126 9:126 0 2,7T 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdd3 8:51 0 2,7T 0 part └─md126 9:126 0 2,7T 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

توسيع حجم المادية .

قبل التوسع ، نتحقق من القيمة الحالية للفضاء PV / dev/md126.

 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/md126 vg0 lvm2 a-- 222,40g 0 

قم بتوسيع PV باستخدام الأمر التالي.

 pvresize /dev/md126 

تحقق من العمل المنجز.

 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/md126 vg0 lvm2 a-- <2,73t 2,51t 

توسيع الطبقة حجم منطقي vg0 الجذر .

بعد توسيع PV ، نتحقق من المساحة المشغولة لـ VG.

 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 2 0 wz--n- <2,73t 2,51t 

تحقق من المساحة التي تشغلها LV.

 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- <206,41g swap vg0 -wi-ao---- <16,00g 

حجم الجذر vg0 يستغرق 206.41 غيغابايت.

توسيع LV إلى أقصى مساحة القرص.

 lvextend -l +100%FREE /dev/mapper/vg0-root 

التحقق من مساحة الجهد المنخفض بعد التوسع.

 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- 2,71t swap vg0 -wi-ao---- <16,00g 

تمديد نظام الملفات (ext4).

تحقق من حجم نظام الملفات الحالي.

 [root@localhost ~]# df -h      % C  devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 9,6M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/vg0-root 204G 1,4G 192G 1% / /dev/md127 1007M 141M 816M 15% /boot tmpfs 3,2G 0 3,2G 0% /run/user/0 

حجم / dev / mapper / vg0- الجذر يستغرق 204 غيغابايت بعد ملحق LV.

توسيع نظام الملفات.

 resize2fs /dev/mapper/vg0-root 

تحقق من حجم نظام الملفات بعد توسيعه.

 [root@localhost ~]# df -h      % C  devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 9,6M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/vg0-root 2,7T 1,4G 2,6T 1% / /dev/md127 1007M 141M 816M 15% /boot tmpfs 3,2G 0 3,2G 0% /run/user/0 

يتم زيادة حجم نظام الملفات من خلال وحدة التخزين بأكملها.

Source: https://habr.com/ru/post/ar486084/


All Articles