介绍

Linux中的交换空间在系统物理内存被用尽的时候使用。如果系统需要更多的内存资源,而物理内存以及用尽,内存中不活跃的页就会被交换到交换空间中。
交换空间位于硬盘中,速度不如物理内存。
ps:
在生产环境中交换空间的大小一般取决于计算机物理内存的大小:如果物理内存小于4GB,通常建议为物理内存的2倍;如果物理内存大于4GB小于16GB,通常设置为物理内存的大小;如果物理内存大于16GB,建立为物理内存的一半

Linux的虚拟内存系统,主要用于存储应用程序及其使用的数据信息,虚拟内存的大小取决于应用程序和操作系统。
如果交换空间太小,则可能会导致应用程序无法运行,导致页面频繁地在内存和磁盘之间交换,从而导致系统性能下降。
如果交换空间太大,则可能会浪费磁盘空间。
系统交换分区的大小需要合理设置。

如果虚拟内存大于物理内存,操作系统可以在空闲的时候将所有进程换到磁盘上,并且能够提高系统的性能。如果序往将应用程序的活动保留在内存中,并且不需要大量的交换,可以设置较小的虚拟内存。桌面环境配置比较大的虚拟内存有利于运行大量的应用程序。

Linux系统总会尝试使用全部的物理内存,而尽量不使用虚拟内存。在重负载的生产环境中,物理内存应该足够大,否则会导致“多米诺骨牌效应”。
物理内存不够会导致更多的进程被换到交换分区,进而导致磁盘I/O加重;
磁盘I/O加重会导致更多的进程被阻塞放置到内存中。在重负载的生产环境中,必须控制虚拟内存的使用量。

交换分区的操作

  1. - 交换分区操作:
  2. - 启动:swapon
  3. - swapon [potion] [divice]
  4. - -a:激活所有交换分区
  5. - -p:指定优先级
  6. - 关闭:swapoff
  7. - swapoff [option] ……[divice]
  8. - 是临时关闭的

mkswap

创建交换分区的系统文件
在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。

