أهلاً بكم. عشية بدء مجموعة الدورة الجديدة
ستنظر هذه المقالة في حالتين لاستبدال الأقراص ونقل المعلومات إلى أقراص جديدة ذات سعة أكبر مع مزيد من التوسع في المصفوفة ونظام الملفات. الحالة الأولى ستتعلق باستبدال الأقراص بنفس تقسيم 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]
من الضروري:
- توسيع القسم 2 على كل من الأقراص،
- توسيع مجموعة MD127،
- توسيع الكهروضوئية (الحجم المادي)،
- قم بتوسيع LV (الحجم المنطقي) vg0-root،
- قم بتوسيع نظام الملفات.
استخدام الأداة المساعدة افترقنا دعونا توسيع القسم /dev/sdc2
إلى القيمة القصوى. نفذ الأمر parted /dev/sdc
(1) واعرض جدول الأقسام الحالي باستخدام الأمر p
(2).
كما ترون، تنتهي نهاية القسم 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 جيجابايت.
زاد حجم 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 أقسام:
- قسم
bios_grub
حجم 2 ميجابايت للتوافق مع GPT BIOS، - قسم مصفوفة RAID الذي سيتم تركيبه فيه
/boot
. - القسم الخاص بمصفوفة 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 على الفور على أقصى مساحة ممكنة على القرص؛ وفي هذه الحالة، ليست هناك حاجة لتوسيع القسم.
من الضروري:
- توسيع مجموعة MD126،
- توسيع الكهروضوئية (الحجم المادي)،
- قم بتوسيع LV (الحجم المنطقي) vg0-root،
- قم بتوسيع نظام الملفات.
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