Penguin
Diff: HowToLVMHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToLVMHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Tuesday, October 26, 2004 10:08:58 am by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:06:55 am by perry Revert
@@ -1,1395 +1 @@
-  
-  
-  
-Logical Volume Manager HOWTO  
-  
-  
-  
-----  
-  
-!!!Logical Volume Manager HOWTO  
-  
-!!bert hubert <ahu@ds9a.nl>  
-Richard Allen <ra@ra.is>Version ..2 $Date: 2000/04/28 01:27:32 $  
-  
-  
-----  
-''A very hands-on HOWTO for Linux LVM''  
-----  
-  
-  
-  
-  
-!!1. Introduction  
-  
-  
-*1.1 Disclaimer & License  
-  
-*1.2 Prior knowledge  
-  
-*1.3 Housekeeping notes  
-  
-*1.4 Access, CVS & submitting updates  
-  
-*1.5 Layout of this document  
-  
-  
-  
-  
-  
-!!2. What is LVM?  
-  
-  
-  
-  
-!!3. Basic principles  
-  
-  
-*3.1 Show & Tell  
-  
-*3.2 Active and Inactive: kernel space and user space  
-  
-  
-  
-  
-  
-!!4. Prerequisites  
-  
-  
-*4.1 Kernel  
-  
-*4.2 Userspace  
-  
-  
-  
-  
-  
-!!5. Growing your filesystem  
-  
-  
-*5.1 With e2fsadm  
-  
-*5.2 Growing your Logical Volume  
-  
-*5.3 Growing your Volume Group  
-  
-*5.4 Growing your filesystem  
-  
-  
-  
-  
-  
-!!6. Replacing disks  
-  
-  
-*6.1 When it's too late  
-  
-  
-  
-  
-  
-!!7. Making snapshots for consistent backups  
-  
-  
-*7.1 How does it work?  
-  
-  
-  
-  
-  
-!!8. Redundancy & Performance  
-  
-  
-*8.1 Why stripe?  
-  
-*8.2 Why not  
-  
-*8.3 LVM native striping  
-  
-*8.4 Hardware RAID  
-  
-*8.5 Linux software RAID  
-  
-  
-  
-  
-  
-!!9. Cookbook  
-  
-  
-*9.1 Moving LVM disks between computers  
-  
-*9.2 Rebuilding /etc/lvmtab and /etc/lvmtab.d  
-  
-  
-  
-  
-  
-!!10. Further reading  
-  
-  
-  
-  
-!!11. Acknowledgements & Thanks to  
-----  
-  
-!!1. Introduction  
-  
-  
-Welcome, gentle reader.  
-  
-  
-This document is written to help enlighten you on what LVM is, how it works,  
-and how you can use it to make your life easier. While there is an LVM  
-FAQ, and even a German HOWTO, this document is written from a different  
-perspective. It is a true 'HOWTO' in that it is very hands-on, while also  
-imparting understanding (hopefully).  
-  
-  
-I should make it clear that I am not an author of the Linux Logical Volume  
-Manager. I have great respect for the people who are, and hope to be able to  
-cooperate with them.  
-  
-  
-It's even weirder, I don't even know the developers of LVM. I hope this will  
-change soon. I apologise in advance for stepping on peoples toes.  
-  
-!!1.1 Disclaimer & License  
-  
-  
-  
-This document is distributed in the hope that it will be useful,  
-but WITHOUT ANY WARRANTY; without even the implied warranty of  
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
-  
-  
-If your disks melt and your company fires you - it's never our fault. Sorry.  
-Make frequent backups and do your experiments on non-mission critical  
-systems.  
-  
-  
-Furthermore, Richard Allen does not speak for his employer.  
-  
-  
-Linux is a registered trademark of Linus Torvalds.  
-  
-!!1.2 Prior knowledge  
-  
-  
-  
-Not much. If you have ever installed Linux and made a filesystem  
-(fdisk/mkfs), you should be all set. As always when operating as root,  
-caution is advised. Incorrect commands or any operation on device files  
-may damage your existing data.  
-  
-  
-If you know how to configure HP/UX LVM you are almost done, Linux works  
-almost exactly like the HP implementation.  
-  
-!!1.3 Housekeeping notes  
-  
-  
-  
-There are several things which should be noted about this document. While I  
-wrote most of it, I really don't want it to stay that way. I am a strong  
-believer in Open Source, so I encourage you to send feedback, updates,  
-patches etcetera. Do not hesitate to inform us of typos or plain old errors.  
-  
-  
-If you feel to you are better qualified to maintain a section, or think that  
-you can author and maintain new sections, you are welcome to do so. The SGML  
-of this HOWTO is available via CVS. I envision this being a collaborative  
-project.  
-  
-  
-In aid of this, you will find lots of FIXME notices. Patches are always  
-welcome! Wherever you find a FIXME, you should know that you are treading  
-unknown territory. This is not to say that there are no errors elsewhere,  
-but be extra careful. If you have validated something, please let us know so  
-I can remove the FIXME notice.  
-  
-  
-  
-  
-!!1.4 Access, CVS & submitting updates  
-  
-  
-  
-The canonical location for the HOWTO is  
-http://www.ds9a.nl/lvm-howto/.  
-  
-  
-We now have anonymous CVS access available for the world at large. This  
-allows you to easily obtain the latest version of this HOWTO and to  
-provide your changes and enhancements.  
-  
-  
-If you want to grab a copy of the HOWTO via CVS, here is how to do so:  
-  
-  
-$ export CVSROOT=:pserver:anon@outpost.ds9a.nl:/var/cvsroot  
-$ cvs login  
-CVS password: [[enter 'cvs' (without 's) ]  
-$ cvs co lvm-howto  
-cvs server: Updating lvm-howto  
-U lvm-howto/lvm-howto.sgml  
-  
-  
-  
-  
-If you spot an error, or want to add something, just fix it locally, and run  
-"cvs diff -u", and send the result off to us.  
-  
-  
-A Makefile is supplied which should help you create postscript, dvi, pdf,  
-html and plain text. You may need to install sgml-tools, ghostscript and  
-tetex to get all formats.  
-  
-  
-  
-  
-!!1.5 Layout of this document  
-  
-  
-  
-We will initially be explaining some basic stuff which is needed to do  
-things. We do try however to include examples where this would aid  
-comprehension.  
-  
-  
-  
-----  
-  
-!!2. What is LVM?  
-  
-  
-Historically, a partition size is static. This requires a system installer  
-to have to consider not the question of "how much data will I store  
-on this partition", but rather "how much data will I *EVER* store on  
-this partition". When a user runs out of space on a partition, they  
-either have to re-partition (which may involve an entire operating  
-system reload) or use kludges such as symbolic links.  
-  
-  
-The notion that a partition was a sequential series of blocks on a  
-physical disc has since evolved. Most Unix-like systems now have  
-the ability to break up physical discs into some number of units.  
-Storage units from multiple drives can be pooled into a "logical  
-volume", where they can be allocated to partitions. Additionally,  
-units can be added or removed from partitions as space requirements  
-change.  
-  
-  
-This is the basis of a Logical Volume Manager (LVM).  
-  
-  
-For example, say that you have a 1GB disc and you create the "/home"  
-partition using 600MB. Imagine that you run out of space and decide  
-that you need 1GB in "/home". Using the old notion of partitions,  
-you'd have to have another drive at least 1GB in size. You could then  
-add the disc, create a new /home, and copy the existing data over.  
-  
-  
-However, with an LVM setup, you could simply add a 400MB (or larger)  
-disc, and add it's storage units to the "/home" partition. Other  
-tools allow you to resize an existing file-system, so you simply  
-resize it to take advantage of the larger partition size and you're  
-back in business.  
-  
-  
-As a very special treat, LVM can even make 'snapshots' of itself which  
-enable you to make backups of a non-moving target. We return to this  
-exciting possibility, which has lots of other real-world applications, later  
-on.  
-  
-  
-In the next section we explain the basics of LVM, and the multitude of  
-abstractions it uses.  
-  
-  
-  
-----  
-  
-!!3. Basic principles  
-  
-  
-Ok, don't let this scare you off, but LVM comes with a lot of jargon which  
-you should understand lest you endanger your filesystems.  
-  
-  
-We start at the bottom, more or less.  
-  
-  
-  
-  
-; __The physical media__:  
-  
-You should take the word 'physical' with a grain of salt, though we will  
-initially assume it to be a simple hard disk, or a partition. Examples,  
-/dev/hda, /dev/hda6, /dev/sda. You can turn any consecutive number of blocks  
-on a block device into a ...  
-; __Physical Volume (PV)__:  
-  
-A PV is nothing more than a physical medium with some administrative data  
-added to it - once you have added this, LVM will recognise it as a holder  
-of ...  
-; __Physical Extents (PE)__:  
-  
-Physical Extents are like really big blocks, often with a size of megabytes.  
-PEs can be assigned to a...  
-; __Volume Group__:  
-  
-A VG is made up of a number of Physical Extents (which may have come from  
-multiple Physical Volumes or hard drives). While it may be tempting to  
-think of a VG as being made up of several hard drives (/dev/hda and /dev/sda  
-for example), it's more accurate to say that it contains PEs which are provided  
-by these hard drives.  
-  
-  
->From this Volume Group, PEs can be assigned to a ...  
-; __Logical Volume (LV)__:  
-  
-Yes, we're finally getting somewhere. A Logical Volume is the end result of  
-our work, and it's there that we store our information. This is equivalent to  
-the historic idea of partitions.  
-  
-  
-As with a regular partition, on this Logical Volume you would typically build  
-a ...  
-; __Filesystem__:  
-  
-This filesystem is whatever you want it to be: the standard ext2,  
-ReiserFS, NWFS, XFS, JFX, NTFS, etc... To the linux kernel, there is  
-no difference between a regular partition and a Logical Volume.  
-  
-  
-  
-I've attempted some ASCII art which may help you visualise this.  
-  
-  
-  
-  
-A Physical Volume, containing Physical Extents:  
-+-----[[ Physical Volume ]------+  
-| PE | PE | PE | PE | PE | PE |  
-+------------------------------+  
-A Volume Group, containing 2 Physical Volumes (PVs) with 6 Physical Extents:  
-+------[[ Volume Group ]-----------------+  
-| +--[[PV]--------+ +--[[PV]---------+ |  
-| | PE | PE | PE | | PE | PE | PE | |  
-| +--------------+ +---------------+ |  
-+---------------------------------------+  
-We now further expand this:  
-+------[[ Volume Group ]-----------------+  
-| +--[[PV]--------+ +--[[PV]---------+ |  
-| | PE | PE | PE | | PE | PE | PE | |  
-| +--+---+---+---+ +-+----+----+---+ |  
-| | | | +-----/ | | |  
-| | | | | | | |  
-| +-+---+---+-+ +----+----+--+ |  
-| | Logical | | Logical | |  
-| | Volume | | Volume | |  
-| | | | | |  
-| | /home | | /var | |  
-| +-----------+ +------------+ |  
-+---------------------------------------+  
-  
-  
-  
-This shows us two filesystems, spanning two disks. The /home filesystem  
-contains 4 Physical Extents, the /var filesystem 2.  
-  
-  
-bert hubert is writing  
-a tool to  
-represent LVM more visually, a  
-screenshot is provided. Looks better  
-than the ASCII art.  
-  
-  
-  
-  
-!!3.1 Show & Tell  
-  
-  
-  
-Ok, this stuff is hard to assimilate ('We are LVM of Borg...'), so here is a  
-very annotated example of creating a Logical Volume. Do NOT paste this  
-example onto your console because you WILL destroy data, unless it happens  
-that on your computer /dev/hda3 and /dev/hdb2 aren't used.  
-  
-  
-When in doubt, view the ASCIIgram above.  
-  
-  
-You should first set the partition types of /dev/hda3 and /dev/hdb2 to 0x8e,  
-which is 'Linux LVM'. Please note that your version of fdisk may not yet know  
-this type, so it will be listed as 'Unknown':  
-  
-  
-  
-  
-  
-  
-  
-  
-# fdisk /dev/hda  
-Command (m for help): p  
-Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders  
-Units = cylinders of 16065 * 512 bytes  
-Device Boot Start End Blocks Id System  
-/dev/hda1 1 2 16033+ 83 Linux  
-/dev/hda2 3 600 4803435 83 Linux  
-/dev/hda3 601 607 56227+ 83 Linux  
-/dev/hda4 608 614 56227+ 83 Linux  
-Command (m for help): t  
-Partition number (1-4): 3  
-Hex code (type L to list codes): 8e  
-Command (m for help): p  
-Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders  
-Units = cylinders of 16065 * 512 bytes  
-Device Boot Start End Blocks Id System  
-/dev/hda1 1 2 16033+ 83 Linux  
-/dev/hda2 3 600 4803435 83 Linux  
-/dev/hda3 601 607 56227+ 8e Unknown  
-/dev/hda4 608 614 56227+ 83 Linux  
-Command (m for help): w  
-  
-  
-  
-  
-We do the same for /dev/hdb2, but we don't display it here. This is needed  
-so that LVM is able to reconstruct things should you lose your  
-configuration.  
-  
-  
-Now, this shouldn't be necessary, but some computers require a reboot at  
-this point. So if the following examples don't work, try rebooting.  
-  
-  
-We then create our Physical Volumes, like this:  
-  
-  
-# pvcreate /dev/hda3  
-pvcreate -- physical volume "/dev/hda3" successfully created  
-# pvcreate /dev/hdb2  
-pvcreate -- physical volume "/dev/hdb2" successfully created  
-  
-  
-  
-  
-We than add these two PVs to a Volume Group called 'test':  
-  
-  
-# vgcreate test /dev/hdb2 /dev/hda3  
-vgcreate -- INFO: using default physical extent size 4 MB  
-vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte  
-vgcreate -- doing automatic backup of volume group "test"  
-vgcreate -- volume group "test" successfully created and activated  
-  
-  
-  
-  
-So we now have an empty Volume Group, let's examine it a bit:  
-  
-  
-  
-  
-  
-# vgdisplay -v test  
---- Volume group ---  
-VG Name test  
-VG Access read/write  
-VG Status available/resizable  
-VG #  
-MAX LV 256  
-Cur LV  
-Open LV  
-MAX LV Size 255.99 GB  
-Max PV 256  
-Cur PV 2  
-Act PV 2  
-VG Size 184 MB  
-PE Size 4 MB  
-Total PE 46  
-Alloc PE / Size 0 /  
-Free PE / Size 46 / 184 MB  
---- No logical volumes defined in test ---  
---- Physical volumes ---  
-PV Name (#) /dev/hda3 (2)  
-PV Status available / allocatable  
-Total PE / Free PE 13 / 13  
-PV Name (#) /dev/hdb2 (1)  
-PV Status available / allocatable  
-Total PE / Free PE 33 / 33  
-  
-  
-Lots of data here - most of it should be understandable by now. We see that  
-there are no Logical Volumes defined, so we should work to remedy that. We  
-try to generate a 50 megabyte volume called 'HOWTO' in the Volume  
-Group 'test':  
-  
-  
-  
-  
-  
-# lvcreate -L 50M -n HOWTO test  
-lvcreate -- rounding up size to physical extent boundary "52 MB"  
-lvcreate -- doing automatic backup of "test"  
-lvcreate -- logical volume "/dev/test/HOWTO" successfully created  
-  
-  
-  
-  
-Ok, we're nearly there, let's make a filesystem:  
-  
-  
-  
-  
-  
-# mke2fs /dev/test/HOWTO  
-mke2fs 1.18, 11-Nov-1999 for EXT2 FS .5b, 95/08/09  
-Filesystem label=  
-OS type: Linux  
-Block size=1024 (log=)  
-Fragment size=1024 (log=)  
-13328 inodes, 53248 blocks  
-2662 blocks (5.00%) reserved for the super user  
-First data block=1  
-7 block groups  
-8192 blocks per group, 8192 fragments per group  
-1904 inodes per group  
-Superblock backups stored on blocks:  
-8193, 24577, 40961  
-Writing inode tables: done  
-Writing superblocks and filesystem accounting information: done  
-# mount /dev/test/HOWTO /mnt  
-# ls /mnt  
-lost+found  
-  
-  
-  
-  
-And we're done! Let's review our Volume Group, because it should be filled  
-up a bit by now:  
-  
-  
-  
-  
-  
-# vgdisplay test -v  
---- Volume group ---  
-VG Name test  
-VG Access read/write  
-VG Status available/resizable  
-VG #  
-MAX LV 256  
-Cur LV 1  
-Open LV 1  
-MAX LV Size 255.99 GB  
-Max PV 256  
-Cur PV 2  
-Act PV 2  
-VG Size 184 MB  
-PE Size 4 MB  
-Total PE 46  
-Alloc PE / Size 13 / 52 MB  
-Free PE / Size 33 / 132 MB  
---- Logical volume ---  
-LV Name /dev/test/HOWTO  
-VG Name test  
-LV Write Access read/write  
-LV Status available  
-LV # 1  
-# open 1  
-LV Size 52 MB  
-Current LE 13  
-Allocated LE 13  
-Allocation next free  
-Read ahead sectors 120  
-Block device 58:  
---- Physical volumes ---  
-PV Name (#) /dev/hda3 (2)  
-PV Status available / allocatable  
-Total PE / Free PE 13 / 13  
-PV Name (#) /dev/hdb2 (1)  
-PV Status available / allocatable  
-Total PE / Free PE 33 / 20  
-  
-  
-  
-  
-Well, it is. /dev/hda3 is completely unused, but /dev/hdb2 has 13 Physical  
-Extents in use.  
-  
-!!3.2 Active and Inactive: kernel space and user space  
-  
-  
-  
-As with all decent operating systems, Linux is divided in two parts: kernel  
-space and user space. Userspace is sometimes called userland, which would  
-also be a good name for a theme park, 'Userland'.  
-  
-  
-Discovery, creation and modification of things pertaining to Logical Volume  
-Management is done in user space, and then communicated to the kernel. Once  
-a volume group or logical volume is reported to the kernel, it is  
-called 'Active'. Certain changes can only be performed when an entity is  
-active, others only when it is not.  
-  
-  
-  
-----  
-  
-!!4. Prerequisites  
-  
-  
-There is a wide range of kernels where LVM is available on. In Linux 2.4,  
-LVM will be fully integrated. From kernel 2.3.47 and onwards, LVM is in the  
-process of being merged into the main kernel.  
-  
-  
-  
-  
-!!4.1 Kernel  
-  
-  
-!Linux 2.4  
-  
-  
-Will contain everything you need. It is expected that most distributions  
-will release with LVM included as a module. If you need to compile, just  
-tick off the LVM option when selecting your block devices.  
-  
-!Linux 2.3.99.*  
-  
-  
-Once things have calmed down on the kernel development front, this section  
-will vanish. For now, the gory details.  
-  
-  
-As we write this, Linux 2.3.99pre5 is current and it still needs a very tiny  
-patch to get LVM working.  
-  
-  
-For Linux 2.3.99pre3, two patches were released:  
-  
-  
-The patch was posted on linux-kernel, and is available  
-here.  
-  
-  
-Andrea Arcangeli improved on that patch, and supplied  
-an incremental patch,  
-which should be applied on top of the 2.3.99pre3 LVM patch above.  
-  
-  
-For Linux 2.3.99pre5, bert hubert rolled these two patches into one and  
-ported it to 2.3.99pre5.  
-Patch. Use with care.  
-  
-  
-2.3.99pre6-1, yes, a prerelease of a prepatch, features for the first time  
-complete LVM support! It stil misses Andreas patch but we have been assured  
-that it is in the queue to be released real soon.  
-  
-  
-2.3.99pre4-ac1 has the tiny LVM patch in by default, and working. It does  
-not contain Andreas patch though.  
-  
-  
-  
-  
-!Linux 2.2  
-  
-  
-FIXME: write this  
-  
-!Linux 2.3  
-  
-  
-FIXME: write this  
-  
-!!4.2 Userspace  
-  
-  
-  
-You need the tools available from the  
-LVM site. Compiling them on glibc2.1 systems requires  
-a tiny patch, and even then gives errors on Debian 2.2.  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!5. Growing your filesystem  
-  
-  
-You can do this with a provided script which does a lot of work for you, or  
-you can do it by hand if needed.  
-  
-!!5.1 With e2fsadm  
-  
-  
-  
-If there is room within your volume group, and you use the ext2 filesystem  
-(most people do), you can use this handy tool.  
-  
-  
-The e2fsadm command uses the commercial resize2fs tool. While  
-people feel that this is good software, it is not very widely installed.  
-  
-  
-If you want to use the FSF's ext2resize command, you need to inform  
-e2fsadm of this:  
-  
-  
-  
-  
-  
-# export E2FSADM_RESIZE_CMD=ext2resize  
-# export E2FSADM_RESIZE_OPTS=""  
-  
-  
-  
-  
-The rest is easy, e2fsadm is a lot like the other LVM commands:  
-  
-  
-  
-  
-  
-# e2fsadm /dev/test/HOWTO -L+50M  
-e2fsadm -- correcting size 102 MB to physical extent boundary 104 MB  
-e2fsck 1.18, 11-Nov-1999 for EXT2 FS .5b, 95/08/09  
-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/test/HOWTO: 11/25688 files (.% non-contiguous), 3263/102400 blocks  
-lvextend -- extending logical volume "/dev/test/howto" to 104 MB  
-lvextend -- doing automatic backup of volume group "test"  
-lvextend -- logical volume "/dev/test/HOWTO" successfully extended  
-ext2_resize_fs  
-ext2_grow_fs  
-ext2_block_relocate  
-ext2_block_relocate_grow  
-ext2_grow_group  
-ext2_add_group  
-ext2_add_group  
-ext2_add_group  
-ext2_add_group  
-ext2_add_group  
-ext2_add_group  
-direct hits 4096 indirect hits 0 misses 1  
-e2fsadm -- ext2fs in logical volume "/dev/test/HOWTO" successfully extended to 104 MB  
-  
-  
-  
-  
-  
-  
-!!5.2 Growing your Logical Volume  
-  
-  
-  
-The e2fsadm command takes care of this for you. However, it may be  
-useful to understand how to do this manually:  
-  
-  
-If you have room within your Volume Group, this is a one liner:  
-  
-  
-# lvextend -L+12M /dev/test/HOWTO  
-lvextend -- rounding size to physical extent boundary  
-lvextend -- extending logical volume "/dev/test/HOWTO" to 116 MB  
-lvextend -- doing automatic backup of volume group "test"  
-lvextend -- logical volume "/dev/test/HOWTO" successfully extended  
-  
-  
-  
-  
-  
-  
-!!5.3 Growing your Volume Group  
-  
-  
-  
-This is done with the vgextend utility, and is easy as pie. You first need  
-to create a physical volume. This is done with the pvcreate  
-utility. With this tool, you convert any block device into a physical  
-volume.  
-  
-  
-After that is done, vgextend does the rest:  
-  
-  
-# pvcreate /dev/sda1  
-pvcreate -- physical volume "/dev/sda1" successfully created  
-# vgextend webgroup /dev/sda1  
-vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte  
-vgextend -- doing automatic backup of volume group "webgroup"  
-vgextend -- volume group "webgroup" successfully extended  
-  
-  
-  
-  
-Please note that in order to do this, your Volume Group needs to be  
-active. You can make it by executing 'vgchange -a y webgroup'.  
-  
-  
-  
-  
-!!5.4 Growing your filesystem  
-  
-  
-  
-If you want to do this manually, there are a couple of ways to do this.  
-  
-!ext2 off-line with ext2resize  
-  
-  
-By off-line, we mean that you have to unmount the file-system to make  
-these changes. The file-system and it's data will be unavailable while  
-doing this. Note this means you must use other boot media if extending  
-the size of the root or other important partitions.  
-  
-  
-The ext2resize tool is available on the GNU ftp size, but most distributions  
-carry it as a package. The syntax is very straightforward:  
-  
-  
-# ext2resize /dev/HOWTO/small 40000  
-  
-  
-Where 40000 is the number of blocks the filesystem should have after growing  
-or shrinking.  
-  
-  
-  
-  
-!ext2 on-line  
-  
-  
-FIXME: write this  
-  
-  
-  
-----  
-  
-!!6. Replacing disks  
-  
-  
-This is one of the benefits of LVM. Once you start seeing errors  
-on a disk, it is high time to move your data. With LVM this is easy as pie.  
-We first do the obvious replacement example where you add a disk to the  
-system that's at least as large as the one you want to replace.  
-  
-  
-To move data, we move Physical Extents of a Volume Group to another disk, or  
-more precisely, to another Physical Volume. For this, LVM offers us the  
-pvmove utility.  
-  
-  
-Let's say that our suspicious disk is called /dev/hda1 and we want to replace  
-it by /dev/sdb3. We first add /dev/sdb3 to the Volume Group that contains  
-/dev/hda1.  
-  
-  
-It appears advisable to unmount any filesystems on this Volume Group before  
-doing this. Having a full backup might not hurt either.  
-  
-  
-FIXME: is this necessary?  
-  
-  
-We then execute pvmove. In its simplest invocation, we  
-just mention the disk we want to remove, like this:  
-  
-  
-  
-  
-  
-# pvmove /dev/hda1  
-pvmove -- moving physical extents in active volume group "test1"  
-pvmove -- WARNING: moving of active logical volumes may cause data loss!  
-pvmove -- do you want to continue? [[y/n] y  
-pvmove -- doing automatic backup of volume group "test1"  
-pvmove -- 12 extents of physical volume "/dev/hda1" successfully moved  
-  
-  
-  
-  
-Please heed this warning. Also, it appears that at least some kernels or LVM  
-versions have trouble with this command. I tested it with 2.3.99pre6-2, and  
-it works, but be warned.  
-  
-  
-Now that /dev/hda1 contains no Physical Extents anymore, we can reduce it  
-from the Volume Group:  
-  
-  
-  
-  
-  
-# vgreduce test1 /dev/hda1  
-vgreduce -- doing automatic backup of volume group "test1"  
-vgreduce -- volume group "test1" successfully reduced by physical volume:  
-vgreduce -- /dev/hda1  
-  
-  
-  
-  
-FIXME: we need clarity on a few things. Should the volume group be active?  
-When do we get data loss?  
-  
-  
-  
-  
-!!6.1 When it's too late  
-  
-  
-  
-If a disk fails without warning and you are unable to move the Physical Extents  
-off it to a different Physical Volume you will have lost data unless the  
-Logical Volumes on the PV that failed was mirrored. The correct course of  
-action is to replace the failed PV with an identical one or at least a  
-partition of the same size.  
-  
-  
-The directory /etc/lvmconf contains backups  
-of the LVM data and structures that make the disks into Physical Volumes and  
-list which Volume Groups that PV belongs to and what Logical Volumes are  
-in the Volume Group.  
-  
-  
-After replacing the faulty disk you can use the  
-vgcfgrestore command to recover the LVM data to the new PV. This  
-restores the Volume Group and all it's info, but it does not restore the  
-data that was in the Logical Volumes. This is why most LVM commands make  
-backups automatically of the LVM data when doing changes.  
-  
-  
-  
-----  
-  
-!!7. Making snapshots for consistent backups  
-  
-  
-This is one of the more incredible possibilities. Let's say you have a busy  
-server, with lots of things happening. For a useful backup, you need to shut  
-down a large number of programs because otherwise you end up with inconsistencies.  
-  
-  
-The canonical example is moving a file from /tmp to /root, where /root was  
-being backed up first. When /root was read, the file wasn't there yet. By  
-the time /tmp was backed up, the file was gone.  
-  
-  
-Another story goes for saving databases or directories. We have no clue if a  
-file is in any usable state unless we give the application time to do a  
-clean shutdown.  
-  
-  
-Which is where another problem pops up. We shut down out applications, make  
-our backup, and restart them again. This is all fine as long as the backup  
-only takes a few minutes, but gets to be real painful if it takes hours, or  
-if you're not even sure how long it takes.  
-  
-  
-LVM to the rescue.  
-  
-  
-With LVM we can make a snapshot picture of a Logical Volume which is  
-instantaneous, and then mount that and make a backup of it.  
-  
-  
-Let's try this out:  
-  
-  
-  
-  
-  
-# mount /dev/test/HOWTO /mnt  
-# echo > /mnt/a.test.file  
-# ls /mnt/  
-a.test.file lost+found  
-# ls -l /mnt/  
-total 13  
--rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file  
-drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found  
-  
-  
-  
-  
-Ok, we now have something to work with. Let's make the snapshot:  
-  
-  
-  
-  
-  
-# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO  
-lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed  
-lvcreate -- INFO: using default snapshot chunk size of 64 KB  
-lvcreate -- doing automatic backup of "test"  
-lvcreate -- logical volume "/dev/test/HOWTO" successfully created  
-  
-  
-  
-  
-More on the '--size' parameter later. Let's mount the snapshot:  
-  
-  
-  
-  
-  
-# mount /dev/test/snap /snap  
-# ls /snap  
-total 13  
--rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file  
-drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found  
-  
-  
-Now we erase a.test.file from the original, and check if it's still there in  
-the snapshot:  
-  
-  
-# rm /mnt/a.test.file  
-# ls /snap  
-total 13  
--rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file  
-drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found  
-  
-  
-  
-  
-Amazing Mike!  
-  
-!!7.1 How does it work?  
-  
-  
-  
-Remember that we had to set the '--size' parameter? What really happens  
-is that the 'snap' volume needs to have a copy of all blocks or 'chunks' as  
-LVM calls them, which are changed in the original.  
-  
-  
-When we erased a.test.file, it's inode was removed. This caused 64 KB to be  
-marked as 'dirty' - and a copy of the original data was written to the  
-'snap' volume. In this case we allocated 16MB for the snapshot, so if more  
-than 16MB of "chunks" are modified, the snapshot will be deactivated.  
-  
-  
-To determine the correct size for a snapshot partition, you will have to  
-guess based on usage patterns of the primary LV, and the amount of time  
-the snapshot will be active. For example, an hour-long backup in the  
-middle of the night when nobody is using the system may require  
-very little space.  
-  
-  
-Please note that snapshots are not persistent. If you unload LVM or reboot,  
-they are gone, and need to be recreated.  
-  
-  
-  
-----  
-  
-!!8. Redundancy & Performance  
-  
-  
-For performance reasons, it is possible to spread data in a 'stripe' over  
-multiple disks. This means that block 1 is on Physical Volume A, and block 2  
-is on PV B, while block 3 may be on PV A again. You can also stripe over  
-more than 2 disks.  
-  
-  
-This arrangement means that your have more disk bandwidth available. It also  
-means that more 'spindles' are involved. More on this later.  
-  
-  
-Besides increasing performance, it is also possible to have your data in  
-copies on multiple disks. This is called mirroring. Currently, LVM does not  
-support this natively but there are ways to achieve this.  
-  
-  
-  
-  
-!!8.1 Why stripe?  
-  
-  
-  
-Disk performance is influenced by three things, at least. The most obvious  
-is the speed at which data on a disk can be read or written sequentially.  
-This is the limiting factor when reading or writing a large file on a  
-SCSI/IDE bus with only a single disk on it.  
-  
-  
-Then there is the bandwidth available TO the disk. If you have 7 disks on a  
-SCSI bus, this may well be less than the writing speed of your disk itself.  
-If you spend enough money, you can prevent this bottleneck from being a  
-problem.  
-  
-  
-Then there is the latency. As the saying goes, latency is always bad news.  
-And even worse, you can't spend more money to get lower latency! Most disks  
-these days appear to have a latency somewhere around 7ms. Then there is the  
-SCSI latency, which used to be something like 25ms.  
-  
-  
-FIXME: need recent numbers!  
-  
-  
-What does this mean? The combined latency would be around 30ms in a typical  
-case. You can therefore perform only around 33 disk operations per second.  
-If you want to be able to do many thousands of queries per second, and you  
-don't have a massive cache, you are very much out of luck.  
-  
-  
-If you have multiple disks, or 'spindles', working in parallel, you can have  
-multiple commands being performed concurrently, which nicely circumvents  
-your latency problem. Some applications, like a huge news server, don't even  
-work anymore without striping or other IO smartness.  
-  
-  
-This is what striping does. And, if your bus is up to it, even sequential  
-reading and writing may go faster.  
-  
-!!8.2 Why not  
-  
-  
-  
-Striping without further measures raises your fault chance, on a 'per bit'  
-basis. If any of your disks dies, your entire Logical Volume is gone. If you  
-just concatenate data, only part of your filesystem is gone.  
-  
-  
-The ultimate option is the mirrored stripe.  
-  
-  
-FIXME: make a mirrored stripe with LVM and md  
-  
-!!8.3 LVM native striping  
-  
-  
-  
-Specifying stripe configuration is done when creating the Logical Volume  
-with lvcreate. There are two relevant parameters. With -i we tell LVM how  
-many Physical Volumes it should use to scatter on. Striping is not really  
-done on a bit-by-bit basis, but on blocks. With -I we can specify the  
-granulation in kilobytes. Note that this must be a power of 2, and that the  
-coarsest granulation is 128Kbyte.  
-  
-  
-Example:  
-  
-  
-# lvcreate -n stripedlv -i 2 -I 64 mygroup -L 20M  
-lvcreate -- rounding 20480 KB to stripe boundary size 24576 KB / 6 PE  
-lvcreate -- doing automatic backup of "mygroup"  
-lvcreate -- logical volume "/dev/mygroup/stripedlv" successfully created  
-  
-  
-  
-  
-  
-  
-!Performance notices  
-  
-  
-The performance 'gain' may well be very negative if you stripe over 2 partitions  
-of the same disk - take care to prevent that. Striping with two disks on a  
-single IDE bus also appears useless - unless IDE has improved beyond what I  
-remember.  
-  
-  
-FIXME: is this still true?  
-  
-  
-Older motherboards may have two IDE buses, but the second one used to be  
-castrated, dedicated to serving a slow cdrom drive. You can perform  
-benchmarks with several tools, the most noteworthy being 'Bonnie'. The  
-ReiserFS people have released  
-Bonnie++ which may be used to measure  
-performance data.  
-  
-  
-  
-  
-!!8.4 Hardware RAID  
-  
-  
-  
-Many high end Intel x86 servers have Hardware RAID controlers. Most of  
-them have atleast 2 independant SCSI channels. Fortunatly, his has very  
-little bearing on LVM. Before Linux can see anything on such a controler  
-the administrator must define a Logical drive within the raid controler  
-itself. As an example [[s]he could choose to stripe together two disks on  
-SCSI channel A and then mirror them onto two disks on channel B. This  
-is a typical RAID /1 configuration that maximises performance and  
-data security. When Linux boots on a machine with this configuration  
-it can only 'see' one disk on the RAID controler and that is the  
-Logical drive that contains the four disks in the RAID /1 stripeset.  
-This means, as far as LVM is concerned, that there is just one disk  
-in the machine and it is to be used as such. If one of the disks  
-fails, LVM wont even know. When the administrator replaces the disk  
-(even on the fly with !HotSwap hardware) LVM wont know about that  
-either and the controler will resync the mirrored data and all will  
-be well.  
-This is where most people take a step back and ask "Then what good  
-does LVM do for me with this RAID controler?"  
-The easy answer is, in most cases, after you define a logical  
-drive in the RAID controler you cant add more disks to that drive  
-later. So if you miscalculate the space requirements or you  
-simply need more space you cant add a new disk or set of disks  
-into a pre-exsisting stripeset. This means you must create a new  
-RAID stripset in the controler and then with LVM you can simply  
-extend the LVM Logical volume so that it seamlessly spans both  
-stripesets in the RAID controler.  
-  
-  
-FIXME: Is there more needed on this subject ?  
-  
-  
-  
-  
-!!8.5 Linux software RAID  
-  
-  
-  
-Linux 2.4 comes with very good RAID in place. Linux 2.2 by default, as  
-released by Alan Cox, features an earlier RAID version that's not well  
-regarded. The reason that 2.2 still features this earlier release is the the  
-kernel people don't want to make changes within a stable version that  
-require userland updates.  
-  
-  
-Most people, which included Red Hat, Mandrake and SuSE, chose to replace it  
-with the .90 version which appears to be excellent.  
-  
-  
-We will only treat the .90 version here.  
-  
-  
-FIXME: write more of this  
-  
-  
-  
-----  
-  
-!!9. Cookbook  
-  
-  
-  
-  
-!!9.1 Moving LVM disks between computers  
-  
-  
-  
-With all this new technology, simple tasks like moving disks from one machine  
-to another can get a bit tricky. Before LVM users only had to put the disk  
-into the new machine and mount the filesystems. With LVM there is a bit more  
-to it. The LVM structures are saved both on the disks and in the /etc/lvmconf  
-directory so the only thing that has to be done to move a disk or a set of  
-disks that contain a Volume Group is to make sure the machine that the  
-VG belonged to will not miss it. That is accomplished with the vgexport  
-command. vgexport simply removes the structures for the VG from  
-/etc/lvmconf, but does not change anything on the disks. Once the disks are  
-in the new machine (they don't have to have the same ID's) the only thing  
-that has to be done is to update /etc/lvmconf. Thats done with vgimport.  
-  
-  
-Example:  
-  
-  
-On machine #1:  
-  
-  
-vgchange -a n vg01  
-vgexport vg01  
-  
-  
-On machine #2:  
-  
-  
-vgimport vg01 /dev/sda1 /dev/sdb1  
-vgchange -a y vg01  
-  
-  
-  
-  
-Notice that you don't have to use the same name for the Volume Group. If the  
-vgimport command did not save a configuration backup use vgcfgbackup  
-to do it.  
-  
-  
-  
-  
-!!9.2 Rebuilding /etc/lvmtab and /etc/lvmtab.d  
-  
-  
-  
-  
-  
-  
-FIXME: write about more neat stuff  
-  
-  
-  
-----  
-  
-!!10. Further reading  
-  
-  
-  
-  
-; __  
-LVM site__:  
-  
-The main LVM resource available  
-; __  
-German LVM HOWTO__:  
-  
-If you can read German, this already contains a lot of information  
-; __  
-Translation of the German HOWTO__:  
-  
-Peter.Wuestefeld@resnova.de is translating the German HOWTO into English. It  
-appears that they will soon be investing lots of time in it. If you doubt  
-our HOWTO or miss something, please try their effort.  
-; __  
-HP/UX Managing Disks Guide__:  
-  
-Since the Linux LVM is almost an exact workalike of the HP/UX  
-implementation, their documentation is very useful to us as well. Very good  
-stuff.  
-  
-  
-  
-  
-----  
-  
-!!11. Acknowledgements & Thanks to  
-  
-  
-We try to list everybody here who helped make this HOWTO. This includes  
-people who send in updates, fixes or contributions, but also people who  
-have aided our understanding of the subject.  
-  
-  
-* Axel Boldt <axel@uni-paderborn.de>  
-*  
-  
-* Sean Reifschneider <jafo@tummy.com>  
-*  
-  
-* Alexander Talos <at@atat.at>  
-*  
-  
-* Eric Maryniak <e.maryniak@pobox .com>  
-*  
-  
-----  
+Describe [HowToLVMHOWTO ] here.