文档章节

LVM讲解

李超小牛子
 李超小牛子
发布于 06/19 18:05
字数 2518
阅读 19
收藏 0

LVM是什么

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

LVM的工作原理

输入图片说明

具体的操作步骤如下:

1、添加磁盘,现在的服务器磁盘都支持热拔插,不需要关机直接添加磁盘后系统也能识别到新的磁盘,在使用虚拟机的实验环境下,添加磁盘后需要重启虚拟机,系统才会识别到新添加的磁盘,如下所示,/dev/sdb就是我们新添加的磁盘

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a5fed

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4507647     2048000   82  Linux swap / Solaris
/dev/sda3         4507648    41943039    18717696   83  Linux

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

2、给新磁盘分区,并将ID改为8e 。(这个地方不改成8e也能做成物理卷,但是据传在使用的过程当中会出现问题,所以最好严格按照步骤来操作)我们是将磁盘划分了三个分区,每个分区给了1G的容量,并且将ID改为了8e,因为划分三次的步骤是完全一样的,所以只上传了划分第一个分区的图

输入图片说明

3、将分区做成物理卷;使用命令:pvcreate /dev/sdb1。在最小化安装的Linux系统中该命令是没有安装的,需要运行yum intstall -y lvm2 来安装

[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.

创建完物理卷之后可以使用pvdisplay 或 dvs命令来查看一下当前的物理卷,如果查看不到,可以先运行一下partprobe命令。

[root@localhost ~]# pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1     lvm2 ---  1.00g 1.00g
  /dev/sdb2     lvm2 ---  1.00g 1.00g
  /dev/sdb3     lvm2 ---  1.00g 1.00g

4、再创建卷组,vgcreate vg1 /dev/sdb1 /dev/sdb2 这条命令的意思是将物理卷/dev/sdb1 、/dev/sdb2组成卷组vg1。创建完成后可以使用vgdisplay或vgs命令查看卷组

[root@localhost ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created
[root@localhost ~]# vgs
  VG  #PV #LV #SN Attr   VSize VFree
  vg1   2   0   0 wz--n- 1.99g 1.99g

5、创建逻辑卷并指定逻辑卷大小为100M;lvcreate -L 100M -n lv1 vg1,创建完成后可以使用lvdisplay或者 lvs命令查看逻辑卷信息。

[root@localhost ~]# lvcreate -L 100M -n lv1 vg1
  Logical volume "lv1" created.
[root@localhost ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 100.00m                                                    
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                h418at-aYwA-m8Ah-lAji-ICmF-uVW0-eDjAdQ
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2018-02-28 08:44:57 +0800
  LV Status              available
  # open                 0
  LV Size                100.00 MiB
  Current LE             25
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

6、将逻辑卷格式化为ext4格式 :mkfs.ext4 /dev/vg1/lv1 格式化完成后将逻辑卷挂在到/mnt/下:

[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# ls /mnt
lost+found

到这里,LVM就算完成了,当逻辑卷空间不足时怎样扩容呢?

LVM逻辑卷的扩容(逻辑卷格式为ext4)

  1. 卸载逻辑卷 umount /mnt
  2. 指定新的容量 lvresize -L 200M /dev/vg1/lv1
  3. 检查是否有错误 e2fsck -f /dev/vh1/lv1
  4. 更新逻辑卷信息 resize2fs /dev/vg1/lv1
  5. 挂载逻辑卷 mount /dev/vg1/lv1 /mnt 并查看 df -h
[root@localhost ~]# umount /mnt
umount: /mnt:未挂载
[root@localhost ~]# lvresize -L 200M /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents).
  Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks
[root@localhost ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 204800 blocks long.

[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# df -h /mnt
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt

LVM缩容操作(很少使用,xfs不支持)

  1. 卸载 umount /mnt
  2. 检查是否有错误 e2fsck -f /dev/vh1/lv1
  3. 指定新的容量 lvresize -L 100M /dev/vg1/lv1
  4. 查看容量是否缩减 lvdisplay 或 lvs
  5. 挂载 mount /dev/vg1/lv1
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 13/49400 files (7.7% non-contiguous), 11887/204800 blocks
[root@localhost ~]# lvresize -L 100M /dev/vg1/lv1
  WARNING: Reducing active logical volume to 100.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
  Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
  Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 100.00m                                                    
[root@localhost ~]# mount /dev/vg1/lv1 /mnt
mount: 文件系统类型错误、选项错误、/dev/mapper/vg1-lv1 上有坏超级块、
       缺少代码页或助手程序,或其他错误

       有些情况下在 syslog 中可以找到一些有用信息- 请尝试
       dmesg | tail  这样的命令看看。

当逻辑卷格式为xfs类型时,扩容逻辑卷的操作

为了符合实验要求,首先将/dev/vg1/lv1 格式化为xfs类型 ,mkfs.xfs -f /dev/vg1/lv1

  1. 格式化成xfs后挂载该逻辑卷 mount /dev/vg1/lv1 /mnt
  2. lvs 命令查看逻辑卷大小
  3. 扩容 ;lvresize -L 300M /dev/vg1/lv1
  4. lvs 查看大小
  5. 使用df-h 发现容量没变 ,需要执行xfs_growfs /dev/vg1/lv1 命令
  6. 在使用df -h 命令查看
[root@localhost ~]# mkfs.xfs -f /dev/vg1/lv1
meta-data=/dev/vg1/lv1           isize=256    agcount=2, agsize=6656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=13312, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# ls /mnt
[root@localhost ~]# lvs
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 52.00m                                                    
[root@localhost ~]# lvresize -L 300M  /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 52.00 MiB (13 extents) to 300.00 MiB (75 extents).
  Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 300.00m                                                    
[root@localhost ~]# df -h /mnt
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1   49M  2.7M   46M    6% /mnt
[root@localhost ~]# xfs_grows /dev/vg1/lv1
-bash: xfs_grows: 未找到命令
[root@localhost ~]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1    isize=256    agcount=2, agsize=6656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=13312, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13312 to 76800
[root@localhost ~]# df -h /mnt
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1  297M  3.1M  294M    2% /mnt

可以看到,容量从50M成功的扩容到了300M

扩容卷组

从上面的内容可以看出,逻辑卷扩容的上限就是卷组的容量,如果卷组的容量不够用了该怎么扩容呢?在实验之初我们是创建了三个物理卷,而创建卷组的时候只用了两个物理卷,当卷组容量不够时 ,我们可以把空闲的第三个物理卷加入到卷组当中

  1. 将物理卷加入原有卷组 vgextend vg1 /dev/sdbx
  2. 使用vgs验证是否扩容成功
[root@localhost ~]# vgs
  VG  #PV #LV #SN Attr   VSize VFree 
  vg1   2   1   0 wz--n- 1.99g <1.70g

[root@localhost ~]# vgextent vg1 /dev/sdb3
-bash: vgextent: 未找到命令
[root@localhost ~]# vgex
vgexport  vgextend  
[root@localhost ~]# vgextend vg1 /dev/sdb3
  Volume group "vg1" successfully extended
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <2.99 GiB
  PE Size               4.00 MiB
  Total PE              765
  Alloc PE / Size       75 / 300.00 MiB
  Free  PE / Size       690 / <2.70 GiB
  VG UUID               gT48qq-JCCo-I17e-H82v-gQoV-d5f8-9IoYeR
   

可以看到vg1从原先的2G变为了3G,表示扩容成功。

磁盘故障案例

当服务器出现这个界面的时候,表示磁盘的挂在是有问题的,需要输入root密码进入系统后,vi/etc/fstab 配置文件,修改/etc/fstab,一般就是把自己添加的内容删除掉,然后重启系统就可以恢复了。

© 著作权归作者所有

共有 人打赏支持
李超小牛子
粉丝 2
博文 90
码字总数 104721
作品 0
通州
私信 提问
lvm、磁盘故障

lvm讲解(上) 方便扩容和缩容磁盘空间,由于使用了lvm,如果文件系统发生损坏文件数据找不到了,要恢复数据的时候就想一下,首先硬盘划分了物理分区,物理分区的基础上划分了lvm,恢复起来麻...

Amandaluo
2017/11/06
0
0
linux的lvm讲解

lvm讲解 lvm是一个很复杂的结构,恢复起来很麻烦,lvm是一个软件,使用起来 有一定的风险。它的结构步骤是创建一个物理分区,物理分区做成物理卷,物理卷形成一个卷组,卷组再划分成一个逻辑...

Gary_加油涛
2017/11/06
0
0
2018.1.2 4周1次课

四周第一次课(1月2日) 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例 4.10/4.11/4.12 lvm讲解 LVM是 Logical Volume Manager(逻辑卷管理)的简写。LVM将一个或多个硬盘的分区在逻辑上集合,相...

eliters
01/02
0
0
4.10 - 4.12 lvm讲解(上)(中)(下)4.13 磁盘故障小案例

4.10 - 4.12 lvm讲解(上)(中)(下) 4.13 磁盘故障小案例 4.10 - 4.12 lvm讲解(上)(中)(下) 如图: 2块硬盘 A硬盘划分了2个分区、B硬盘划分了1个分区 可以把3个分区组成一个物理卷...

JasonYan86
2017/07/04
0
0
linux CentOS 7 中LVM讲解配置实例及磁盘扩容等

一、 lvm讲解 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空...

fengyunshan911
2017/08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
20分钟前
0
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部