Cześć wszystkim. W przeddzień rozpoczęcia nowej grupy kursowej
W tym artykule rozważone zostaną 2 przypadki wymiany dysków i przeniesienia informacji na nowe dyski o większej pojemności wraz z dalszą rozbudową macierzy i systemu plików. Pierwszy przypadek będzie dotyczył wymiany dysków z tą samą partycją MBR/MBR lub GPT/GPT, drugi przypadek dotyczy wymiany dysków z partycjonowaniem MBR na dyski o pojemności większej niż 2 TB, na których trzeba będzie zainstalować partycję GPT z partycją biosboot. W obu przypadkach dyski, na które przesyłamy dane, są już zainstalowane na serwerze. System plików używany dla partycji głównej to ext4.
Przypadek 1: Wymiana mniejszych dysków na większe (do 2 TB)
Zadanie: Wymień obecne dyski na większe (do 2 TB) z możliwością przesyłania informacji. W tym przypadku mamy do dyspozycji 2 dyski SSD 240 GB (RAID-1) z zainstalowanym systemem oraz 2 dyski SATA 1 TB, na które trzeba przenieść system.
Spójrzmy na bieżący układ dysku.
[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
Sprawdźmy aktualnie zajętą przestrzeń w systemie plików.
[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
Rozmiar systemu plików przed wymianą dysków wynosi 204 GB, wykorzystywane są 2 tablice programowe md126, które są montowane w /boot
и md127
, który jest używany jako objętość fizyczna dla grupy VG vg0.
1. Usuwanie partycji dyskowych z macierzy
Sprawdzanie stanu tablicy
[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>
System wykorzystuje 2 tablice: md126
(punkt mocowania /boot
) - składa się z sekcji /dev/sda1
и /dev/sdb1
, md127
(LVM dla zamiana i katalog główny systemu plików) - składa się z /dev/sda2
и /dev/sdb2
.
Partycje pierwszego dysku, które są używane w każdej tablicy, oznaczamy jako złe.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Usuwamy partycje urządzeń blokowych /dev/sda z tablic.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Po usunięciu dysku z macierzy informacja o urządzeniu blokowym będzie wyglądać następująco.
[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
Stan macierzy po usunięciu dysków.
[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. Skopiuj tablicę partycji na nowy dysk
Możesz sprawdzić używaną tablicę partycji na dysku za pomocą następującego polecenia.
fdisk -l /dev/sdb | grep 'Disk label type'
Dane wyjściowe dla MBR będą następujące:
Disk label type: dos
dla GPT:
Disk label type: gpt
Kopiowanie tablicy partycji dla MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdc
W tym poleceniu pierwszy wskazany jest napęd с z czego znacznik jest kopiowany, drugie – gdzie Kopiuj.
UWAGA: Dla GPT pierwszy wskazany jest napęd na którym skopiuj znaczniki drugi dysk wskazuje dysk z którego skopiuj znaczniki. Jeśli pomylisz dyski, początkowo dobra partycja zostanie nadpisana i zniszczona.
Kopiowanie tabeli układu dla GPT:
sgdisk -R /dev/sdс /dev/sdb
Następnie przypisz losowy UUID do dysku (dla GPT).
sgdisk -G /dev/sdc
Po wykonaniu polecenia partycje powinny pojawić się na dysku /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
Jeżeli po wykonaniu akcji partycje w systemie na dysku /dev/sdc
niezdecydowany, wówczas wykonujemy polecenie ponownego odczytania tablicy partycji.
sfdisk -R /dev/sdc
Jeśli obecne dyski korzystają z tabeli MBR i konieczne jest przeniesienie informacji na dyski większe niż 2 TB, wówczas na nowych dyskach konieczne będzie ręczne utworzenie partycji GPT przy użyciu partycji biosboot. Sprawa ta zostanie omówiona w części 2 tego artykułu.
3. Dodanie partycji nowego dysku do macierzy
Dodajmy partycje dysku do odpowiednich tablic.
mdadm /dev/md126 --add /dev/sdc1
mdadm /dev/md127 --add /dev/sdc2
Sprawdzamy, czy sekcje zostały dodane.
[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
Następnie czekamy na synchronizację tablic.
[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>
Za pomocą narzędzia możesz na bieżąco monitorować proces synchronizacji watch
.
watch -n 2 cat /proc/mdstat
Parametr -n
określa, w jakich odstępach sekund należy wykonać polecenie, aby sprawdzić postęp.
Powtórz kroki 1–3 dla kolejnego dysku zastępczego.
Partycje drugiego dysku, które są używane w każdej tablicy, oznaczamy jako złe.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Usuwanie partycji urządzeń blokowych /dev/sdb
z tablic.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
Po usunięciu dysku z macierzy informacja o urządzeniu blokowym będzie wyglądać następująco.
[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
Stan macierzy po usunięciu dysków.
[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>
Kopiowanie tablicy partycji MBR z dysku /dev/sdс
na dysk /dev/sdd
.
sfdisk -d /dev/sdс | sfdisk /dev/sdd
Po wykonaniu polecenia partycje powinny pojawić się na dysku /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
Dodawanie partycji dyskowych do macierzy.
mdadm /dev/md126 --add /dev/sdd1
mdadm /dev/md127 --add /dev/sdd2
Sprawdzamy, czy sekcje zostały dodane.
[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]
Następnie czekamy na synchronizację tablic.
[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. Instalowanie GRUB-a na nowych dyskach
Dla CentOS:
grub2-install /dev/sdX
Więcej Debian/Ubuntu:
grub-install /dev/sdX
gdzie X
— litera urządzenia blokowego. W takim przypadku musisz zainstalować GRUB-a /dev/sdc
и /dev/sdd
.
6. Rozszerzenie systemu plików (ext4) partycji root
Na nowych dyskach /dev/sdc
и /dev/sdd
Dostępne 931.5 GB. Ze względu na to, że tablica partycji została skopiowana z mniejszych dysków, partycje /dev/sdc2
и /dev/sdd2
Dostępne 222.5 GB.
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]
Konieczne jest:
- Rozszerz partycję 2 na każdym z dysków,
- Rozwiń tablicę md127,
- Rozwiń PV (objętość fizyczna),
- Rozwiń LV (wolumin logiczny) vg0-root,
- Rozwiń system plików.
Korzystanie z narzędzia rozstał się rozwińmy sekcję /dev/sdc2
do wartości maksymalnej. Wykonaj polecenie parted /dev/sdc
(1) i wyświetl bieżącą tablicę partycji za pomocą polecenia p
(2).
Jak widać koniec partycji 2 kończy się na 240 GB. Rozwińmy partycję za pomocą polecenia resizepart
2
, gdzie 2 to numer sekcji (3). Wartość podajemy w formacie cyfrowym, np. 1000 GB, lub stosujemy oznaczenie udziału dyskowego – 100%. Sprawdzamy ponownie, czy partycja ma nowy rozmiar (4).
Powtórz powyższe kroki dla dysku /dev/sdd
. Po rozwinięciu partycji /dev/sdc2
и /dev/sdd2
stała się równa 930.5 GB.
[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]
Następnie rozszerzamy tablicę md127 do maksimum.
mdadm --grow /dev/md127 --size=max
Sprawdzamy, czy tablica się rozwinęła. Teraz jego rozmiar wzrósł do 930.4 GB.
[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]
Rozszerzenie rozszerzenia objętość fizyczna. Przed rozwinięciem sprawdźmy aktualny stan PV.
[root@localhost ~]# pvscan
PV /dev/md127 VG vg0 lvm2 [222,40 GiB / 0 free]
Total: 1 [222,40 GiB] / in use: 1 [222,40 GiB] / in no VG: 0 [0 ]
Jak widać PV /dev/md127
wykorzystuje 222.4 GB miejsca.
Rozwijamy PV za pomocą następującego polecenia.
pvresize /dev/md127
Sprawdzanie wyniku ekspansji PV.
[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 ]
Rozszerzanie wolumin logiczny. Przed rozwinięciem sprawdźmy aktualny stan NN (1).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<206,41 GiB] inherit
LV /dev/vg0/root
wykorzystuje 206.41 GB.
Rozwijamy LV za pomocą następującego polecenia (2).
lvextend -l +100%FREE /dev/mapper/vg0-root
Sprawdzamy wykonaną akcję (3).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit
Jak widać po rozszerzeniu LV ilość zajętego miejsca na dysku wyniosła 914.39 GB.
Wolumen LV wzrósł (4), ale system plików nadal zajmuje 204 GB (5).
1. Rozwińmy system plików.
resize2fs /dev/mapper/vg0-root
Po wykonaniu polecenia sprawdzamy rozmiar systemu plików.
[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
Rozmiar głównego systemu plików wzrośnie do 900 GB. Po wykonaniu tych kroków możesz usunąć stare dyski.
Przypadek 2: Wymiana mniejszych dysków na większe (ponad 2 TB)
Zadanie: Wymień obecne dyski na większe (2 x 3 TB), zachowując jednocześnie informacje. W tym przypadku mamy do dyspozycji 2 dyski SSD 240 GB (RAID-1) z zainstalowanym systemem oraz 2 dyski SATA 3 TB, na które trzeba przenieść system. Bieżące dyski korzystają z tabeli partycji MBR. Ponieważ nowe dyski mają pojemność większą niż 2 TB, będą musiały użyć tabeli GPT, ponieważ MBR nie może działać z dyskami większymi niż 2 TB.
Spójrzmy na bieżący układ dysku.
[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
Sprawdźmy tablicę partycji używaną na dysku /dev/sda
.
[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos
Na dysku /dev/sdb
używana jest podobna tablica partycji. Sprawdźmy zajęte miejsce na dysku w systemie.
[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
Jak widać, katalog główny systemu plików zajmuje 204 GB. Sprawdźmy aktualny stan programowej macierzy RAID.
1. Instalowanie tablicy partycji GPT i partycjonowanie dysku
Sprawdźmy układ dysku według sektorów.
[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
Na nowym dysku 3 TB będziemy musieli utworzyć 3 partycje:
- Rubryka
bios_grub
Rozmiar 2MiB dla zgodności z BIOS-em GPT, - Partycja macierzy RAID, w której zostanie zamontowana
/boot
. - Partycja dla macierzy RAID, na której będzie się znajdować Korzeń LV и Zamiana NN.
Instalowanie narzędzia rozstał się według zespołu yum install -y parted
(dla CentOS), apt install -y parted
(dla Debiana/Ubuntu).
Korzystanie z rozstał się Uruchommy następujące polecenia, aby podzielić dysk na partycje.
Wykonaj polecenie parted /dev/sdc
i przejdź do trybu edycji układu dysku.
Utwórz tabelę partycji GPT.
(parted) mktable gpt
Utwórz 1 sekcję bios_grub
sekcję i ustaw dla niej flagę.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on
Utwórz partycję 2 i ustaw dla niej flagę. Partycja zostanie użyta jako blok dla macierzy RAID i zostanie zamontowana /boot
.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot on
Tworzymy partycję 3, która posłuży również jako blok tablicy, w którym będzie zlokalizowany LVM.
(parted) mkpart primary 1028MiB 100%
W takim przypadku nie jest konieczne ustawianie flagi, ale w razie potrzeby można ją ustawić za pomocą poniższego polecenia.
(parted) set 3 raid on
Sprawdzamy utworzoną tabelę.
(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
Przypisujemy do dysku nowy losowy identyfikator GUID.
sgdisk -G /dev/sdd
2. Usuwanie partycji pierwszego dysku z macierzy
Sprawdzanie stanu tablicy
[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>
System wykorzystuje 2 tablice: md126 (punkt montowania /boot) - składa się z /dev/sda1
и /dev/sdb1
, md127
(LVM dla swap
i katalog główny systemu plików) - składa się z /dev/sda2
и /dev/sdb2
.
Partycje pierwszego dysku, które są używane w każdej tablicy, oznaczamy jako złe.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Usuwanie partycji urządzeń blokowych /dev/sda
z tablic.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Sprawdzenie stanu macierzy po wyjęciu dysku.
[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. Dodanie partycji nowego dysku do macierzy
Następnym krokiem jest dodanie partycji nowego dysku do macierzy w celu synchronizacji. Przyjrzyjmy się aktualnemu stanowi układu dysku.
[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
Rubryka /dev/sdc1
jest bios_grub
sekcji i nie bierze udziału w tworzeniu tablic. Tablice będą używane tylko /dev/sdc2
и /dev/sdc3
. Dodajemy te sekcje do odpowiednich tablic.
mdadm /dev/md126 --add /dev/sdc2
mdadm /dev/md127 --add /dev/sdc3
Następnie czekamy, aż tablica się zsynchronizuje.
[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>
Partycjonowanie dysku po dodaniu partycji do macierzy.
[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. Usuwanie partycji drugiego dysku z macierzy
Partycje drugiego dysku, które są używane w każdej tablicy, oznaczamy jako złe.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Usuwanie partycji urządzeń blokowych /dev/sda
z tablic.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
5. Skopiuj tabelę układu GPT i zsynchronizuj tablicę
Aby skopiować tabelę znaczników GPT, użyjemy narzędzia sgdisk
, który jest zawarty w pakiecie do pracy z partycjami dysku i tabelą GPT - gdisk
.
Instalacja gdisk
dla CentOS:
yum install -y gdisk
Instalacja gdisk
dla Debiana/Ubuntu:
apt install -y gdisk
UWAGA: Dla GPT pierwszy wskazany jest napęd na którym skopiuj znacznik, drugi dysk wskazuje dysk z którego skopiuj znaczniki. Jeśli pomylisz dyski, początkowo dobra partycja zostanie nadpisana i zniszczona.
Skopiuj tabelę znaczników GPT.
sgdisk -R /dev/sdd /dev/sdc
Partycjonowanie dysku po przeniesieniu tabeli na dysk /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
Następnie dodajemy każdą z partycji tworzących programowe macierze RAID.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3
Czekamy na synchronizację tablicy.
[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>
Po skopiowaniu partycji GPT na drugi nowy dysk partycja będzie wyglądać następująco.
[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]
Następnie zainstaluj GRUB na nowych dyskach.
Instalacja dla CentOS:
grub2-install /dev/sdX
Instalacja dla Debiana/Ubuntu:
grub-install /dev/sdX
gdzie X
— litera dysku, w naszym przypadku dyski /dev/sdc
и /dev/sdd
.
Aktualizujemy informacje o tablicy.
Dla CentOS:
mdadm --detail --scan --verbose > /etc/mdadm.conf
Więcej Debian/Ubuntu:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Aktualizowanie obrazu initrd
:
Dla CentOS:
dracut -f -v --regenerate-all
Więcej Debian/Ubuntu:
update-initramfs -u -k all
Aktualizujemy konfigurację GRUB-a.
Dla CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Więcej Debian/Ubuntu:
update-grub
Po wykonaniu tych kroków stare dyski można usunąć.
6. Rozszerzenie systemu plików (ext4) partycji root
Partycjonowanie dysku przed rozbudową systemu plików po migracji systemu na dyski 2 x 3 TB (RAID-1).
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
sdb 8:16 0 223,6G 0 disk
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md126 9:126 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
├─sdd1 8:49 0 2M 0 part
├─sdd2 8:50 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 part
└─md126 9:126 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Teraz sekcje /dev/sdc3
и /dev/sdd3
zajmują 2.7 TB. Ponieważ utworzyliśmy nowy układ dysku z tabelą GPT, rozmiar partycji 3 został natychmiast ustawiony na maksymalną możliwą przestrzeń dyskową; w tym przypadku nie ma potrzeby powiększania partycji.
Konieczne jest:
- Rozwiń tablicę md126,
- Rozwiń PV (objętość fizyczna),
- Rozwiń LV (wolumin logiczny) vg0-root,
- Rozwiń system plików.
1. Rozwiń tablicę md126
do maksimum.
mdadm --grow /dev/md126 --size=max
Po rozszerzeniu tablicy md126
wielkość zajmowanej przestrzeni wzrosła do 2.7 TB.
[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]
Rozszerzanie objętość fizyczna.
Przed rozbudową sprawdź aktualną wartość zajmowanej przestrzeni PV/dev/md126
.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- 222,40g 0
Rozwijamy PV za pomocą następującego polecenia.
pvresize /dev/md126
Sprawdzamy wykonaną akcję.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- <2,73t 2,51t
Rozszerzanie wolumin logiczny vg0-root.
Po rozwinięciu PV sprawdźmy zajętą przestrzeń VG.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <2,73t 2,51t
Sprawdźmy przestrzeń zajmowaną przez 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
Wolumin vg0-root zajmuje 206.41 GB.
Rozbudowujemy LV do maksymalnej przestrzeni dyskowej.
lvextend -l +100%FREE /dev/mapper/vg0-root
Sprawdzanie przestrzeni NN po rozszerzeniu.
[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
Rozszerzanie systemu plików (ext4).
Sprawdźmy aktualny rozmiar systemu plików.
[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
Wolumin /dev/mapper/vg0-root po rozszerzeniu LV zajmuje 204 GB.
Rozszerzanie systemu plików.
resize2fs /dev/mapper/vg0-root
Sprawdzanie rozmiaru systemu plików po jego rozszerzeniu.
[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
Rozmiar systemu plików został zwiększony, aby objąć cały wolumin.
Źródło: www.habr.com