欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

逻辑卷管理-LVM(Logical Volume Manager)

程序员文章站 2022-06-02 17:37:49
一、 概念与由来 LVM:逻辑卷管理(Logical Volume Manager) 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某文件时,这个文件因为受上层文件系统的限制,不能跨越多个分区存放,所以也不能放到多个磁盘上。 而当某个分区空间耗尽时,解决的方法通常 ......

一、 概念与由来

lvm:逻辑卷管理(logical volume manager)

普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某文件时,这个文件因为受上层文件系统的限制,不能跨越多个分区存放,所以也不能放到多个磁盘上。

而当某个分区空间耗尽时,解决的方法通常是使用符号链接,或者是调整分区大小的工具(工具有可能会导致我们的系统崩溃),但这都没有从根本上解决问题。

随着lvm的出现,问题迎刃而解,用户在无需停机的情况下可以很方便的调整分区的大小

二、 工作原理

lvm的工作原理是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。

在传统的磁盘管理机制中,上层应用是直接访问文件系统来对底层的物理硬盘进行读写。而在lvm中,它会将底层的硬盘进行封装,当我们通过软件去对底层的物理磁盘进行操作时,它不再是直接对分区进行操作,而是通过逻辑卷对底层的物理硬盘进行操作。

lvm最大的特点就是可以对磁盘进行动态管理,因为逻辑卷的大小是可以动态调整的,而且不会丢失数据。逻辑卷的技术大大提高了磁盘管理的逻辑性。

三、 名词解释

物理存储介质(the physical media):这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等,是存储系统最低层的存储单元。

物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如raid),是lvm的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与lvm相关的管理参数。

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

逻辑卷(logical volume):lvm的逻辑卷类似于非lvm系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

pe(physical extent):每一个物理卷被划分为称为pe(physical extents)的基本单元,具有唯一编号的pe是可以被lvm寻址的最小单元。pe的大小是可配置的,默认为4mb。

le(logical extent):逻辑卷也被划分为被称为le(logical extents) 的可被寻址的基本单位。在同一个卷组中,le的大小和pe是相同的,并且一一对应。

四、lvm创建逻辑概念

我们以lvm对磁盘进行动态管理后,使硬盘以逻辑卷的形式呈献给上层服务的。所以我们操作的目的就是创建lv,用lv去替代我们之前的分区,我们通过对逻辑卷进行格式化,然后挂载就可以使用了。步骤如下:

 

逻辑卷管理-LVM(Logical Volume Manager)

  1. 将创建好的lv进行文件系统格式化,然后使用mount进行挂载,这时我们就可以像平常使用分区一样使用逻辑卷了。
  2. 对lvm的工作原理进行总结

    a)         物理磁盘被格式化为pv,空间被划分成一个个的pe

    b)        将不同的pv加入到同一个vg中,不同pv的pe全部放到了vg的pe池中

    c)         lv基于pe创建,大小为pe的整数倍,组成lv的pe可能来自不同的磁盘

    d)        lv在格式化文件系统后挂载就可以使用了

    e)         lv的扩充缩减实际上就是增加或减少pe数量,其过程不会丢失数据

    所以,如果我们要对lv进行扩充,首先加入一块磁盘,然后格式化成pv,将该pv加入到vg中,然后我们就可以从vg中拿出空闲的pe对lv进行扩充了

 

五、命令解析

    a)pv管理

      pvcreate    # 创建pv

      pvscan       # 扫描并列出所有pv

      pvdisplay    # 列出pv属性信息

      pvremove      #  移除pv

      pvmove      # 移动pv中的数据

   

    b)vg管理

      vgcreate    # 创建vg

        -s    # 指定pe的大小

        -l    # 卷组上允许创建的最大逻辑卷数

        -p    # 卷组中允许添加的最大物理卷数

      vgscan     # 扫描并列出所有vg

      vgdisplay    # 列出vg属性信息

      vgremove    # 移除vg

      vgreduce      # 从vg中移除pv

      vgextend     # 将pv添加到vg

      vgchange     # 设置vg是否启动(active)

    

    c)lv管理

      lvcreate      # 创建lv

        -l +size # 指定lv大小

        -n      # 指定lv名字 

示例:lvcreate -l 5g -n lv vg0   然后再/dev/mapper中会创建vg0-lv1

      lvscan        # 扫描并列出所有lv

      lvdisplay      # 列出lv属性信息

      lvremove      # 移除lv

      lvreduce(lvresize)  # 缩小lv容量

      lvextend(lvresize)  # 增大lv容量

      lvresize      # 盖面lv容量

      

