lvm partition on lv
Warning: This may be insane.
I like the flexibility of LVM and try to use it wherever it's feasible.
In this case, I'd like a Xen guest OS to have control over it's LV's.
The method I usually see for using LVM with Xen is to create an LV and
a filesystem on it. I would like to instead create an LV and partition it with an LVM partition and maybe other partition types. Just to test this I did the following:
1. lvcreate -L 100M -name test vg1
2. cfdisk /dev/vg1/test
3. create LVM partition on entire device
4. pvcreate /dev/vg1/test
5. vgcreate vg2 /dev/vg1/test
6. vgchange -ay /dev/vg2
7. lvcreate -L 50M -n testlv vg2
8. mkfs.ext3 /dev/vg2/testlv
9. mkdir /mnt/test
10. mount /dev/vg2/testlv /mnt/test
And it worked! Cool!
Let's say on /dev/vg1/test I had one LVM partition and one ext3 partition. How can I access those separate partitions since it's only one device (/dev/vg1/test)? Normally, a partitioned block device (/dev/hda) would show up like /dev/hda1, dev/hda2, etc.
In the example above, I'm partitioning the LV and using the partition on the same system, which is useless. What I will be doing is giving the disk image /dev/vg1/test to a Xen guest so it can have it's own VG and LVs. Are there potential problems I should look out for and/or tweaking I should do to make this work optimally?
Randall
Quoted 4 lines · Randall Smith
Let's say on
/dev/vg1/testI had one LVM partition and one ext3 partition. How can I access those separate partitions since it's only one device (/dev/vg1/test)? Normally, a partitioned block device (/dev/hda) would show up like/dev/hda1, dev/hda2, etc.
With loop-device, you can use only part of the block-device as new block-device (See options -o and -s in man:losetup)
So if you know the positions where the partitions start, and their lengths (both in bytes), you could do something like this: (I havn't tested this, so there might be some errors in these commands. But the basic idea should work)
# make LVM partition available at /dev/loop1 losetup -o $lvm_start -s $lvm_size /dev/loop1 /dev/vg1/test mkdir /mnt/test # Mount ext3-partition at /mnt/test using loop-device mount -t ext3 -o offset=$ext3_start,sizelimit=$ext3_length /dev/vg1/test /mnt/test
Signature · 1 line
Markus Laire
Quoted 14 lines · Markus Laire
Quoted 4 lines · Randall Smith
Let's say on
/dev/vg1/testI had one LVM partition and one ext3 partition. How can I access those separate partitions since it's only one device (/dev/vg1/test)? Normally, a partitioned block device (/dev/hda) would show up like/dev/hda1, dev/hda2, etc.With loop-device, you can use only part of the block-device as new block-device (See options -o and -s in man:losetup)
So if you know the positions where the partitions start, and their lengths (both in bytes), you could do something like this: (I havn't tested this, so there might be some errors in these commands. But the basic idea should work)
Quoted 6 lines
# make LVM partition available at /dev/loop1 losetup -o $lvm_start -s $lvm_size /dev/loop1 /dev/vg1/test mkdir /mnt/test # Mount ext3-partition at /mnt/test using loop-device mount -t ext3 -o offset=$ext3_start,sizelimit=$ext3_length /dev/vg1/test /mnt/test
Well, last command is missing at least "loop" option - i.e. it should be
mount -t ext3 -o loop,offset=$ext3_start,sizelimit=$ext3_length /dev/vg1/test /mnt/test
or you could use these instead
losetup -o $ext3_start -s $ext3_length /dev/loop2 /dev/vg1/test mount -t ext3 /dev/loop2 /mnt/test
I hope I didn't make other mistakes...
($lvm_size and $ext3_length both means the size of the partition in bytes - I should've used 'size' or 'length' for both for consistency)
Signature · 1 line
Markus Laire
Quoted 29 lines · Markus Laire
Quoted 14 lines · Markus Laire
Quoted 4 lines · Randall Smith
Let's say on
/dev/vg1/testI had one LVM partition and one ext3 partition. How can I access those separate partitions since it's only one device (/dev/vg1/test)? Normally, a partitioned block device (/dev/hda) would show up like/dev/hda1, dev/hda2, etc.With loop-device, you can use only part of the block-device as new block-device (See options -o and -s in man:losetup)
So if you know the positions where the partitions start, and their lengths (both in bytes), you could do something like this: (I havn't tested this, so there might be some errors in these commands. But the basic idea should work)
Quoted 6 lines
# make LVM partition available at /dev/loop1 losetup -o $lvm_start -s $lvm_size /dev/loop1 /dev/vg1/test mkdir /mnt/test # Mount ext3-partition at /mnt/test using loop-device mount -t ext3 -o offset=$ext3_start,sizelimit=$ext3_length /dev/vg1/test /mnt/testWell, last command is missing at least "loop" option - i.e. it should be
mount -t ext3 -o loop,offset=$ext3_start,sizelimit=$ext3_length
/dev/vg1/test/mnt/test
Quoted 9 lines
or you could use these instead
losetup -o $ext3_start -s $ext3_length/dev/loop2/dev/vg1/testmount -t ext3/dev/loop2/mnt/testI hope I didn't make other mistakes...
($lvm_size and $ext3_length both means the size of the partition in bytes - I should've used 'size' or 'length' for both for consistency)
Thanks. That's perfect.
Working with Unix is so much fun. It always seems that anything is possible as long as I'm willing to learn something new.
Randall
Quoted 18 lines · Randall Smith
Warning: This may be insane.
I like the flexibility of LVM and try to use it wherever it's feasible.
In this case, I'd like a Xen guest OS to have control over it's LV's.
The method I usually see for using LVM with Xen is to create an LV and
a filesystem on it. I would like to instead create an LV and partition it with an LVM partition and maybe other partition types. Just to test this I did the following:1. lvcreate -L 100M -name test vg1
2. cfdisk/dev/vg1/test
3. create LVM partition on entire device
4. pvcreate/dev/vg1/test
5. vgcreate vg2/dev/vg1/test
6. vgchange -ay/dev/vg2
7. lvcreate -L 50M -n testlv vg2
8. mkfs.ext3/dev/vg2/testlv
9. mkdir/mnt/test
10. mount/dev/vg2/testlv/mnt/test
Quoted 6 lines
And it worked! Cool!
Let's say on
/dev/vg1/testI had one LVM partition and one ext3 partition. How can I access those separate partitions since it's only one device (/dev/vg1/test)? Normally, a partitioned block device (/dev/hda) would show up like/dev/hda1, dev/hda2, etc.In the example above, I'm partitioning the LV and using the partition on the same system, which is useless. What I will be doing is giving the disk image
/dev/vg1/testto a Xen guest so it can have it's own VG and LVs. Are there potential problems I should look out for and/or tweaking I should do to make this work optimally?
/dev/vg1/test is used as a disk for the Xen guest OS. The guest then recognizes vg2 on /dev/vg1/test. By default, the host will also recognize and activate vg2. Is there a problem with this and should I somehow configure the host not to activate vg2? I know this may be confusing, but it's very useful. I actually have it working now with several LVs on vg2. So I've got PV->VG->LV->PV->VG-(LVs).
Randall