Hello,
… found the way by myself - it’s a “long, long, winding road …” - new install and restore is the shorter way and not so “stony and dangerous”…
but I Iearned much about lvm and other things. At the attachment you find a complete document, which steps are necessary to replace 2 disks in Nethserver standard mirror.
This you can use too in similar situations.
Excuse me, but there are some german words inside - no problem for you, I hope
Nethserver7 - Plattentausch im RAID1
------------------------------------
Ausgangszustand : LVM2 - Mirror OK
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 12G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 10G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 12G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sdb2 8:18 0 11G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sr0 11:0 1 1.1G 0 rom
#### Orginal - Partitionierung
~]# cfdisk /dev/sda
cfdisk (util-linux 2.23.2)
Disk Drive: /dev/sda
Size: 12884901888 bytes, 12.8 GB
Heads: 64 Sectors per Track: 32 Cylinders: 12288
Name Flags Part Type FS Type [Label] Size (MB)
---------------------------------------------------------------------------------------------------------------------------------
Pri/Log Free Space 1.05
sda1 Boot Primary linux_raid_m [localhost:1] 1073.75
sda2 Primary linux_raid_m [localhost:2] 11810.12
~]# cfdisk /dev/sdb
cfdisk (util-linux 2.23.2)
Disk Drive: /dev/sdb
Size: 12884901888 bytes, 12.8 GB
Heads: 64 Sectors per Track: 32 Cylinders: 12288
Name Flags Part Type FS Type [Label] Size (MB)
---------------------------------------------------------------------------------------------------------------------------------
Pri/Log Free Space 1074.80
sdb1 Boot Primary linux_raid_m [localhost:1] 1073.75
sdb2 Primary linux_raid_m [localhost:2] 10736.37
### Zuerst 2.HD entfernen ...
### sdb1/2 als "fail" markieren und "remove"n, dann ausschalten und Platte 2 wechseln!
~]# mdadm --manage /dev/md1 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md1
~]# mdadm --manage /dev/md1 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md1
~]# mdadm --manage /dev/md2 --fail /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md2
~]# mdadm --manage /dev/md2 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md2
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 12G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 11G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 12G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 10G 0 part
sr0 11:0 1 359.4M 0 rom
~]# poweroff
#####################################################################################################
### nach dem Plattenwechsel die PartitionTable von sda >> sdb übertragen und Größe sdb2 korrigieren mit cfdisk
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 12G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 11G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 21G 0 disk ## NEUE Ersatzplatte
sr0 11:0 1 359.4M 0 rom
~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 21504 cylinders, 64 heads, 32 sectors/track
sfdisk: /dev/sdb: unrecognized partition table type
Old situation:
sfdisk: No partitions found
New situation:
Units: sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 2099199 2097152 fd Linux raid autodetect
/dev/sdb2 2099200 25165823 23066624 fd Linux raid autodetect
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
### sdb2 löschen sdb2 neu anlegen (Größe!) und Typ FD
### Fertig sieht‘s so aus:
~]# cfdisk /dev/sdb
cfdisk (util-linux 2.23.2)
Disk Drive: /dev/sdb
Size: 22548578304 bytes, 22.5 GB
Heads: 64 Sectors per Track: 32 Cylinders: 21504
Name Flags Part Type FS Type [Label] Sectors
---------------------------------------------------------------------------------------------------------------------------------
Pri/Log Free Space 2048
sdb1 Boot Primary Linux raid autodetect 2097152
sdb2 Primary Linux raid autodetect 41938944
Pri/Log Free Space 2048
### die Partitionen sdb1 und sdb2 den mirrors md1 und md2 zuordnen
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 12G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 11G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 21G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 20G 0 part
sr0 11:0 1 359.4M 0 rom
~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda1[0]
1046528 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
md2 : active raid1 sda2[0]
10475520 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
~]# mdadm --manage /dev/md1 --add /dev/sdb1
mdadm: added /dev/sdb1
~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb1[2] sda1[0]
1046528 blocks super 1.2 [2/1] [U_]
[=====>...............] recovery = 29.1% (305536/1046528) finish=0.1min speed=76384K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk
md2 : active raid1 sda2[0]
10475520 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
~]# mdadm --manage /dev/md2 --add /dev/sdb2
mdadm: added /dev/sdb2
~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb1[2] sda1[0]
1046528 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sdb2[2] sda2[0]
10475520 blocks super 1.2 [2/1] [U_]
[=>...................] recovery = 5.5% (580224/10475520) finish=2.8min speed=58022K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk
### Warten bis Recover fertig ist, die Restzeit stimmt nur etwa, weil speed abnimmt ...
### cat /proc/mdstat wiederholen - zeigt irgendwann keine Aktion mehr an = FERTIG !
~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda1[2] sdb1[3]
1046528 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda2[2] sdb2[3]
20960256 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 12G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 11G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 21G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sdb2 8:18 0 20G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sr0 11:0 1 359.4M 0 rom
###### REBOOT Ganz wichtig !! sonst versaut grub2-install das GESAMTE Bootsystem - No BOOT forever
~]# reboot
##################################################################################################
#### Kontrollieren, wo grub noch nicht installiert ist (blöder Befehl)
~]# dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
~]# dd bs=512 count=1 if=/dev/sdb 2>/dev/null | strings
~]#
### bei sdb wird nix angezeigt = grub ist NICHT installiert !
~]# grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
### Kontrolle ...
~]# dd bs=512 count=1 if=/dev/sdb 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
### wie man sieht, ist Grub jetzt auf sdb installiert
~]# poweroff
##################################################################
### Jetzt Platte 2 austauschen und die gleiche Prozedur nochmal...
### System sollte jetzt von der 21GB Platte booten können
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 20G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 22G 0 disk ## neue Platte
sr0 11:0 1 359.4M 0 rom
~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 22528 cylinders, 64 heads, 32 sectors/track
sfdisk: /dev/sdb: unrecognized partition table type
Old situation:
sfdisk: No partitions found
New situation:
Units: sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 2099199 2097152 fd Linux raid autodetect
/dev/sdb2 2099200 44038143 41938944 fd Linux raid autodetect
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
### diesmal stimmt die Größe von sdb2 - wie zu erwarten
### zur Kontrolle lsblk
Pri/Log Free Space 1074.80
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 20G 0 part
└─md2 9:2 0 10G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 22G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 20G 0 part
sr0 11:0 1 359.4M 0 rom
### jetzt kann man die beiden Spiegel md1 und md2 wieder vervollständigen
### cat /proc/mdstat zeigt den Fortschritt der Spiegelung an
~]# mdadm --manage /dev/md1 --add /dev/sdb1
mdadm: added /dev/sdb1
~]# mdadm --manage /dev/md2 --add /dev/sdb2
mdadm: added /dev/sdb2
~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb1[3] sda1[2]
1046528 blocks super 1.2 [2/1] [_U]
[===============>.....] recovery = 77.9% (816768/1046528) finish=0.0min speed=51048K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk
md2 : active raid1 sdb2[3] sda2[2]
10475520 blocks super 1.2 [2/1] [_U]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
### WARTEN bis die Spiegelung fertig ist!!
### cat /proc/mdstat zeigt die verbleibende Zeit an
### Fertig sieht so aus :
~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda1[2] sdb1[3]
1046528 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda2[2] sdb2[3]
20960256 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
### REBOOT Ganz wichtig !!
### sonst versaut grub2-install das GESAMTE Bootsystem - No BOOT forever
~]# reboot
#######################################################################
~]# dd bs=512 count=1 if=/dev/sdb 2>/dev/null | strings
~]#
### d.h., kein Grub drauf !
~]# grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
### Kontrolle ...
~]# dd bs=512 count=1 if=/dev/sdb 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
### jetzt kann die sdb auch mit grub booten !
### lsblk meldet : md2 9:2 0 10G 0 raid1
### als nächstes Spiegel md2 auf 20GB aufblasen ...
~]# mdadm --grow /dev/md2 --size=max
mdadm: component size of /dev/md2 has been set to 20960256K
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 20G 0 part
└─md2 9:2 0 20G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 22G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sdb2 8:18 0 20G 0 part
└─md2 9:2 0 20G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sr0 11:0 1 359.4M 0 rom
### jetzt nacheinander vergrößern
### * Physical Volume
### * VolGroup
### * lv_root
### * Dateisystem XFS nicht vergessen !
### Immer zuerst im Testmode, dann "heiß"
~]# pvdisplay
--- Physical volume ---
PV Name /dev/md2
VG Name VolGroup
PV Size 9.99 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2557
Free PE 0
Allocated PE 2557
PV UUID vIMHIV-MdXl-XUTB-UJhI-xfI6-9ZTG-OliECq
~]# pvresize /dev/md2 --setphysicalvolumesize 20G --test
TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
WARNING: /dev/md2: Overriding real size <19.99 GiB. You could lose data.
/dev/md2: Requested size 20.00 GiB exceeds real size <19.99 GiB. Proceed? [y/n]: y
WARNING: /dev/md2: Pretending size is 41943040 not 41920512 sectors.
Physical volume "/dev/md2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
~]# pvresize /dev/md2 --setphysicalvolumesize 41920512s
Physical volume "/dev/md2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 20G 0 part
└─md2 9:2 0 20G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 22G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sdb2 8:18 0 20G 0 part
└─md2 9:2 0 20G 0 raid1
├─VolGroup-lv_root 253:0 0 7.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sr0 11:0 1 359.4M 0 rom
###### anschließend stehen 10GB für VolGroup zur Verfügung
~]# vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.99 GiB
PE Size 4.00 MiB
Total PE 5117
Alloc PE / Size 2557 / <9.99 GiB
Free PE / Size 2560 / 10.00 GiB
VG UUID ifRT0n-qcK9-p9Ic-yV5a-zkFe-An9w-H7NFeP
~]# lvextend -l +100%FREE /dev/VolGroup/lv_root
Size of logical volume VolGroup/lv_root changed from <7.59 GiB (1942 extents) to <17.59 GiB (4502 extents).
Logical volume VolGroup/lv_root successfully resized.
### Aktion gelungen ! VG-Size ist jetzt ~20GB und 0/0 sind frei
~]# vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.99 GiB
PE Size 4.00 MiB
Total PE 5117
Alloc PE / Size 5117 / <19.99 GiB
Free PE / Size 0 / 0
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sda2 8:2 0 20G 0 part
└─md2 9:2 0 20G 0 raid1
├─VolGroup-lv_root 253:0 0 17.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 22G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md1 9:1 0 1022M 0 raid1 /boot
└─sdb2 8:18 0 20G 0 part
└─md2 9:2 0 20G 0 raid1
├─VolGroup-lv_root 253:0 0 17.6G 0 lvm /
└─VolGroup-lv_swap 253:1 0 2.4G 0 lvm [SWAP]
sr0 11:0 1 359.4M 0 rom
##### als letzten Schritt muß das Dateisystem erweitert werden,
##### denn dort ist die Vergrößerung noch nicht angekommen ...
~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/VolGroup-lv_root xfs 7.6G 2.5G 5.2G 32% /
/dev/md1 xfs 1019M 172M 848M 17% /boot
tmpfs tmpfs 379M 0 379M 0% /run/user/0
~]# xfs_growfs /dev/mapper/VolGroup-lv_root
meta-data=/dev/mapper/VolGroup-lv_root isize=512 agcount=4, agsize=497152 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1988608, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1988608 to 4610048
#### und zur Kontrolle ....
~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/VolGroup-lv_root xfs 18G 2.5G 16G 14% /
/dev/md1 xfs 1019M 172M 848M 17% /boot
tmpfs tmpfs 379M 0 379M 0% /run/user/0
### ENDLICH Ziel erreicht - REBOOT und CHECK ...