【转】Linux中的LVM

转自:http://www.cnblogs.com/net2012/p/3365904.html

逻辑卷管理器,通过将另外一个硬盘上的分区加到已有文件系统,来动态地向已有文件系统添加空间的方法。

逻辑卷管理的核心是处理安装在系统上的硬盘分区。在逻辑卷管理的世界里,硬盘称作物理卷(Physical Volume,PV).每个物理卷都会映射到硬盘上创建的某一个物理分区。

多个物理卷元素集中在一起可以组成一个卷组(Volume Group,VG)。逻辑卷管理系统会把卷组当做物理硬盘一样对待,但事实上卷组可能是由分布多个物理硬盘上的多个物理分区组成的。卷组提供了一个创建逻辑分区的平台,而这些逻辑分区事实上包含了文件系统。

整个结构中的最后一层是逻辑卷(Logic Volume,LV)。逻辑卷为Linux提供了创建文件系统的分区环境,作用类似于到目前为止我们一直在探讨的Linux中的物理硬盘。Linux系统将逻辑卷当做物理分区对待。可以使用任意一种标准Linux文件系统来格式化逻辑卷,然后再将它在某个挂载点添加进入Linux虚拟目录中。

一.创建LINUX LVM

1、定义物理卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[root@TP-CW-TS-DB-01 ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): t
Partition number (1-6): 8e
Value out of range.
Partition number (1-6): quit
Partition number (1-6): ^C
[root@TP-CW-TS-DB-01 ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): t
Partition number (1-6): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 4
Hex code (type L to list codes): 8e
You cannot change a partition into an extended one or vice versa
Delete it first.
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@TP-CW-TS-DB-01 ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): p
Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc82dffc2
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          30      240943+  8e  Linux LVM
/dev/sdb2              31        2642    20980890   8e  Linux LVM
/dev/sdb3            2643        3948    10490445   8e  Linux LVM
/dev/sdb4            3949        6560    20980890    5  Extended
/dev/sdb5            3949        5254    10490413+  8e  Linux LVM
/dev/sdb6            5255        6560    10490413+  8e  Linux LVM

用来sdb的6个分区转换成Linux LVM分区,8e分区类型表示这个分区将会被用做Linux LVM系统的一部分,而不是一个直接的文件系统,

2、创建PV

1
2
3
4
5
6
7
8
9
10
[root@TP-CW-TS-DB-01 ~]# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created
[root@TP-CW-TS-DB-01 ~]# pvcreate /dev/sdb6
  Physical volume "/dev/sdb6" successfully created
[root@TP-CW-TS-DB-01 ~]# pvs
  /dev/drbd0: open failed: Wrong medium type
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a-   67.88g     0
  /dev/sdb5           lvm2 a-   10.00g 10.00g
  /dev/sdb6           lvm2 a-   10.00g 10.00g

3.创建VGS

1
2
3
4
5
6
7
8
9
10
[root@TP-CW-TS-DB-01 ~]# vgcreate onlinevg /dev/sdb5
  Volume group "onlinevg" successfully created
[root@TP-CW-TS-DB-01 ~]# vgcreate onlinevg /dev/sdb6
  A volume group called onlinevg already exists.
[root@TP-CW-TS-DB-01 ~]# vgcreate onlinevg /dev/sdb{5,6}
  Volume group "onlinevg" successfully created
