tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[GSOC 2008] update: lvm project

Hash: SHA1

hi folks,

Current NetBSD lvm status:

a) device-mapper driver status
I have implemented new proplib ioctl interface. With this new interface
I have been able to drop dm-ioctl.h header file(GPL2 licensed file), from

My driver is in current state able to create/remove logical volumes wtih lvm2tools.

b) lvm2tools and libdevmapper

I have ported these two linux software packages to NetSBSD. In libdevmapper, I have added two files libdm_netbsd.c and libdm-nbsd-iface.c. libdm_netbsd.c file translate linux struct dm-ioctl to proplib dictionary and back. In current state
lvm2tools and libdevmapper can manipulate logical volumes.

My current was committed to NetBSD cvs repository. I have created my own branch
haad-dm where I have tagged sys/ and external/ directories.

You can update your source to haad-dm with these commands

cd /usr/src

cvs up -dfP -r haad-dm sys/ external/

Add 'pseudo-device dm' to kernel config. Build new kernel. Build tools in external/gpl2 and install them. With lvm2tools and libdevmapper installed you can manipulate logical volumes.

How to manage lvm witl linux lvm tools short introducition.

More information can be found here [1], [2], [3].

Before you can create a logical-volume you have to mark you physical disk space as LVM
useable this is done with pvcreate utility.

lvm pvcreate /dev/rsd1a /dev/rsd0a etc..

When you have created Physical volumes you can add them to Volume Group.
For Volume Group creation there is vgcreate command.

lvm vgcreate {volume_group_name} [physical_volumes_paths /dev/rsd1a]

other volume group commands:
lvm vgextend

Logical volumes belongs to Volume Groups and can use only disk space available in their Volume group(adding new physical-volume to volume group is easy). For logical volume creating there is lvcreate command. It needs some parameters to create Logical Volume -n [name] -L[size] and Volume-group to which LV belongs.

lvcreate -L1G -n [Logical volume name] {volume_group_name}

After successful lvcreate run there should be /dev/{volume_group_name}/ [Logical volume name] device created. There should be 2 devices raw/block. Because of lacking support for disklabel
info ioctls, newfs have to be run with parameters -F and -s.

newfs -F -s [size] /dev/{volume_group_name}/r[Logical volume name]

mount /dev/{volume_group_name}/[Logical volume name] /mnt

and you can use it.

After reboot vgchange -a y command will read and enable all Logical volumes in system.
It must be run before you try to mount them!

I have created and uploaded NetBSD -current install CD for i386 with lvm and device-mapper
enabled GENERIC kernel. You can found this iso here [4].

My future plans:

a) I want to look at snapshot device-mapper target
b) Possible integration of our existing code to device-mapper.
(use code from raidframe to get mirror, stripe targets done, or call/ compile
raidframe source to device-mapper).
c) testing, testing and testing.




Version: GnuPG v1.4.7 (Darwin)


Home | Main Index | Thread Index | Old Index