六、创建逻辑卷

  1.使用pvcreate命令将物理磁盘格式化成pv,使用pvcreate命令。

    a)         虚拟两块2g物理硬盘,可以通过fdisk –l命令查看

    b)        先将/dev/sdb,/dev/sdc格式为pv

    c)         使用pvs查看简单信息,pvdisplay查看详细信息

 

[root@centos7 ~]# df -h
filesystem      size  used avail use% mounted on
/dev/sda3        98g  1.7g   97g   2% /
devtmpfs        901m     0  901m   0% /dev
tmpfs           911m     0  911m   0% /dev/shm
tmpfs           911m  9.5m  902m   2% /run
tmpfs           911m     0  911m   0% /sys/fs/cgroup
/dev/sda1      1014m  135m  880m  14% /boot
tmpfs           183m     0  183m   0% /run/user/0
[root@centos7 ~]# fdisk -l

disk /dev/sda: 107.4 gb, 107374182400 bytes, 209715200 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: 0x000c1b7a

   device boot      start         end      blocks   id  system
/dev/sda1   *        2048     2099199     1048576   83  linux
/dev/sda2         2099200     4196351     1048576   82  linux swap / solaris
/dev/sda3         4196352   209715199   102759424   83  linux

disk /dev/sdb: 2147 mb, 2147483648 bytes, 4194304 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 /dev/sdc: 2147 mb, 2147483648 bytes, 4194304 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

[root@centos7 ~]# yum install lvm2 -y          # 安装lvm2软件
[root@centos7 ~]# rpm -qa|grep lvm            # 过滤lvm包组
lvm2-2.02.180-10.el7_6.3.x86_64
lvm2-libs-2.02.180-10.el7_6.3.x86_64

[root@centos7 ~]# pvcreate /dev/sdb /dev/sdc       # 将新添加的两块磁盘格式化为pv
  physical volume "/dev/sdb" successfully created.
  physical volume "/dev/sdc" successfully created.


[root@centos7 ~]# pvs                    # 查看pv简单信息
  pv         vg fmt  attr psize pfree
  /dev/sdb      lvm2 ---  2.00g 2.00g
  /dev/sdc      lvm2 ---  2.00g 2.00g

[root@centos7 ~]# pvdisplay                 # 显示目前系统上的pv状态
"/dev/sdb" is a new physical volume of "2.00 gib"    
  --- new physical volume ---
  pv name               /dev/sdb
  vg name               
  pv size               2.00 gib
  allocatable           no
  pe size               0   
  total pe              0
  free pe               0
  allocated pe          0
  pv uuid               dhevh2-mosu-tyas-6wb8-6gfd-ept7-0lb1ff
   
  "/dev/sdc" is a new physical volume of "2.00 gib"
  --- new physical volume ---
  pv name               /dev/sdc
  vg name               
  pv size               2.00 gib
  allocatable           no
  pe size               0   
  total pe              0
  free pe               0
  allocated pe          0
  pv uuid               blrh3d-ry0i-durj-3apn-q4kf-m0uy-dg8f5q

 

 2.创建卷组vg,并将pv加入到vg,通过vgcreate命令

[root@centos7 ~]# vgcreate pool /dev/sdb /dev/sdc    # 创建vg池
  volume group "pool" successfully created
[root@centos7 ~]# vgs                     # 查看简单信息
  vg   #pv #lv #sn attr   vsize vfree
  pool   2   0   0 wz--n- 3.99g 3.99g            #此处显示的3.99g就是两块磁盘给格式化成pe后组成的vg容量
[root@centos7 ~]# vgdisplay                  # 查看详细信息
  --- volume group ---      
  vg name               pool
  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               3.99 gib
  pe size               4.00 mib
  total pe              1022
  alloc pe / size       0 / 0   
  free  pe / size       1022 / 3.99 gib
  vg uuid               e55yks-0phr-varp-xaf8-8w4b-vbfg-vwqpm3

  3.基于vg创建lv,通过lvcreate命令

[root@centos7 ~]# lvcreate -n xiaolizilv -l 2g pool            # 创建lv逻辑卷名字为xiaolizilv 大小为2g
  logical volume "xiaolizilv" created.
[root@centos7 ~]# lvs                              # 简单显示lv信息
  lv         vg   attr       lsize pool origin data%  meta%  move log cpy%sync convert
  xiaolizilv pool -wi-a----- 2.00g  
