Move LV’s von einem Device auf ein anderes
Ich habe auf Arbeit ein Storage worin 3 RAID’s sind. Ein RAID1, welches für diesen Artikel irrelevant ist, ein RAID6 (md1) worauf iSCSI Volumes in Form von LV’s liegen und ein RAID5 (md2) welches zum Testen da ist. Das RAID6 besteht dabei aus 8 relativ alten Platten, welches nun zu bröckeln anfing und zu allem Übel fing ein Platteneinschub auch noch an CRC Error zu produzieren, wodurch ein Plattentausch verhindert wurde, da jede sofort wieder aus dem RAID geworfen wurde. Es wurde von mir also kurzer Hand das RAID5 Volume gekapert, da mir die Tests in dem Moment relativ egal waren, und fügte es meiner VG hinzu:
vgextend vg /dev/md2
Diese sollte mit einer Erfolgsmeldung quittiert werden. Man kann aber mit pvdisplay nochmal kontrollieren. Um zu sehen auf welchem Volume welches LV liegt benutzt man
lvs -o +devices
Moven der LV’s geht dann wie folgt, entweder man tut es mit jeder einzeln:
pvmove -n test /dev/md1 /dev/md2
was ich, wie man schon an dem Namen der LV sieht, erstmal nur zum testen tat, oder man verschiebt einmal den gesamten Pool:
pvmove /dev/md1 /dev/md2
Das ganze funktionierte während des Betriebs, ohne das die VM’s, zu welchen die LV’s gehören, irgendwas davon merkten. Das ganze dauert natürlich, abhängig von der Größe eine ganze Weile, da die Daten blockweise kopiert werden.
Sind die Daten dann alle verschoben kann man das kaputte RAID aus der VG entfernen:
vgreduce vg /dev/md1