参数 说明
-c 在建立交换分区之前,先检查是否有损坏的区块
-f SPARC电脑上建立交换区时,要加上此参数
-v0 建立旧式交换区,此为预设值
-v1 建立新式交换区
[root@node1 ~]# mkswap /dev/sdb
mkswap: /dev/sdb: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 20971516 KiB
no label, UUID=c49ce8b8-bdec-48eb-acb3-863513371bb4
#查看
[root@node1 ~]# swapoff /dev/sdb
[root@node1 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        7990280      182380     7607852       11968      200048     7543864
Swap:       2097148           0     2097148

swapon

使用swap分区

参数 说明
-a 激活所有交换分区
-p 指定优先级
[root@node1 ~]# swapon /dev/sdb    #分区设备文件名
[root@node1 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        7990280      197196     7593048       11968      200036     7529052
Swap:      23068664           0    23068664
#看到了swap分区变大了

swapoff

取消新加入的 swap 分区,是临时关闭的

[root@node1 ~]# swapoff /dev/sdb
[root@node1 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        7990280      182380     7607852       11968      200048     7543864
Swap:       2097148           0     2097148

如果想让 swap 分区开机之后自动挂载,就需要修改 /etc/fstab 文件,命令如下:

[root@localhost ~]#vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults 1 1
UUID=0b23d315-33a7-48a4-bd37-9248e5c443451 boot ext4 defaults 1 2
UUID=4021be19-2751-4dd2-98cc-383368c39edb swap swap defaults 0 0
tmpfs /dev/shm
tmpfs defaults 0 0
devpts /dev/pts
devpts gid=5, mode=620 0 0
sysfs /sys
sysfs defaults 0 0
proc /proc
proc defaults 0 0
/dev/sdb1 swap swap
defaults 0 0
#加入新swap分区的相关内容,这里直接使用分区的设备文件名,也可以使用UUID。

磁盘冗余阵列RAID

介绍

RAID(Redundant Array of Independent Disks)的基本目的是把多个小型廉价的硬盘合并成一组大容量的硬盘,用于解决数据冗余性并降低硬件成本,使用时就像在使用单一的硬盘。
优点:由多块硬盘组合而成,可以获得更好的读写性能(同时读写)及数据的冗余(一个数据多个备份)功能。
要使用磁盘RAID主要有两种方式,一种就是RAID适配卡,通过RAID适配卡插入PCI插槽,再接上硬盘实现RAID功能。第二种方式就是直接在主板上集成RAID控制芯片,让主板能直接实现磁盘RAID

分类

磁盘阵列其实也分为软阵列 (Software Raid)和硬阵列 (Hardware Raid) 两种。

软阵列

通过软件程序并由计算机CPU提供运行能力所构成,由于软件程式不是一个完整系统,故只能提供最基本的RAID容错功能,其他如热备用硬盘的设置,远程管理等功能均没有。
软件阵列在系统中实现各种RAID级别,不需要RAID控制器。

硬阵列

是由独立操作系统的硬件提供整个磁盘阵列的控制和计算功能,不依靠系统的CPU资源,由于硬阵列是一个完整的系统,所有需要的功能均可以做进去,所以硬阵列所提供的功能和性能均比软阵列好。如果你想把系统也做到磁盘阵列中,硬阵列是唯一的选择,故我们在市场上RAID5级的磁盘阵列均为硬阵列。
在生产环境中,硬件RAID控制器由于自带计算芯片无须额外消耗系统计算资源而被广泛使用。

软件RAID 级别

RAID0

条带化(Stripe)存储, 即Data Stripping数据分条技术存
RAID 0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量
RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上(随机分片写入每个磁盘),在所有的级别中,RAID 0的速度是最快的。理论上说,有N个磁盘组成的RAID0是单个磁盘读写速度的N倍,存储能力等同于每个硬盘的存储能力之和。
缺点:AID0是没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
最少磁盘数:2
可用空间:N*MIN
image.png

RAID1

RAID1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据,可以提供高度的数据可用性和更好的读性能(同时读),但是写性能略有下降
磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高
只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一般数量的磁盘出现问题时,系统都可以正常运行
出现硬盘故障的RAID系统不再可靠,应当及时更换损坏的硬盘,否则剩余的镜像盘也会出现问题,那么整个系统就会崩溃
更换系统盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降
镜像存储,把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用率为50%。当原始数据繁忙时,可直接从镜像中读取数据。
RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
可用空间:1*MIN
image.png

RAID3

奇偶校验(XOR)条带存储,共享校验盘,数据条带存储单位为字节
RAID3是以一个硬盘来存放数据的奇偶校验位,数据则分段存储于其余硬盘中。
它像RAID0一样以并行的方式来存放数据,但数据没有RAID0快
如果数据盘(物理)损坏,只要将坏硬盘换掉,RAID控制系统就会根据校验位在新盘中重建坏盘上的数据,但是,如果是校验盘损坏的话,则全部数据将无法使用。
利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高,为n-1
RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈
image.png

RAID2

海明码校验条带化存储。将数据条化地分布于不同的硬盘上,条块单位为位或字节,使用海明码来提供错误检查及恢复。这种编码技术需要多个磁盘来存放检查及恢复信息,使RAID3技术实施更复杂,在商业环境中很少使用
image.png

RAID5 (最优的使用方案)

奇偶检验(XOR)条带化存储,校验数据分布式存储,数据条存储单位为块。
RAID5不单独指定奇偶盘,而是在所有磁盘上交叉地存储数据及奇偶校验信息。
在RAID5上,读/写指针可同时对阵列设备进行操作,提高了更高的数据流量。
RAID5更适合于小数据块和随机读写的数据。
RAID3和RAID5的区别在于RAID3每进行一次数据传输就需要涉及到所有的阵列盘,而对于RAID5而言,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID5中有“写损失”,即每一次写操作将产生4个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息
RAID5把校验块分散到所有的数据盘中,用到了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。
RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。提高了系统可靠性,但对数据传输的并行性解决不好,而且控制器的数据也相当困难。
为了具有RAID-5级的冗余度,需要最少由三个磁盘组成的磁盘阵列(不包括一个热备用)。RAID-5可以通过磁盘阵列控制器硬件实现,也可以通过某些网络操作系统软件实现了。硬盘的利用率为n-1。
当进行恢复时,比如我们需要需要恢复下图中的A0,这里就必须需要B0、C0、D0加0 parity才能计算并得出A0,进行数据恢复。所以当有两块盘坏掉的时候,整个RAID的数据失效。
组件RAID至少需要2块硬盘。
image.png

RAID4

奇偶校验(XOR)条带存储,共享校验盘,数据条带存储单位为块。RAID 4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID 4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID 4在商业环境中也很少使用。
可用空间:N*MIN
image.png

RAID10

RAID 10 是先做条带再做备份。这种情况中,我们假设当DISK0损坏时,在剩下的3块盘中,只有当DISK1一个盘发生故障时,才会导致整个RAID失效,我们可简单计算故障率为1/3
可用空间:N*MIN/2
冗余特性:1块盘
最少磁盘:4
image.png

RAID01

RAID 01 是先做备份在做条带。这种情况下,我们仍然假设DISK0损坏,这时左边的条带将无法读取。在剩下的3块盘中,只要DISK2,DISK3两个盘中任何一个损坏,都会导致整个RAID失效,我们可简单计算故障率为2/3。因此,RAID10比RAID01在安全性方面要强
image.png
从数据存储的逻辑位置来看,在正常的情况下RAID01和RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,比如前面假设的DISK0损坏时,我们也可以发现,这两种情况下,在读的性能上面也将不同,RAID10的读性能将优于RAID01。
把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。

RAID类型 个数 利用率 优缺点
RAID 0 条带集 2+ 100% 读写速率最快、不容错
RAID 1 镜像集 2 50% 读写速率一般,容错
RAID 5 带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块
RAID 6 带奇偶校验条带集双校验 4+ (n-2)/2 读写速率快,容错,允许坏两块
RAID 01
RAID 10 RAID1的安全+RAID0的高速 4 50% 读写速率快,容错
RAID 50 RAID5的安全+RAID0的高速 6 (n-2)/n 读写速率快,容错
RAID 60 RAID6的安全+RAID0的高速 8 (n-4)/n 读写速率快,容错

mdadm 命令行实现

Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层给我们提供一个应用程序的工具mdadm ,mdadm是linux下用于创建和管理软件RAID的命令

参数 说明
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示创建过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列

搭建RAID 10阵列

#新添加4块硬盘——在centos关机的情况下添加4块新的硬盘
[root@node2 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde
#下载mdadm
[root@node2 ~]# yum install mdadm -y

#创建RAID阵列
[root@node2 ~]# mdadm -C -v /dev/md10 -l 10 -n4 /dev/sd{b,c,d,e}
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
#查看RAIDmd10的详细信息
[root@node2 ~]# mdadm -D /dev/md10
/dev/md10:
           Version : 1.2
     Creation Time : Wed Apr 29 07:22:43 2020
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Apr 29 07:23:15 2020
             State : clean, resyncing 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

     Resync Status : 25% complete

              Name : node2:10  (local to host node2)
              UUID : 2dcac6ea:890b42ed:ff8755c2:359ebe99
            Events : 4

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
       [root@node2 ~]# mdadm -Q /dev/md10
/dev/md10: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

#格式化磁盘阵列
[root@node2 ~]#  mkfs.xfs /dev/md10
meta-data=/dev/md10              isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

#挂载使用
[root@node2 ~]# mkdir raid10
[root@node2 ~]# mount /dev/md10 raid10

#永久挂载
 echo “mount /dev/md10 /ken” >> /etc/rc.local
 或者
  echo “/dev/md10 /ken xfs defaults 0 0 ” >> /etc/fstab

管理RAID10阵列

模拟磁盘损坏后的处理方式

 mdadm /dev/md10 -f /dev/sdd   ——选项f是用于模拟磁盘损坏。

 mdadm -D /dev/md10                
#看详细信息,这时候已经显示磁盘损坏了
# 重启 
#添加磁盘
mdadm /dev/md10 -a /dev/sdf
mdadm -D /dev/md10
#添加成功,然后照常使用

image.png

创建RAID5+热备盘

第一步:添加四块磁盘并查看。

    # ls /dev/sd*

第二步:创建磁盘阵列RAID5

    # mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}

第三步:查看阵列信息

    # mdadm -D /dev/md5

第四步:格式化

    # mkfs.xfs /dev/md5

第五步:挂载

    # mkdir /ken
    # mount /dev/md5 /ken

LVM工具

部分摘录于相关文章:

https://www.cnblogs.com/moox/p/11163229.html https://blog.51cto.com/13691477/2299707 https://blog.51cto.com/wuyelan/1540859 https://www.thegeekdiary.com/lvm-error-cant-open-devsdx-exclusively-mounted-filesystem/ http://www.liaojl.com/blog/device-devsdb-excluded-by-a-filter/

介绍

LVM Logical Volume Manager(逻辑卷管理)是Linux操作系统对硬盘分区管理的一种形式,最早在内核2.4版上实现。
LVM是 Linux核心所提供的逻辑卷管理功能,在硬盘分区之上,又重新创建了一个逻辑层方便系统管理硬盘分区系统,可以提高磁盘分区管理的灵活性。
RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。

逻辑分区与逻辑卷的区别

逻辑分区容量大小不能改变
逻辑卷的容量大小可以改变(基于物理卷和卷组之上的逻辑卷)
逻辑卷管理器(LVM)可以更加轻松的管理磁盘空间(整合的磁盘池)

4个概念

PE

每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB

PV

物理卷就是指磁盘,磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝。默认为1,保存在设备的开始处。为2时,在设备结束处保存第二份备份。

VG

LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

LV

LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)
image.png

原理解析

image.png
LVM的实质将多个物理卷(Physical Volume,PV,实质是分区)组合成一块更大的磁盘,称为卷组(Volume Group VG)。然后再卷组上划分新得逻辑卷(Logical Volume ,LV),最后在逻辑卷上建立文件系统的挂载。
LVM重新建立了新的寻址方式,首先在物理卷中创建物理块(Physiccal Extent,PE),物理块是LVM中最小的可寻址单元。创建卷组的时候,在卷组上创建与物理块一一对应的逻辑块(Logical Extent,LE)。创建逻辑卷的时候只需要将逻辑块划分给对应的逻辑卷。

1.将我们的物理硬盘格式化成PV
2.创建一个VG卷组在这里可以将其抽象成一个空间池,VG的作用就是用来装PE的,可以把一个或者多个PV加到VG当中
3.基于VG创建LV,创建LV就是从VG中拿出指定数量的PE,大小是PE的整数倍,组成LV的PE可以来自不同的PV
4.将创建好的LV进行文件系统的格式化,然后挂载使用
5.LV的扩充缩减实际上就是增加或减少组成该LV的PE的数量,其过程不会丢失原始数据
image.png

内核要求

LVM1版本需要2.4及以后的内核支持;LVM2需要2.6及以后的内核版本支持。

[root@node1 LG]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[root@node1 LG]# uname -r
3.10.0-1062.1.2.el7.x86_64

相关命令

pv 物理卷管理工具

  • pvs:显示pv的摘要信息
  • pvdiplay:显示pv的详细信息
  • pvcreate /dev/DEVICE:创建pv

    vg 卷组管理工具

  • vgs:查看卷组的摘要信息

  • vgsdisplay 查看所有卷组的详细信息
  • vgcreate 创建卷组
  • vgextend:拓展
  • vgreduce:缩减,需要先进行vpmove操作
  • vgextend VG PV ……

    lv管理工具

  • lvs 显示逻辑卷的信息

  • lvsdisplay 显示逻辑卷的详细信息
  • lvcreate -n LV1 -L 1G VG1 创建逻辑卷

      -n:创建的逻辑卷名<br />         -L:表示分配逻辑卷的大小 <br />       VG1:表示在卷组VG1上创建逻辑卷LV1<br />          -s:创建快照卷
    
  • lvremove /dev/VG_NAME/LV_NAME 删除lv

  • 拓展逻辑卷
    - lvextend -L size | +size lvname-path
    - resizefs /dev/VG_NAME/LV_NAME
    - vg创建后:/dev/vg_name/
    - lv创建后:/dev/vg_name/lv_name
    
  • 缩减逻辑卷
    - umount /dev/VG_NAME/LV_NAME  
    - e2fsck  | fsck -f /dev/VG_NAME/LV_NAME  
    - resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]  
    - lvreduce ‐L #[mMgGtT] /dev/VG_NAME/LV_NAME 
    - mount
    
    | 命令 | 含义 | | —- | —- |
mke2fs -t ext4 /devVG1/LV1 格式化物理卷
mount 挂载,可以在/etc/fstab中永久挂载
vgextend VG1 /dev/sdd 扩容卷组容量,把物理卷加入卷组
lvextend -L +2G /dev/VG1/LV1 扩容逻辑卷 LV1,增加2G容量
resize2fs /dev/VG1/LV1 确认增加容量
e2fsck -f /dev/VG1/LV1 强制检查LV1逻辑卷,需先卸载
lvreduce -L 1G /dev/VG1/LV1 对逻辑卷的容量进行缩减
pvmove /dev/sdb1 将sdb1磁盘分区的数据转移到其他磁盘中
vgreduce VG1 /dev/sdb1 把sdb1从VG1官族中移除
pvremove /dev/sdb1 把sdb1分区从pv物理卷中释放处理
lvcreate -L 20M -n backup -s -p r /dev/V1/LV1 备份逻辑卷

创建逻辑卷

image.png

1.分区

添加两块磁盘,分别为:/dev/sdb/dev/sdc,分别对sdb和sdc进行分区。

sdb的分区是:两个主分区

sdc的分区是:一个主分区和一个扩展分区,其中扩展分区有分出了逻辑分区

/dev/sdb

[root@node1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

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 0xc0a30b6f.
Command (m for help): n    
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p  #主分区 
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5g
Unsupported suffix: '.
Supported: 10^N: KB (KiloByte), MB (MegaByte), GB (GigaByte)
            2^N: K  (KibiByte), M  (MebiByte), G  (GibiByte)
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): N\
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 
First sector (10487808-41943039, default 10487808): 
Using default value 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): +1G
Partition 2 of type Linux and of size 1 GiB is set
Command (m for help): T  #做LVM管理,需要修改分区类型为Linux LVM
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): 8E
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): T
Partition number (1,2, default 2): 
Hex code (type L to list all codes): 8E
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): P

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc0a30b6f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   8e  Linux LVM
/dev/sdb2        10487808    12584959     1048576   8e  Linux LVM