[root@centos7 ~]# lvdisplay                           # 详细显示lv信息
  --- logical volume ---  
  lv path                /dev/pool/xiaolizilv
  lv name                xiaolizilv
  vg name                pool
  lv uuid                xhcdbm-jzva-mimw-4p0k-0v4o-gl60-9x4mnr
  lv write access        read/write
  lv creation host, time centos7, 2019-04-19 17:40:39 +0800
  lv status              available
  # open                 0
  lv size                2.00 gib
  current le             512
  segments               2
  allocation             inherit
  read ahead sectors     auto
  - currently set to     8192
  block device           253:0

  [root@centos7 ~]# ls /dev/mapper/
    control pool-xiaolizilv


  [root@centos7 ~]# mkfs.xfs /dev/mapper/pool-xiaolizilv          # 格式化文件系统
    meta-data=/dev/mapper/pool-xiaolizilv isize=512 agcount=4, agsize=131072 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=524288, 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@centos7 ~]# mkdir /lvtest                        # 创建挂载点
 [root@centos7 ~]# mount /dev/mapper/pool-xiaolizilv /lvtest/
 [root@centos7 ~]# df -h
    filesystem size used avail use% mounted on
    /dev/sda3 98g 1.6g 97g 2% /
    devtmpfs 901m 0 901m 0% /dev
    tmpfs 911m 0 911m 0% /dev/shm
    tmpfs 911m 9.6m 902m 2% /run
    tmpfs 911m 0 911m 0% /sys/fs/cgroup
    /dev/sda1 1014m 135m 880m 14% /boot
    tmpfs 183m 0 183m 0% /run/user/0
    /dev/mapper/pool-xiaolizilv 2.0g 33m 2.0g 2% /lvtest

 

 

七、扩容一个逻辑卷

在传统的硬盘管理模式中,如果我们一个分区大小不够用了(硬盘还有剩余空间的时候),需要扩容,那只能将此分区所有的信息转到别处,卸载后重新分区,最后再将新的分区挂载上去。

如果在生产环境中,这样的操作是不可想象的,费时费力。而使用lvm就方便很多了,见图:

 逻辑卷管理-LVM(Logical Volume Manager)

 

从上图可以看出,所谓扩容就是往lv中增加pe的数量,增加多少取决你vg中空闲的pe数量。

【注意】逻辑卷的扩容可以在线进行,不需要卸载逻辑卷。这样的管理方式对于7*24小时小对外提供服务的公司就非常有必要了。

  第一种情况:vg中有足够的剩余空间(能看到空闲1.99g),这时为 lv增加1g的容量。步骤如下:

[root@centos7 ~]# vgdisplay 
  --- volume group ---
  vg name               pool
  system id             
  format                lvm2
  metadata areas        2
  metadata sequence no  2
  vg access             read/write
  vg status             resizable
  max lv                0
  cur lv                1
  open lv               1
  max pv                0
  cur pv                2
  act pv                2
  vg size               3.99 gib
  pe size               4.00 mib
  total pe              1022
  alloc pe / size       512 / 2.00 gib
  free  pe / size       510 / 1.99 gib
  vg uuid               e55yks-0phr-varp-xaf8-8w4b-vbfg-vwqpm3
   
[root@centos7 ~]# lvextend -l +1g /dev/pool/xiaolizilv               # 扩容逻辑卷1g,使用lvextend命令
  size of logical volume pool/xiaolizilv changed from 2.00 gib (512 extents) to 3.00 gib (768 
extents).
  logical volume pool/xiaolizilv successfully resized.
[root@centos7 ~]# lvdisplay                               # 查看逻辑卷信息(发现lv已经是3g了)
--- logical volume ---
  lv path                /dev/pool/xiaolizilv
  lv name                xiaolizilv
  vg name                pool
  lv uuid                xhcdbm-jzva-mimw-4p0k-0v4o-gl60-9x4mnr
  lv write access        read/write
  lv creation host, time centos7, 2019-04-19 17:40:39 +0800
  lv status              available
  # open                 1
  lv size                3.00 gib
  current le             768
  segments               2
  allocation             inherit
  read ahead sectors     auto
  - currently set to     8192
  block device           253:0

