Linux系统性能优化Linux

lvm 逻辑卷

2021-12-18  本文已影响0人  Joening

lvm简介

LVM(Logical Volume Manager)中文名:逻辑卷管理器,本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。
LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元。
LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。

LVM的优点与缺点

我们平时使用电脑,当磁盘空间不足时,一般没办法对磁盘空间进行扩充,我们只能添加新的硬盘,在对新的硬盘进行分区创建,再格式化才能使用。当然这对于我们个人电脑当然足够,除了有点麻烦。但在工作环境下的服务器,我们很难将其关机再添加新的硬盘,要知道运行着重要服务的服务器一般是24小时不间断运行的,此时通过LVM我们就能对系统的磁盘进行动态管理。

image.png

LVM机制的基本概念:

卷组(VG)示意图

image.png

术语解释:

物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume)PV:物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group)VG:LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume)LV:LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
物理块(physical extent)PE:每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
逻辑块(logical extent)LE:逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

LVM的管理命令

image.png

lvm重要命令介绍

pvcreate命令:创建新的物理卷(格式:pvcreate...设备名1...[设备名2])
vgcreate命令:创建新的卷组(格式:vgcreate...卷组名...物理卷名1...物理卷名2)
lvcreate命令:创建新的逻辑卷(格式:lvcreate...-L...容量大小...-n...逻辑卷名...卷组名)
lvextend命令:添加逻辑卷的存储空间(格式:lvextend...-L...+容量大小.../dev/卷组名/逻辑卷名)

lvm创建逻辑卷的流程(实际操作)

第一步 添加两块硬盘

image.png

第二步 使用lsblk命令 检查磁盘是否添加成功

image.png

第三步 用pcvreate命令将两个磁盘创建为物理卷

[root@localhost ~]# pvcreate  /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

查看物理卷是否创建成功

