Tag Archives: fdisk

pvmove: Insufficient free space with both disks the same size

I was migrating some LUNs to another storage.

After creating the LUNs with the same size, I intended to move the data to the new disk but I was getting there was insufficient free space

root@linux:~ # pvmove /dev/mapper/bkpcvrdd01 /dev/mapper/bkpcvrdd01newp1
Insufficient free space: 12800 extents needed, but only 12799 available
Unable to allocate mirror extents for pvmove0.
Failed to convert pvmove LV to mirrored

What happens is that the source disk is bigger than the new disk.

root@linux:~ # pvdisplay /dev/mapper/bkpcvrdd01 /dev/mapper/bkpcvrdd01newp1
— Physical volume —
PV Name /dev/mapper/bkpcvrdd01
VG Name bkpcvrdvg
PV Size 50.00 GB / not usable 640.00 KB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 12800
Free PE 0
Allocated PE 12800
PV UUID giRfdd-oDKH-12W7-ObwE-nFoN-nF0L-3OFlK5

— Physical volume —
PV Name /dev/mapper/bkpcvrdd01newp1
VG Name bkpcvrdvg
PV Size 50.00 GB / not usable 3.31 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 12799
Free PE 12799
Allocated PE 0
PV UUID MXxLNF-hDbU-eaEp-0wyW-ly1l-N1FJ-Bh2fNk

Both are the same size but due to the physical structure, each disk shows a different size.

Run fdisk -l and observe the size. This is the disk after a LUN expansion.

root@linux:~ # fdisk -l /dev/mapper/bkpcvrdd01new

Disk /dev/mapper/bkpcvrdd01new: 54.2 GB, 54223962112 bytes
255 heads, 63 sectors/track, 6592 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/mapper/bkpcvrdd01newp1 1 6592 52950208+ 8e Linux LVM

Now compare both disk sizes:

53.6 GB, 53687746560 bytes
53.6 GB, 53686370304 bytes

Scanning for new disk in a VMware host running Suse Linux 10 SP4

Scanning for new disk in a VMware host running Suse 10 SP4

root@linux:~ # cat /etc/*release
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 4
LSB_VERSION=”core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64″

I use the following command to scan the SCSI bus

root@linux:~ # echo “- – -” > /sys/class/scsi_host/host0/scan

List the disks. It’s the last one

root@linux:~ # fdisk -l

Then I make a partition for the disk. The first time, when there is not a valid DOS partition I like to write and call fdisk again

root@linux:~ # fdisk /dev/sdf
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

The number of cylinders for this disk is set to 9137.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Running again and this time creating the partition

root@linux:~ # fdisk /dev/sdf

The number of cylinders for this disk is set to 9137.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-9137, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-9137, default 9137):
Using default value 9137

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Add the partition to LVM

root@linux:~ # pvcreate /dev/sdf1
Physical volume “/dev/sdf1” successfully created

Verify the file system size

root@linux:~ # df -h /usr/oradata/oradvt061t
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/softwarevg-dvt061lv
168G 133G 26G 84% /usr/oradata/oradvt061t

Add the disk to the volume group

root@linux:~ # vgextend softwarevg /dev/sdf1
Volume group “softwarevg” successfully extended

See the characteristics of the volume group

root@linux:~ # vgdisplay softwarevg
— Volume group —
VG Name softwarevg
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 4
Act PV 4
VG Size 385.98 GB
PE Size 4.00 MB
Total PE 98810
Alloc PE / Size 69376 / 271.00 GB
Free PE / Size 29434 / 114.98 GB
VG UUID 0BsKwN-18al-1TT8-gctq-fRK4-ccJl-fNXL6g

And the disk added

root@dsv080:~ # pvdisplay /dev/sdf1
— Physical volume —
PV Name /dev/sdf1
VG Name softwarevg
PV Size 69.99 GB / not usable 793.00 KB
Allocatable yes
PE Size (KByte) 4096
Total PE 17918
Free PE 17918
Allocated PE 0
PV UUID 21Q3wb-2tKn-xUdP-9ZBa-tqbp-vhvS-MhSbVt

Increase the logical volume using the new disk

root@linux:~ # lvextend -l +17918 /dev/softwarevg/dvt061lv
Extending logical volume dvt061lv to 239.99 GB
Logical volume dvt061lv successfully resized

Then resize the file system

root@linux:~ # ext2online /dev/softwarevg/dvt061lv
ext2online v1.1.18 – 2001/03/18 for EXT2FS 0.5b

Verify the file system size

root@linux:~ # df -h /usr/oradata/oradvt061t
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/softwarevg-dvt061lv
237G 133G 92G 60% /usr/oradata/oradvt061t

%d bloggers like this: