[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