Command (m for help): W  #保存分区信息
The partition table has been altered!

Calling ioctl() to re-read partition table.
#更新操作系统磁盘分区表
[root@node1 ~]# partprobe /dev/sdb
[root@node1 ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2

/dev/sdc
创建一个主分区和一个逻辑分区,用来测试扩展分区和逻辑分区是否能够创建PV物理卷并加入VG卷组,实验证明,扩展分区是无法创建PV和加入VG,主分区和逻辑分区可以。
扩展分区,要创建扩展分区之后,才能创建逻辑分区;
扩展分区只能创建一个,分区表支持创建最多四分主分区,
如果想要创建4个以上的分区,必须创建扩展分区,然后创建逻辑分区

[root@node1 ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).

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 0xc8bc1447.


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +6G
Partition 1 of type Linux and of size 6 GiB is set
Command (m for help): N
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): E
Partition number (2-4, default 2): 
First sector (12584960-41943039, default 12584960): 
Using default value 12584960
Last sector, +sectors or +size{K,M,G} (12584960-41943039, default 41943039): 
Using default value 41943039
Partition 2 of type Extended and of size 14 GiB is set

Command (m for help): N
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): L #创建逻辑分区
Adding logical partition 5
First sector (12587008-41943039, default 12587008): 
Using default value 12587008
Last sector, +sectors or +size{K,M,G} (12587008-41943039, default 41943039): 
Using default value 41943039
Partition 5 of type Linux and of size 14 GiB is set

