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

أهلاً بكم. عشية بدء مجموعة الدورة الجديدة "مسؤول Linux" نحن ننشر مواد مفيدة كتبها طلابنا، بالإضافة إلى معلم الدورة التدريبية وأخصائي الدعم الفني لمنتجات شركة REG.RU - رومان ترافين.

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

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

المشكلة: استبدل الأقراص الحالية بأقراص أكبر (تصل إلى 2 تيرابايت) مع إمكانية نقل المعلومات. في هذه الحالة، لدينا قرصين SSD (RAID-2) بسعة 240 × 1 جيجابايت مع النظام المثبت وقرصين 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 جيجابايت، ويتم استخدام مصفوفتين من برامج md2، والتي تم تركيبها في /boot и md127، والذي يستخدم ك الحجم المادي لمجموعة VG 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 (نقطة جبل /boot) - يتكون من قسم /dev/sda1 и /dev/sdb1, md127 (LVM ل مقايضة وجذر نظام الملفات) - يتكون من /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 يدويًا باستخدام قسم biosboot. سيتم مناقشة هذه الحالة في الجزء الثاني من هذه المقالة.

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

Для Debian / Ubuntu:

grub-install /dev/sdX

حيث X - خطاب جهاز الكتلة. في هذه الحالة، تحتاج إلى تثبيت GRUB على /dev/sdc и /dev/sdd.

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

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

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. توسيع الكهروضوئية (الحجم المادي)،
  4. قم بتوسيع LV (الحجم المنطقي) vg0-root،
  5. قم بتوسيع نظام الملفات.

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

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

كما ترون، تنتهي نهاية القسم 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]

تمديد الامتداد الحجم المادي. قبل التوسع، دعونا نتحقق من الحالة الحالية للطاقة الكهروضوئية.

[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   ]

كما يتبين، الكهروضوئية /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   ]

توسيع الحجم المنطقي. قبل التوسيع، دعونا نتحقق من الحالة الحالية للجهد المنخفض (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 جيجابايت.

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

زاد حجم LV (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-2) بسعة 240 × 1 جيجابايت مع النظام المثبت وقرصين 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 حجم 2 ميجابايت للتوافق مع GPT BIOS،
  2. قسم مصفوفة RAID الذي سيتم تركيبه فيه /boot.
  3. القسم الخاص بمصفوفة RAID الذي سيكون موجودًا عليه جذر LV и مبادلة LV.

تثبيت الأداة المساعدة افترقنا الفريق yum install -y parted (لنظام التشغيل CentOS)، apt install -y parted (لدبيان/أوبونتو).

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

نفّذ الأمر parted /dev/sdc وانتقل إلى وضع تحرير تخطيط القرص.

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

(parted) mktable gpt

إنشاء قسم واحد 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

قمنا بإنشاء قسم ثالث، والذي سيتم استخدامه أيضًا ككتلة مصفوفة سيتم وضع 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>

يستخدم النظام صفيفين: md2 (نقطة التثبيت / التمهيد) - يتكون من /dev/sda1 и /dev/sdb1, md127 (LVM ل swap وجذر نظام الملفات) - يتكون من /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 هو bios_grub القسم ولا يشارك في إنشاء المصفوفات. سيتم استخدام المصفوفات فقط /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 لديبيان/أوبونتو:

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 и /dev/sdd.

نقوم بتحديث المعلومات حول المصفوفة.

بالنسبة لنظام التشغيل CentOS:

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

Для Debian / Ubuntu:

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

Для Debian / Ubuntu:

update-initramfs -u -k all

نقوم بتحديث تكوين GRUB.

بالنسبة لنظام التشغيل CentOS:

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

Для Debian / Ubuntu:

update-grub

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

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

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

[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/sdc3 и /dev/sdd3 تشغل 2.7 تيرابايت. منذ أن أنشأنا تخطيطًا جديدًا للقرص باستخدام جدول GPT، تم ضبط حجم القسم 3 على الفور على أقصى مساحة ممكنة على القرص؛ وفي هذه الحالة، ليست هناك حاجة لتوسيع القسم.

من الضروري:

  1. توسيع مجموعة MD126،
  2. توسيع الكهروضوئية (الحجم المادي)،
  3. قم بتوسيع LV (الحجم المنطقي) vg0-root،
  4. قم بتوسيع نظام الملفات.

1. قم بتوسيع المصفوفة 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-root.

بعد توسيع 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 

التحقق من مساحة LV بعد التوسيع.

[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-root 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

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

المصدر: www.habr.com

إضافة تعليق