LVM(逻辑卷管理)
一、LVM概念
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
二、LVM术语
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
VG(Volumne Group)-卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组
PE(Physical Extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(Logical Extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
如下图所示PV、VG、LV三者关系:
三、常用命令
PV:Physical(物理卷)
pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan
VG:Volume Group(卷组)
vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent、vgscan
LV:logical Volume(逻辑卷)
lvcreate、lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename
四、环境准备
1、虚拟机新增两块磁盘
ESXI线添加虚拟磁盘,fdisk -l没发现,一般情况下重启服务器就可以。但是不能影响业务,为什么新增磁盘或磁盘扩容后,Linux系统识别不到呢?因为连接存储设备的SCSI总线需要重新扫描,才能识别到这些新的存储设备
[root@Node1 ~]# ls /sys/class/scsi_host/ //确定主机总线SCSI总线号
host0 host1 host2
[root@Node1 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan //重新扫描 SCSI总线添加磁盘
[root@Node1 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@Node1 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
[root@Node1 ~]# fdisk -l | grep "^Disk /dev" //检查硬盘是否在线
Disk /dev/sda: 53.7 GB, bytes, sectors
Disk /dev/sdb: 21.5 GB, bytes, sectors
Disk /dev/sdc: 32.2 GB, bytes, sectors
[root@Node1 ~]#
2、用fidsk分别对/dev/sdb与/dev/sdc进行分区
[root@Node1 ~]# fdisk /dev/sdb //对/dev/sdb进行分区
Welcome to fdisk (util-linux 2.23.) Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xafcc8a41. Command (m for help): n
Partition type:
p primary ( primary, extended, free)
e extended
Select (default p): p //主分区
Partition number (-, default ):
First sector (-, default ):
Using default value
Last sector, +sectors or +size{K,M,G} (-, default ): +10G
Partition of type Linux and of size GiB is set Command (m for help): t
Selected partition
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): n
Partition type:
p primary ( primary, extended, free)
e extended
Select (default p): p
Partition number (-, default ):
First sector (-, default ):
Using default value
Last sector, +sectors or +size{K,M,G} (-, default ):
Using default value
Partition of type Linux and of size GiB is set Command (m for help): t
Partition number (,, default ):
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.
3、partprobe让内核重新识别分区表
[root@Node1 ~]#partprobe /dev/sd{b,c}
[root@Node1 ~]# partx -a /dev/sdc
[root@Node1 ~]# partx -s /dev/sdc
[root@Node1 ~]# cat /proc/partitions //查看分区信息表
major minor #blocks name sda
sda1
sda2
sda3
sda4
sda5
sda6
sda7
sdb
sdb1
sdb2
sdc
sdc1
sdc5
sdc6
sr0
[root@Node1 ~]# ls /dev/sdb* //查看/dev/sdb分区情况
/dev/sdb /dev/sdb1 /dev/sdb2
[root@Node1 ~]# ls /dev/sdc* //查看/dev/sdc分区情况
/dev/sdc /dev/sdc1 /dev/sdc5 /dev/sdc6
4、验证磁盘分区结果
[root@Node1 ~]# fdisk -l | grep "LVM$"
/dev/sdb1 8e Linux LVM
/dev/sdb2 8e Linux LVM
/dev/sdc5 8e Linux LVM
/dev/sdc6 8e Linux LVM
四、LVM常用操作命令
1、安装LVM
[root@Node1 ~]# cat /etc/system-release //查看系统版本
CentOS Linux release 7.6. (Core)
[root@Node1 ~]# yum -y install lvm2 //安装LVM包
[root@Node1 ~]# rpm -qa | grep lvm
llvm-private-6.0.-.el7.x86_64
lvm2-2.02.-.el7_6..x86_64
lvm2-libs-2.02.-.el7_6..x86_64
2、PV物理卷常用操作
pvcreate /dev/DEVICE: 创建PV
pvs:简要PV信息显示
pvdisplay:显示PV的详细信息
pvremove /dev/DEVICE: 移除PV
pvscan: 扫描系统中连接的所有硬盘,列出找到的物理卷列表
[root@Node1 ~]# pvcreate /dev/sdb{,} //创建2个物理卷pv
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
[root@Node1 ~]# pvs //查看物理卷摘要信息
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- .00g .00g
/dev/sdb2 lvm2 --- <.00g <.00g
[root@Node1 ~]# pvscan //搜索已存在的物理卷
PV /dev/sdb2 lvm2 [<10.00 GiB]
PV /dev/sdb1 lvm2 [10.00 GiB]
Total: [<20.00 GiB] / in use: [ ] / in no VG: [<20.00 GiB]
[root@Node1 ~]# pvremove /dev/sdb2 //移除/dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped.
[root@Node1 ~]# pvdisplay /dev/sdb1 //显示详细的物理卷信息
"/dev/sdb1" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size
Total PE
Free PE
Allocated PE
PV UUID k6YMJN-BfTI-DL8G-qjEr-onjT-CmDK-IzC9vB
[root@Node1 ~]# pvcreate /dev/sdb2 // 将/dev/sdb2加入物理卷
Physical volume "/dev/sdb2" successfully created.
[root@Node1 ~]# pvs -o +pv_uuid
PV VG Fmt Attr PSize PFree PV UUID
/dev/sdb1 datavg lvm2 a-- <10.00g <10.00g GX3Clm-pGDv-4xtw-VIr3-x00m-vIlD-zPOooJ
/dev/sdb2 datavg lvm2 a-- <10.00g <10.00g zuMtAt-6S6z-3vDa-xnj2-WADw-hk0s-H9V1Wi
/dev/sdc5 datavg lvm2 a-- <10.00g <10.00g orxgvl-GKbn-LMN0-YOUY-mIGA-TqJp-g1V8iv
[root@Node1 ~]# pvs -v
3、VG常用操作
vgcreate /dev/DEVICE: 创建VG卷组
vgs: 简要VG信息显示
vgextend:动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量
vgreduce:通过删除LVM卷组中的物理卷来减少卷组容量,不能删除LVM卷组中剩余的最后一个物理卷
vgdisplay:显示VG的详细信息
vgscan:查找系统中存在的LVM卷组,并显示找到的卷组列表
vgremove:删除卷组,其上的逻辑卷必须处于离线状态
[root@Node1 ~]# vgcreate datavg /dev/sdb{,} //创建datavg卷组
Volume group "datavg" successfully created
[root@Node1 ~]# vgdisplay datavg //显示datavg详细信息,也可以使用vgdisplay -vv或vgdisplay -vvv命令 --- Volume group ---
VG Name datavg
System ID
Format lvm2
Metadata Areas
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size 19.99 GiB
PE Size 4.00 MiB
Total PE
Alloc PE / Size /
Free PE / Size / 19.99 GiB
VG UUID thDWMH-ZXq6-zJP5-LtTn-xmQh-OpG5-b3qrUu [root@Node1 ~]# vgs //显示VG的简要信息
VG #PV #LV #SN Attr VSize VFree
datavg wz--n- .99g .99g
[root@Node1 ~]# vgextend datavg /dev/sdc5 //向datavg卷组中添加物理卷
Physical volume "/dev/sdc5" successfully created.
Volume group "datavg" successfully extended
[root@Node1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 datavg lvm2 a-- <.00g <.00g
/dev/sdb2 datavg lvm2 a-- <.00g <.00g
/dev/sdc5 datavg lvm2 a-- <1.00g <.00g
[root@Node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg wz--n- <.99g <.99g
[root@Node1 ~]# vgreduce datavg /dev/sdc5 //从datavg卷组中移除物理卷
Removed "/dev/sdc5" from volume group "datavg"
[root@Node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg wz--n- .99g .99g
[root@Node1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 datavg lvm2 a-- <.00g <.00g
/dev/sdb2 datavg lvm2 a-- <.00g <.00g
/dev/sdc5 lvm2 --- .00g .00g
[root@Node1 ~]# vgremove datavg //移除datavg
Volume group "datavg" successfully removed.
[root@Node1 ~]# vgs
[root@Node1 ~]# vgcreate datavg /dev/sdb{,}
Volume group "datavg" successfully created
[root@Node1 ~]# vgdisplay datavg
--- Volume group ---
VG Name datavg
System ID
Format lvm2
Metadata Areas
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size 19.99 GiB
PE Size 4.00 MiB
Total PE
Alloc PE / Size /
Free PE / Size / 19.99 GiB
VG UUID T8c1W9-xpJF-vvnS-bm5y-gqmY-5RBK-wRkD9Y [root@Node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg wz--n- .99g .99g
[root@Node1 ~]# vgextend datavg /dev/sdc5
Volume group "datavg" successfully extended
[root@Node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg wz--n- <.99g <.99g
[root@Node1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 datavg lvm2 a-- <.00g <.00g
/dev/sdb2 datavg lvm2 a-- <.00g <.00g
/dev/sdc5 datavg lvm2 a-- <1.00g <1.00g
[root@Node1 ~]# pvscan //扫描系统中连接的所有硬盘,列出找到的物理卷列表
PV /dev/sdb1 VG datavg lvm2 [<10.00 GiB / <10.00 GiB free]
PV /dev/sdb2 VG datavg lvm2 [<10.00 GiB / <10.00 GiB free]
PV /dev/sdc5 VG datavg lvm2 [<10.00 GiB / <10.00 GiB free]
Total: 3 [<29.99 GiB] / in use: 3 [<29.99 GiB] / in no VG: 0 [0 ]
[root@Node1 ~]# vgscan //显示系统中所有卷组
Reading volume groups from cache.
Found volume group "datavg" using metadata type lvm2
[root@Node1 ~]# vgs -o +pv_name
VG #PV #LV #SN Attr VSize VFree PV
datavg 3 0 0 wz--n- <29.99g <29.99g /dev/sdb1
datavg 3 0 0 wz--n- <29.99g <29.99g /dev/sdb2
datavg 3 0 0 wz--n- <29.99g <29.99g /dev/sdc5
[root@Node1 ~]# vgs -v
VG Attr Ext #PV #LV #SN VSize VFree VG UUID VProfile
datavg wz--n- 4.00m 3 0 0 <29.99g <29.99g 2b9qgs-mCb0-Isc2-Af74-5uWo-Yf8Q-4KOmns
4、LV常用操作
lvcreate : 用来创建LVM的逻辑卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
用法:lvcreate [选项] [参数]
选项:
-L:指定大小
-l:指定大小(LE数)
-n:指定名称
-s:创建快照
-p r:设置为只读(该选项一般用于创建快照中
lvs : 显示逻辑卷信息
lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件
lvdisplay:显示逻辑卷属性
lvextend:可在线扩展逻辑卷空间
lvreduce:缩减逻辑卷空间,一般离线使用
lvremove:删除逻辑卷,需要处于离线(卸载)状态
[root@Node1 ~]# lvcreate -L 5G -n datalv datavg //创建datalv逻辑卷
Logical volume "datalv" created.
[root@Node1 ~]# ls /dev/mapper/
control datavg-datalv
[root@Node1 ~]# mkfs.xfs -L Backup /dev/datavg/datalv //格式化逻辑卷
meta-data=/dev/datavg/datalv isize= agcount=, agsize= blks
= sectsz= attr=, projid32bit=
= crc= finobt=, sparse=
data = bsize= blocks=, imaxpct=
= sunit= swidth= blks
naming =version bsize= ascii-ci= ftype=
log =internal log bsize= blocks=, version=
= sectsz= sunit= blks, lazy-count=
realtime =none extsz= blocks=, rtextents=
[root@Node1 ~]# mkdir /dbbackup
[root@Node1 ~]# mount /dev/mapper/datavg-datalv /dbbackup/ //挂载至/dbbackup目录
[root@Node1 ~]# df -hT | grep datalv //查询datalv的挂载情况
/dev/mapper/datavg-datalv xfs 5G 33M 5G % /dbbackup
[root@Node1 ~]# lvs //显示逻辑卷信息
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
datalv datavg -wi-ao---- .00g
[root@Node1 ~]# lvscan //扫描系统中的逻辑卷
ACTIVE '/dev/datavg/datalv' [5.00 GiB] inherit
[root@Node1 ~]# lvdisplay //显示逻辑卷详细信息
--- Logical volume ---
LV Path /dev/datavg/datalv
LV Name datalv
VG Name datavg
LV UUID Y1P5zJ-Wy1Q-kERv-VUtC-4vAm-NsMb-3aCy1y
LV Write Access read/write
LV Creation host, time Node1.contoso.com, -- :: +
LV Status available
# open
LV Size 5.00 GiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :0
[root@Node1 ~]# lvcreate -L 3G -n weblv datavg //创建weblv逻辑卷
[root@Node1 ~]# mkfs.ext4 -L webapp /dev/datavg/weblv
[root@Node1 ~]# mkdir /webapp
[root@Node1 ~]# mount /dev/mapper/datavg-weblv /webapp/
[root@Node1 ~]# df -hT | grep mapper
/dev/mapper/datavg-datalv xfs 5G 33M 5G 1% /dbbackup
/dev/mapper/datavg-weblv ext4 2.9G 9.0M 2.8G 1% /webapp
[root@Node1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
datalv datavg -wi-ao---- 5.00g
weblv datavg -wi-ao---- 3.00g
[root@Node1 ~]# lvscan
ACTIVE '/dev/datavg/datalv' [5.00 GiB] inherit
ACTIVE '/dev/datavg/weblv' [3.00 GiB] inherit
5、LVM逻辑卷的扩充与缩小
lvextend:扩展逻辑卷空间
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
lvreduce:缩减逻辑卷空间
缩减逻辑卷:
1、先确定缩减后的目标大小;并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据;
2、先卸载文件系统,并要执行强制检测 e2fsck -f
3、缩减逻辑边界 resize2fs DEVICE
4、缩减物理边界 lvreduce
5、新挂载 mount
PS:缩减很危险,要离线操作
lvresize:扩展或缩小逻辑卷空间
resize2fs: 针对的是ext2、ext3、ext4文件系统
调整ext2\ext3\ext4文件系统的大小,它可以放大或者缩小没有挂载的文件系统的大小。如果文件系统已经挂载,它可以扩大文件系统的大小,前提是内核支持在线调整大小。
xfs_growfs: 针对的是xfs文件系统
1)ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)
[root@Node1 ~]# lvextend -L 5G /dev/mapper/datavg-weblv//
增大至5G
[root@Node1 ~]# lvextend -L +2G /dev/mapper/datavg-weblv//
增加2G
[root@Node1 ~]# resize2fs /dev/mapper/datavg-weblv //调整逻辑大小
[root@Node1 ~]# df -hT | grep weblv //由3G增大至5,又增加2G,目前7G
/dev/mapper/datavg-weblv ext4 .9G 14M .5G % /webapp
[root@Node1 webapp]# cp /etc/fstab . //复制fstab命令至当前目录
[root@Node1 webapp]# ls
fstab lost+found
[root@Node1 ~]# umount -f /dev/mapper/datavg-weblv //卸载/dev/mapper/datavg-weblv逻辑卷
[root@Node1 ~]# e2fsck -f /dev/datavg/weblv //检查ext2、ext3、ext4文件系统,如果系统已经挂载了,那么不建议去检查,因为这样是不安全的
e2fsck 1.42. (-Dec-)
Pass : Checking inodes, blocks, and sizes
Pass : Checking directory structure
Pass : Checking directory connectivity
Pass : Checking reference counts
Pass : Checking group summary information
webapp: / files (0.0% non-contiguous), / blocks
[root@Node1 ~]# resize2fs /dev/datavg/weblv 5G //调整至5G空间大小的逻辑卷
resize2fs 1.42. (-Dec-)
Resizing the filesystem on /dev/datavg/weblv to (4k) blocks.
The filesystem on /dev/datavg/weblv is now blocks long. [root@Node1 ~]# lvreduce -L 5G /dev/datavg/weblv //缩减至5G空间大小的逻辑卷
WARNING: Reducing active logical volume to 5.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce datavg/weblv? [y/n]: y
Size of logical volume datavg/weblv changed from 7.00 GiB ( extents) to 5.00 GiB ( extents).
Logical volume datavg/weblv successfully resized.
[root@Node1 ~]# mount /dev/mapper/datavg-weblv /webapp/ //重新挂载
[root@Node1 ~]# df -hT | grep weblv/dev/mapper/datavg-weblv ext4 .9G 12M .7G % /webapp
[root@Node1 ~]# ls /webapp/ //查看fstab文件还在
fstab lost+found
2)xfs文件系统的调整命令是xfs_growfs(只支持增大)
[root@Node1 ~]# lvextend -L 8G /dev/mapper/datavg-datalv //增大至8G
[root@Node1 ~]# lvextend -L +2G /dev/mapper/datavg-datalv //增加2G
[root@Node1 ~]# xfs_growfs /dev/mapper/datavg-datalv //扩容xfs逻辑卷
[root@Node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg wz--n- <.99g <.99g
[root@Node1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
datalv datavg -wi-ao---- .00g
weblv datavg -wi-ao---- .00g
[root@Node1 ~]# lvscan
ACTIVE '/dev/datavg/datalv' [15.00 GiB] inherit
ACTIVE '/dev/datavg/weblv' [5.00 GiB] inherit PS:xfs文件系统只支持增大分区空间的情况,不支持减小的情况,硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了
6、逻辑卷快照
snapshot是像照相一样将当前的系统信息保存下来。
当创建一个snapshot的时候,仅拷贝原始卷里数据的元数据(meta-data)。创建的时候,并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作执行时,snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里,因此这个原理的实现叫做写时复制(copy-on-write)。
在写操作写入块之前,原始数据被移动到 snapshot空间里,这样就保证了所有的数据在snapshot创建时保持一致。而对于snapshot的读操作,如果是没有修改过的块,那么会将读操作直接重定向到原始卷上,如果是已经修改过的块,那么就读取拷贝到snapshot中的块。
注:创建快照前需将针对的逻辑卷临时改为只读,创建完毕后再改为读写,例如
- 创建快照前:mount -o remount,ro /dev/datavg/weblv /webapp
- 创建快照后:mount -o remount,rw /dev/datavg/weblv /webapp
[root@Node1 webapp]# df -h | grep datavg
/dev/mapper/datavg-weblv .9G 13M .7G % /webapp
/dev/mapper/datavg-datalv 15G 33M 15G % /dbbackup
[root@Node1 ~]# cd /webapp/
[root@Node1 webapp]# cp /etc/passwd /etc/fstab /etc/redhat-release . //复制一些文件到当前目录
[root@Node1 webapp]# ls
fstab lost+found passwd redhat-release
[root@Node1 webapp]# mount -o remount,ro /dev/datavg/weblv /webap //先改成只读挂载
[root@Node1 webapp]# lvcreate -s -L 2G -n weblvsnap -p r /dev/datavg/weblv //对weblv做快照为weblvsnap 大小为2G,设为只读
Logical volume "weblvsnap" created.
[root@Node1 webapp]# mount -o remount,rw /dev/datavg/weblv /webapp //快照完,改为读写挂载
[root@Node1 webapp]# mdir /mnt/web
[root@Node1 webapp]# mount /dev/datavg/weblvsnap /mnt/web/ //挂载快照
mount: /dev/mapper/datavg-weblvsnap is write-protected, mounting read-only
[root@Node1 webapp]# df -hT | grep weblv
/dev/mapper/datavg-weblv ext4 .9G 13M .7G % /webapp
/dev/mapper/datavg-weblvsnap ext4 .9G 13M .7G % /mnt/web
[root@Node1 webapp]# ls
fstab lost+found passwd redhat-release
[root@Node1 webapp]# rm -rf fstab && echo data > data.txt
[root@Node1 webapp]# ls
data.txt lost+found passwd redhat-release
[root@Node1 webapp]# ls /mnt/web/
fstab lost+found passwd redhat-release
[root@Node1 webapp]# ls
data.txt lost+found passwd redhat-release
[root@Node1 webapp]# ls /mnt/web/
fstab lost+found passwd redhat-release
[root@Node1 webapp]# cd /mnt/web/
[root@Node1 web]# ls
fstab lost+found passwd redhat-release
[root@Node1 web]# rm -rf fstab //挂载为只读模式,无法删除该目录下的文件
rm: cannot remove ‘fstab’: Read-only
[root@Node1 web]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
datalv datavg -wi-ao---- .00g
weblv datavg owi-aos--- .00g
weblvsnap datavg sri-aos--- .00g weblv 0.01
[root@Node1 web]# lvscan
ACTIVE '/dev/datavg/datalv' [15.00 GiB] inherit
ACTIVE Original '/dev/datavg/weblv' [5.00 GiB] inherit
ACTIVE Snapshot '/dev/datavg/weblvsnap' [2.00 GiB] inherit
[root@Node1 web]# lvdisplay /dev/datavg/weblvsnap
--- Logical volume ---
LV Path /dev/datavg/weblvsnap
LV Name weblvsnap
VG Name datavg
LV UUID pf2jl8-21kq-kCKf-PymV-Vqvn-a5nm-q2tp0s
LV Write Access read only
LV Creation host, time Node1.contoso.com, 2019-09-19 05:31:23 +0800
LV snapshot status active destination for weblv
LV Status available
# open 1
LV Size 5.00 GiB
Current LE 1280
COW-table size 2.00 GiB
COW-table LE 512
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
7、删除LVM流程
卸载=>lvremove=>vgremove=>pvremove
[root@Node1 ~]# umount /dev/mapper/datavg-weblvsnap
[root@Node1 ~]# umount /dev/mapper/datavg-weblv
[root@Node1 ~]# umount /dev/mapper/datavg-datalv
[root@Node1 ~]# lvremove /dev/mapper/datavg-weblvsnap //删除逻辑卷,需要处于离线(卸载)状态
Do you really want to remove active logical volume datavg/weblvsnap? [y/n]: y
Logical volume "weblvsnap" successfully removed
[root@Node1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
datalv datavg -wi-ao---- .00g
weblv datavg -wi-ao---- .00g
[root@Node1 ~]# vgremove datavg //删除卷组
Do you really want to remove volume group "datavg" containing logical volumes? [y/n]: y
Do you really want to remove active logical volume datavg/weblv? [y/n]: y
Logical volume "weblv" successfully removed
Volume group "datavg" successfully removed
[root@Node1 ~]# pvremove /dev/sdc5 //移除物理卷
Labels on physical volume "/dev/sdc5" successfully wiped.
五、LVM的优缺点
优点:
1. 文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
2. 可以在系统运行的状态下动态的扩展文件系统的大小
3. 可以增加新的磁盘到LVM的存储池中。
4. 可以以镜像的方式冗余重要的数据到多个物理磁盘。
5. 可以方便的导出整个卷组到另外一台机器。
缺点:
1. 在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
2. 当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
3. 因为加入了额外的操作,存储性能受到影响
4. 不能减小文件系统大小(受文件系统类型限制)
使用 LVM 将获得更好的可扩展性和可操作性,但却损失了可靠性和存储性能,总的说来就是在这两者间选择。
LVM(逻辑卷管理)的更多相关文章
- 18 LVM逻辑卷管理
根据上一节的内容,我们知道md这个内核模块可以用来做软RAID的管理.同时RAID实现了两个功能:1.提高了磁盘的读写能力:2.对于数据进行了冗余备份: 但是,如果是管理员手动误删的数据,则一样无法找 ...
- LVM逻辑卷管理测试——逻辑卷扩展、收缩、快照及删除
一.逻辑卷扩展 [root@lxjtest /]# umount /testLVM/ [root@lxjtest /]# df -h Filesystem Size Used Avail Use% M ...
- LVM逻辑卷管理测试——创建逻辑卷
虚拟机里再添加两块硬盘,如下所示: 启动系统后,我们可以看到新添加的两块硬盘为/dev/sdb和/dev/sdc.每个2GB. [root@lxjtest ~]# fdisk -l Disk /dev ...
- CentOS下LVM逻辑卷管理技术解释
1.LVM逻辑卷管理技术产生的背景 企业日益变化的存储需要使得传统的磁盘分区存储显得不够灵活 2.磁盘分区存储 对于这样的三个物理分区的话,迟早有一天会被数据填满,因为它是死的,无法进行缩放. 假设下 ...
- CentOS LVM逻辑卷管理
在CentOS 挂载(U盘NTFS格式,新硬盘,增加交换分区,扩展根分区等)中扩展根分区部分用的就是LVM逻辑卷管理来进行扩展的. 1.为什么会有逻辑卷管理 传统磁盘管理是直接对硬盘分区进行访问,你如 ...
- linux的存储管理(RALD) LVM 逻辑卷管理 虚拟阵列
磁盘存储管理 LVM 逻辑卷 虚拟阵列 1.Linux系统中 磁盘使用 存在3个大问题: 1.灵活性 2.安全性 3.性能 2.解决办法RAID独立磁盘冗余阵列 RAID(Redundant Arra ...
- 【Linux】LVM 逻辑卷管理
LVM - 逻辑卷管理 简介 LVM(Logical Volume Manager), 即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制. 相关名词 PV(physical volume) ...
- 『学了就忘』Linux文件系统管理 — 65、LVM逻辑卷管理介绍
目录 1.LVM逻辑卷管理的简介 2.LVM逻辑卷管理的原理 3.总结建立LVM分区的步骤 1.LVM逻辑卷管理的简介 LVM是Logical Volume Manager的简称,中文就是逻辑卷管理. ...
- Linux之LVM逻辑卷管理
LVM逻辑卷管理 LVM机制:PV物理卷,VG卷组,LV逻辑卷. --功能-- --物理卷管理-- --卷组管理-- --逻辑卷管理-- create(建立) pvcreate vgcreate lv ...
- LVM逻辑卷管理
一.LVM简介 LVM(Logic Volume Manager)逻辑卷管理,简单理解就是将一块或多块硬盘的分区在逻辑上集合,当一块大硬盘来使用. 其特点是: 1.可以实现在线动态扩展,也可以缩减 2 ...
随机推荐
- 100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘
前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...
- css3实现loading效果--当页面加载过程中显示Loading的进度条,全部加载完成之后进度条消失
一个页面等图片资源全部加载完成,会需要很长时间,用户体验会很差,所以我们需要loading来掩盖这个漫长的过程! emmm,定时器?写个定时器还要清除,万一造成内存泄露?定时器之间还会互相影响,呼呼呼 ...
- LD_PRELOAD和ld --wrap
前言 LD_PRELOAD和ld --wrap都能实现不修改原始代码,替换指定函数的实现.通常我们会使用这些方法,替换如malloc)()/free().read()/write()等函数,并在替换函 ...
- 从SpringBoot构建十万博文聊聊高并发文章浏览量设计
前言 在经历了,缓存.限流.布隆穿透等等一系列加强功能,十万博客基本算是成型,网站上线以后也加入了百度统计来见证十万+ 的整个过程. 但是百度统计并不能对每篇博文进行详细的浏览量统计,如果做一些热点博 ...
- Go-项目结构和代码组织
简介 做大量的输入,通过对比.借鉴,加上自己的经验,产出一个尽可能优的方案. 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都 ...
- C笔记_C语言环境、编译、预处理
1.环境 gcc -v //查看环境变量 gcc 同 g++ gcc main.c -o main.exe gcc main.c //默认生成a.exe 2.编译 预处理: gcc -E main ...
- egret之moveclip 序列帧动画
废话不多说,直接上代码: private addEffect(name, x: number, y: number, act?: string) { let data = RES.getRes(nam ...
- CodeForces 909F
题意略. 思路: 第一问: 递归地来写,找对称,发现关于(1<<y) - 1和(1<<y)对称的数字做 & 结果为0. 第二问: 6,7特殊考虑.循环左移(1<& ...
- HDU 6053(莫比乌斯反演)
题意略. 思路:首先想到暴力去扫,这样的复杂度是n * min(ai),对于gcd = p,对答案的贡献应该是 (a1 / p) * (a2 / p) * .... * (an / p),得出这个贡献 ...
- Leetcode之回溯法专题-51. N皇后(N-Queens)
Leetcode之回溯法专题-51. N皇后(N-Queens) n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给 ...