写点什么

Linux 下使用 LVM 方式进行文件系统创建,详细教程

作者:阿柠xn
  • 2022 年 9 月 19 日
    陕西
  • 本文字数:2755 字

    阅读完需:约 9 分钟

Linux下使用LVM方式进行文件系统创建,详细教程

LVM 逻辑卷管理器

之前介绍了 RAID,在硬盘分好区,或者部署好 RAID 磁盘阵列之后,再想修改硬盘分区大小就不容易了。换而言之,当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘灵活性的限制。这时就需要一项非常普及的硬盘设备资源管理技术------LVM。LVM 允许用户对硬盘资源进行动态调整。


LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。


部署 lvm 逻辑卷

首先,我们要明白,部署 lvm 需要逐个配置物理卷,卷组和逻辑卷。


常用的部署命令



  1. 让新添加的两块硬盘设备支持 lvm 技术。

  2. 把两块硬盘设备加入到 storage 卷组中,然后查看卷组的状态

  3. 切割出一个约为 150mb 的逻辑卷设备

  4. 这里需要注意切割单位的问题,在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数是-L。例如,使用-L 150MB 生产一个大小为 150MB 的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例如,使用-l 37 可以生成一个大小为 37x4MB=148MB 的逻辑卷。

  5. 把生成好的逻辑卷进行格式化,然后挂载使用。


​ linux 系统会把 lvm 中的逻辑卷设备存放在/dev 设备目录中(实际上是做一个符号链接)同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。


mkfs.ext4 /dev/storage/vo
复制代码


mkdir /linuxprobe
复制代码


mount /dev/storage/vo  /linuxprobe
复制代码


  1. 查看挂载状态,并写入配置文件,使其永久生效


df -h
复制代码


echo "/dev/storage/vo  /linuxprobe ext4 defaults 0 0" >> /etc/fstab
复制代码

扩容逻辑卷

扩展前一定要记得卸载设备与挂载点的关联。


umount /linuxprobe
复制代码


把上个实验中的逻辑卷 vo 扩展至 290mb


lvextended -L 290M /dev/storage/vo
复制代码


检查硬盘完整性,并重置硬盘容量。


e2fsck -f /dev/storage/vo
resize2fs /dev/storage/vo
复制代码


resize2fs 命令是用来增大或者收缩未加载的“ext2/ext3/ext4”文件系统的大小。


重新挂载硬盘,并查看挂载状态。


mount -a   #这个命令是挂载fatab文件上的内容
df -h
复制代码

缩小逻辑卷

缩小逻辑卷的丢失数据的风险较大,我们一定要提前备份好数据。


在执行缩容操作之前记得先把文件系统卸载掉:


umount /linuxprobe
复制代码


检查文件系统的完整性


e2fsck -f /dev/storage/vo
复制代码


把逻辑卷 vo 的容量减少到 120MB


resize2fs /dev/storage/vo 120M
lvreduce -L 120M /dev/storage/vo
复制代码


重新挂载文件系统并查看状态


mount -a
df -h
复制代码

逻辑卷快照

LVM 快照卷的特点:


  • 快照卷的容量必须等同于逻辑卷的容量;

  • 快照卷仅一次有效,一旦执行还原操作后则会被立即删除。


首先查看卷组信息


vgdisplay
复制代码


看到卷组有空闲容量,接下来我们使用重定向往逻辑卷设备所挂载的目录中写入一个文件。


echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt
ls -l /linuxprobe
复制代码


第一步:使用-s 参数生成一个快照卷,使用-L 参数指定切割的大小。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照工作。


lvcreate -L 120M -s -n SNAP /dev/storage/vo
lvdisplay
复制代码


第二步:在逻辑卷所挂载的目录中创建一个 100MB 的垃圾文件,然后查看快照卷的状态,你是可以发现存储空间占的用量上升了。


dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M
lvdisplay
复制代码


第三步:为了效验 SNAP 快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。


umount /linuxprobelvconvert --merge /dev/storge/SNAP
复制代码


第四步:快照卷会被自动删除,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的 100MB 的垃圾文件也被清除了。