[root@TP-CW-TS-DB-01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   3   0 wz--n- 67.88g     0
  onlinevg   2   0   0 wz--n- 20.00g 20.00g

4、创建LV

1
2
3
4
5
6
7
8
[root@TP-CW-TS-DB-01 ~]# lvcreate -L 5G -n mylv onlinevg
  Logical volume "mylv" created
[root@TP-CW-TS-DB-01 ~]# lvs
  LV      VG       Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  lv_home VolGroup -wi-ao 17.81g                                
  lv_root VolGroup -wi-ao 32.36g                                
  lv_swap VolGroup -wi-ao 17.70g                                
  mylv    onlinevg -wi-a-  5.00g

逻辑卷的设备文件:/dev/VG_NAME/LV_NAME

1
2
3
4
[root@TP-CW-TS-DB-01 ~]# ls /dev/onlinevg/mylv
/dev/onlinevg/mylv
[root@TP-CW-TS-DB-01 ~]# ls -l /dev/onlinevg/mylv
lrwxrwxrwx. 1 root root 7 Oct 12 16:21 /dev/onlinevg/mylv -> ../dm-3

5、格式化LV

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mke2fs -t ext4 /dev/onlinevg/mylv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done                       
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

6、挂载分区

1
2
3
4
5
6
7
8
9
10
11
[root@TP-CW-TS-DB-01 ~]# mount /dev/onlinevg/mylv /mnt/
[root@TP-CW-TS-DB-01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       32G  3.7G   27G  13% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             485M   49M  411M  11% /boot
/dev/mapper/VolGroup-lv_home
                       18G  172M   17G   2% /home
/dev/mapper/onlinevg-mylv
                      5.0G  138M  4.6G   3% /mnt

二、扩展VG

1、首先在创建一个PV

1
2
[root@TP-CW-TS-DB-01 mnt]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created

2、通过vgcreatend命令扩展VG

1
2
3
4
5
6
7
8
9
10
11
12
[root@TP-CW-TS-DB-01 mnt]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   3   0 wz--n- 67.88g     0
  onlinevg   2   1   0 wz--n- 20.00g 15.00g
[root@TP-CW-TS-DB-01 mnt]# vgextend onlinevg /dev/sdb
sdb   sdb1  sdb2  sdb3  sdb4  sdb5  sdb6
[root@TP-CW-TS-DB-01 mnt]# vgextend onlinevg /dev/sdb3
  Volume group "onlinevg" successfully extended
[root@TP-CW-TS-DB-01 mnt]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   3   0 wz--n- 67.88g     0
  onlinevg   3   1   0 wz--n- 30.00g 25.00g

通过命令查看onlinevg扩展到了30G

1
2
3
4
5
6
[root@TP-CW-TS-DB-01 mnt]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a-   67.88g     0
  /dev/sdb3  onlinevg lvm2 a-   10.00g 10.00g
  /dev/sdb5  onlinevg lvm2 a-   10.00g  5.00g
  /dev/sdb6  onlinevg lvm2 a-   10.00g 10.00g

三、缩减VG

1、确定要移除的PV(/dev/sdb5)

2、利用pvmove将/dev/sdb5中的数据移到物理卷上

1
2
pvmove /dev/sdb5
/dev/sdb5:Mover:100.0%

3、从卷组中将缩减vg

1
2
3
4
5
6
[root@TP-CW-TS-DB-01 ~]# vgreduce onlinevg /dev/sdb5
  Removed "/dev/sdb5" from volume group "onlinevg"
[root@TP-CW-TS-DB-01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   3   0 wz--n- 67.88g     0
  onlinevg   2   1   0 wz--n- 20.00g 15.00g

4、删除/dev/sdb5

1
2
[root@TP-CW-TS-DB-01 ~]# pvremove /dev/sdb5
  Labels on physical volume "/dev/sdb5" successfully wiped

四、扩展逻辑卷

1、扩展物理边界

1
2
3
[root@TP-CW-TS-DB-01 ~]# lvextend -L +3G /dev/onlinevg/mylv
  Extending logical volume mylv to 8.00 GiB
  Logical volume mylv successfully resized

注意:这个是候文件系统挂载的/mnt大小不会有任何变化

2、扩展逻辑边界

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@TP-CW-TS-DB-01 ~]# resize2fs /dev/onlinevg/mylv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/onlinevg/mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/onlinevg/mylv to 2097152 (4k) blocks.
The filesystem on /dev/onlinevg/mylv is now 2097152 blocks long.
[root@TP-CW-TS-DB-01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       32G  3.7G   27G  13% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             485M   49M  411M  11% /boot
/dev/mapper/VolGroup-lv_home
                       18G  172M   17G   2% /home
/dev/mapper/onlinevg-mylv
                      7.9G  140M  7.4G   2% /mnt

五、缩减逻辑卷

1、卸载并强行检测文件系统:

umount /mnt

1
2
3
4
5
6
7
8
[root@TP-CW-TS-DB-01 ~]# e2fsck -f /dev/onlinevg/mylv
e2fsck 1.41.12 (17-May-2010)
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/onlinevg/mylv: 12/524288 files (0.0% non-contiguous), 68564/2097152 blocks

2、缩减逻辑边界

1
2
3
4
[root@TP-CW-TS-DB-01 ~]# resize2fs /dev/onlinevg/mylv 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/onlinevg/mylv to 786432 (4k) blocks.
The filesystem on /dev/onlinevg/mylv is now 786432 blocks long.

3、缩减物理边界

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@TP-CW-TS-DB-01 ~]# lvreduce -L 3G /dev/onlinevg/mylv
  WARNING: Reducing active logical volume to 3.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
  Reducing logical volume mylv to 3.00 GiB
  Logical volume mylv successfully resized
[root@TP-CW-TS-DB-01 ~]# mount /dev/onlinevg/mylv /mnt
[root@TP-CW-TS-DB-01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       32G  3.7G   27G  13% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             485M   49M  411M  11% /boot
/dev/mapper/VolGroup-lv_home
                       18G  172M   17G   2% /home
/dev/mapper/onlinevg-mylv
                      3.0G  136M  2.7G   5% /mnt

六、创建快照卷

lvcreate

-s:快照卷:

-p r:只读

-n:定义快照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@TP-CW-TS-DB-01 dev]# lvcreate -L 100M -s -p r -n mylv-snap /dev/onlinevg/mylv
 [root@TP-CW-TS-DB-01 dev]# mount -o ro /dev/onlinevg/mylv-snap /media
[root@TP-CW-TS-DB-01 dev]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       32G  3.7G   27G  13% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             485M   49M  411M  11% /boot
/dev/mapper/VolGroup-lv_home
                       18G  172M   17G   2% /home
/dev/mapper/onlinevg-mylv
                      3.0G  136M  2.7G   5% /mnt
/dev/mapper/onlinevg-mylv--snap
                      3.0G  136M  2.7G   5% /media
原文地址:https://www.cnblogs.com/Andy-Lv/p/5332819.html