[root@centos7 ~]# df -ht filesystem type size used avail use% mounted on /dev/sda3 xfs 98g 1.6g 97g 2% / devtmpfs devtmpfs 901m 0 901m 0% /dev tmpfs tmpfs 911m 0 911m 0% /dev/shm tmpfs tmpfs 911m 9.6m 902m 2% /run tmpfs tmpfs 911m 0 911m 0% /sys/fs/cgroup /dev/sda1 xfs 1014m 135m 880m 14% /boot tmpfs tmpfs 183m 0 183m 0% /run/user/0 /dev/mapper/pool-xiaolizilv xfs 2.0g 33m 2.0g 2% /lvtest

# 我们上面可以看到仅仅是lv的大小有改变,而真实文件系统的大小未改变。这是因为我们在创建完lv之后就立马格式化为文件系统了,此后我们对逻辑卷的修改,是不会直接影响到文件系统的。这时候就要用到一个更新的命令resize2fs/xfs_growfs

[root@centos7 ~]# resize2fs /dev/mapper/pool-xiaolizilv       
  resize2fs 1.42.9 (28-dec-2013)
  resize2fs: bad magic number in super-block while trying to open /dev/mapper/pool-xiaolizilv      # 此处报错,是因为之前的文件系统是xfs的,所以此处扩充命令是xfs_growfs
  couldn't find valid filesystem superblock.

[root@centos7 ~]# xfs_growfs /dev/mapper/pool-xiaolizilv                             # 更新文件系统
meta-data=/dev/mapper/pool-xiaolizilv isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 524288 to 786432

[root@centos7 ~]# df -h                  # 扩容完成
filesystem size used avail use% mounted on
/dev/sda3 98g 1.6g 97g 2% /
devtmpfs 901m 0 901m 0% /dev
tmpfs 911m 0 911m 0% /dev/shm
tmpfs 911m 9.6m 902m 2% /run
tmpfs 911m 0 911m 0% /sys/fs/cgroup
/dev/sda1 1014m 135m 880m 14% /boot
tmpfs 183m 0 183m 0% /run/user/0
/dev/mapper/pool-xiaolizilv 3.0g 33m 3.0g 2% /lvtest

 

  第二种情况:vg中没有足够的剩余空间(能看到空闲1g),这时为 lv增加16g的容量。步骤如下:

[root@centos7 ~]# vgdisplay 
  --- volume group ---
  vg name               pool
  system id             
  format                lvm2
  metadata areas        2
  metadata sequence no  3
  vg access             read/write
  vg status             resizable
  max lv                0
  cur lv                1
  open lv               1
  max pv                0
  cur pv                2
  act pv                2
  vg size               3.99 gib
  pe size               4.00 mib
  total pe              1022
  alloc pe / size       768 / 3.00 gib
  free  pe / size       254 / 1016.00 mib
  vg uuid               e55yks-0phr-varp-xaf8-8w4b-vbfg-vwqpm3
   
[root@centos7 ~]# lvextend -l 16g /dev/pool/xiaolizilv      # 没有足够的的容量

[root@centos7 ~]# ls /dev/sdd                     # 添加了一块20g的新硬盘
/dev/sdd  
[root@centos7 ~]# pvcreate /dev/sdd                # 创建pv
  physical volume "/dev/sdd" successfully created.
[root@centos7 ~]# pvs
  pv         vg   fmt  attr psize  pfree   
  /dev/sdb   pool lvm2 a--  <2.00g       0 
  /dev/sdc   pool lvm2 a--  <2.00g 1016.00m
  /dev/sdd        lvm2 ---  20.00g   20.00g
[root@centos7 ~]# vgextend pool /dev/sdd              # 创建vg池
  volume group "pool" successfully extended
[root@centos7 ~]# vgdisplay                      # free pe size 大于20g了
  --- volume group ---
  vg name               pool
  system id             
  format                lvm2
  metadata areas        3
  metadata sequence no  4
  vg access             read/write
  vg status             resizable
  max lv                0
  cur lv                1
  open lv               0
  max pv                0
  cur pv                3
  act pv                3
  vg size               <23.99 gib
  pe size               4.00 mib
  total pe              6141
  alloc pe / size       768 / 3.00 gib
  free  pe / size       5373 / <20.99 gib
  vg uuid               e55yks-0phr-varp-xaf8-8w4b-vbfg-vwqpm3
   
[root@centos7 ~]# lvextend -l +16g /dev/pool/xiaolizilv      # 扩容16g的容量
  size of logical volume pool/xiaolizilv changed from 3.00 gib (768 extents) to 19.00
