Ich habe ein Debian Wheezy
System mit einem Paar von 500 GB HDDs in RAID-1 ( mdadm
Spiegel), an deren Spitze sitzt LVM
logische Volumen mit 5 Trennwänden ( boot
, root
, usr
, var
und tmp
), Gesamtgröße von 47.15 GiB. 418,38 GiB im physischen Volumen sind frei. GRUB
auf beiden Laufwerken installiert.
Eine der Festplatten ist ausgefallen und das Array ist jetzt beeinträchtigt, aber die Daten sind intakt.
Ich möchte alle diese 2 Festplatten gegen 80-GB-SSDs austauschen, ohne das System von Grund auf neu installieren zu müssen. Der subtile Punkt hier ist, dass ich das physische LVM-Volume verkleinern muss, um es an die Größe der SSD anzupassen, aber die logischen Volumes sind nicht zusammenhängend (am Anfang ist viel freier Speicherplatz vorhanden), sodass ich logische Volumes innerhalb eines physischen Volumes irgendwie verschieben muss . Und es gibt keinen lvmove
Befehl in Debian.
Wie erreiche ich das?
Einige Konsolenausgaben:
Versionen:
root@wheezy:~# uname -a && mdadm --version && lvm version
Linux wheezy 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
mdadm - v3.2.5 - 18th May 2012
LVM version: 2.02.95(2) (2012-03-06)
Library version: 1.02.74 (2012-03-06)
Driver version: 4.22.0
Array-Details:
root@wheezy:~# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 4 12:20:22 2014
Raid Level : raid1
Array Size : 488148544 (465.53 GiB 499.86 GB)
Used Dev Size : 488148544 (465.53 GiB 499.86 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Thu Dec 4 13:08:59 2014
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : wheezy:0 (local to host wheezy)
UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
Events : 26
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 0 0 1 removed
LVM kurze Details:
root@wheezy:~# pvs && vgs && lvs
PV VG Fmt Attr PSize PFree
/dev/md0 system lvm2 a-- 465.53g 418.38g
VG #PV #LV #SN Attr VSize VFree
system 1 5 0 wz--n- 465.53g 418.38g
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
boot system -wi----- 152.00m
root system -wi----- 2.00g
tmp system -wi----- 10.00g
usr system -wi----- 20.00g
var system -wi----- 15.00g
Segmentierung der PV:
root@wheezy:~# pvs -v --segments /dev/md0
Using physical volume(s) on command line
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md0 system lvm2 a-- 465.53g 418.38g 0 89600 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 89600 38 boot 0 linear /dev/md0:89600-89637
/dev/md0 system lvm2 a-- 465.53g 418.38g 89638 512 root 0 linear /dev/md0:89638-90149
/dev/md0 system lvm2 a-- 465.53g 418.38g 90150 5120 usr 0 linear /dev/md0:90150-95269
/dev/md0 system lvm2 a-- 465.53g 418.38g 95270 3840 var 0 linear /dev/md0:95270-99109
/dev/md0 system lvm2 a-- 465.53g 418.38g 99110 1280 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 100390 2560 tmp 0 linear /dev/md0:100390-102949
/dev/md0 system lvm2 a-- 465.53g 418.38g 102950 16226 0 free
rsync
Ihre Dateien über. Es ist nicht online, aber wahrscheinlich schneller als alles andere.Antworten:
Sie müssen den PV nicht verkleinern oder das Array neu erstellen. Sie müssen nur ein neues Array aus den neuen Laufwerken erstellen und dieses als neues pv (
pvcreate
+vgextend
) hinzufügen , dannpvmove
alle vorhandenen Levels vom alten pv entfernen, dann das alte pv (vgreduce
) entfernen und das Laufwerk außer Betrieb nehmen.quelle
GRUB
über das Live-System können jedoch zusätzliche Schritte erforderlich sein. Es ist einfacher, das Produktionssystem zu starten und GRUB mit einem einfachen Befehl von dort aus zu installieren.dpkg-reconfigure grub-pc
und wählen Sie die neuen Laufwerke aus.Es ist nicht
lvmove
aberpvmove
.Dadurch sollten alle Bereiche im Bereich von 89600-102950 auf 0-12070 verschoben werden. Gemäß den von Ihnen veröffentlichten Daten sollte dies dazu führen, dass Ihre LVs an den Anfang Ihrer PV verschoben werden.
quelle
LV
Ausrichten eines Teils der Aufgabe.ACHTUNG: DIESER LEITFADEN IST NICHT OPTIMAL. Überprüfen Sie die akzeptierte Antwort
Okay, ich habe herausgefunden, wie ich das machen soll, was ich versucht habe. Dies wird eine Art Tutorial sein.
Während dieser Zeit war mir noch nicht klar, dass Manipulationen mit LVs tatsächlich möglich sind, wenn die Dateisysteme in einer
live
Linux-Distribution (SystemRescueCD) gemountet und gebootet werden . Die Leute hier haben mir erklärt, dass dies nicht notwendig ist, wenn Sie nicht mit tatsächlichen Dateisystemen manipulieren und nur LVs ausrichten und PV verkleinern.Mit diesem Leitfaden erreichen Sie definitiv das, was Sie wollen, aber nicht auf effiziente Weise, da es der Natur des LVM gegenübersteht - der Möglichkeit, Dinge live zu tun .
Aufgrund der nicht zusammenhängenden Natur logischer Volumes auf meinem physischen Volume sollte ich sie irgendwie am Anfang des physischen Volumes verschieben. Der
pvmove
von @frostschutz vorgeschlagene Befehl kann sichLVs
innerhalb einesPV
:Jetzt kann
PV
es auf die Größe der SSD (80 GB) verkleinert werden. 80 Gigabyte sind eigentlich 80000000000 Bytes:Danach kann ich die Größe des Arrays selbst ändern. Auf dieser Ebene gibt es keine Dateisysteme, daher habe ich nur einen einzigen
mdadm --grow
Befehl, mit dem auch Arrays verkleinert werden können. Die Größe sollte eingegeben werdenkibibytes
, also 80000000000/1024 = 78125000:Jetzt ist es Zeit, eine vorhandene SSD zum Array hinzuzufügen und neu erstellen zu lassen:
Nach dem Wiederaufbau habe ich ein gesundes Array. Die Mitglieder können ausgetauscht werden und die Installation von GRUB kann routinemäßig (nach dem Booten in das Produktionssystem) mit durchgeführt werden
grub-install /dev/sdc
.quelle