目录
简介
逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图所示。它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元。LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。
我giao,好家伙这一大长串的看一遍也看不明白,反正只要记住它的优势:可以很方便的扩展自己的空间就ok了。
基本术语
- 物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
-
物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
-
卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
-
逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
-
物理块(Physical Extent,PE)
PE是物理卷PV的基本划分单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
-
逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
PV、VG、LV三者关系
注:年轻人不讲武德,这里盗个图哈哈
LVM的优点
这玩意优势还真蛮多哩,简简单单的总结几条,耗子尾汁!
- 使用卷组,可以让多个硬盘空间组合成一个大的硬盘;
- 使用逻辑卷,可以跨多个硬盘空间的分区,sdb sdc sdf;
- 使用逻辑卷的时候,可以自由的调节它的大小;
- 可以在线对LV,VG,进行创建和删除,调整大小等操作;
- 允许创建快照,可以用来保存文件系统的备份。
创建LVM的基本步骤
LVM常用命令
查看命令:
创建使用LVM逻辑卷
我giao,一开始我以为做LVM是要先把原有所有的分区转成LVM格式,自己研究了半天也没搞定,结果从官方那得到了结果,原来Centos7以上默认就做了lvm,自己在扩容即可。沃腻吗这linux官方不讲武德啊。这里建议大家没事多看看官方文档。
1)添加一块硬盘(我用的是本地虚机)
2)创建两个分区
[root@hya ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 18G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk ##刚加入的新硬盘
sr0 11:0 1 8.8G 0 rom
[root@hya ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xdef043ce 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (41945088-83886079,默认为 41945088):
将使用默认值 41945088
Last 扇区, +扇区 or +size{K,M,G} (41945088-83886079,默认为 83886079):
将使用默认值 83886079
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3)查看已分的区
[root@hya ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 20 14:46 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 20 14:46 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 20 14:46 /dev/sdb2
4)设定分区号代码
[root@hya ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):1
Hex 代码(输入 L 列出所有代码):l
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
5)创建PV
[root@hya ~]# pvcreate /dev/sdb{1,2}
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
[root@hya ~]#
6)查看物理卷信息
[root@hya ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID RAi9EP-MkJB-GIzU-z1OB-UObV-Al2u-XMdRAB
7)创建VG卷组
语法: vgcreate vg名字 pv的名字 可以跟多个pv
[root@hya ~]# vgcreate vg-01 /dev/sdb1
Volume group "vg-01" successfully created
[root@hya ~]# vgcreate vg-02 /dev/sdb2
Volume group "vg-02" successfully created
[root@hya ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 4.00m
vg-01 1 0 0 wz--n- <20.00g <20.00g
vg-02 1 0 0 wz--n- <20.00g <20.00g
[root@hya ~]# vgdisplay vg-01
--- Volume group ---
VG Name vg-01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <20.00 GiB
PE Size 4.00 MiB
Total PE 5119
Alloc PE / Size 0 / 0
Free PE / Size 5119 / <20.00 GiB
VG UUID JBObHy-ulpP-eO74-pHXc-neV8-gPa7-61MKcI
8)创建LV
lvcreate -n 指定新逻辑卷的名称 -L指定lv大小的SIZE(M,G) (-l:小l 指定LE的数量) vgname
[root@hya ~]# lvcreate -n lv-01 -l 10G vg-01
Invalid argument for --extents: 10G
Error during parsing of command line.
[root@hya ~]# lvcreate -n lv-01 -L 10G vg-01
Logical volume "lv-01" created.
[root@hya ~]# lvcreate -n lv-02 -l 9G vg-01
Invalid argument for --extents: 9G
Error during parsing of command line.
[root@hya ~]# lvcreate -n lv-02 -L 9G vg-01
Logical volume "lv-02" created.
[root@hya ~]# lvcreate -n lv-01 -l 10G vg-02
Invalid argument for --extents: 10G
Error during parsing of command line.
[root@hya ~]# lvcreate -n lv-01 -L 10G vg-02
Logical volume "lv-01" created.
[root@hya ~]# lvcreate -n lv-02 -l 9G vg-02
Invalid argument for --extents: 9G
Error during parsing of command line.
[root@hya ~]# lvcreate -n lv-02 -L 9G vg-02
Logical volume "lv-02" created.
[root@hya ~]# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg-01
PV Size 20.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 255
Allocated PE 4864 #已经使用了4864个PE
PV UUID RAi9EP-MkJB-GIzU-z1OB-UObV-Al2u-XMdRAB
[root@hya ~]# vgdisplay vg-01
--- Volume group ---
VG Name vg-01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <20.00 GiB
PE Size 4.00 MiB
Total PE 5119
Alloc PE / Size 4864 / 19.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID JBObHy-ulpP-eO74-pHXc-neV8-gPa7-61MKcI
[root@hya ~]# lsblk #目前的一个状况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 18G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
├─sdb1 8:17 0 20G 0 part
│ ├─vg--01-lv--01 253:2 0 10G 0 lvm
│ └─vg--01-lv--02 253:3 0 9G 0 lvm
└─sdb2 8:18 0 20G 0 part
├─vg--02-lv--01 253:4 0 10G 0 lvm
└─vg--02-lv--02 253:5 0 9G 0 lvm
sr0 11:0 1 8.8G 0 rom
9)格式化与挂载
[root@hya ~]# mkfs.xfs /dev/vg-01/lv-01
[root@hya ~]# mkfs.xfs /dev/vg-01/lv-02
[root@hya ~]# mkfs.xfs /dev/vg-02/lv-01
[root@hya ~]# mkfs.xfs /dev/vg-02/lv-02
[root@hya ~]# mount /dev/vg-01/lv-01 /backup/ 挂载即可
[root@hya ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 18G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
├─sdb1 8:17 0 20G 0 part
│ ├─vg--01-lv--01 253:2 0 10G 0 lvm /backup
│ └─vg--01-lv--02 253:3 0 9G 0 lvm
└─sdb2 8:18 0 20G 0 part
├─vg--02-lv--01 253:4 0 10G 0 lvm
└─vg--02-lv--02 253:5 0 9G 0 lvm
sr0 11:0 1 8.8G 0 rom
LV扩容
1)扩容前确认是否有可扩容空间,空间是从vg创建的
[root@hya ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 4.00m
vg-01 1 2 0 wz--n- <20.00g 1020.00m
vg-02 1 2 0 wz--n- <20.00g 1020.00m
2)扩容逻辑卷
[root@hya ~]# lvextend -L +20M /dev/vg-01/lv-01
Size of logical volume vg-01/lv-01 changed from 10.00 GiB (2560 extents) to <10.02 GiB (2565 extents).
Logical volume vg-01/lv-01 successfully resized.
[root@hya ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 17.99g
swap centos -wi-ao---- 1.00g
lv-01 vg-01 -wi-ao---- <10.02g
lv-02 vg-01 -wi-a----- 9.00g
lv-01 vg-02 -wi-a----- 10.00g
lv-02 vg-02 -wi-a----- 9.00g
[root@hya ~]# df -Th /backup/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg--01-lv--01 xfs 10G 33M 10G 1% /backup
[root@hya ~]# xfs_growfs /dev/vg-01/lv-01
meta-data=/dev/mapper/vg--01-lv--01 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621440 to 2626560
[root@hya ~]# df -Th /backup/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg--01-lv--01 xfs 11G 33M 10G 1% /backup
3)VG扩容
##这里我的硬盘没空间了,只把命令写上
[root@hya ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 4.00m
vg-01 1 2 0 wz--n- <20.00g 1000.00m
vg-02 1 2 0 wz--n- <20.00g 1020.00m
[root@hya ~]# pvcreate /dev/设备名称
[root@hya ~]# vgextend vg-01 /dev/设备名称
[root@hya ~]# vgs 查看
小结一下
这命令也太多了吧,搞的我刚做的时候懵懵的,只要搞清楚VG、LV、PV三者的区别完全OK的。