LVM: Difference between revisions

From Wildsong
Jump to navigationJump to search
Brian Wilson (talk | contribs)
mNo edit summary
Brian Wilson (talk | contribs)
mNo edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Rename a volume group ==
== Set up two thumb drives as one volume. (For Ray) ==
 
Find out where the drives are mounted using '''df'''
I can see that the system software is on /dev/sda1
 
Looks like you already started doing a few things because I can see
 
pvscan
  PV /dev/sdb1  VG 128flash1  lvm2 [116.37 GiB / 0    free]
  PV /dev/sdd1  VG 128flash1  lvm2 [116.37 GiB / 760.00 MiB free]
  Total: 2 [232.74 GiB] / in use: 2 [232.74 GiB] / in no VG: 0 [0  ]
 
shows me that the 2 flash drives have already been put in the volume group "128flash1"
and with
 
lvscan
  ACTIVE            '/dev/128flash1/Two128GB_as_One' [232.00 GiB] inherit
 
I can see there is a logical volume called "Two128GB_as_One"
and the logical volume is mounted at
/dev/mapper/128flash1-Two128GB_as_One on /media/256GB_as_One type ext4 (rw)
 
So I guess this section is "for Brian"! If there were nothing set up already
 
=== Recipe to set up two thumb drives as a single volume using LVM ===
 
1. Mark the drives are physical volumes to be used by LVM
 
pvcreate /dev/sdb1
pvcreate /dev/sdd1
 
2. Add the drives to a volume group, choose a name to identify the group (Ray used "128flash1")
 
vgcreate 128flash1 /dev/sdb1 /dev/sdd1
 
3. Create a logical volume; thats a lower case L in the option -l and 100%VG says "use all the space in the volume group"
 
lvcreate Two128GB_as_One -l100%VG 128flash1
 
4. Now you should be able to use it just like a single drive with
 
mkfs.ext4 /dev/128flash1/Two128GB_as_One
mkdir /data
mount /dev/128flash1/Two128GB_as_One /data
 
It looks like in your case the device mapper found it and put it at /media/Two128GB_as_One; that works too.
 
== Add a drive to an existing logical volume ==
 
'''I have not done this yet and can't test right now... TEST IT YOURSELF''' seems like you should be able to add a drive to the volume group
and then expand the file system to fill the larger drive?
 
Say you added /dev/sdg (and it is already partitioned), so make a new physical volume
 
pvcreate /dev/sdg1
 
then add it to the volume group
 
vgextend 128flash1 /dev/sdg1
 
then expand the logical volume (which no longer has a meaningful name!)
 
lvextend -l100%VG Two128GB_as_One
 
then resize the filesystem to fill the new space
 
resize2fs /dev/128flash1/Two128GB_as_One
 
== Recipe to examine system ==
 
For example, you know LVM is in use but don't know how it's set up.
 
root@debian:/mnt# '''pvscan'''
  PV /dev/md127  VG vg_mirror  lvm2 [1.82 TiB / 0    free]
  Total: 1 [1.82 TiB] / in use: 1 [1.82 TiB] / in no VG: 0 [0  ]
root@debian:/mnt# '''vgscan'''
  Reading all physical volumes.  This may take a while...
  Found volume group "vg_mirror" using metadata type lvm2
root@debian:/mnt# '''lvscan'''
  ACTIVE            '/dev/vg_mirror/lv_mirror' [1.82 TiB] inherit
 
mount /dev/vg_mirror/lv_mirror /mnt
 
== Recipe to rename a volume group ==


I have two disks (one is a 'dd' copy of the other) and so they have identical volume names '/dev/magnia'. How do I change one?
I have two disks (one is a 'dd' copy of the other) and so they have identical volume names '/dev/magnia'. How do I change one?
Line 15: Line 99:


Remove journal, turning the filesystem from ext3 to ext2
Remove journal, turning the filesystem from ext3 to ext2
tune2fs -O ^has_journal /dev/magniatmp/root
tune2fs -O ^has_journal /dev/magniatmp/root


Preen again:
Preen again:
e2fsck -f /dev/magniatmp/root
e2fsck -f /dev/magniatmp/root


Resize the filesystem:  
Resize the filesystem:  
resize2fs /dev/magniatmp/root 10000M
resize2fs /dev/magniatmp/root 10000M


Note the block count and size returned by resize command: 2560000 and 4k
Note the block count and size returned by resize command: 2560000 and 4k


There is also a swap space on this volume group, I can remove it for now and recreate it later. lvremove /dev/magniatmp/swap_1
There is also a swap space on this volume group, I can remove it for now and recreate it later.
lvremove /dev/magniatmp/swap_1


Figure out the new size
  bc 2560000*4
  bc 2560000*4
  10240000
  10240000
