[linux-l] Zusammenführen von 2 Partitionen unter Linux
Frank Reker
frank at reker.net
So Jul 15 20:38:29 CEST 2018
Hallo Frank,
Am So 15. Jul 2018 10:57 +0200 schrieb Frank Kroker:
>der nun leeren Partion lag. Hat auch geklappt. Dann wollte ich die Linux
>Partion erweitern in den leeren Bereich hinein. Das geht aber nicht, da mir
>vom Partionsprogramm angezeigt wird, das noch ein ca 1MB großer Bereich
>vorhanden ist zwischen den beiden Bereichen, die zusammengeführt werden
>sollen. Den bekomme ich aber nicht gelöscht. Kann mir eventuell jemand meinen
>Fehler aufzeigen und Hilfestellung geben.
Ich vermute mal, du hast die leeren Partitionen nicht aus der
Partitionstabelle geloescht?!?
also erst mit parted/fdisk die leeren Partitionen entfernen, und
dann die gewuenschte Partition vergroessern. Anschliessend das
Filesystem vergroessern.
Aber Achtung: welche der Partitionen ist die erste auf der Platte?
Du kannst das fs nur nach hinten vergroessern.
Andernfalls muss das fs erst nach vorne verschoben werden
bevor ein resize gemacht wird. Merk dir also gut die
Position wo das fs beginnt!
Besser:
du nimmst die leere Partition (z.b. sda1) und installierst dort
erstmal lvm drauf:
#> pvcreate /dev/sda1
damit machst du ein lvm laufwerk aus deiner partition
#> vgcreate mygroup /dev/sda1
damit legst du eine volume group drauf an
#> lvcreate -L 450g -n myname mygroup
und damit erzeugst du eine logical volume (entspricht einer Partition).
dann erzeuge ein fs:
#> mkfs.ext4 /dev/mygroup/myname
jetzt mountest du die neue partition
#> mkdir /mnt/new
#> mount /dev/mygroup/myname /mnt/new
und nun die alte (z.b. /dev/sda3)
#> mkdir /mnt/old
#> mount /dev/sda3 /mnt/old
jetzt kopierst du alles rueber:
#> rsync -av -SAX /mnt/old/. /mnt/new/.
und jetzt wieder unmounten
#> umount /mnt/old
#> umount /mnt/new
sicherheitshalber ein fs-check:
#> fsck.ext4 /dev/mygroup/myname
jetzt machst du auch aus /dev/sda3 eine lvm partitionen:
#> pvcreate /dev/sda3
und fuegst die zur volume group hinzu:
#> vgextend mygroup /dev/sda3
jetzt vergroesserst du die logical volume von oben
es ist dabei egal ob die beiden hintereinanderliegen
oder nicht. lvm haendelt das fuer dich!
#> lvresize -l 100%FREE mygroup/myname
alternativ kannst du auch erst mal eine oder mehrere
weiter logical volumes mit lvcreate anlegen
dann musst du das fs vergroessern:
#> resize2fs /dev/mygroup/myname
und noch ein fs check
#> fsck.ext4 /dev/mygroup/myname
done!
note: auf manchen linuxen wird /dev/mygroup/myname
nicht angelegt, dann nimm den Namen:
/dev/mapper/mygroup-myname
falls du /dev/sda2 auch hinzunehmen willst, dann:
#> pvcreate /dev/sda2
#> vgextend mygroup /dev/sda2
vor dem lvresize
falls du schon mit lvm arbeitest, dann entfaellt
das umkopieren. du nimmst einfach die neue
partition mit in deine gruppe mit auf:
#> pvcreate /dev/sda1
#> vgextend mygroup /dev/sda1
#> lvresize -l 100%FREE myroup/myname
usw...
mygroup ist hier der name deiner gruppe (volume group)
und myname der name deiner partition (logical volume).
du kannst die namen natuerlich beliebig waehlen.
wenn du lvm nicht nutzen moechtest, dann kopiere erst
die daten von der hinteren auf die vordere:
#> mkfs.ext4 /dev/sda1
#> mount /dev/sda1 /mnt/new
#> mount /dev/sda3 /mnt/old
#> rsync -av -SAX /mnt/old/. /mnt/new/.
und jetzt wieder unmounten
#> umount /mnt/old
#> umount /mnt/new
entfaellt natuerlich wenn linux schon auf der ersten
partition ist.
in jedem fall ein fs-check machen:
#> fsck.ext4 /dev/sda1
jetzt die alten partitionen entfernen:
#> parted /dev/sda rm 2
#> parted /dev/sda rm 3
und /dev/sda1 erweitern:
#> parted /dev/sda resizepart 1 -1
jetzt das fs erweitern:
#> resize2fs /dev/sda1
und noch ein fs check
#> fsck.ext4 /dev/sda1
done!
beachte, dass linux manchmal die partitionstabelle
nicht richtig einlesen kann, so dass ein reboot
notwendig wird nach dem resizepart.
wenn von cd gebootet wird passiert das selten.
haeufig hilft dann auch ein
#> blockdev --rereadpt
um ein erneutes einlesen zu erzwingen, so erspart
man sich den reboot.
beachte aber: sda1 ist nicht zwangslaeufig die
erste partition (auch wenn in meinem beispiel oben
angenommen). die nummer in sdaX gibt nur die
position in der partitionstabelle an, nicht die
position der partition auf der platte. also
sda2 kann durchaus vor sda1 liegen. im zweifelsfall mal
ein fdisk -l machen.
im allgemeinen empfehle ich aber lvm, ich habe da sehr
gute erfahrungen mit gemacht. es ist halt sehr viel
flexibler, wenn du mal irgendetwas umpartitionieren
musst / willst, oder eine zweite platte mit hinzunehmen
moechtest,... aber beachte, dass nicht alle bootloader
damit zurecht kommen. mit grub2 kein problem.
im zweifelsfall eine kleine partition fuer /boot
ausserhalb des lvm belassen.
beachte aber: wenn du auf lvm umsteigst wirst du
wahrscheinlich die initrd's neu generieren muessen.
unter debian:
#> update-initramfs -u -k all
wie das unter openSuse geht - keine Ahnung.
da du von cd bootest einfach die neue partition
mounten:
#> mkdir /z
#> mount /dev/mygroup/myname /z
#> mount -t proc proc /z/proc
#> mount -t sysfs sys /z/sys
#> mount --bind /dev /z/dev
#> chroot /z /bin/bash
jetzt bist du in deinem system und kannst die initramfs neu
machen.
ausserdem wirst du wahrscheinlich den bootloader aktualisieren
muesen (wahrscheinlich auch beim umpartitionieren):
(ebenfalls im chrooted-system):
#> update-grub2
auch hier - keine Ahnung wie das tool in openSuse heisst.
ich hoffe das war jetzt hilfreich und halbwegs verstaendlich.
viel erfolg.
und ja: ein backup ist vor solchen aktionen immer sinnvoll.
zu schnell macht man einen dummen fehler und dann hat man
arbeit alles wieder herzustellen.
--
Don't worry be happy ...
Ciao Frank Reker
Mehr Informationen über die Mailingliste linux-l