Linux-da daha kiçik diskləri daha böyük disklerle dəyişdirmə

Hər kəsə salam. Yeni kurs qrupunun başlanğıcı ərəfəsində «Linux Administratoru» bir faydalı materialı istifadəyə veririk, onu tələbəmiz, kurslarımızdakı mentor və REG.RU korporativ məhsullarının texniki dəstək mütəxəssisi — Roman Traviyn tərəfindən yazılıb.

Bu məqalədə iki disk dəyişmə və daha böyük tutuma malik yeni disklərə məlumat ötürmə hallarını nəzərdən keçirəcəyik, bununla yanaşı arraya və fayl sisteminə genişləndirmək. Birinci hal MBR/MBR və ya GPT/GPT eyniadlı bölmə ilə disk dəyişməsi ilə bağlı olacaq, ikinci hal isə MBR bölməsi olan diskləri 2 TB-dan çox tutuma malik disklərlə dəyişməyə aiddir, burada BIOS boot bölməsi ilə GPT bölməsi qurulmalıdır. Hər iki halda məlumatların köçürüləcəyi disklər artıq server. İstifadə olunan fayl sistemi — ext4.

Hal 1: Kiçik tutumlu disklərin daha böyük tutumlu disklərlə (2 TB-a qədər) dəyişdirilməsi

Tapşırıq: Mövcud diskləri daha böyük tutumlu (2 TB-a qədər) disklərlə dəyişdirmək, məlumatların köçürülməsi ilə. Bu halda 2 x 240 GB SSD (RAID-1) ilə quraşdırılmış sistemimiz var və məlumatları köçürməli olduğumuz 2 x 1 TB SATA disklər var.

Mövcud disk bölməsini nəzərdən keçirək.

[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  

Mövcud anda fayl sisteminin istifadə olunan sahəsini yoxlayaq.

[root@localhost ~]# df -h
Fayl sistemi        Ölçü İstifadə olunan  Qalıq İstifadə olunan% Montajda
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

Disklərin dəyişdirilməsindən əvvəl fayl sisteminin ölçüsü 204 GB təşkil edir, 2 proqramlı array md126 aktivdir, bu isə /bootmd127, bu isə fiziki həcim üçün VG qrupunun vg0.

1. Disk bölmələrinin arraylardan silinməsi

Arrayın vəziyyətini yoxlayaq

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

Sistemdə 2 array istifadə olunur: md126 (montaj nöqtəsi /boot) — bölmədən ibarətdir /dev/sda1/dev/sdb1, md127 (LVM üçün swap və fayl sisteminin kök həcmi) — ibarətdir /dev/sda2/dev/sdb2.

Birinci diskin arrayda iştirak edən bölmələrini uğursuz kimi işarələyirik.

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

В данной команде первым указывается диск c которого копируется разметка, вторым — куда копировать.

ВНИМАНИЕ: Для 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 TB, то на новых дисках потребуется вручную создавать разметку GPT с использованием раздела biosboot. Данный случай будет рассмотрен во 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  

Sonra, arraylərin sinxronizasiyasını gözləyirik.

[root@localhost ~]# cat \/proc\/mdstat 
Personalities : [raid1] 
md126 : aktiv raid1 sdc1[2] sdb1[1]
      1047552 blocks super 1.2 [2\/2] [UU]
      bitmap: 0\/1 pages [0KB], 65536KB chunk

md127 : aktiv 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:

Sinxronizasiya prosesini davamlı izləmək üçün, proqramdan istifadə edə bilərsiniz watch.

watch -n 2 cat \/proc\/mdstat

Parametr -n bu, müəyyən edilmiş saniyə aralığında irəliləməyi yoxlamaq üçün əmri icra etməyə imkan tanıyır.

1-3-cü maddələri növbəti dəyişdiriləcək disk üçün təkrarlayırıq.

İkinci diskin hər varaqda istifadə olunan hissələrini uğursuz olaraq qeyd edirik.

mdadm \/dev\/md126 --fail \/dev\/sdb1

mdadm \/dev\/md127 --fail \/dev\/sdb2

Blok cihazının hissələrini /dev/sdb arraylardan silirik.

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 : aktiv raid1 sdc1[2]
      1047552 blocks super 1.2 [2\/1] [U_]
      bitmap: 0\/1 pages [0KB], 65536KB chunk

md127 : aktiv raid1 sdc2[2]
      233206784 blocks super 1.2 [2\/1] [U_]
      bitmap: 1\/2 pages [4KB], 65536KB chunk

unused devices:

MBR bölməsinin cədvəlini disklə /dev/sdс diskə köçürürük /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  

Diskin bölmələrini arraylara əlavə edirik.

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]

