LVM HOWTO
Prev | Chapter 13. Recipes | Next

# 13.3. Add a new disk to a multi-disk SCSI system

## 13.3.1. Current situation

A data centre machine has 6 disks attached as follows:

    # pvscan
    pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 44 MB free]
    pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sde1" of VG "ops"   [996 MB / 52 MB free]
    pvscan -- ACTIVE   PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free]
    pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ops"   [996 MB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sdf2" of VG "dev"   [996 MB / 72 MB free]
    pvscan -- total: 8 [11.72 GB] / in use: 8 [11.72 GB] / in no VG: 0 [0]

    # df
    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/dev/cvs           1342492    516468    757828  41% /mnt/dev/cvs
    /dev/dev/users         2064208   2060036      4172 100% /mnt/dev/users
    /dev/dev/build         1548144   1023041    525103  66% /mnt/dev/build
    /dev/ops/databases     2890692   2302417    588275  79% /mnt/ops/databases
    /dev/sales/users       2064208    871214   1192994  42% /mnt/sales/users
    /dev/ops/batch         1032088    897122    134966  86% /mnt/ops/batch

As you can see the "dev" and "ops" groups are getting full so a new disk is purchased and added to the system. It becomes `/dev/sdg`.

## 13.3.2. Prepare the disk partitions

The new disk is to be shared equally between ops and dev so it is partitioned into two physical volumes /dev/sdg1 and /dev/sdg2 :

    # fdisk /dev/sdg

    Device contains neither a valid DOS partition table, nor Sun or SGI
    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.

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

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

    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 8e
    Changed system type of partition 1 to 8e (Unknown)

    Command (m for help): t
    Partition number (1-4): 2
    Hex code (type L to list codes): 8e
    Changed system type of partition 2 to 8e (Unknown)

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

    Calling ioctl() to re-read partition table.

    WARNING: If you have created or modified any DOS 6.x partitions,
    please see the fdisk manual page for additional information.

Next physical volumes are created on this partition:

    # pvcreate /dev/sdg1
    pvcreate -- physical volume "/dev/sdg1" successfully created

    # pvcreate /dev/sdg2
    pvcreate -- physical volume "/dev/sdg2" successfully created

## 13.3.3. Add the new disks to the volume groups

The volumes are then added to the dev and ops volume groups:

    # vgextend ops /dev/sdg1
    vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
    vgextend -- doing automatic backup of volume group "ops"
    vgextend -- volume group "ops" successfully extended

    # vgextend dev /dev/sdg2
    vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
    vgextend -- doing automatic backup of volume group "dev"
    vgextend -- volume group "dev" successfully extended

    # pvscan
    pvscan -- reading all physical volumes (this may take a while...)
    pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 44 MB free]
    pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sde1" of VG "ops"   [996 MB / 52 MB free]
    pvscan -- ACTIVE   PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free]
    pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ops"   [996 MB / 0 free]
    pvscan -- ACTIVE   PV "/dev/sdf2" of VG "dev"   [996 MB / 72 MB free]
    pvscan -- ACTIVE   PV "/dev/sdg1" of VG "ops"   [996 MB / 996 MB free]
    pvscan -- ACTIVE   PV "/dev/sdg2" of VG "dev"   [996 MB / 996 MB free]
    pvscan -- total: 10 [13.67 GB] / in use: 10 [13.67 GB] / in no VG: 0 [0]

## 13.3.4. Extend the file systems

The next thing to do is to extend the file systems so that the users can make use of the extra space.

There are tools to allow online-resizing of ext2 file systems but here we take the safe route and unmount the two file systems before resizing them:

    # umount /mnt/ops/batch
    # umount /mnt/dev/users

We then use the e2fsadm command to resize the logical volume and the ext2 file system on one operation. We are using ext2resize instead of resize2fs (which is the default command for e2fsadm) so we define the environment variable E2FSADM_RESIZE_CMD to tell e2fsadm to use that command.

    # export E2FSADM_RESIZE_CMD=ext2resize
    # e2fsadm /dev/ops/batch -L+500M
    e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.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/ops/batch: 11/131072 files (0.0<!--  non-contiguous), 4127/262144 blocks
    lvextend -- extending logical volume "/dev/ops/batch" to 1.49 GB
    lvextend -- doing automatic backup of volume group "ops"
    lvextend -- logical volume "/dev/ops/batch" successfully extended

    ext2resize v1.1.15 - 2000/08/08 for EXT2FS 0.5b
    e2fsadm -- ext2fs in logical volume "/dev/ops/batch" successfully extended to 1.49 GB

    # e2fsadm /dev/dev/users -L+900M
    e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.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/dev/users: 12/262144 files (0.0% non-contiguous), 275245/524288 blocks
    lvextend -- extending logical volume "/dev/dev/users" to 2.88 GB
    lvextend -- doing automatic backup of volume group "dev"
    lvextend -- logical volume "/dev/dev/users" successfully extended

    ext2resize v1.1.15 - 2000/08/08 for EXT2FS 0.5b
    e2fsadm -- ext2fs in logical volume "/dev/dev/users" successfully extended to 2.88 GB

## 13.3.5. Remount the extended volumes

We can now remount the file systems and see that the is plenty of space.

    # mount /dev/ops/batch
    # mount /dev/dev/users
    # df
    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/dev/cvs           1342492    516468    757828  41% /mnt/dev/cvs
    /dev/dev/users         2969360   2060036    909324  69% /mnt/dev/users
    /dev/dev/build         1548144   1023041    525103  66% /mnt/dev/build
    /dev/ops/databases     2890692   2302417    588275  79% /mnt/ops/databases
    /dev/sales/users       2064208    871214   1192994  42% /mnt/sales/users
    /dev/ops/batch         1535856    897122    638734  58% /mnt/ops/batch

Prev | Home | Next
Setting up LVM on three SCSI disks with striping | Up | Taking a Backup Using Snapshots