Linux逻辑卷管理

1. 逻辑卷优势

  • 动态扩展
    硬盘的标准分区不易扩展, Linux逻辑卷管理器( logical volume manager, LVM)软件包可以通过将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间。它可以让你在无需重建整个文件系统的情况下,轻松地管理磁盘空间。
  • 快照
    LVM2允许你创建在线逻辑卷的可读写快照。有了可读写的快照,就可以删除原先的逻辑卷,然后将快照作为替代挂载上。这个功能对快速故障转移或涉及修改数据的程序试验(如果失败,需要恢复修改过的数据)非常有用。
  • 条带化
    有了条带化,可跨多个物理硬盘创建逻辑卷。当Linux LVM将文件写入逻辑卷时,文件中的数据块会被分散到多个硬盘上。每个后继数据块会被写到下一个硬盘上。
    LVM条带化不同于RAID条带化。 LVM条带化不提供用来创建容错环境的校验信息。事实上, LVM条带化会增加文件因硬盘故障而丢失的概率。单个硬盘故障可能会造成多个逻辑卷无法访问。
  • 镜像
    镜像是一个实时更新的逻辑卷的完整副本。 LVM会为文件系统的每次写操作执行两次写入:一次写入到主逻辑卷,一次写入到镜像副本。这个过程会降低系统的写入性能。

2. 相关概念

概念介绍
PV(physical volume)物理卷,映射到物理磁盘的一个分区
VG(volume group)卷组,由多个物理卷组成 。
逻辑卷管理系统将卷组视 为一个物理硬盘,但事实上卷组可能是由分布在多个物理硬盘上的多个物理分区组成的。
LV(logical volume)将卷组进行分区,每个分区就是一个LV

在这里插入图片描述
如上图所示,有三块物理磁盘SDA、SDB、SDC,每块磁盘分别有两个分区。除分区SDC2外,其余每个分区对应一个物理卷,五个物理卷合成一个卷组。然后对卷组进行分区,得到逻辑卷1、逻辑卷2。

3. 使用lvm

3.1 创建分区

在磁盘sdb上创建一个分区,类型为Linux LVM

