[linux-lvm] Misleading documentation (was: HDD Failure)

Fabien Jakimowicz fabien at jakimowicz.com
Wed Sep 20 11:27:23 UTC 2006

On Wed, 2006-09-20 at 03:22 +0000, Mark Krenz wrote:
>   Personally I like it when documentation is kept simple and uses simple
> examples.  There is nothing worse than when you are trying to learn
> something and it tells you how to how to intantiate a variable, and then
> it immediately goes on to show you how to make some complicated reference
> to it using some code.
>   I agree with you though, its probably a good idea to steer newcomers
> in the right direction on disk management and a few notes about doing
> LVM ontop of RAID being a good idea couldn't hurt.  This is especially
> so since I've heard three mentions of people using LVM on a server
> without doing RAID this week alone. :-/
We should add something in faq page
( http://tldp.org/HOWTO/LVM-HOWTO/lvm2faq.html ), like "i've lost one of
my hard drive and i can't mount my lv, did i lost everything ?" followed
by a quick explanation : lvm is NOT faulty tolerant like raid1/5, if you
lose a PV, you lose every LV which was (even partially) on on it.

Adding a recipe with raid can't kill us.

A. Setting up LVM over software RAID on four disks

For this recipe, the setup has four disks that will be put into two raid
arrays which will be used as PV.
The main goal of this configuration is to avoid any data loss if one of
the hard drives fails.


A.1.1 Preparing the disks

You must partition your disks and set partition type to Linux raid
autodetect (FD type), if your system can handle it. I recommand to make
only one partition per hard drive. You can use cfdisk to do it.

# cfdisk /dev/sda

If your drives are identicals, you can save time using sfdisk :

# sfdisk -d /dev/sda | sfdisk /dev/sdb
# sfdisk -d /dev/sda | sfdisk /dev/sdc
# sfdisk -d /dev/sda | sfdisk /dev/sdd

This will partition sdb, sdc and sdd using sda partition table scheme.

A.1.2 Creating arrays

You can check if your system can handle raid1 by typing the following :

# cat /proc/mdstat
Personalities : [raid1]

If not (file not found, no raid1 in list), then load raid1 module :

# modprobe raid1

You can now create raid arrays, assuming you have only one raid partiton
per drive :

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1

You should wait for the raid arrays to be fully synchronized, check it
with :

# cat /proc/mdstat


A.2.1 Create Physical Volumes

Run pvcreate on each raid array :

# pvcreate /dev/md0
# pvcreate /dev/md1

This creates a volume group descriptor area (VGDA) at the start of the
raid arrays.

A.2.2 Setup a Volume Group

# vgcreate my_volume_group /dev/md0 /dev/md1

You should now see something like that :

# vgdisplay
  --- Volume group ---
  VG Name               my_volume_group
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  37
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.18 TB
  PE Size               4.00 MB
  Total PE              310014
  Alloc PE / Size       0 / 0 TB
  Free  PE / Size       310014 / 1.18 TB
  VG UUID               LI3k9v-MnIA-lfY6-kdAB-nmpW-adjX-A5yKiF

You should check if 'VG Size' matchs your hard drive size (raid1 divide
available space by two, so if you have four 300Go hard drives, you will
have a ~600Go VG).

A.2.3 Create Logical Volumes

You can now create some LV on your VG :

# lvcreate -L10G -nmy_logical_volume my_volume_group
  Logical volume "my_logical_volume" created
# lvcreate -L42G -nmy_cool_lv my_volume_group
  Logical volume "my_cool_lv" created

A.2.4 Create the File System

Create an XFS file system on each logical volume :

# mkfs.xfs /dev/my_volume_group/my_logical_volume
meta-data=/dev/my_volume_group/my_logical_volume isize=256
agcount=16, agsize=163840 blks
         =                       sectsz=512  
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096  
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

# mkfs.xfs /dev/my_volume_group/my_cool_lv
meta-data=/dev/my_volume_group/my_cool_lv isize=256    agcount=16,
agsize=688128 blks
         =                       sectsz=512  
data     =                       bsize=4096   blocks=11010048,
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096  
log      =internal log           bsize=4096   blocks=5376, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

A.2.5 Test File System

Mount logical volumes and check if everything is fine :

# mkdir -p /mnt/{my_logical_volume,my_cool_lv}
# mount /dev/my_volume_group/my_logical_volume /mnt/my_logical_volume
# mount /dev/my_volume_group/my_cool_lv /mnt/my_cool_lv
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             1.9G   78M  1.8G   5% /
                       10G     0   10G   0% /mnt/my_logical_volume
                       42G     0   42G   0% /mnt/my_cool_lv

>   I suppose it could also be said that people who are causually doing
> LVM on their systems using something like a GUI are most likely not
> going to be referencing the man pages or LVM documentation until after
> their system is setup, at which point it is probably too late to put the
> physical volumes on a RAID array.  So I think its more the
> responsibility of the GUI/ncurses installer to alert you to be using
> Mark
> On Tue, Sep 19, 2006 at 10:40:43PM GMT, Scott Lamb [slamb at slamb.org] said the following:
> > On Sep 18, 2006, at 12:37 PM, Mark Krenz wrote:
> > >  LVM != RAID
> > >
> > >  You should have been doing RAID if you wanted to be able to  
> > >handle the
> > >failure of one drive.
> > 
> > This is my biggest beef with LVM - why doesn't *any* of the  
> > documentation point this out? There are very few good reasons to use  
> > LVM without RAID, and "ignorance" certainly isn't among them. I don't  
> > see any mention of RAID or disk failures in the manual pages or in  
> > the HOWTO.
> > 
> > For example, the recipes chapter [1] of the HOWTO shows a non-trivial  
> > setup with four volume groups split across seven physical drives.  
> > There's no mention of RAID. This is a ridiculously bad idea - if  
> > *any* of those seven drives are lost, at least one volume group will  
> > fail. In some cases, more than one. This document should be showing  
> > best practices, and it's instead showing how to throw away your data.
> > 
> > The "lvcreate" manual page is pretty bad, too. It mentions the  
> > ability to tune stripe size, which on casual read, might suggest that  
> > it uses real RAID. Instead, I think this is just RAID-0.
> > 
> > [1] - http://tldp.org/HOWTO/LVM-HOWTO/recipeadddisk.html
> > 
Fabien Jakimowicz <fabien at jakimowicz.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://listman.redhat.com/archives/linux-lvm/attachments/20060920/911200c7/attachment.sig>

More information about the linux-lvm mailing list