Sonra, arraylərin sinxronizasiyasını gözləyirik.

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

5. GRUB'ın yeni disklere kurulması

CentOS için:

grub2-install /dev/sdX

Debian/Ubuntu için:

grub-install /dev/sdX

burada X — blok cihazının harfidir. Bu durumda GRUB'ı kurmak gerekir /dev/sdc/dev/sdd.

6. Yeni disklerde kök bölümünün dosya sisteminin genişletilmesi

Yeni disklerde /dev/sdc/dev/sdd 931.5 GB mevcuttur. Bölüm tablosu daha az kapasiteli disklerden kopyalandığından, bölümlerde /dev/sdc2/dev/sdd2 222.5 GB mevcuttur.

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]

Gerekli:

  1. Her diskte 2. bölümü genişletmek,
  2. md127 dizisini genişletmek,
  3. PV'yi (fiziksel hacim) genişletmek,
  4. vg0-root'u (mantıksal hacim) genişletmek,
  5. dosya sistemini genişletmek.

Kullanarak parted bölümü /dev/sdc2 maksimum değere genişletelim. Aşağıdaki komutu çalıştırıyoruz: parted /dev/sdc (1) ve mevcut bölüm tablosunu görmek için: p (2).

Linux-da daha kiçik diskləri daha böyük disklerle dəyişdirmə

Görüldüğü gibi, 2. bölümün sonu 240 GB'de bitiyor. Bölümü genişletmek için şu komutu çalıştırıyoruz: resizepart 2, burada 2 — bölüm numarasıdır (3). Sayısal formatta bir değer belirtiyoruz, örneğin 1000 GB veya disk yüzdesi kullanabiliriz — 100%. Tekrar kontrol edelim ki bölüm yeni boyuta sahip (4).

Yukarıda belirtilen işlemleri /dev/sddiçin tekrar ediyoruz. Bölümlerin genişletilmesinden sonra /dev/sdc2/dev/sdd2 930.5 GB eşit oldu.

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

Daha sonra dizi genişletme işlemini gerçekleştiriyoruz md127 maksimum boyuta kadar.

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

Dizi genişlediğini kontrol ediyoruz. Şimdi boyutu 930.4 GB oldu.

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

Genişletme işlemini gerçekleştiriyoruz fiziki həcim. Genişletme öncesi mevcut PV durumunu kontrol edelim.

[root@localhost ~]# pvscan
  PV /dev/md127   VG vg0             lvm2 [222.40 GiB / 0    free]
  Toplam: 1 [222.40 GiB] / kullanılan: 1 [222.40 GiB] / no VG: 0 [0   ]

Görüldüğü gibi, PV /dev/md127 222.4 GB alan kullanıyor.

PV'yi aşağıdaki komutla genişletiyoruz.

pvresize /dev/md127

PV genişletme sonucunu kontrol ediyoruz.

[

root@localhost ~]# pvscan
  PV /dev/md127   VG vg0             lvm2 [930.38 GiB / 707.98 GiB free]
  Toplam: 1 [930.38 GiB] / kullanılan: 1 [930.38 GiB] / no VG: 0 [0   ]

Genişletiyoruz mantıksal birimi. Genişletme öncesi mevcut LV durumunu kontrol edelim (1).

[root@localhost ~]# lvscan
  AKTİF            ' /dev/vg0/swap' [<16.00 GiB] inherit
  AKTİF            ' /dev/vg0/root' [<206.41 GiB] inherit

LV /dev/vg0/root 206.41 GB kullanıyor.

LV'yi aşağıdaki komutla genişletiyoruz (2).

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

Gerçekleştirdiğimiz işlemin sonucunu kontrol ediyoruz (3).

[root@localhost ~]# lvscan 
  AKTİF            ' /dev/vg0/swap' [<16.00 GiB] inherit
  AKTİF            ' /dev/vg0/root' [<914.39 GiB] inherit

Görüldüğü üzere, LV genişlettikten sonra alanın kapladığı disk boyutu 914.39 GB oldu.

Linux-da daha kiçik diskləri daha böyük disklerle dəyişdirmə

LV boyutu arttı (4), ancak dosya sistemi halen 204 GB kaplıyor (5).

1. Dosya sistemini genişletelim.

