centos下LVM配置与管理
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
LVM的主要功能:容量组合,动态调整容量大小。
LVM是将多块硬盘从逻辑上组合成一个大容量的存储空间(即VG),最终要划分成小的LV逻辑卷来使用这些空间。
LVM的管理流程:先给硬盘分区(也可以不分区),再创建PV,再创建VG,再创建LV,再格式化LV,再手动或自动挂载LV,再写入数据。
基本的逻辑卷管理概念:
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
关系图如下:
PE(Physical Extent)- 物理块
LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。
功能/命令 |
物理卷管理(PV) |
卷组管理(VG) |
逻辑卷管理(LV) |
扫描查询系统中的LVM设备 |
pvscan |
vgscan |
lvscan |
建立 |
pvcreate |
vgcreate |
lvcreate |
显示 |
pvdisplay |
vgdisplay |
lvdisplay |
状态 |
pvs |
vgs |
lvs |
删除 |
pvremove |
vgremove |
lvremove |
扩展(增加容量) |
vgextend |
lvextend/lvresize |
|
缩容(缩小容量) |
vgreduce |
lvreduce/lvresize |
|
调整系统中看到的容量 |
resize2fs/xfs_growfs |
LVM逻辑卷管理的思路:先给硬盘分区(也可以不分区),再创建pv,再创建vg,再创建lv,再格式化,再手动或自动挂载,再测试数据的写入。
创建PV物理卷:
- [root@serve1 ~]# 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
├─cl-root 253:0 0 17G 0 lvm /
└─cl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sr0 11:0 1 7.7G 0 rom
#创建PV
[root@serve1 ~]# pvcreate /dev/sd[b-c]
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
#查看PV的状态
[root@serve1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
#查看PV的详细信息
[root@serve1 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID fnufKb-qQ1k-jEH3-tS3R-7dvF-Ldrd-6PMuoG
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID koMQS3-Omw9-bg8r-Lluq-vM7C-nm0B-KqKIaH
"/dev/sdc" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID mzTDJw-Ak2N-CzDD-eEcO-bczl-wA0r-44LHqd
创建VG卷组:
- [root@serve1 ~]# vgcreate vg1 /dev/sd[b-c]
Volume group "vg1" successfully created
[root@serve1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz--n- <19.00g 0
vg1 2 0 0 wz--n- 39.99g 39.99g
[root@serve1 ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID xfNGUD-pYdS-eUI9-5Y0u-Ulqx-rwWW-EI5gso
--- Volume group ---
VG Name cl
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 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID cxM7kS-b357-Y4MX-439j-EkVT-3X4l-5tTZp1
说明:vg1指的是卷组名称,/dev/[b-c]是卷组中的设备
创建LV逻辑卷(这里我创建了2个LV逻辑卷):
- [root@serve1 ~]# lvcreate -L 25G -n lv1 vg1 #创建LV逻辑卷
- Logical volume "lv1" created.
- [root@serve1 ~]# lvs
- LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
- root cl -wi-ao---- <17.00g
- swap cl -wi-ao---- 2.00g
- lv1 vg1 -wi-a----- 25.00g
- [root@serve1 ~]# lvdisplay
- --- Logical volume ---
- LV Path /dev/vg1/lv1
- LV Name lv1
- VG Name vg1
- LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
- LV Write Access read/write
- LV Creation host, time serve1, 2017-11-18 23:32:49 +0800
- LV Status available
- # open 0
- LV Size 25.00 GiB
- Current LE 6400
- Segments 2
- Allocation inherit
- Read ahead sectors auto
- - currently set to 8192
- Block device 253:2
- --- Logical volume ---
- LV Path /dev/cl/swap
- LV Name swap
- VG Name cl
- LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
- LV Write Access read/write
- LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
- LV Status available
- # open 2
- LV Size 2.00 GiB
- Current LE 512
- Segments 1
- Allocation inherit
- Read ahead sectors auto
- - currently set to 8192
- Block device 253:1
- --- Logical volume ---
- LV Path /dev/cl/root
- LV Name root
- VG Name cl
- LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
- LV Write Access read/write
- LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
- LV Status available
- # open 1
- LV Size <17.00 GiB
- Current LE 4351
- Segments 1
- Allocation inherit
- Read ahead sectors auto
- - currently set to 8192
- Block device 253:0
说明:-L:指定逻辑卷的大小,单位为"kKmMgGtT"字节; -n:指定逻辑卷的名称; vg1是卷组的名称,卷组的名称要和上面创建的卷组名称一致。
- [root@serve1 ~]# lvcreate -l +100%FREE -n lv2 vg1
Logical volume "lv2" created.
[root@serve1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- <17.00g
swap cl -wi-ao---- 2.00g
lv1 vg1 -wi-a----- 25.00g
lv2 vg1 -wi-a----- 14.99g
[root@serve1 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
LV Write Access read/write
LV Creation host, time serve1, 2017-11-18 23:32:49 +0800
LV Status available
# open 0
LV Size 25.00 GiB
Current LE 6400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/vg1/lv2
LV Name lv2
VG Name vg1
LV UUID DSymjV-ExDB-wTSR-6lns-Swjz-ZzP5-Ywf0xA
LV Write Access read/write
LV Creation host, time serve1, 2017-11-18 23:42:30 +0800
LV Status available
# open 0
LV Size 14.99 GiB
Current LE 3838
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
--- Logical volume ---
LV Path /dev/cl/swap
LV Name swap
VG Name cl
LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
LV Write Access read/write
LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/cl/root
LV Name root
VG Name cl
LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
LV Write Access read/write
LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
LV Status available
# open 1
LV Size <17.00 GiB
Current LE 4351
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
说明:-l:指定逻辑卷的大小(LE数)
创建挂载目录、格式化挂载并写入文件测试:
- #格式化LV逻辑卷
[root@serve1 ~]# mkfs.xfs /dev/vg1/lv1
meta-data=/dev/vg1/lv1 isize=512 agcount=4, agsize=1638400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=6553600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=3200, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@serve1 ~]# mkfs.xfs /dev/vg1/lv2
meta-data=/dev/vg1/lv2 isize=512 agcount=4, agsize=982528 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3930112, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#挂载逻辑卷
[root@serve1 ~]# mount /dev/vg1/lv1 /web
[root@serve1 ~]# mount /dev/vg1/lv2 /data
[root@serve1 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root xfs 17G 4.3G 13G 26% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 238M 777M 24% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vg1-lv1 xfs 25G 33M 25G 1% /web
/dev/mapper/vg1-lv2 xfs 15G 33M 15G 1% /data
[root@serve1 ~]# echo /dev/mapper/vg1-lv1 /web xfs defaults 0 0 >>/etc/fstab
[root@serve1 ~]# echo /dev/mapper/vg1-lv2 /date xfs defaults 0 0 >>/etc/fstab
[root@serve1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Sep 27 23:42:53 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=4318c13a-c39b-484d-aaa0-ce6331eddc30 /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/mapper/vg1-lv1 /web xfs defaults 0 0
/dev/mapper/vg1-lv2 /date xfs defaults 0 0
说明:centos7支持xfs和etx4类型的文件系统,centos6不支持xfs类型的文件系统。
卸载删除LVM
思路:删除LVM的步骤和创建LVM的步骤是相反的。先删除LV逻辑卷,再删除VG卷组,最后删除PV物理卷
- [root@serve1 ~]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed
[root@serve1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- <17.00g
swap cl -wi-ao---- 2.00g
#删除VG1卷组
[root@serve1 ~]# vgremove vg1
Volume group "vg1" successfully removed
#查看VG卷组状态
[root@serve1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz--n- <19.00g 0
#删除sd[b-c]物理卷
[root@serve1 ~]# pvremove /dev/sd[b-c]
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
#查看PV物理卷状态
[root@serve1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- <19.00g 0
#最后注释或删掉/etc/fstab里面逻辑卷的挂载信息。
原文链接:https://www.dingmr.com/post/43.html
2017年11月18日 - Linux - Mr.Ding - 0 条留言 - 73 次浏览
相关文章
- Shell开发环境vim编辑器的配置文件vimrc的参数优化
- Linux上的SSH服务无法启动,提示"/var/empty/sshd must be owned by root and not group or world-writable"错误
- 在 CentOS 7 上搭建 Cisco AnyConnect
- CentOS7利用systemctl添加自定义系统服务
- Nextcloud私有云盘在Centos7下的部署
- linux下IO实时监测命令iostat详解
- PXE自动化部署
- 域名服务DNS
- 动态主机分配协议DHCP
- 运维必备的网络管理技能之三、Linux高级网络配置工具
- 运维必备的网络管理技能之二、Linux网络配置
- 运维必备的网络管理技能之一、网络管理命令
发表评论:
窗体顶端
名称(*) 邮箱 网址 正文(*)
窗体底端