mount  -a
ls /linuxprobe/
复制代码

删除逻辑卷

当生产环境想要重新部署 LVM 或者不在需要使用 LVM 时,则需要执行 LVM 的删除操作,为此你就要提前备份好重要的数据信息,然后依次删除逻辑卷,卷组,物理卷设备,这个顺序不可颠倒。


第一步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。


umount /linuxprobe
vim /etc/fstab
复制代码


第二步:删除逻辑卷设备,输入 y 来确认操作。


lvremove /dev/storage/vo
复制代码


第三步:删除卷组,此处只写卷组名即可,不需要设备的绝对路径


vgremove storage
复制代码


第四步:删除物理设备


pvremove  /dev/sdb  /dev/sdc
复制代码

实战训练

  1. 首先你用去看看电脑硬盘的使用情况


fdisk  -l  #查看当前磁盘的分区情况
复制代码


  1. 对磁盘进行分区:


fdisk /dev/sdb
复制代码


  1. 进去之后会有一些比较重要的命令





然后,我们在添加分区的时候,有个主分区,,扩展分区,逻辑分区,我们浅浅了解一手:


主分区数量至少 1 个,最多 4 个(如果存在扩展分区,则最多 3 个)。主分区可以直接使用,主分区本身不能继续分区,一个主分区就是一个逻辑磁盘。

扩展分区 0 个或 1 个,会占用一个主分区号,不能直接使用,必须在其上建立逻辑分区后才能用。 其实就是把 1 个主分区拿过来进行分区扩展了。

逻辑分区可以若干个,通过扩展分区建立,可以直接使用,扩展分区的容量是所有逻辑分区容量之和(如果扩展分区被完全使用的话)。


合理的磁盘分区会方便我们的文件挂载使用的。


在我们使用 w 退出之后,记得使用这个命令:


partprobe    重新加载磁盘分区信息,并更改到系统内核
复制代码


重头戏来了:


我们下面就把整个 sdb100G 扩展到 centos 卷组中去,并创建如下的需求:


10G /oracle10G /grid10G /orasystem10G /arch 剩余空间全部分给 /oradata


  1. 让新添加的硬盘设备支持 LVM 技术。


pvcreate  /dev/sdb
复制代码



2.接下来呢。我们要把这个硬盘设备加入到 centos 这个卷组,如果在此之前没有 centos 这个卷组,那么就用 vgcreate 命令,如果有就是下面的命令:


vgextend centos /dev/sdb
复制代码



  1. 创建逻辑卷,这一步就是要面向需求了:我们要根据上面的需求依次创建对应的逻辑卷。



  1. 接下来我们就需要将这些生成好的逻辑卷格式化,然后进行挂载


​ linux 系统会把 lvm 中的逻辑卷设备存放在/dev 设备目录中(实际上是做一个符号链接)同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。



上面展示的是格式化为 xfs 类型的操作。


下面我们就是要去创建一个目录,一会好去挂载:



最后的最后,我们要把这些挂载内容写入/etc/fstab 中去:


在配置文件中,我们可以使用 uuid 去配置。


blkid
复制代码



vi /etc/fatab
复制代码


UUID=0e157636-1b3f-413b-a68d-5db7d0b03de0  /oracle                xfs     defaults        0 0UUID=da09987c-281d-402d-972c-ac56d5844d29  /grid                  xfs     defaults        0 0UUID=51720d40-66ba-44b9-a667-378a06fd87d7  /orasystem             xfs     defaults        0 0UUID=df06626c-5495-4828-b6b2-63f4cdec257c  /arch                  xfs     defaults        0 0UUID=328c9d42-a8a3-43c3-8d99-bda2d28f856e  /oradata               xfs     defaults        0 0
复制代码


发布于: 刚刚阅读数: 4
用户头像

阿柠xn

关注

还未添加个人签名 2022.08.29 加入

还未添加个人简介

评论

发布
暂无评论
Linux下使用LVM方式进行文件系统创建,详细教程_Linux_阿柠xn_InfoQ写作社区