[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [59.80 GiB / 0    free]
  PV /dev/sdc                       lvm2 [20.00 GiB]
  PV /dev/sdb                       lvm2 [20.00 GiB]
  Total: 3 [99.80 GiB] / in use: 1 [59.80 GiB] / in no VG: 2 [40.00 GiB]

第四步 新建卷组 (VG)

[root@localhost ~]# vgcreate data_vg /dev/sdb /dev/sdc
  Volume group "data_vg" successfully created

查看vg详细信息

[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               data_vg
  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               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               VgRlHx-6eT3-V2rM-gqpQ-ZXEr-J37D-grYJQe
   
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               59.80 GiB
  PE Size               4.00 MiB
  Total PE              15309
  Alloc PE / Size       15309 / 59.80 GiB
  Free  PE / Size       0 / 0   
  VG UUID               KOf9lB-Un4p-aQdw-HhNP-CMC8-tzaa-RXcdbS

第五步新建逻辑卷

[root@localhost ~]# lvcreate -L 10G -n data_lv data_vg
  Logical volume "data_lv" created.
[root@localhost ~]# lvcreate -L 10G -n data1_lv data_vg
  Logical volume "data1_lv" created.

查看lv详细信息

[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/data_vg/data_lv
  LV Name                data_lv
  VG Name                data_vg
  LV UUID                unMx09-Yeju-QSJJ-2vIe-JxS9-99Y5-GqDAi2
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2021-12-17 10:53:27 -0500
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/data_vg/data1_lv
  LV Name                data1_lv
  VG Name                data_vg
  LV UUID                CdObad-IDe0-X2TW-2GK1-Ad2p-BbFf-khyt02
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2021-12-17 10:53:34 -0500
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
   
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                EiTkhB-rXrM-3NFR-Pdua-kE5d-Vr1z-ahqdJq
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-04-14 10:09:33 -0400
  LV Status              available
  # open                 2
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                EZofSL-dwV4-Ks11-B2cm-moTG-uAgD-b5KwHZ
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-04-14 10:09:33 -0400
  LV Status              available
  # open                 1
  LV Size                58.80 GiB
  Current LE             15053
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

再次查看分区信息

[root@localhost ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                  8:0    0   60G  0 disk 
├─sda1               8:1    0  200M  0 part /boot
└─sda2               8:2    0 59.8G  0 part 
  ├─centos-root    253:0    0 58.8G  0 lvm  /
  └─centos-swap    253:1    0    1G  0 lvm  [SWAP]
sdb                  8:16   0   20G  0 disk 
└─data_vg-data_lv  253:2    0   10G  0 lvm  
sdc                  8:32   0   20G  0 disk 
└─data_vg-data1_lv 253:3    0   10G  0 lvm  
sr0                 11:0    1 1024M  0 rom  

格式化逻辑卷lvm所在分区

[root@localhost ~]# mkfs.xfs -f -n ftype=1 /dev/data_vg/data_lv 
meta-data=/dev/data_vg/data_lv   isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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 ~]# mkfs.xfs -f -n ftype=1 /dev/data_vg/data1_lv 
meta-data=/dev/data_vg/data1_lv  isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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 ~]# mkdir /test{1..2}
[root@localhost ~]# 
[root@localhost ~]# mount /dev/data_vg/data_lv /test1/
[root@localhost ~]# mount /dev/data_vg/data1_lv /test2/
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.5M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data_lv    10G   33M   10G   1% /test1
/dev/mapper/data_vg-data1_lv   10G   33M   10G   1% /test2

永久挂载

[root@localhost ~]# umount -lf /test1 
[root@localhost ~]# umount -lf /test2 
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   59G  1.9G   57G   4% /
devtmpfs                 980M     0  980M   0% /dev
tmpfs                    992M     0  992M   0% /dev/shm
tmpfs                    992M  9.5M  982M   1% /run
tmpfs                    992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                197M  108M   90M  55% /boot
tmpfs                    199M     0  199M   0% /run/user/0
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.5M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data_lv    10G   33M   10G   1% /test1
/dev/mapper/data_vg-data1_lv   10G   33M   10G   1% /test2
[root@localhost ~]# tail -3 /etc/fstab 
/dev/data_vg/data_lv    /test1     xfs   defaults   0 0 
/dev/data_vg/data1_lv   /test2     xfs   defaults    0 0 

lvm扩容

ext2/ext3/ext4 文件系统扩容操作

ext2/ext3/ext4文件系统, 调整命令为resize2fs 或者直接用 -r 自动扩展文件系统大小

[root@localhost ~]# umount -lf /dev/mapper/data_vg-data_lv 
[root@localhost ~]# mkfs.ext4 /dev/mapper/data_vg-data_lv
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
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

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

[root@localhost ~]# lvextend -L +1G /dev/data_vg/data_lv 
  Size of logical volume data_vg/data_lv changed from 10.00 GiB (2560 extents) to 11.00 GiB (2816 extents).
  Logical volume data_vg/data_lv successfully resized.
[root@localhost ~]# mo
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# mount  /dev/mapper/data_vg-data_lv /test1
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.6M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data1_lv   10G   33M   10G   1% /test2
/dev/mapper/data_vg-data_lv   9.8G   37M  9.2G   1% /test1
[root@localhost ~]# resize2fs /dev/data_vg/data_lv 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/data_vg/data_lv is mounted on /test1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/data_vg/data_lv is now 2883584 blocks long.

[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.6M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data1_lv   10G   33M   10G   1% /test2
/dev/mapper/data_vg-data_lv    11G   41M   11G   1% /test1

使用 -r 参数直接自动扩展文件系统大小

[root@localhost ~]# lvextend -L +2G /dev/data_vg/data_lv -r 
  Size of logical volume data_vg/data_lv changed from 11.00 GiB (2816 extents) to 13.00 GiB (3328 extents).
  Logical volume data_vg/data_lv successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/data_vg-data_lv is mounted on /test1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/mapper/data_vg-data_lv is now 3407872 blocks long.

[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.6M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data1_lv   10G   33M   10G   1% /test2
/dev/mapper/data_vg-data_lv    13G   41M   12G   1% /test1

xfs文件系统扩容操作

xfs文件系统调整命令为xfs_growfs. 后者直接用-r自动扩展文件系统大小

xfs扩容操作

[root@localhost ~]# lvextend -L +2G /dev/data_vg/data1_lv 
  Size of logical volume data_vg/data1_lv changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents).
  Logical volume data_vg/data1_lv successfully resized.
[root@localhost ~]# xfs_growfs /dev/data_vg/data1_lv
meta-data=/dev/mapper/data_vg-data1_lv isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, 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 2621440 to 3145728
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.6M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data1_lv   12G   33M   12G   1% /test2
/dev/mapper/data_vg-data_lv    13G   41M   12G   1% /test1

使用 -r 参数直接自动扩展文件系统大小

[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.6M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data1_lv   12G   33M   12G   1% /test2
/dev/mapper/data_vg-data_lv    13G   41M   12G   1% /test1
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# lvextend -L +2G /dev/data_vg/data1_lv -r
  Size of logical volume data_vg/data1_lv changed from 12.00 GiB (3072 extents) to 14.00 GiB (3584 extents).
  Logical volume data_vg/data1_lv successfully resized.
meta-data=/dev/mapper/data_vg-data1_lv isize=512    agcount=5, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3145728, 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 3145728 to 3670016
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        59G  1.9G   57G   4% /
devtmpfs                      980M     0  980M   0% /dev
tmpfs                         992M     0  992M   0% /dev/shm
tmpfs                         992M  9.6M  982M   1% /run
tmpfs                         992M     0  992M   0% /sys/fs/cgroup
/dev/sda1                     197M  108M   90M  55% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/data_vg-data1_lv   14G   33M   14G   1% /test2
/dev/mapper/data_vg-data_lv    13G   41M   12G   1% /test1

卷组的扩容 (VG)

新增加一块硬盘


image.png

探测硬盘不重启方法

添加完硬盘后一般是重启系统,单企业中服务器不能随便启动, 这里我们用 echo "- - -" > /sys/class/scsi_host/host0/scan命令重新扫描scsi总线来添加硬盘

[root@localhost ~]# pvcreate /dev/sdd 
  Physical volume "/dev/sdd" successfully created.
[root@localhost ~]# vgex
vgexport  vgextend  
[root@localhost ~]# vgex
vgexport  vgextend  
[root@localhost ~]# vgextend data_vg /dev/sdd 
  Volume group "data_vg" successfully extended
[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree  
  centos    1   2   0 wz--n-  59.80g      0 
  data_vg   3   0   0 wz--n- <59.99g <59.99g
上一篇下一篇

猜你喜欢

热点阅读