Resize the logical volume
  lvresize -L 10240000 /dev/magniatmp/root
  lvresize -L 10240000 /dev/magniatmp/root


Create new journal to convert back to ext3:
Create new journal to convert back to ext3:
tune2fs -j /dev/magniatmp/root
tune2fs -j /dev/magniatmp/root
 
Shrink the physical volume
pvresize --setphysicalvolumesize 19G /dev/sdb5


Shrink the logical volume
Delete the partitions and re-create them smaller.


Put the swap partition
fdisk /dev/sdb

Latest revision as of 03:23, 31 May 2014

Set up two thumb drives as one volume. (For Ray)

Find out where the drives are mounted using df I can see that the system software is on /dev/sda1

Looks like you already started doing a few things because I can see

pvscan
 PV /dev/sdb1   VG 128flash1   lvm2 [116.37 GiB / 0    free]
 PV /dev/sdd1   VG 128flash1   lvm2 [116.37 GiB / 760.00 MiB free]
 Total: 2 [232.74 GiB] / in use: 2 [232.74 GiB] / in no VG: 0 [0   ]

shows me that the 2 flash drives have already been put in the volume group "128flash1" and with

lvscan
  ACTIVE            '/dev/128flash1/Two128GB_as_One' [232.00 GiB] inherit

I can see there is a logical volume called "Two128GB_as_One" and the logical volume is mounted at

/dev/mapper/128flash1-Two128GB_as_One on /media/256GB_as_One type ext4 (rw)

So I guess this section is "for Brian"! If there were nothing set up already

Recipe to set up two thumb drives as a single volume using LVM

1. Mark the drives are physical volumes to be used by LVM

pvcreate /dev/sdb1
pvcreate /dev/sdd1

2. Add the drives to a volume group, choose a name to identify the group (Ray used "128flash1")

vgcreate 128flash1 /dev/sdb1 /dev/sdd1

3. Create a logical volume; thats a lower case L in the option -l and 100%VG says "use all the space in the volume group"

lvcreate Two128GB_as_One -l100%VG 128flash1

4. Now you should be able to use it just like a single drive with

mkfs.ext4 /dev/128flash1/Two128GB_as_One
mkdir /data
mount /dev/128flash1/Two128GB_as_One /data

It looks like in your case the device mapper found it and put it at /media/Two128GB_as_One; that works too.

Add a drive to an existing logical volume

I have not done this yet and can't test right now... TEST IT YOURSELF seems like you should be able to add a drive to the volume group and then expand the file system to fill the larger drive?

Say you added /dev/sdg (and it is already partitioned), so make a new physical volume

pvcreate /dev/sdg1

then add it to the volume group

vgextend 128flash1 /dev/sdg1

then expand the logical volume (which no longer has a meaningful name!)

lvextend -l100%VG Two128GB_as_One

then resize the filesystem to fill the new space

resize2fs /dev/128flash1/Two128GB_as_One

Recipe to examine system

For example, you know LVM is in use but don't know how it's set up.

root@debian:/mnt# pvscan
  PV /dev/md127   VG vg_mirror   lvm2 [1.82 TiB / 0    free]
  Total: 1 [1.82 TiB] / in use: 1 [1.82 TiB] / in no VG: 0 [0   ]
root@debian:/mnt# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg_mirror" using metadata type lvm2
root@debian:/mnt# lvscan
  ACTIVE            '/dev/vg_mirror/lv_mirror' [1.82 TiB] inherit
mount /dev/vg_mirror/lv_mirror /mnt

Recipe to rename a volume group

I have two disks (one is a 'dd' copy of the other) and so they have identical volume names '/dev/magnia'. How do I change one?

Short answer: It is impossible. Using the UUID does not work!

Long answer: you have to have only one drive hooked up, boot from a rescue disk, and do it there. This sucks.

How do I shrink everything to fit on a smaller hard drive?

Figure out what space you want to make the partition before you start.

Preen: fsck /dev/magniatmp/root

Remove journal, turning the filesystem from ext3 to ext2

tune2fs -O ^has_journal /dev/magniatmp/root

Preen again:

e2fsck -f /dev/magniatmp/root

Resize the filesystem:

resize2fs /dev/magniatmp/root 10000M

Note the block count and size returned by resize command: 2560000 and 4k

There is also a swap space on this volume group, I can remove it for now and recreate it later.

lvremove /dev/magniatmp/swap_1

Figure out the new size

bc 2560000*4
10240000

Resize the logical volume

lvresize -L 10240000 /dev/magniatmp/root

Create new journal to convert back to ext3:

tune2fs -j /dev/magniatmp/root

Shrink the physical volume

pvresize --setphysicalvolumesize 19G /dev/sdb5

Delete the partitions and re-create them smaller.

fdisk /dev/sdb