En kunde havde fået tildelt lidt for meget plads til nogle virtuelle maskiner, og de ønskede at diskstørrelserne gjort mindre, så de ikke lige pludselig kom til at bruge alt pladsen.
Fremgangsmåden jeg benyttede er lånt fra Technogrip, og beskriver det til CentOS og for root-filsystemet. I mit tilfælde drejdede det sig om en ekstra disk, og derfor ser det lidt anderledes ud. F.eks. behøver jeg ikke at boote i rescue mode.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-root 19G 3,4G 15G 19% /
udev 3,0G 4,0K 3,0G 1% /dev
tmpfs 1,2G 260K 1,2G 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 3,0G 0 3,0G 0% /run/shm
/dev/sda1 228M 47M 170M 22% /boot
/dev/mapper/storage-storage 1000G 135G 815G 15% /storage
I bunden ses det store 1000GB drev, som der ønskes at laves til 200GB i stedet
Først skal drevet unmountes
# umount /storage
For en sikkerhedsskyld laver i et check på drevet
# fsck -fC /dev/mapper/storage-storage
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/storage-storage: 461/65536000 files (9.8% non-contiguous), 35546593/262144000 blocks
Herefter ændre vi det logiske drev til 200GB
# lvresize -r /dev/storage/storage --size 200G
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/mapper/storage-storage: clean, 461/65536000 files, 35546593/262144000 blocks
resize2fs 1.42 (29-Nov-2011)
Resizing the filesystem on /dev/dm-0 to 52428800 (4k) blocks.
The filesystem on /dev/dm-0 is now 52428800 blocks long.
Reducing logical volume storage to 200,00 GiB
Logical volume storage successfully resized
Det fysiske drev er stadig den gamle størrelsen, men har nu +800GB tilgængelig
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu lvm2 a- 19,76g 16,00m
/dev/sdb1 storage lvm2 a- 1023,99g 823,99g
Herefter kan vi ændre den fysiske drev sættes til lidt over hvad vi bruger på den logiske. Det kunne være 200.01, men jeg har valgt 1GB ekstra. (Den ekstra størrelse skyldes at man ikke kan sætte størrelsen i extents og 200G vil være 1 extent for kort)
# pvresize /dev/sdb1 --setphysicalvolumesize 201G
Physical volume "/dev/sdb1" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Vores fysiske drev i LVM ser nu sådan ud.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu lvm2 a- 19,76g 16,00m
/dev/sdb1 storage lvm2 a- 201,00g 1020,00m
Herefter er det tid til at rette partitonen. Først skal vi den nye størrelse på drevet i sektører.
# pvs --unit s
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu lvm2 a- 41435136S 32768S
/dev/sdb1 storage lvm2 a- 421519360S 2088960S
og herefter hvornår drevet starter.
# parted /dev/sdb unit s print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 2147483648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 63s 2147472809s 2147472747s primary lvm
Nu er det tid til at resize partionen. Først slettes den gamle partition 1, som vist herover. Bare vælg cancel til fejlen. Vi tilføjer den igen lige om lidt.
# parted /dev/sdb rm 1
Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.
As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Ignore/Cancel? C
Information: You may need to update /etc/fstab.
Herefter opretter vi den nye partition, med den samme startposition og den nye slutposition, som er længden på de 421519360S+63S = 421519423s.
# parted /dev/sdb mkpart primary 63s 421519423s
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I
Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.
As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Ignore/Cancel? C
Vi aktivere lvm for den nye partition.
# parted /dev/sdb set 1 lvm on
Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.
As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Ignore/Cancel? C
Den nye partition ser hermed sådan ud.
# parted /dev/sdb unit s print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 2147483648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 63s 421519423s 421519361s primary lvm
For en sikkerhedsskyld laver vi igen et check på storage.
# fsck -fC /dev/storage/storage
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/storage-storage: 461/13107200 files (11.1% non-contiguous), 32252895/52428800 blocks
Den nye storage kan nu mountes. Tag evt en reboot for at sikre at det virker.
# mount /storage
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-root 19G 3,4G 15G 19% /
udev 3,0G 4,0K 3,0G 1% /dev
tmpfs 1,2G 260K 1,2G 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 3,0G 0 3,0G 0% /run/shm
/dev/sda1 228M 47M 170M 22% /boot
/dev/mapper/storage-storage 200G 123G 67G 65% /storage
Rettelse af størrelse i VMware
SSH in på VMware hypervisor
Udregn den nye størrelse på drevet.
vmdk_shrunken = [x * (1024*1024*1024)] / 512
Hvor x er størrelsen i GB (i eksemplet 201GB)
Denne størrelse indsættes i vmdk-filen.
# vi /path/to/original_vmdk
Find den linje der ligner nedestående og tilpas tallet
# Extent description
RW 421527552 VMFS “foo-flat.vmdk”
Export til en ny VMDK. Dette kræver at maskinen er lukket ned imens dette sker. Kan tage nogle timer alt efter størrelse på drevet og hastigheden på de diske der benyttes.
# vmkfstools -d thin -i virtualname_1.vmdk virtualname_1mod.vmdk
( -d thin er valgfrit, men gør at drevet kun fylder den nuværende brugte mængde i den virtuelle maskine)
Log ind på ESX (vcenter), fjern drevet og tilføj den nye drev til maskinen. Fjern maskinen fra Inventory og tilføj den igen.
Herefter kan den virtuelle maskine startes igen, og jobbet er udført.