# 查看sdb分区情况,此时sdb尚未分区,大小为20G
[root@vm14 ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  20G  0 disk 

# 创建一个10G的lvm分区sdb1
[root@vm14 ~]# fdisk /dev/sdb
# 输入n,按回车
命令(输入 m 获取帮助):n
# 输入p,按回车
Select (default p): p
# 分区号保持默认,按回车
分区号 (1-4,默认 1)# 起始 扇区保持默认,按回车
起始 扇区 (2048-41943039,默认为 2048)# 输入+10G,按回车
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
# 输入t,设置分区类型
命令(输入 m 获取帮助):t
# 输入8e将分区类型设置为Linux LVM (代码对应类型可通过输入l进行查看)
Hex 代码(输入 L 列出所有代码):8e
# 输入p,打印当前分区信息
命令(输入 m 获取帮助):p

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   8e  Linux LVM
# 由上面输出信息可知,我们已经建立了一个sdb1分区,类型为Linux LVM
# 输入w,按回车,将分区信息写入磁盘
命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

# 支持分区创建完成,通过以下命令进行查看当前分区情况
[root@vm14 ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  20G  0 disk 
└─sdb1   8:17   0  10G  0 part 

3.2 创建PV

# 创建pv
[root@vm14 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
# 查看pv信息
[root@vm14 ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               HE0gEZ-Oc8D-HiKD-QQD9-k6Tf-b44q-p3Lxty

3. 3 创建VG

# 创建vg1
[root@vm14 ~]# vgcreate vg01 /dev/sdb1 
  Volume group "vg01" successfully created
# vg1信息查看
[root@vm14 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               T8ZhvR-XuCX-BU6g-FkXk-c9TZ-HkGC-CyqaOJ

3.4 创建LV并挂载

# 将卷组vg01中全部剩余空间都给新建的lv:lv01 
[root@vm14 ~]# lvcreate -l 100%FREE -n lv01 vg01
  Logical volume "lv01" created.
# 指定大小创建 lvcreate -L 10G -n lv01 vg01
# lv信息查看,注意传参为vg01
[root@vm14 ~]# lvdisplay vg01
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                nLQqUq-oowY-p4o3-xncN-ydVa-qMaA-7cLx1G
  LV Write Access        read/write
  LV Creation host, time vm14, 2020-03-13 22:43:06 +0800
  LV Status              available
  # open                 0
  LV Size                <10.00 GiB
  Current LE             2559
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

# 格式化lv,此处将lv格式化为xfs格式
[root@vm14 ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01         isize=512    agcount=4, agsize=655104 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2620416, 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

# 查看格式化情况,从输出信息看,vg01-lv01已被格式化为xfs
[root@vm14 ~]# lsblk -f /dev/sdb
NAME          FSTYPE      LABEL UUID                                   MOUNTPOINT
sdb                                                                    
└─sdb1        LVM2_member       HE0gEZ-Oc8D-HiKD-QQD9-k6Tf-b44q-p3Lxty 
  └─vg01-lv01 xfs               a93dc811-6fa2-4521-ace6-af256d9aebba 
# 挂载
[root@vm14 ~]# mkdir /datalvm
[root@vm14 ~]# mount /dev/vg01/lv01 /datalvm
# 查看挂载情况
[root@vm14 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  2.0G   49G    4% /
devtmpfs                devtmpfs  898M     0  898M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs        67G   33M   67G    1% /home
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   xfs        10G   33M   10G    1% /datalvm

# 从上面信息可以看出lv01已经成功挂载到/datalvm目录,文件类型为xfs

4. 扩展lvm

# 在sdb上创建第二个分区sdb2(Linux LVM类型),创建过程参照 3.1 创建lvm分区
# 可能会提示需要执行partprobe命令,直接在shell中执行即可,无需参数
[root@vm14 ~]# partprobe
# 创建成功后sdb分区情况如下
[root@vm14 ~]# lsblk /dev/sdb
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb             8:16   0  20G  0 disk 
├─sdb1          8:17   0  10G  0 part 
│ └─vg01-lv01 253:3    0  10G  0 lvm  /datalvm
└─sdb2          8:18   0  10G  0 part 
# 创建pv /dev/sdb2
[root@vm14 ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.

# 将pv(/dev/sdb2)扩展到vg01中
[root@vm14 ~]# vgextend vg01 /dev/sdb2
  Volume group "vg01" successfully extended
# 通过pvs查看pv信息,/dev/sdb2已经属于vg01
[root@vm14 ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree  
  /dev/sda2  centos lvm2 a--  <119.00g   4.00m
  /dev/sdb1  vg01   lvm2 a--   <10.00g      0 
  /dev/sdb2  vg01   lvm2 a--   <10.00g <10.00g
# vg信息查看,此时vg01可用空间已经为20G
[root@vm14 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  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               19.99 GiB
  PE Size               4.00 MiB
  Total PE              5118
  Alloc PE / Size       2559 / <10.00 GiB
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               T8ZhvR-XuCX-BU6g-FkXk-c9TZ-HkGC-CyqaOJ

# 扩展lv01,将卷组vg01中的剩余空间全部扩展到lv01中,命令成功会提示lv01从10G扩展到19.99G
[root@vm14 ~]# lvextend -l +100%FREE /dev/vg01/lv01 
  Size of logical volume vg01/lv01 changed from <10.00 GiB (2559 extents) to 19.99 GiB (5118 extents).
  Logical volume vg01/lv01 successfully resized.

# 查看文件系统信息
[root@vm14 ~]# df -hT  
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  2.0G   49G    4% /
devtmpfs                devtmpfs  898M     0  898M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs        67G   33M   67G    1% /home
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   xfs        10G   33M   10G    1% /datalvm
# 发现/datalvm还是10G空间,我们还需要执行以下命令
[root@vm14 ~]# xfs_growfs /dev/mapper/vg01-lv01
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=4, agsize=655104 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2620416, 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 2620416 to 5240832

# 执行完成后,再次执行df -hT,会发现/datalvm已经是20G空间了
[root@vm14 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  2.0G   49G    4% /
devtmpfs                devtmpfs  898M     0  898M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs        67G   33M   67G    1% /home
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   xfs        20G   33M   20G    1% /datalvm

5. 自动挂载

[root@vm14 ~]# vim /etc/fstab
# 在最后面添加一行内容如下
/dev/mapper/vg01-lv01 /datalvm   xfs   defaults   0 0
# 上面内容表示系统启动时,将/dev/mapper/vg01-lv01挂载到/datalvm目录下

# 进行重启测试
[root@vm14 ~]# reboot

# 查看挂载情况,发现/dev/mapper/vg01-lv01已被挂载
[root@vm14 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  2.0G   48G    4% /
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/sda1               1014M  146M  869M   15% /boot
/dev/mapper/vg01-lv01     20G   33M   20G    1% /datalvm
/dev/mapper/centos-home   67G   33M   67G    1% /home
tmpfs                    182M     0  182M    0% /run/user/0
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值