Linux'ta daha küçük diskleri daha büyük disklerle değiştirmek

Herkese selam. Yeni bir kurs grubunun başlamasının arifesinde "Linux Yöneticisi" REG.RU kurumsal ürünleri için öğrencimizin yanı sıra kurs mentoru ve teknik destek uzmanı Roman Travin tarafından yazılan faydalı materyalleri yayınlıyoruz.

Bu makalede, dizi ve dosya sisteminin daha da genişletilmesiyle disklerin değiştirilmesi ve bilgilerin daha büyük kapasiteli yeni disklere aktarılmasıyla ilgili 2 durum ele alınacaktır. İlk durum, aynı MBR/MBR veya GPT/GPT bölümlemeli disklerin değiştirilmesiyle ilgili olacaktır; ikinci durum, MBR bölümlemeli disklerin üzerine kurulum yapmanız gereken 2 TB'tan fazla kapasiteye sahip disklerle değiştirilmesiyle ilgilidir. biosboot bölümü olan bir GPT bölümü. Her iki durumda da verileri aktardığımız diskler sunucuda zaten kuruludur. Kök bölüm için kullanılan dosya sistemi ext4'tür.

Durum 1: Daha küçük diskleri daha büyük disklerle değiştirme (2 TB'a kadar)

Sorun: Mevcut diskleri bilgi aktarımıyla daha büyük disklerle (2 TB'ye kadar) değiştirin. Bu durumda elimizde sistemin kurulu olduğu 2 adet 240 GB SSD (RAID-1) disk ve sistemin aktarılması gereken 2 adet 1 TB SATA disk bulunmaktadır.

Mevcut disk düzenine bakalım.

[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  

Şu anda kullanılan dosya sistemi alanını kontrol edelim.

[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

Diskleri değiştirmeden önce dosya sisteminin boyutu 204 GB olup, içine monte edilen 2 adet md126 yazılım dizisi kullanılmaktadır. /boot и md127olarak kullanılan fiziksel hacim VG grubu için vg0.

1. Disk bölümlerini dizilerden kaldırma

Dizinin durumunu kontrol etme

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

Sistem 2 dizi kullanır: md126 (bağlama noktası /boot) - bir bölümden oluşur /dev/sda1 и /dev/sdb1, md127 (LVM için takas ve dosya sisteminin kökü) - şunlardan oluşur: /dev/sda2 и /dev/sdb2.

Her dizide kullanılan ilk diskin bölümlerini hatalı olarak işaretliyoruz.

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

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

Dizilerden /dev/sda blok aygıt bölümlerini kaldırıyoruz.

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

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

Diski diziden çıkardıktan sonra blok cihaz bilgileri bu şekilde görünecektir.

[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  

Diskleri çıkardıktan sonra dizilerin durumu.

[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. Bölüm tablosunu yeni bir diske kopyalayın

Disk üzerinde kullanılan bölüm tablosunu aşağıdaki komutla kontrol edebilirsiniz.

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

MBR çıktısı şöyle olacaktır:

Disk label type: dos

GPT için:

Disk label type: gpt

MBR için bölüm tablosunu kopyalama:

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

Bu takımda ilk disk belirtildi с kime işaretleme kopyalanır, ikinci - nerede kopyala.

DİKKAT: GPT için ilk disk belirtildi hangisinde işaretlemeyi kopyala, ikinci disk diski gösterir olan işaretlemeyi kopyala. Diskleri karıştırırsanız, başlangıçta iyi olan bölümün üzerine yazılacak ve yok edilecektir.

GPT için düzen tablosunu kopyalama:

sgdisk -R /dev/sdс /dev/sdb

Daha sonra diske rastgele bir UUID atayın (GPT için).


sgdisk -G /dev/sdc

Komut yürütüldükten sonra bölümler diskte görünmelidir /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  

Eylem gerçekleştirildikten sonra sistemdeki diskteki bölümler /dev/sdc kararsızsak, bölüm tablosunu yeniden okumak için komutu çalıştırırız.

sfdisk -R /dev/sdc

Mevcut diskler MBR tablosunu kullanıyorsa ve bilgilerin 2 TB'tan büyük disklere aktarılması gerekiyorsa, yeni disklerde biosboot bölümünü kullanarak manuel olarak bir GPT bölümü oluşturmanız gerekecektir. Bu durum bu makalenin 2. Bölümünde ele alınacaktır.

3. Yeni diskin bölümlerini diziye ekleme

İlgili dizilere disk bölümlerini ekleyelim.

mdadm /dev/md126 --add /dev/sdc1

mdadm /dev/md127 --add /dev/sdc2

Bölümlerin eklendiğini kontrol ediyoruz.

[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  

Bundan sonra dizilerin senkronize olmasını bekliyoruz.

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

Yardımcı programı kullanarak senkronizasyon sürecini sürekli olarak izleyebilirsiniz. watch.

watch -n 2 cat /proc/mdstat

Parametre -n İlerlemeyi kontrol etmek için komutun saniye cinsinden hangi aralıklarla yürütülmesi gerektiğini belirtir.

Bir sonraki yedek disk için 1 - 3 arasındaki adımları tekrarlayın.

İkinci diskin her dizide kullanılan bölümlerini hatalı olarak işaretliyoruz.

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

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

Blok cihaz bölümlerini kaldırma /dev/sdb dizilerden.

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

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

Diski diziden çıkardıktan sonra blok cihaz bilgileri bu şekilde görünecektir.

[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  

Diskleri çıkardıktan sonra dizilerin durumu.

[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 bölüm tablosunu diskten kopyalama /dev/sdс diske /dev/sdd.

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

Komut yürütüldükten sonra bölümler diskte görünmelidir /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  

Dizilere disk bölümleri ekleme.

mdadm /dev/md126 --add /dev/sdd1

mdadm /dev/md127 --add /dev/sdd2

Bölümlerin eklendiğini kontrol ediyoruz.

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

Bundan sonra dizilerin senkronize olmasını bekliyoruz.

[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'un yeni sürücülere kurulması

CentOS için:

grub2-install /dev/sdX

Debian/Ubuntu'da:

grub-install /dev/sdX

nerede X — blok cihazının harfi. Bu durumda GRUB'u kurmanız gerekiyor. /dev/sdc и /dev/sdd.

6. Kök bölümün dosya sistemi uzantısı (ext4)

Yeni disklerde /dev/sdc и /dev/sdd 931.5 GB kullanılabilir. Bölüm tablosunun daha küçük disklerden kopyalanmış olması nedeniyle bölümler /dev/sdc2 и /dev/sdd2 222.5 GB kullanılabilir.

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]

Bu gereklidir:

  1. Disklerin her birinde bölüm 2'yi genişletin,
  2. Dizi md127'yi genişletin,
  3. PV'yi (fiziksel hacim) genişletin,
  4. LV (mantıksal hacim) vg0-root'u genişletin,
  5. Dosya sistemini genişletin.

Yardımcı programı kullanma aralandı bölümü genişletelim /dev/sdc2 maksimum değere. Komutu yürüt parted /dev/sdc (1) ve geçerli bölüm tablosunu komutla görüntüleyin p (2).

Linux'ta daha küçük diskleri daha büyük disklerle değiştirmek

Gördüğünüz gibi 2. bölümün sonu 240 GB ile bitiyor. komutuyla bölümü genişletelim. resizepart 22, bölüm (3)'ün numarasıdır. Değeri dijital formatta, örneğin 1000 GB olarak belirtiyoruz veya disk paylaşımının göstergesini kullanıyoruz - %100. Bölümün yeni boyuta (4) sahip olup olmadığını tekrar kontrol ediyoruz.

Disk için yukarıdaki adımları tekrarlayın /dev/sdd. Bölümleri genişlettikten sonra /dev/sdc2 и /dev/sdd2 930.5 GB'a 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]

Bundan sonra diziyi genişletiyoruz md127 maksimuma.

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

Dizinin genişlediğini kontrol ediyoruz. Artık 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]

Uzantıyı genişletme fiziksel hacim. Genişletmeden önce PV'nin mevcut durumunu kontrol edelim.

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

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

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

pvresize /dev/md127

PV genişlemesinin sonucu kontrol ediliyor.

[

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   ]

Genişleyen mantıksal hacim. Genişletmeden önce LV'nin (1) mevcut durumunu kontrol edelim.

[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 GB kullanır.

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

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

Tamamlanan eylemi kontrol ediyoruz (3).

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

Gördüğünüz gibi LV genişletildikten sonra kaplanan disk alanı miktarı 914.39 GB oldu.

Linux'ta daha küçük diskleri daha büyük disklerle değiştirmek

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

1. Dosya sistemini genişletelim.

resize2fs /dev/mapper/vg0-root

Komut yürütüldükten sonra dosya sisteminin boyutunu kontrol ediyoruz.

[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

Kök dosya sisteminin boyutu 900 GB'a çıkacak. Adımları tamamladıktan sonra eski diskleri kaldırabilirsiniz.

Durum 2: Daha küçük diskleri daha büyük disklerle değiştirme (2 TB'tan fazla)

Ayar: Bilgileri korurken mevcut diskleri daha büyük disklerle (2 x 3TB) değiştirin. Bu durumda elimizde sistemin kurulu olduğu 2 adet 240 GB SSD (RAID-1) disk ve sistemin aktarılması gereken 2 adet 3 TB SATA disk bulunmaktadır. Mevcut diskler MBR bölüm tablosunu kullanır. Yeni disklerin kapasitesi 2 TB'tan büyük olduğundan, MBR 2 TB'tan büyük disklerle çalışamayacağından GPT tablosu kullanmaları gerekecektir.

Mevcut disk düzenine bakalım.

[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  

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

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

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

[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

Gördüğünüz gibi dosya sisteminin kökü 204 GB yer kaplıyor. Yazılım RAID dizisinin mevcut durumunu kontrol edelim.

1. GPT bölümleme tablosu ve disk bölümleme kurulumu

Disk düzenini sektöre göre kontrol edelim.

[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

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

  1. Bölüm bios_grub GPT BIOS uyumluluğu için 2MiB boyutu,
  2. Kurulacak RAID dizisinin bölümü /boot.
  3. RAID dizisinin bulunacağı bölüm LV kökü и AG değişimi.

Yardımcı programın yüklenmesi aralandı takım yum install -y parted (CentOS için), apt install -y parted (Debian/Ubuntu için).

Kullanma aralandı Diski bölümlemek için aşağıdaki komutları çalıştıralım.

Komutu yürüt parted /dev/sdc ve disk düzeni düzenleme moduna gidin.

Bir GPT bölümleme tablosu oluşturun.

(parted) mktable gpt

1 bölüm oluştur bios_grub bölümüne gidin ve bunun için bir bayrak ayarlayın.

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

Bölüm 2'yi oluşturun ve bunun için bir bayrak ayarlayın. Bölüm, bir RAID dizisi için blok olarak kullanılacak ve /boot.

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

LVM'nin yer alacağı dizi bloğu olarak da kullanılacak 3. bölümü oluşturuyoruz.

(parted) mkpart primary 1028MiB 100% 

Bu durumda bayrağı ayarlamanıza gerek yoktur ancak gerekirse aşağıdaki komutla ayarlanabilir.

(parted) set 3 raid on

Oluşturulan tabloyu kontrol ediyoruz.

(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

Diske yeni bir rastgele GUID atıyoruz.

sgdisk -G /dev/sdd

2. İlk diskin bölümlerini dizilerden kaldırma

Dizinin durumunu kontrol etme

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

Sistem 2 dizi kullanır: md126 (bağlama noktası/önyükleme) - şunlardan oluşur: /dev/sda1 и /dev/sdb1, md127 (LVM için swap ve dosya sisteminin kökü) - şunlardan oluşur: /dev/sda2 и /dev/sdb2.

Her dizide kullanılan ilk diskin bölümlerini hatalı olarak işaretliyoruz.

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

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

Blok cihaz bölümlerini kaldırma /dev/sda dizilerden.

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

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

Diski çıkardıktan sonra dizinin durumu kontrol ediliyor.

[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. Yeni diskin bölümlerini diziye ekleme

Bir sonraki adım, yeni diskin bölümlerini senkronizasyon için dizilere eklemektir. Disk düzeninin mevcut durumuna bakalım.

[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  

Bölüm /dev/sdc1 olduğunu bios_grub bölümdür ve dizilerin oluşturulmasında yer almaz. Diziler yalnızca /dev/sdc2 и /dev/sdc3. Bu bölümleri ilgili dizilere ekliyoruz.

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

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

Daha sonra dizinin senkronize olmasını bekleriz.

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

Diziye bölümler eklendikten sonra disk bölümleme.

[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 diskin bölümlerini dizilerden kaldırma

İkinci diskin her dizide kullanılan bölümlerini hatalı olarak işaretliyoruz.

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

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

Blok cihaz bölümlerini kaldırma /dev/sda dizilerden.

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

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

5. GPT düzen tablosunu kopyalayın ve diziyi senkronize edin

GPT işaretleme tablosunu kopyalamak için yardımcı programı kullanacağız sgdiskDisk bölümleri ve GPT tablosuyla çalışmak için pakete dahil olan - gdisk.

Montaj gdisk CentOS için:

yum install -y gdisk

Montaj gdisk Debian/Ubuntu için:

apt install -y gdisk

DİKKAT: GPT için ilk disk belirtildi hangisinde işaretlemeyi kopyala, ikinci disk diski gösterir olan işaretlemeyi kopyalayın. Diskleri karıştırırsanız, başlangıçta iyi olan bölümün üzerine yazılacak ve yok edilecektir.

GPT işaretleme tablosunu kopyalayın.

sgdisk -R /dev/sdd /dev/sdc

Bir tabloyu diske aktardıktan sonra disk bölümleme /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  

Daha sonra, yazılım RAID dizilerine katılan bölümlerin her birini ekliyoruz.

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

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

Dizinin senkronize edilmesini bekliyoruz.

[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 bölümünü ikinci yeni diske kopyaladıktan sonra bölüm şu şekilde görünecektir.

[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 disklere yükleyin.

CentOS için kurulum:

grub2-install /dev/sdX

Debian/Ubuntu Kurulumu:

grub-install /dev/sdX

nerede X — sürücü harfi, bizim durumumuzda sürücüler /dev/sdc и /dev/sdd.

Dizi hakkındaki bilgileri güncelliyoruz.

CentOS için:

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

Debian/Ubuntu'da:

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

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

Resmi güncelleme initrd:
CentOS için:

dracut -f -v --regenerate-all

Debian/Ubuntu'da:

update-initramfs -u -k all

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

CentOS için:

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

Debian/Ubuntu'da:

update-grub

Adımları tamamladıktan sonra eski diskler çıkarılabilir.

6. Kök bölümün dosya sistemi uzantısı (ext4)

Sistemi 2 x 3TB disklere (RAID-1) taşıdıktan sonra dosya sistemi genişletmesinden önce disk bölümleme.

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

Şimdi bölümler /dev/sdc3 и /dev/sdd3 2.7 TB yer kaplar. GPT tablosuyla yeni bir disk düzeni oluşturduğumuz için bölüm 3'ün boyutu hemen mümkün olan maksimum disk alanına ayarlandı; bu durumda bölümü genişletmeye gerek yok.

Bu gereklidir:

  1. Dizi md126'yi genişletin,
  2. PV'yi (fiziksel hacim) genişletin,
  3. LV (mantıksal hacim) vg0-root'u genişletin,
  4. Dosya sistemini genişletin.

1. Diziyi genişletin md126 maksimuma.

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

Dizi genişletmesinden sonra md126 işgal edilen alanın boyutu 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şleyen fiziksel hacim.

Genişletmeden önce işgal edilen alanın mevcut değerini kontrol edin PV /dev/md126.

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

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

pvresize /dev/md126

Tamamlanan eylemi kontrol ediyoruz.

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

Genişleyen mantıksal birim vg0-root.

PV'yi genişlettikten sonra işgal edilen VG alanını kontrol edelim.

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

LV'nin kapladığı alanı kontrol edelim.

[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 birimi 206.41 GB yer kaplar.

LV'yi maksimum disk alanına genişletiyoruz.

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

Genişletme sonrasında LV alanının kontrol edilmesi.

[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

Dosya sistemini genişletme (ext4).

Dosya sisteminin mevcut boyutunu kontrol edelim.

[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 birimi, LV genişletmesinden sonra 204 GB kaplar.

Dosya sistemini genişletme.

resize2fs /dev/mapper/vg0-root 

Dosya sistemini genişlettikten sonra boyutunun kontrol edilmesi.

[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

Dosya sistemi boyutu, birimin tamamını kapsayacak şekilde artırıldı.

Kaynak: habr.com

Yorum ekle