b (4864 extents).
  logical volume pool/xiaolizilv successfully resized.

[root@centos7 ~]# xfs_growfs /dev/pool/xiaolizilv       # 格式化文件系统报错,因为之前的挂载没写入开机自检里,所以会报错 xfs_growfs: /dev/pool/xiaolizilv is not a mounted xfs filesystem [root@centos7 ~]# mount /dev/mapper/pool-xiaolizilv /lvtest    # 重新挂载下 [root@centos7 ~]# xfs_growfs /dev/pool/xiaolizilv           # 扩容成功 meta-data=/dev/mapper/pool-xiaolizilv isize=512 agcount=6, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=786432, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 786432 to 4980736

 [root@centos7 ~]# df -h
   filesystem size used avail use% mounted on
   /dev/sda3 98g 1.6g 97g 2% /
   devtmpfs 901m 0 901m 0% /dev
   tmpfs 911m 0 911m 0% /dev/shm
   tmpfs 911m 9.5m 902m 2% /run
   tmpfs 911m 0 911m 0% /sys/fs/cgroup
   /dev/sda1 1014m 135m 880m 14% /boot
   tmpfs 183m 0 183m 0% /run/user/0
   /dev/mapper/pool-xiaolizilv 19g 34m 19g 1% /lvtest


七、缩小一个逻辑卷

  缩小逻辑卷其实就是从lv中拿出指定指定数量的pe放回vg。

逻辑卷管理-LVM(Logical Volume Manager)

 

【注意】逻辑卷的缩小操作必须要先卸载逻辑卷才行,否则可能会造成逻辑卷中的文件发生损坏。这时我们将lv缩小至10g,步骤如下:

1.通过umount卸载已挂载的逻辑卷
[root@onion ~]# umount /mnt/ [root@onion ~]# df -ht filesystem type size used avail use% mounted on /dev/sda3 ext4 48g 1.5g 44g 4% / tmpfs tmpfs 491m 0 491m 0% /dev/shm /dev/sda1 ext4 190m 35m 146m 19% /boot 2.缩小lv的大小:我们前面讲到对lv扩容后,需要执行resize2fs/xfs_growfs更新我们的文件系统,但是在对lv进行缩小操作时(xfs文件系统不支持缩容),必须先执行缩小的操作 [root@onion ~]# resize2fs /dev/pool/mylv 10g # 检查文件系统 或者 e2fsck -f /dev/pool/mylv resize2fs 1.41.12 (17-may-2010) please run 'e2fsck -f /dev/pool/mylv' first. [root@onion ~]# e2fsck -f /dev/pool/mylv e2fsck 1.41.12 (17-may-2010) 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/pool/mylv: 12/1245184 files (0.0% non-contiguous), 95937/4980736 blocks 3.检查完毕后,再使用resize2fs去缩小文件系统
[root@onion ~]# resize2fs /dev/pool/mylv 10g resize2fs 1.41.12 (17-may-2010) resizing the filesystem on /dev/pool/mylv to 2621440 (4k) blocks. the filesystem on /dev/pool/mylv is now 2621440 blocks long. 4.跟扩容的顺序刚好相反,我们先缩小了文件系统,再缩小lv,使用lvreduce命令 [root@onion ~]# lvreduce -l -9g /dev/pool/mylv warning: reducing active logical volume to 10.00 gib. this may destroy your data (filesystem etc.) do you really want to reduce pool/mylv? [y/n]: y
注:这里会提示一个警告可能会损坏我们的文件,这种情况会出现在 当我们需要缩小的文件大小与实际操作时缩小(resize2fs)的文件大小不一致时,比如这里我如果多缩小了1个g大小的逻辑卷,这个时候就会出现文件损坏的情况 size of logical volume pool/mylv changed from 19.00 gib (4864 extents) to 10.00 gib (2560 extents). logical volume mylv successfully resized. [root@onion ~]# lvs lv vg attr lsize pool origin data% meta% move log cpy%sync convert mylv pool -wi-a----- 10.00g 【注意】缩小逻辑卷是一个非常危险的操作,稍不注意就可能损坏我们的逻辑卷,造成文件的丢失或损坏,所以我们一般不要对逻辑卷进行缩减的操作 5.缩小之后,再将逻辑卷挂载在/mnt下,看里面的文件是否存在。

 

八、缩小卷组

  当我们vg中空间足够用,有很多剩余的时候,我们想把里面没用到的硬盘拆下来,以作它用。这时候就需要我们去执行缩小卷组的操作了。

  逻辑卷管理-LVM(Logical Volume Manager)