Command (m for help): P

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc8bc1447

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    12584959     6291456   83  Linux
/dev/sdc2        12584960    41943039    14679040    5  Extended
/dev/sdc5        12587008    41943039    14678016   83  Linux

Command (m for help): T #修改分区类型
Partition number (1,2,5, default 5): 1
Hex code (type L to list all codes): 8E
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): T
Partition number (1,2,5, default 5): 5
Hex code (type L to list all codes): 8E
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): P

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc8bc1447

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    12584959     6291456   8e  Linux LVM
/dev/sdc2        12584960    41943039    14679040    5  Extended
/dev/sdc5        12587008    41943039    14678016   8e  Linux LVM

Command (m for help): W
The partition table has been altered!

#更新操作系统磁盘分区表
[root@node1 ~]# ls /dev/sdc*
/dev/sdc  /dev/sdc1  /dev/sdc2  /dev/sdc5

2.将物理分区与硬盘创建为物理卷(pvcreate)

报错

[root@node1 ~]# pvcreate /dev/sdb1
  Can't open /dev/sdb1 exclusively.  Mounted filesystem?
  Can't open /dev/sdb1 exclusively.  Mounted filesystem?
  可以尝试修改配置文件:
  /etc/lvm/lvm.conf

创建pv

[root@node1 ~]# pvcreate /dev/sdc2 # sdc2是扩展分区,无法做成物理卷PV
  Device /dev/sdc2 excluded by a filter.