resize2fs /dev/mapper/vg0-root

Genişletme komutundan sonra dosya sisteminin boyutunu kontrol ediyoruz.

[root@localhost ~]# df -h
Dosya sistemi     Boyut Kullanılan  Boş Kullanılan% Montaj noktasında
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

Kök dosya sisteminin boyutu 900 GB'a yükselecek. Yapılan işlemlerden sonra eski diskler çıkarılabilir.

Durum 2: Daha küçük disklerin daha büyük disklerle (2TB'den fazla) değiştirilmesi

Görev: Mevcut diskleri bilgi kaybı olmadan daha büyük disklerle (2 x 3TB) değiştirmek. Bu durumda, 2 x 240 GB SSD (RAID-1) ile kurulu sistemin bulunduğu diskler ve sistemi taşıyacağımız 2 x 3 TB SATA diskleri bulunmaktadır. Mevcut disklerde MBR bölümleme tablosu kullanılmaktadır. Yeni diskler 2 TB'den büyük olduğu için, bunlarda GPT bölümleme tablosu kullanılacaktır, çünkü MBR 2 TB'den büyük disklerle çalışamaz.

Mevcut disk düzenini inceleyelim.

[root@localhost ~]# lsblk
İsim           MAJ:MIN RM   BOYUT RO TİP  MONTAJ NOKTASI
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 bölüm  
│ └─md126        9:126  0  1023M  0 raid1 \/boot
└─sda2           8:2    0 222,5G  0 bölüm  
  └─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 bölüm  
│ └─md126        9:126  0  1023M  0 raid1 \/boot
└─sdb2           8:18   0 222,5G  0 bölüm  
  └─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  

Diskte kullanılan bölümleme tablosunu kontrol edelim. /dev/sda.

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

Diskte /dev/sdb aynı bölümleme tablosu kullanılıyor. Sistemde kullanılan disk alanını kontrol edelim.

[root@localhost ~]# df -h
Dosya sistemi     Boyut Kullanılan  Boş Kullanılan% Montaj noktasında
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

Görüldüğü gibi, dosya sisteminin kökü 204 GB yer kaplıyor. Mevcut yazılım RAID dizisinin durumunu kontrol edelim.

1. GPT bölümleme tablosunun kurulumu ve diskin düzenlenmesi

Disklerin sektörler halinde düzenini kontrol edelim.

[root@localhost ~]# parted \/dev\/sda print
Model: ATA KINGSTON SVP200S (scsi)
Disk \/dev\/sda: 240GB
Sektör boyutu (mantıksal/fiziksel): 512B/512B
Bölümleme tablosu: msdos
Disk Bayrakları: 

Numara  Başlangıç  Bitiş   Boyut  Tür      Dosya sistemi  Bayraklar
 1     1049kB  1076MB  1075MB  birincil                    önyükleme, raid
 2     1076MB  240GB   239GB   birincil                    raid

Yeni 3TB disk üzerinde 3 bölüm oluşturmamız gerekecek:

  1. Bölüm bios_grub GPT ile BIOS arasında uyumluluk için 2MiB boyutunda,
  2. RAID dizisi için, monte edilecek bölüm /boot.
  3. RAID massivi üçün bölmə, üstündə olacaq LV rootLV swap.

Alətimizi quraşdırırıq parted əmri ilə yum install -y parted (CentOS üçün), apt install -y parted (Debian/Ubuntu).

İstifadə edərək parted diskin bölmələnməsi üçün aşağıdakı əmrləri yerinə yetirəcəyik.

Komandanı icra edirik parted /dev/sdc və disk bölmələrinin redaktə rejiminə keçirik.

GPT bölmə cədvəli yaradırıq.

(parted) mktable gpt

1 bölmə yaradırıq bios_grub bölmə və ona ştamplar quraşdırırıq.

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

2-ci bölməni yaradırıq və ona ştamplar quraşdırırıq. Bu bölmə RAID massivi üçün blok kimi istifadə olunacaq və bunun daxilində montaj ediləcək /boot.

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

3-cü bölmə yaradırıq ki, bu da blok massivi üçün istifadə olunacaq, burada LVM olacaq.

(parted) mkpart primary 1028MiB 100% 

Bu halda ştampları quraşdırmaq mütləq deyil, amma əgər ehtiyac varsa, onu aşağıdakı əmr ilə quraşdıra bilərsiniz.

(parted) set 3 raid on

Yaradılan cədvəli yoxlayırıq.

(parted) p                                                                
Model: ATA TOSHIBA DT01ACA3 (scsi)
Disk /dev/sdc: 3001GB
Sektorun ölçüsü (lojiq./fiziki): 512B/4096B
Bölmə cədvəli: gpt
Disk Ştampları: 

Nömrə  Başlanğıc  Son  Ölçü  Fayl sistemi  Ad  Ştamplar
 1     1049kB  3146kB  2097kB                    primary  bios_grub
 2     3146kB  1077MB  1074MB                    primary  yüklənə bilən
 3     1077MB  3001GB  3000GB                    primary

Diskə yeni təsadüfi GUID təyin edirik.

sgdisk -G /dev/sdd

2. Birinci diskdə bölmələri massivlərdən çıxarmaq

Arrayın vəziyyətini yoxlayaq

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

Sistem 2 massivdən istifadə edir: md126 (/boot montaj nöqtəsi) — bu, aşağıdakılardan ibarətdir /dev/sda1/dev/sdb1, md127 (LVM üçün swap və fayl sisteminin kök həcmi) — ibarətdir /dev/sda2/dev/sdb2.

Birinci diskin arrayda iştirak edən bölmələrini uğursuz kimi işarələyirik.

mdadm \/dev\/md126 --fail \/dev\/sda1

mdadm \/dev\/md127 --fail \/dev\/sda2

Blok cihazının hissələrini /dev/sda arraylardan silirik.

mdadm /dev/md126 --remove /dev/sda1

mdadm /dev/md127 --remove /dev/sda2

Disk çıxarıldıqdan sonra massivin vəziyyətini yoxlayırıq.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : aktiv raid1 sdb1[1]
      1047552 blok super 1.2 [2/1] [_U]
      bitmap: 0/1 səhifə [0KB], 65536KB parça

md127 : aktiv raid1 sdb2[1]
      233206784 blok super 1.2 [2/1] [_U]
      bitmap: 2/2 səhifə [8KB], 65536KB parça

istifadə edilən cihazlar:

3. Добавление разделов нового диска в массив

Sonrakı addım yeni diskin bölmələrinin massivlərə əlavə edilməsidir. Disk bölmələrinin cari vəziyyətinə baxırıq.

[root@localhost ~]# lsblk
AD           MAJ:MIN RM   ÖLÇÜ RO NÖV  MONTAJ NÖQTƏSİ
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 bölmə  
└─sda2           8:2    0 222,5G  0 bölmə  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 bölmə  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 bölmə  
  └─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 bölmə  
├─sdc2           8:34   0     1G  0 bölmə  
└─sdc3           8:35   0   2,7T  0 bölmə  
sdd              8:48   0   2,7T  0 disk  

Bölüm /dev/sdc1 budur bios_grub bölmədir və massivlərin yaradılmasında iştirak etmir. Massivlərdə yalnız istifadə olunacaq /dev/sdc2/dev/sdc3. Bu bölmələri uyğun massivlərə əlavə edirik.

mdadm /dev/md126 --add /dev/sdc2

mdadm /dev/md127 --add /dev/sdc3

Sonra massivin sinxronizasiyasını gözləyirik.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : aktiv raid1 sdc2[2] sdb1[1]
      1047552 blok super 1.2 [2/2] [UU]
      bitmap: 0/1 səhifə [0KB], 65536KB parça

md127 : aktiv raid1 sdc3[2] sdb2[1]
      233206784 blok super 1.2 [2/1] [_U]
      [>....................]  bərpa =  0.2% (619904/233206784) bitir=31.2dək dəqiqə sürət=123980K/dəqiqə
      bitmap: 2/2 səhifə [8KB], 65536KB parça
istifadə edilən cihazlar:

Yenidən disk bölmələrinin massivə əlavə olunmasından sonra.

[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. İkinci diskdən massivlərdən bölmələri silmək

İkinci diskin hər varaqda istifadə olunan hissələrini uğursuz olaraq qeyd edirik.

mdadm \/dev\/md126 --fail \/dev\/sdb1

mdadm \/dev\/md127 --fail \/dev\/sdb2

Blok cihazının hissələrini /dev/sda arraylardan silirik.

mdadm \/dev\/md126 --remove \/dev\/sdb1

mdadm \/dev\/md127 --remove \/dev\/sdb2

5. GPT təsvir cədvəlini köçürürük və massivləri sinxronlaşdırırıq

GPT təsvir cədvəlini köçürmək üçün sgdisk, disk bölmələri və GPT cədvəlində işləmək üçün paketə daxil olan bir vasitədir — gdisk.

Quraşdırma gdisk CentOS üçün:

yum install -y gdisk

Quraşdırma gdisk Debian/Ubuntu üçün:

apt install -y gdisk

ВНИМАНИЕ: Для GPT первым указывается диск на который təsvir cədvəlini köçürürük, вторым диском указывается диск с которого təsvir cədvəlini köçürür. Disklər qarışdırılarsa, əvvəllər düzgün olan təsvir sürüşdürüləcək və məhv olacaq.

GPT təsvir cədvəlini köçürürük.

sgdisk -R /dev/sdd /dev/sdc

Cədvəlin köçürülməsindən sonra disklərin təsviri /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  

Sonra hər birini proqram RAID massivlərinə əlavə edirik.

mdadm /dev/md126 --add /dev/sdd2

mdadm /dev/md127 --add /dev/sdd3

Massivin sinxronlaşdırılmasını gözləyin.

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

GPT təsvir cədvəlini ikinci yeni diskə köçürdükdən sonra, təsvir belə görünəcək.

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

Daha sonra GRUB'u yeni disklerde kurun.

CentOS için kurulum:

grub2-install /dev/sdX

Debian/Ubuntu için kurulum:

grub-install /dev/sdX

burada X — diskin harfi, bizim durumumuzda diskler /dev/sdc/dev/sdd.

Dizi bilgilerini güncelliyoruz.

CentOS için:

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

Debian/Ubuntu için:

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf

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

Görüntüyü güncelliyoruz initrd:
CentOS için:

dracut -f -v --regenerate-all

Debian/Ubuntu için:

update-initramfs -u -k all

GRUB yapılandırmasını güncelliyoruz.

CentOS için:

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

Debian/Ubuntu için:

update-grub

Yapılan işlemlerden sonra eski diskler çıkarılabilir.

6. Yeni disklerde kök bölümünün dosya sisteminin genişletilmesi

Disklerin bölümlenmesi, sistemi 2 x 3TB disklerine (RAID-1) taşıdıktan sonra dosya sisteminin genişletilmesi.

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

Şu anda bölümler /dev/sdc3 /dev/sdd3 2.7 TB yer kaplıyor. Yeni bir disk düzenlemesi oluşturduğumuz için GPT tablosu ile, bu üç bölümün boyutu hemen maksimum disk alanı olarak ayarlandı, bu durumda bölümü genişletmeye gerek yoktur.

Gerekli:

  1. md126 dizisini genişlet
  2. PV'yi (fiziksel hacim) genişletmek,
  3. vg0-root'u (mantıksal hacim) genişletmek,
  4. dosya sistemini genişletmek.

1. Diziyi genişletiyoruz md126 maksimum boyuta kadar.

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

Dizinin genişletilmesinden sonra md126 kapladığı alan 2.7 TB'a yükseldi.

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

Genişletiyoruz fiziki həcim.

Genişletmeden önce mevcut alan değerini kontrol ediyoruz PV /dev/md126.

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

PV-ni növbəti əmr ilə genişləndiririk.

pvresize /dev/md126

Edilmiş dəyişiklikləri yoxlayırıq.

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

Genişletiyoruz lojiqal həcmi vg0-root.

PV genişləndikdən sonra VG tərəfindən tutulan sahəni yoxlayırıq.

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

LV tərəfindən tutulan sahəni yoxlayırıq.

[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-root həcmi 206.41 GB sahəni tutur.

LV-ni disk alanının maksimumuna qədər genişləndiririk.

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

Genişləndikdən sonra LV-nin sahəsini yoxlayırıq.

[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

Sistem faylını (ext4) genişləndiririk.

Hazırkı sistem faylının ölçüsünü yoxlayırıq.

[root@localhost ~]# df -h
Fayl sistemi     Ölçü İstifadə olunub  Qalıq İstifadə olunma% Montajda
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 həcmi LV genişləndikdən sonra 204 GB-dir.

Sistem faylını genişləndiririk.

resize2fs /dev/mapper/vg0-root 

Genişləndikdən sonra sistem faylının ölçüsünü yoxlayırıq.

[root@localhost ~]# df -h
Fayl sistemi     Ölçü İstifadə olunub  Qalıq İstifadə olunma% Montajda
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

Sistem faylının ölçüsü bütün həcmin maksimumuna qədər artırılıb.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster