0
点赞
收藏
分享

微信扫一扫

性能分析排查思路之日志(1)

kmoon_b426 2024-03-01 阅读 12

Linux常见的物理设备数据备份和负载均衡模式

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。


1. LVM技术说明

Linux的LVM(Logical Volume Manager)是一种磁盘管理工具,可以用来对Linux系统中的磁盘进行灵活的管理和分区。

LVM可以将多个物理硬盘或分区组合在一起形成一个逻辑卷组(Volume Group),然后再从逻辑卷组中创建逻辑卷(Logical Volumes)。逻辑卷可以被格式化为文件系统,并且可以像普通分区一样挂载到文件系统树中的任意位置。

LVM的主要优点有:

  • 可以动态地扩展和缩小逻辑卷的大小,而无需重新分区或格式化磁盘。
  • 可以将不同的物理硬盘或分区组合在一起,形成一个大的逻辑卷组,从而充分利用磁盘空间。
  • 可以对逻辑卷进行快照备份,以便在数据损坏或删除时进行恢复。
  • 可以通过移动数据块的方式进行数据迁移,从而实现数据的高可用性和负载均衡。

2. 相关概念

  • PV(Physical Volume):物理空间的意思,其实就是指一个分区(如/dev/sdb1 )或者是一个盘(如/dev/sdb)
  • VG(Volume Group):相当于一个Pool,由多个PV组成的pool
  • LV(Logical Volume):用来建立一个文件系统的空间,这个空间来源于VG,大小随意,可以扩展。(比如/dev/mapper/rhel-root这个目录其实是一个文件系统挂载点,这个点就是承载在一个LV上,这个文件系统的大小就是这个LV的大小。 )

在这里插入图片描述

在这里插入图片描述

3. 常用命令

3.1 安装lvm命令

yum install lvm2  -y

常用的命令如下

PV:Physical(物理卷)     pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan

VG:Volume Group(卷组)     vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent 

LV:logical Volume(逻辑卷)      lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename

3.2 创建分区

[root@node1 ~]# fdisk  /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p          

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458   
    Device Boot      Start         End      Blocks   Id  System

Command (m for help): n       Command action   
    e   extended   
    p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +3G 

Command (m for help): n
Command action 
  e   extended 
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (394-1305, default 394): 
Using default value 394Last cylinder, +cylinders or +size{K,M,G} (394-1305, default 1305): +5G
Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  Linux

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

3.3 格式化成LVM

[root@node1 ~]# fdisk  /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').Command (m for help): p   
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  Linux
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): tPartition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   8e  Linux LVM
/dev/sdb2             394        1047     5253255   8e  Linux LVM
Command (m for help): wThe partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

在这里插入图片描述

3.4 其他格式化

# 格式化成xfs
 mkfs.xfs -n ftype=1 /dev/vdb -f
# 格式化成ext4
mkfs.ext4 /dev/vdb

4. 常用场景

4.1 创建LVM并挂载

[root@localhost ~]# pvcreate /dev/vdb1            ##创建物理卷
[root@localhost ~]# vgcreate -s 8M vg0 /dev/vdb1  ##创建物理卷组vg0,PE为8M
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0   ##在卷组vg0上创建名为lv0,大小为300M的逻辑卷

[root@localhost ~]# mkfs.xfs -n ftype=1 /dev/vg0/lv0 -f         ##格式化逻辑卷并改系统格式为xfs
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0         ##格式化逻辑卷并改系统格式为ext4
[root@localhost ~]# mount /dev/vg0/lv0 /mnt       ##挂载【linux下的文件系统需要被挂载后才能使用】
[root@localhost ~]# df -h

4.2 LVM扩容

4.2.1 xfs扩容

分为2种情况

  1. 情况1: vg足够扩展
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0      ##扩展逻辑卷空间到500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0            ##扩展文件系统
  1. 情况2:vg不够拉伸,得先扩大设备再扩大系统

先申请设备并扩容,确保vg足够

[root@localhost ~]# pvcreate /dev/vdb2        ##创建物理卷/dev/vdb2 
[root@localhost ~]# vgextend vg0 /dev/vdb2    ##将新的物理卷vdb2添加到现有的卷组vg0 

扩展逻辑卷

[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0     ##增加逻辑卷空间到1500M 
[root@localhost ~]# xfs_growfs /dev/vg0/lv0			   ## 扩容xfs文件系统

4.2.2 ext4扩容

分为2种情况

  1. 情况1: vg足够扩展
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0      ##扩展逻辑卷空间到500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0            ##扩展文件系统
  1. 情况2:vg不够拉伸,得先扩大设备再扩大系统

先申请设备并扩容,确保vg足够

[root@localhost ~]# pvcreate /dev/vdb2        ##创建物理卷/dev/vdb2 
[root@localhost ~]# vgextend vg0 /dev/vdb2    ##将新的物理卷vdb2添加到现有的卷组vg0 

扩展逻辑卷

[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0     ##增加逻辑卷空间到1500M 
[root@localhost ~]# resize2fs /dev/vg0/lv0     	## 扩容ext4文件系统

4.2 缩减逻辑卷lv

[root@localhost ~]# umount /mnt                     ##先卸载
[root@localhost ~]# e2fsck -f /dev/vg0/lv0          ##扫描逻辑卷上的空余空间
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M    ##设备文件减少到1000M
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0  ##将逻辑卷减少到1000M
[root@localhost ~]# mount /dev/vg0/lv0 /mnt         ##挂载

4.3 缩减vg:(迁移到闲置设备)

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2  ##将vdb1的空间数据转移到vdb2
  /dev/vdb1: Moved: 88.0%
  /dev/vdb1: Moved: 100.0%                      ##转移数据成功
[root@localhost ~]# vgreduce vg0 /dev/vdb1      ##将/dev/vdb1分区从vg0卷组中移除
  Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1          ##把/dev/vdb1分区从系统中删除
  Labels on physical volume "/dev/vdb1" successfully wiped

注意:将vdb1的空间数据转移到vdb2时,要确保vdb2的足够的空间能将vdb1的数据转移,否则需要先将vdb1缩减。

4.4 LVM快照创建

[root@localhost ~]# touch /mnt/file{1..5}
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0  ##建立一个50M的快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt                 ##挂载快照
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# rm -fr *                                   ##删除所有文件
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt
[root@localhost ~]# lvremove /dev/vg0/lv0backup                   ##删除快照
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0  ##重建快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt                 ##挂载快照
[root@localhost ~]# ls /mnt                                ##又可以看到之前建立的文件

结论: LVM的快照可以将某一时刻的信息记录到快照区中,因此,可以利用这一特点对数据做完全备份。

4.5 删除设备

[root@localhost ~]# umount /mnt  ##卸载
[root@localhost ~]# df
[root@localhost ~]# lvremove /dev/vg0/lv0backup    ##删除快照
[root@localhost ~]# lvremove /dev/vg0/lv0         ##删除逻辑卷
[root@localhost ~]# vgremove vg0                  ##删除物理卷组
[root@localhost ~]# pvremove /dev/vdb{1..2}       ##删除物理卷

5. 参考文档

暂无

举报

相关推荐

0 条评论