[root@node1 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
  #把sdb1做成物理卷PV,也可以用下面的写法,一次性把所有主分区或逻辑分区做成物理卷PV
[root@node1 ~]# pvcreate /dev/sdb2 /dev/sdc1 /dev/sdc5
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdc5" successfully created.
#显示所有的物理卷
[root@node1 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <19.00g      0 
  /dev/sdb1         lvm2 ---    5.00g   5.00g
  /dev/sdb2         lvm2 ---    1.00g   1.00g
  /dev/sdc1         lvm2 ---    6.00g   6.00g
  /dev/sdc5         lvm2 ---  <14.00g <14.00g

3.将物理卷(pv)创建为卷组(vgcreate)

创建卷组v1 ,卷组的pv物理卷,可u是不同磁盘,即整合了所有磁盘分区做成资源池

[root@node1 ~]# vgcreate V1 /dev/sdb1 /dev/sdc1
  Volume group "V1" successfully created
[root@node1 ~]# vgcreate V2 /dev/sdb2 /dev/sdc5
  Volume group "V2" successfully created
[root@node1 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  V1       2   0   0 wz--n-  10.99g 10.99g
  V2       2   0   0 wz--n-  14.99g 14.99g
  centos   1   2   0 wz--n- <19.00g     0

4.在卷组里创建逻辑卷并格式化、挂载使用

创建逻辑卷

[root@node1 ~]#  lvcreate -n LV1 -L 1G V1 
#-n表示创建逻辑卷名,-L表示分配逻辑卷的空间大小,VG1表示在卷组VG1上创建逻辑卷LVtes
  Logical volume "LV1" created.
[root@node1 ~]# lvcreate -n LV2 -L 1G V2
  Logical volume "LV2" created.
[root@node1 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV1  V1     -wi-a-----   1.00g                                                    
  LV2  V2     -wi-a-----   1.00g                                                    
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g  
[root@node1 ~]# ls -l /dev/V1
total 0
lrwxrwxrwx. 1 root root 7 Apr 28 21:58 LV1 -> ../dm-2
[root@node1 ~]# ls -l /dev/V2
total 0
lrwxrwxrwx. 1 root root 7 Apr 28 21:58 LV2 -> ../dm-3

格式化逻辑卷

#物理卷需要格式化之后才能使用,格式化为ext4格式
[root@node1 ~]# mke2fs -t ext4 /dev/V1/LV1 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

挂载逻辑卷

[root@node1 ~]# mkdir LV
[root@node1 ~]# mount /dev/V1/LV1 LV
[root@node1 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G 1004M   17G   6% /
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   12M  3.8G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
tmpfs                    781M     0  781M   0% /run/user/0
/dev/mapper/V1-LV1       976M  2.6M  907M   1% /root/LV
[root@node1 ~]# cd LV
[root@node1 LV]# LS
[root@node1 LV]# ls
lost+found

永久挂载逻辑卷

服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面.UUID可以通过 blkid命令查询.
为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount –a 使内核重新读取/etc/fstab,看是否能够自动挂载.

扩大卷组空间

如果卷组空间不够,扩大卷组空间

fdisk创建分区->修改分区类型Linux LVM->向内核注册新分区->创建物理卷->把物理卷加入需要扩容的卷组

增加一块硬盘,并将这块磁盘创建PV

#通知系统重新搜索磁盘
[root@node1 ~]# echo "- - - " > /sys/class/scsi_host/host0/scan
#将/dev/sdd分区并更改格式  按照之前的方法进行分区
Command (m for help): P

Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc3c0f2f4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    10487807     5242880   8e  Linux LVM
/dev/sdd2        10487808    20973567     5242880    5  Extended
/dev/sdd5        10489856    16781311     3145728   8e  Linux LVM

#创建物理卷PV
[root@node1 ~]# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created.
[root@node1 ~]# vgs  #查看VG扩展前的信息,与扩展后对比
  VG     #PV #LV #SN Attr   VSize   VFree 
  V1       2   1   0 wz--n-  10.99g  9.99g
  V2       2   1   0 wz--n-  14.99g 13.99g
  centos   1   2   0 wz--n- <19.00g     0 
#扩展VG卷组容量,把物理卷加入卷组 
[root@node1 ~]# vgextend V1 /dev/sdd1
  Volume group "V1" successfully extended
[root@node1 ~]# vgs  #查看VG扩展后的信息
  VG     #PV #LV #SN Attr   VSize   VFree  
  V1       3   1   0 wz--n- <15.99g <14.99g
  V2       2   1   0 wz--n-  14.99g  13.99g
  centos   1   2   0 wz--n- <19.00g      0

拉伸逻辑卷

image.png
在对逻辑卷进行拉伸时,其实际就时向逻辑卷中增加PE的数量,而PE的数量时由VG中剩余PE的数量所决定的

拉伸逻辑卷是可以在线进行,不需要卸载掉我们的逻辑卷。当逻辑卷的大小不够用时,不需要对其进行卸载,就可以动态增加逻辑卷的大小

扩展逻辑卷(支持在线扩展)

[root@node1 ~]#  echo "this is a test for LVM"> LV/test
#在挂载的逻辑卷里添加数据,用来测试在逻辑卷扩容是否会破坏原有数据
[root@node1 ~]# cat LV/test
this is a test for LVM

#扩容逻辑卷LV1,增加1G空间容量(从对应的卷组中划分空间容量)
[root@node1 ~]# lvs  #扩容前
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV1  V1     -wi-ao----   1.00g                                                    
  LV2  V2     -wi-a-----   1.00g                                                    
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g  

[root@node1 ~]# lvextend -L +1G /dev/V1/LV1
  Size of logical volume V1/LV1 changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
  Logical volume V1/LV1 successfully resized.
[root@node1 ~]# lvs   #扩容后
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV1  V1     -wi-ao----   2.00g                                                    
  LV2  V2     -wi-a-----   1.00g                                                    
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g  


#使用resize2fs命令来进行确认增加容量,前面的步骤只是初步分配,还不能实际使用,
#需要此步骤来确定实际分配使用
[root@node1 ~]# resize2fs  /dev/V1/LV1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/V1/LV1 is mounted on /root/LV; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/V1/LV1 is now 524288 blocks long.

#xfs系统确认实际使用的命令
#xfs_growfs /dev/VGtest1/LVtest1

#数据没有受损
[root@node1 ~]# cat LV/test
this is a test for LVM
[root@node1 ~]# df -h   #查看逻辑卷的容量是否增加;
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G 1004M   17G   6% /
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   12M  3.8G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
tmpfs                    781M     0  781M   0% /run/user/0
/dev/mapper/V1-LV1       2.0G  3.1M  1.9G   1% /root/LV

缩减逻辑卷

注意:
1.缩减逻辑卷不能在线缩减,得先卸载
2.需要确保缩减后的空间大小依然能够存储原有的所有数据
3.在缩减之前需要强行检查文件,以确保文件系统处于一致性状态
4.缩减后,需要重新挂载
文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

顺序:先缩减逻辑边界,再缩减物理边界

[root@node1 ~]# umount LV
#处于挂载状态的LV逻辑卷无法强制检查
强行进行文件检查
e2fsck命令
e2fsck是检查ext2、ext3、ext4等文件系统的正确性。
补充说明:
e2fsck执行后的传回值及代表意义如下:
0 没有任何错误发生。
1 文件系统发生错误,并且已经修正。
2 文件系统发生错误,并且已经修正。
4 文件系统发生错误,但没有修正。
8 运作时发生错误。
16 使用的语法发生错误。
128 共享的函数库发生错误。
[root@node1 ~]# e2fsck -f /dev/V1/LV1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/V1/LV1: 12/131072 files (0.0% non-contiguous), 17197/524288 blocks

#首先需要确定缩减逻辑卷到多大空间容量,-1G表示缩减1G大小,1G表示缩减至1G,再进行逻辑卷LV容量缩减
缩减逻辑边界,将逻辑卷缩减至1.5G
[root@node1 ~]# resize2fs /dev/V1/LV1 1.5G
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Invalid new size: 1.5G
#缩减物理边界
[root@node1 ~]# lvreduce -L 1.5G /dev/V1/LV1
  WARNING: Reducing active logical volume to 1.50 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce V1/LV1? [y/n]: y
  Size of logical volume V1/LV1 changed from 2.00 GiB (512 extents) to 1.50 GiB (384 extents).
  Logical volume V1/LV1 successfully resized.

挂载出现错误

[root@node1 ~]#  mount /dev/V1/LV1 LV
mount: wrong fs type, bad option, bad superblock on /dev/mapper/V1-LV1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
root@node1 ~]#  dmesg | tail
[20523.888746] EXT4-fs (dm-2): resizing filesystem from 262144 to 524288 blocks
[20523.994173] EXT4-fs (dm-2): resized filesystem to 524288
[21824.339655] EXT4-fs (dm-2): bad geometry: block count 524288 exceeds size of device (393216 blocks)

之后

[root@node1 ~]# resize2fs /dev/V1/LV1 1G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/V1/LV1 to 262144 (4k) blocks.
The filesystem on /dev/V1/LV1 is now 262144 blocks long.

[root@node1 ~]# lvreduce -L 1G /dev/V1/LV1
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce V1/LV1? [y/n]: y
  Size of logical volume V1/LV1 changed from 1.50 GiB (384 extents) to 1.00 GiB (256 extents).
  Logical volume V1/LV1 successfully resized.
[root@node1 ~]# mount /dev/V1/LV1 LV
[root@node1 ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  17811456 1074316  16737140   7% /
devtmpfs                  3982984       0   3982984   0% /dev
tmpfs                     3995144       0   3995144   0% /dev/shm
tmpfs                     3995144   12024   3983120   1% /run
tmpfs                     3995144       0   3995144   0% /sys/fs/cgroup
/dev/sda1                 1038336  148712    889624  15% /boot
tmpfs                      799032       0    799032   0% /run/user/0
/dev/mapper/V1-LV1         999320    2568    933184   1% /root/LV

缩减磁盘空间

发现物理磁盘空间使用不足,将其中一块硬盘或分区拿掉,避免磁盘浪费
1.通过pvmove命令转移空间数据
2.通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去
3.通过pvremove命令将即将坏的磁盘或者分区从系统种删除掉
4.手工拆除硬盘或者通过一些工具修复分区

[root@node1 ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <19.00g       0 
  /dev/sdb1  V1     lvm2 a--    <5.00g   <4.00g
  /dev/sdb2  V2     lvm2 a--  1020.00m 1020.00m
  /dev/sdc1  V1     lvm2 a--    <6.00g   <6.00g
  /dev/sdc5  V2     lvm2 a--   <14.00g  <13.00g
  /dev/sdd1  V1     lvm2 a--    <5.00g   <5.00g
  #把sdb1磁盘分区的数据转移到其它磁盘上
[root@node1 ~]# pvmove /dev/sdb1
  /dev/sdb1: Moved: 3.91%
  /dev/sdb1: Moved: 100.00%

  #把分区sdb1从VG卷组中移除
[root@node1 ~]# vgreduce V1 /dev/sdb1
  Removed "/dev/sdb1" from volume group "V1"

  #把sdb1分区从PV物理卷中释放出来
[root@node1 ~]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped.

[root@node1 ~]# cat LV/test
this is a test for LVM
[root@node1 ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <19.00g       0 
  /dev/sdb2  V2     lvm2 a--  1020.00m 1020.00m
  /dev/sdc1  V1     lvm2 a--    <6.00g   <5.00g
  /dev/sdc5  V2     lvm2 a--   <14.00g  <13.00g
  /dev/sdd1  V1     lvm2 a--    <5.00g   <5.00g

重新把/dev/sdb1加入到V1中

[root@node1 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
 [root@node1 ~]#  vgextend V1 /dev/sdb1
  Volume group "V1" successfully extended

删除逻辑卷

1、先通过umount命令卸载掉逻辑卷lvdata1

2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。

3、通过lvremove 删除逻辑卷lvdata1

4、通过vgremove 删除卷组vgdata

5、通过pvremove 将物理卷转化成普通分区。

删除完了,要修改分区的id标识。修改成普通Linux分区即可。

快照卷

lvcreate -n LV_NAME -L #{K/M/G/T} VG_NAME #创建逻辑卷
-s创建快照卷

1.数据的增长量不能超过快照卷大小
2.快照卷应该只是可读的
3.跟原卷在同一卷组中,在划分时,需给快照卷预留空间

[root@node1 ~]# cd LV
[root@node1 LV]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.1G   16G   7% /
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   12M  3.8G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
tmpfs                    781M     0  781M   0% /run/user/0
/dev/mapper/V1-LV1       976M  2.6M  912M   1% /root/LV

利用LV1逻辑卷,快照形成一个备份的物理卷BackUp(逻辑卷快照功能)

[root@node1 LV]# lvcreate -L 20M -n BackUp -s -p r /dev/V1/LV1
  Logical volume "BackUp" created.
[root@node1 LV]# lvs
  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  BackUp V1     sri-a-s---  20.00m      LV1    0.06                                   
  LV1    V1     owi-aos---   1.00g                                                    
  LV2    V2     -wi-a-----   1.00g                                                    
  root   centos -wi-ao---- <17.00g                                                    
  swap   centos -wi-ao----   2.00g   
[root@node1 LV]# mount /dev/V1/BackUp /tmp/back
mount: /dev/mapper/V1-BackUp is write-protected, mounting read-only
[root@node1 LV]# cat /tmp/back/test
this is a test for LVM

删除快照卷

[root@node1 LV]#  lvremove /dev/V1/BackUp
  Logical volume V1/BackUp contains a filesystem in use.
#需要先卸载
[root@node1 LV]# umount /tmp/back
[root@node1 LV]#  lvremove /dev/V1/BackUp
Do you really want to remove active logical volume V1/BackUp? [y/n]: y
  Logical volume "BackUp" successfully removed

ssm

System Storage Manager(ssm )系统存储管理器,也可以用于管理逻辑卷。

安装

yum -y install system-storage-manager

命令

ssm list

显示所有检测到的设备、池、卷和快照的信息

[root@localhost ~]# ssm list

###第一部分是物理设备
-----------------------------------------------------------
Device        Free      Used     Total  Pool    Mount point
-----------------------------------------------------------
/dev/sda                      40.00 GB                     
/dev/sda1                      1.00 GB          /boot      
/dev/sda2  4.00 MB  38.99 GB  39.00 GB  centos             
/dev/sdb                       2.00 GB                     
/dev/sdc                       2.00 GB                     
/dev/sdd                       2.00 GB                     
-----------------------------------------------------------

##第二部分是存储池
--------------------------------------------------
Pool    Type  Devices     Free      Used     Total  
--------------------------------------------------
centos  lvm   1        4.00 MB  38.99 GB  39.00 GB  
--------------------------------------------------

##第三部分是存储池中的逻辑卷
--------------------------------------------------------------------------------------
Volume            Pool    Volume size  FS      FS size       Free  Type    Mount point
--------------------------------------------------------------------------------------
/dev/centos/root  centos     36.99 GB  xfs    36.97 GB   34.44 GB  linear  /          
/dev/centos/swap  centos      2.00 GB                              linear             
/dev/sda1                     1.00 GB  xfs  1014.00 MB  864.65 MB          /boot      
--------------------------------------------------------------------------------------

创建逻辑卷 ssm create

# 创建挂载目录
[root@localhost ~]# mkdir /mnt/volume1
# 创建逻辑卷
[root@localhost ~]# ssm create -s 1G -n lv1 -p vg0 --fstype xfs /dev/sd{b,c,d} /mnt/volume1
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.
  Volume group "vg0" successfully created
  Logical volume "lv1" created.
meta-data=/dev/vg0/lv1           isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, 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@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.6M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   37G  2.6G   35G   7% /
/dev/sda1               1014M  150M  865M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
/dev/mapper/vg0-lv1     1014M   33M  982M   4% /mnt/volume1

扩展逻辑卷 ssm resize

可以调整逻辑卷的大小

[root@localhost ~]# ssm resize -s +2G vg0/lv1
  Size of logical volume vg0/lv1 changed from 1.00 GiB (256 extents) to 3.00 GiB (768 extents).
  Logical volume vg0/lv1 successfully resized.
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.6M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   37G  2.6G   35G   7% /
/dev/sda1               1014M  150M  865M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
/dev/mapper/vg0-lv1      3.0G   33M  3.0G   2% /mnt/volume1

创建快照 ssm snapshot

[root@localhost ~]# ssm snapshot /dev/vg0/lv1 
  Rounding up size to full physical extent 412.00 MiB
  Logical volume "snap20200325T195111" created.
[root@localhost ~]# ssm list snap
------------------------------------------------------------------------
Snapshot                      Origin  Pool  Volume size     Used  Type  
------------------------------------------------------------------------
/dev/vg0/snap20200325T195111  lv1     vg0     412.00 MB  0.00 KB  linear

删除卷、池

[root@localhost ~]# umount /mnt/volume1/
# 删除vg0池和lv1卷
[root@localhost ~]# ssm remove  vg0
Do you really want to remove volume group "vg0" containing 2 logical volumes? [y/n]: y
Do you really want to remove active origin logical volume vg0/lv1 with 1 snapshot(s)? [y/n]: y
  Logical volume "snap20200325T195111" successfully removed
  Logical volume "lv1" successfully removed
  Volume group "vg0" successfully removed

  然后从物理卷里面把/dev/sdb,/dev/sdc,/dev/sdd移除掉。

[root@localhost ~]# pvremove /dev/sd{b,c,d}
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sdd" successfully wiped

参考:https://www.cnblogs.com/linuxprobe/p/12930671.html