[Eisfair] Wiki-Artikel zum Wechsel auf Kernel 4.9
Thomas Zweifel
t2fel at gmx.net
Sa Dez 7 19:45:46 CET 2019
Hallo Marcus
Am 27.11.19 um 22:18 schrieb Thomas Zweifel:
> Am 27.11.19 um 21:44 schrieb Marcus Roeckrath:
>> Sonst schicke sie mir oder poste sie hier, dann pack ich das in den Artikel
>> rein.
>
> Ich melde mich sobald es fertig ist.
So endlich mal die nötige Zeit gefunden, die Anleitung zusammenzuschustern.
Als Ausgangslage habe ich ein älteres ISO genommen und auf aktuellen
stand gebracht:
Welcome to eisfair!
base : 2.8.22
eiskernel: 4.9.196-eisfair-64-VIRT
eis # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md3 7.9G 623M 6.8G 9% /
/dev/md1 43M 35M 4.7M 89% /boot
/dev/md4 83G 57M 78G 1% /data
....
eis # fdisk -l /dev/sd[ab]
Disk /dev/sda: 93.16 GiB, 100030242816 bytes, 195371568 sectors
Disklabel type: gpt
Device Start End Sectors Size Type
/dev/sda1 2048 100351 98304 48M Linux RAID
/dev/sda2 100352 2197503 2097152 1G Linux RAID
/dev/sda3 2197504 18974719 16777216 8G Linux RAID
/dev/sda4 18974720 195351054 176376335 84.1G Linux RAID
Disk /dev/sdb: 119.25 GiB, 128035676160 bytes, 250069680 sectors
Disklabel type: dos
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 100351 98304 48M fd Linux raid
/dev/sdb2 100352 2197503 2097152 1G fd Linux raid
/dev/sdb3 2197504 18974719 16777216 8G fd Linux raid
/dev/sdb4 18974720 197232639 178257920 85G fd Linux raid
Die zweite Platte habe ich nachträglich mit fdisk bearbeitet, so dass
beide Varianten mit von der Partie sind.
Ausgaben der Programme habe ich auf die relavanten Stellen reduziert.
Die grobe Vorgehensweise sieht etwa so aus:
Swap ausschalten, die Erste Platte aus dem Raid entfernen,
umpartitionieren, und wieder zum Raid hinzufügen, anschliessend das
gleiche Prozedere mit der zweiten Platte.
Danach das md mitsamt Filesystem vergrössern und swap wieder aktivieren.
Und wie üblich --> das Backup nicht vergessen, und ein Blick auf die
smart-Werte der Platten werfen wäre auch nicht verkehrt.....
Gut, dann beginnen wir und deaktivieren den swap
eis # swapoff -a
und setzen einen # vor die swap-Zeile in der /etc/fstab
eis # joe /etc/fstab
....
#UUID=b3da7559-e533-423d-a4a9-63132938ac83 none swap sw 0 0
....
Da wir Platz vom swap wegnehmen wollen, müssen wir das md zuerst
verkleinern, die writeintentbitmaps deaktivieren wir bevor wir an den
md's herumbasteln
eis # for i in 1 2 ; do mdadm -G --bitmap=none /dev/md$i ; done
eis # cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5]
[raid4] [multipath]
md3 : active raid1 sda3[0] sdb3[2]
8380416 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk
md4 : active raid1 sda4[0] sdb4[2]
88122624 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda2[0] sdb2[2]
1047552 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sda1[0] sdb1[1]
49088 blocks [2/2] [UU]
und verkleinern md2 auf 25 MiB
eis # mdadm -G -z25M /dev/md2
mdadm: component size of /dev/md2 has been set to 25600K
eis # cat /proc/mdstat
md2 : active raid1 sda2[0] sdb2[2]
25600 blocks super 1.2 [2/2] [UU]
Nun lösen wir das Raid auf und entfernen sda komplett aus dem Verbund
eis # for i in 1 2 3 4 ; do mdadm --fail /dev/md$i /dev/sda$i ; done
mdadm: set /dev/sda1 faulty in /dev/md1
mdadm: set /dev/sda2 faulty in /dev/md2
mdadm: set /dev/sda3 faulty in /dev/md3
mdadm: set /dev/sda4 faulty in /dev/md4
eis # for i in 1 2 3 4 ; do mdadm --remove /dev/md$i /dev/sda$i ; done
mdadm: hot removed /dev/sda1 from /dev/md1
mdadm: hot removed /dev/sda2 from /dev/md2
mdadm: hot removed /dev/sda3 from /dev/md3
mdadm: hot removed /dev/sda4 from /dev/md4
Die Raid-Superblocks von sda1 und sda2 löschen wir ebenfalls
eis # for i in 1 2 ; do mdadm --zero-superblock /dev/sda$i ; done
eis # cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5]
[raid4] [multipath]
md3 : active raid1 sdb3[2]
8380416 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk
md4 : active raid1 sdb4[2]
88122624 blocks super 1.2 [2/1] [_U]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sdb2[2]
25600 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sdb1[1]
49088 blocks [2/1] [_U]
Damit wäre alles vorbereitet um die Partitionen der ersten Platte zu ändern
---GDISK-START---
eis # gdisk /dev/sda
Zuerst die übersicht mit p aufrufen
Command (? for help): p
Disk /dev/sda: 195371568 sectors, 93.2 GiB
Model: ST910021AS
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): DCB9FE32-55FE-4A6F-8C29-DAEC96CCA941
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 195371534
Partitions will be aligned on 2048-sector boundaries
Total free space is 22494 sectors (11.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 100351 48.0 MiB FD00 boot
2 100352 2197503 1024.0 MiB FD00 swap
3 2197504 18974719 8.0 GiB FD00 root
4 18974720 195351054 84.1 GiB FD00 data
Jetzt löschen wir Partition 1 und 2
Command (? for help): d
Partition number (1-4): 1
Command (? for help): d
Partition number (2-4): 2
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
3 2197504 18974719 8.0 GiB FD00 root
4 18974720 195351054 84.1 GiB FD00 data
und erstellen sie wieder mit passender Grösse
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-195371534, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-2197503, default = 2197503) or {+-}size{KMGTP}: +96M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): fd00
Changed type of partition to 'Linux RAID'
Command (? for help): c
Partition number (1-4): 1
Enter name: boot
Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-195371534, default = 198656) or {+-}size{KMGTP}:
Last sector (198656-2197503, default = 2197503) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): fd00
Changed type of partition to 'Linux RAID'
Command (? for help): c
Partition number (1-4): 2
Enter name: swap
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
1 2048 198655 96.0 MiB FD00 boot
2 198656 2197503 976.0 MiB FD00 swap
3 2197504 18974719 8.0 GiB FD00 root
4 18974720 195351054 84.1 GiB FD00 data
Der Startsektor der 1. Partition und der Endsektor der 2. Partition
sollten gleich wie am anfang sein
Wenn das Resultat passt speichern wir mit w ab, ansonsten könnte man mit
q gdisk verlassen und einen weiteren Versuch unternehmen
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE
EXISTING PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
---GDISK-ENDE---
---FDISK-START---
eis # fdisk /dev/sda
Zuerst die übersicht mit p aufrufen
(den Endsektor von Partition2 benötigen wir später noch)
Command (m for help): p
Disk /dev/sda: 119.25 GiB, 128035676160 bytes, 250069680 sectors
Disk model: MTFDBAK128MAG-1G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x08d89144
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 100351 98304 48M fd Linux raid autodetect
/dev/sda2 100352 2197503 2097152 1G fd Linux raid autodetect
/dev/sda3 2197504 18974719 16777216 8G fd Linux raid autodetect
/dev/sda4 18974720 197232639 178257920 85G fd Linux raid autodetect
Jetzt löschen wir Partition 1 und 2
Command (m for help): d
Partition number (1-4, default 4): 1
Partition 1 has been deleted.
Command (m for help): d
Partition number (2-4, default 4): 2
Partition 2 has been deleted.
Command (m for help): p
Device Boot Start End Sectors Size Id Type
/dev/sda3 2197504 18974719 16777216 8G fd Linux raid autodetect
/dev/sda4 18974720 197232639 178257920 85G fd Linux raid autodetect
und erstellen sie wieder mit passender Grösse
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Partition number (1,2, default 1):
First sector (2048-250069679, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-250069679, default
250069679): +96M
Created a new partition 1 of type 'Linux' and of size 96 MiB.
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): a
Partition number (1,3,4, default 4): 1
The bootable flag on partition 1 is enabled now.
Command (m for help): t
Partition number (1,3,4, default 4): 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.
Command (m for help): n
Partition type
p primary (3 primary, 0 extended, 1 free)
e extended (container for logical partitions)
Select (default e): p
Selected partition 2
First sector (198656-250069679, default 198656):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (198656-250069679, default
250069679): 2197503
Created a new partition 2 of type 'Linux' and of size 976 MiB.
Command (m for help): t
Partition number (1-4, default 4): 2
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.
Die zweite Partition endet an derselben Stelle wie vor dem
Umpartitionieren - in dem Fall bei Sektor 2197503 - da müsst Ihr den für
eure Platte passenden Wert einsetzen
Command (m for help): p
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 198655 196608 96M fd Linux raid autodetect
/dev/sda2 198656 2197503 1998848 976M fd Linux raid autodetect
/dev/sda3 2197504 18974719 16777216 8G fd Linux raid autodetect
/dev/sda4 18974720 197232639 178257920 85G fd Linux raid autodetect
Filesystem/RAID signature on partition 1 will be wiped.
Wenn das Resultat passt speichern wir mit w ab, ansonsten könnte man mit
q fdisk verlassen und einen weiteren Versuch unternehmen
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
---FDISK-ENDE---
Nach dem Partitionieren kontrollieren wir noch kurz ob der kernel die
neuen Partitionen aktualisiert hat
eis # grep sda /proc/partitions
8 1 98304 sda1
8 2 999424 sda2
Sieht in dem Fall gut aus, also versorgen wir das Raid wieder mit redundanz
eis # for i in 1 2 3 4 ; do mdadm --add /dev/md$i /dev/sda$i ; done
mdadm: hot added /dev/sda1
mdadm: added /dev/sda2
mdadm: re-added /dev/sda3
mdadm: re-added /dev/sda4
und warten den resync ab
eis # cat /proc/mdstat
md3 : active raid1 sda3[0] sdb3[2]
8380416 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md4 : active raid1 sda4[0] sdb4[2]
88122624 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda2[3] sdb2[2]
25600 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sda1[0] sdb1[1]
49088 blocks [2/2] [UU]
Nachdem der resync fertig ist widmen wir uns der zweiten Platte
(Da es dasselbe Vorgehen wie bei sda ist, spare ich mir die Kommentare
grösstennteils und liste nur die Befehle auf)
Redundanz auflösen
eis # for i in 1 2 3 4 ; do mdadm --fail /dev/md$i /dev/sdb$i ; done
mdadm: set /dev/sdb1 faulty in /dev/md1
mdadm: set /dev/sdb2 faulty in /dev/md2
mdadm: set /dev/sdb3 faulty in /dev/md3
mdadm: set /dev/sdb4 faulty in /dev/md4
eis # for i in 1 2 3 4 ; do mdadm --remove /dev/md$i /dev/sdb$i ; done
mdadm: hot removed /dev/sdb1 from /dev/md1
mdadm: hot removed /dev/sdb2 from /dev/md2
mdadm: hot removed /dev/sdb3 from /dev/md3
mdadm: hot removed /dev/sdb4 from /dev/md4
eis # for i in 1 2 ; do mdadm --zero-superblock /dev/sdb$i ; done
eis # cat /proc/mdstat
md3 : active raid1 sda3[0]
8380416 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
md4 : active raid1 sda4[0]
88122624 blocks super 1.2 [2/1] [U_]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sda2[3]
25600 blocks super 1.2 [2/1] [U_]
md1 : active raid1 sda1[0]
49088 blocks [2/1] [U_]
Partitionieren analog sda diesmal mit /dev/sdb als argument
eis # gdisk /dev/sdb oder fdisk /dev/sdb
Check
eis # grep sdb /proc/partitions
8 17 98304 sdb1
8 18 999424 sdb2
und resync
eis # for i in 1 2 3 4 ; do mdadm --add /dev/md$i /dev/sdb$i ; done
mdadm: hot added /dev/sdb1
mdadm: added /dev/sdb2
mdadm: re-added /dev/sdb3
mdadm: re-added /dev/sdb4
eis # cat /proc/mdstat
md3 : active raid1 sdb3[2] sda3[0]
8380416 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md4 : active raid1 sdb4[2] sda4[0]
88122624 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sdb2[2] sda2[3]
25600 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdb1[1] sda1[0]
49088 blocks [2/2] [UU]
Damit hätten wir das gröbste geschafft
Nun müssen wir noch die beiden md auf die finale grösse bringen
eis # for i in 1 2 ; do mdadm -G -zmax /dev/md$i ; done
mdadm: component size of /dev/md1 has been set to 98240K
mdadm: component size of /dev/md2 has been set to 998400K
eis # cat /proc/mdstat
md2 : active raid1 sdb2[2] sda2[3]
998400 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdb1[1] sda1[0]
98240 blocks [2/2] [UU]
und das ext-fs in md1 online vergrössern
eis # resize2fs -p /dev/md1
resize2fs 1.45.1 (12-May-2019)
Filesystem at /dev/md1 is mounted on /boot; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/md1 is now 98240 (1k) blocks long.
eis # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md1 89M 35M 49M 42% /boot
Sicherheitshalber lassen wir lilo den Bootkram noch neu schreiben
eis # lilo
Added eis + *
Added oldeis +
Added 3.16.60-VIRT
Added 3.16.74-VIRT +
The boot record of /dev/md1 has been updated.
The Master boot record of /dev/sda has been updated.
Warning: /dev/sdb is not on the first disk
The Master boot record of /dev/sdb has been updated.
One warning was issued.
Nun erstellen wir den swap neu
eis # mkswap /dev/md2
mkswap: /dev/md2: warning: wiping old swap signature.
Setting up swapspace version 1, size = 975 MiB (1022357504 bytes)
no label, UUID=e841616b-020e-4687-b5a8-d8c35e2b4fc8
und tragen die neue UUID noch in die fstab ein, den am Anfang
eingefügten # beim swap entfernen wir wieder
eis # joe /etc/fstab
....
UUID=e841616b-020e-4687-b5a8-d8c35e2b4fc8 none swap sw 0 0
....
Danach aktivieren wir den swap
eis # swapon -a
eis # cat /proc/swaps
Filename Type Size Used Priority
/dev/md2 partition 998396 0 -1
und aktivieren die bitmaps wieder
eis # for i in 1 2 ; do mdadm -G --bitmap=internal /dev/md$i ; done
eis # cat /proc/mdstat
md3 : active raid1 sdb3[2] sda3[0]
8380416 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md4 : active raid1 sdb4[2] sda4[0]
88122624 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sdb2[2] sda2[3]
998400 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md1 : active raid1 sdb1[1] sda1[0]
98240 blocks [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
Damit wäre die Sache abgeschlossen.
Gruss Thomas
Mehr Informationen über die Mailingliste Eisfair