1.首先使用pvdisplay查看各pv的信息,可以看到/dev/sdd空间是未被使用的
[root@onion ~]# pvdisplay 
  --- physical volume ---
  pv name               /dev/sdb
  vg name               pool
  pv size               8.00 gib / not usable 4.00 mib
  allocatable           yes (but full)
  pe size               4.00 mib
  total pe              2047
  free pe               0
  allocated pe          2047
  pv uuid               sfw2wo-nezm-kxsx-uqqj-vwhv-nal6-uqb3lw
   
  --- physical volume ---
  pv name               /dev/sdc
  vg name               pool
  pv size               8.00 gib / not usable 4.00 mib
  allocatable           yes 
  pe size               4.00 mib
  total pe              2047
  free pe               1534
  allocated pe          513
  pv uuid               f8gq56-m9ff-i9e9-tevf-1bol-qsij-ptuapu
   
  --- physical volume ---
  pv name               /dev/sdd
  vg name               pool
  pv size               8.00 gib / not usable 4.00 mib
  allocatable           yes 
  pe size               4.00 mib
  total pe              2047
  free pe               2047
  allocated pe          0
  pv uuid               it2wzw-bvbq-nu7c-9ebu-3uie-w1lf-vx3clj

2.确定磁盘后,还是先卸载逻辑卷

[root@onion ~]# umount /mnt/ [root@onion ~]# df -ht filesystem type size used avail use% mounted on /dev/sda3 ext4 48g 1.5g 44g 4% / tmpfs tmpfs 491m 0 491m 0% /dev/shm /dev/sda1 ext4 190m 35m 146m 19% /boot 3.将这个pv从指定卷中移除并查看。
[root@onion ~]# vgreduce pool /dev/sdd removed "/dev/sdd" from volume group "pool" [root@onion ~]# vgdisplay --- volume group --- vg name pool system id format lvm2 metadata areas 2 metadata sequence no 9 vg access read/write vg status resizable max lv 0 cur lv 1 open lv 0 max pv 0 cur pv 2 act pv 2 vg size 15.99 gib pe size 4.00 mib total pe 4094 alloc pe / size 2560 / 10.00 gib free pe / size 1534 / 5.99 gib vg uuid yulucv-5pvp-w73a-dasr-eilw-jnvf-l5y9m1 4.查看pv情况(发现还是有/dev/sdd)
[root@onion ~]# pvs pv vg fmt attr psize pfree /dev/sdb pool lvm2 a--u 8.00g 0 /dev/sdc pool lvm2 a--u 8.00g 5.99g /dev/sdd lvm2 ---- 8.00g 8.00g 5.移除/dev/sdd这个pv
[root@onion ~]# pvremove /dev/sdd labels on physical volume "/dev/sdd" successfully wiped [root@onion ~]# pvs pv vg fmt attr psize pfree /dev/sdb pool lvm2 a--u 8.00g 0 /dev/sdc pool lvm2 a--u 8.00g 5.99g 6.重新挂载,查看文件是否改变
[root@onion ~]# mount /dev/pool/mylv /mnt [root@onion ~]# ll /mnt/ total 16 -rw-r--r--. 1 root root 0 jul 15 10:56 koala drwx------. 2 root root 16384 jul 15 10:46 lost+found

九、删除逻辑卷

  对于不想用的逻辑卷,可以删除掉。

【注意】创建lv有顺序,删除也是要严格按照顺序的。

 

卸载——>删除逻辑卷——>删除卷组——>删除物理卷

  1. 卸载逻辑卷,使用umount命令
  2. 删除逻辑卷,使用lvremove命令
  3. 删除卷组,使用 vgremove命令
  4. 删除物理卷,使用pvremove命令
[root@onion ~]# umount /dev/pool/mylv

[root@onion ~]# lvremove /dev/pool/mylv

do you really want to remove active logical volume mylv? [y/n]: y

  logical volume "mylv" successfully removed

[root@onion ~]# vgremove pool

  volume group "pool" successfully removed

[root@onion ~]# pvremove /dev/sdb

  labels on physical volume "/dev/sdb" successfully wiped


# 查看卸载状态 [root@onion ~]# lvs [root@onion ~]# vgs [root@onion ~]# pvs pv vg fmt attr psize pfree /dev/sdc lvm2 ---- 8.00g 8.00g