KlausHeinisch
Golden User  
Anmeldungsdatum: 04.02.2006 Beiträge: 609 Wohnort: Hannover
|
Verfasst am: 17 Feb 2009 20:38 Titel: microHowTo: Wie defragmentiert man Logische Volumen? |
 |
|
Hi Gemeinde.
Jüngst stand ich vor der Frage, wie man ein ziemlich stark fragmentiertes
"logisches Volumen" in einen Block zusammenführen kann...
Hintergrund:
Ich hatte mal begonnen, ein LV anzulegen, dass ich in 6 Schritten vergößert
hatte und das nun so aussieht: | Code: | --- Logical volume ---
LV Name /dev/<Meine VG1>/xen_<Mein Volumenname>
VG Name <Meine VG1>
LV UUID qqqqqq-pppp-zzzz-vvvv-wwww-xxxx-yyyyyy
LV Write Access read/write
LV Status available
# open 1
LV Size 80,00 GB
Current LE 20480
Segments 7
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:58 |
Nun wissen wir, dass eine LV-Fragmentierung nicht mit einer "normalen"
Dateifragmentierung zu vergleichen ist, aber trotzdem wollte ich wissen,
wie es möglich ist, dieses fragmentierte Volume wieder zu einem Stück
zusammenzufügen.
Und die Lösung ist so einfach wie langsam:
- Man benötigt eine zweite Partition - möglichst auf einer seperaten Disk
- Diese Partition wird der VG hinzugefügt mittels
"vgextend <Meine VG1> <zusätzliche Partition>", also z.B.
"vgextend vg1 /dev/sdc1"
- Ein pvscan sollte nun für die Volume-Group zwei Partitionen anzeigen
- Ich verschiebe nun zunächst das "fragmentierte" Volume von der
Ausgangs-Disk auf die zweite Disk mittels
"pvmove -n <Name des LV> <Quell-Disk> <Ziel-Disk>", also z.B.
"pvmove -n vg1 /dev/hda8 /dev/sdc1"
- Dort sollte das LV nun schon in "einem Stück", also linear hintereinander
liegen, aber dort möchte ich es eigentlich gar nicht haben...
Daher schiebe ich es wieder zurück auf die Ausgangs-Disk:
"pvmove -n <Name des LV> <Ziel-Disk> <Quell-Disk>", also z.B.
"pvmove -n vg1 /dev/sdc1 /dev/hda8"
Wichtig ist hier natürlich, dass auf der ursprünglichen Disk mindestens ein
zusammenhängendes Stück existiert, das das LV aufnehmen kann.
- Abschließend entferne ich die Partition wieder aus der Volumegruppe:
"vgreduce <Name des LV> <Ziel-Disk>", also
"vgreduce vg1 /dev/sdc1"
Nicht betrachtet sei hier die Sinnhaftigkeit der ganzen Aktion in der Form,
wie ich sie hier dargestellt habe, da sie bei mir hier nicht so, sondern im
Rahmen eines größeren Zusammenhang (verschieben mehrerer LVs auf
neue Disks, Migrationen etc.) so ähnlich vorkam.
Daher ist dieses MicroHowTo eigentlich ein Nebenprodukt und könnte
evtl. einigen helfen, sich weiter in LVM einzuarbeiten.
Viel Erfolg und euch viel Vergnügen beim Experimentieren mit LVM  _________________ Gruß, Klaus
__________________________________________________________
Mein "RechenZentrum": - 1 Debian-Lenny mit ct-Server-3-Implantaten,
- 1 MythTV-0.20-Backend und
- 1 FritzBox, div. Clients
Die Systeme:
Server-3: Debian-LENNY als Dom-0, AMD-Athlon 64 X2 4850e, noch ohne CnQ,
Webserver, Virtual-Desktops und Infrastruktur-DomUs in Produktion (stabil),
4 * Endian-2.2 als BackEnd-Firewall (stabil) für Web, RAS, DMZ-FE & DMZ-BE
FritzBox: FrontEnd-Firewall und TCP-Port-Verteiler mit VoIP-Telefonie
|
|