Linux之LVM

2024-08-29 12:18
文章标签 linux lvm

本文主要是介绍Linux之LVM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        LVM卷管理本质上就是将多个存储资源整合,再划分的过程。可以将多个物理分区通过软件,整合在一起,让这些分区看起来就像是一个独立的大磁盘一样。LVM是基于OS层面,将OS识别到的物理磁盘(可以是真正的物理磁盘,也可以是经过以RAID卡虚拟化的逻辑磁盘〕进行组合,再分配的软件。物理的分区,首先要通过fdisk 将它的类型改为“8e”。

实践:
1、使用fdisk新建分区,然后通过partprobe重载分区表,避免重启系统

[root@BG-IAP ~]# fdisk /def/sdf
[root@BG-IAP ~]# partprobe /dev/sdf


2、创建pv

[root@BG-IAP ~]# pvcreate /dev/sdf1 /dev/sdf2
Physical volume "/dev/sdf1" successfully created.
Physical volume "/dev/sdf2" successfully created.


3、创建vg

[root@BG-IAP ~]# vgcreate datavg /dev/sdf{1,2}
Volume group "datavg" successfully created


4、创建lv

[root@BG-IAP ~]# lvcreate -n lv1 -L 1G datavg
Logical volume "lv1" created.


5、格式化lv

[root@BG-IAP ~]# mkfs.xfs /dev/datavg/lv1 
meta-data=/dev/datavg/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


6、挂载lv

[root@BG-IAP ~]# mkdir /mnt/data
[root@BG-IAP ~]# mount /dev/datavg/lv1 /mnt/data/


7、创建快照
      快照其实就是原数据的另一个访问路径,就是指向原数据的指针。快照卷的大小跟原卷数据的该变量和保存快照的时间有关。快照只能在本分区内有效。因为快照类似于inode,不能指向本分区之外的其他分区数据
       -s 跟上需要进行快照的lv 必选参数
       -n 指定快照卷的名称 必选项
       -L 指定快照卷的大小 -l(L) 指定快照卷的LE数量 必选参数
       -p 指定快照卷的读写权限 r|rw可选参数

[root@BG-IAP ~]# lvcreate -L 1G -n lv1_snapshot1 -p r -s /dev/datavg/lv1
Logical volume "lv1_snapshot1" created.
[root@BG-IAP ~]# mount /dev/datavg/lv1_snapshot1 /mnt/data_data/
mount: /dev/mapper/datavg-lv1_snapshot1 写保护,将以只读方式挂载
mount: 文件系统类型错误、选项错误、/dev/mapper/datavg-lv1_snapshot1 上有坏超级块、缺少代码页或助手程序,或其他错误有些情况下在 syslog 中可以找到一些有用信息- 请尝试dmesg | tail  这样的命令看看。
[root@BG-IAP ~]# umount /mnt/data_data/
[root@BG-IAP ~]# mount /dev/datavg/lv1_snapshot1 /mnt/data_data/
mount: /dev/mapper/datavg-lv1_snapshot1 写保护,将以只读方式挂载


注意:同一时间,原lv和快照只能有一个挂载
            快照建立的关键命令是lvcreate加上-s的参数。
             而且如果要更新快照内容只需将其卸载并删除卷再从新建立即可。

8、快照回滚恢复
      原来的origin_lv可以用lvconvert加上–merge参数恢复到做snapshot的状态:

[root@BG-IAP ~]# lvconvert --merge /dev/datavg/lv1_snapshot1 Delaying merge since origin is open.Merging of snapshot datavg/lv1_snapshot1 will occur on next activation of datavg/lv1.
[root@BG-IAP ~]# lvsLV                                             VG                                        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot                                           centos_cloud1                             -wi-ao----  3.63t                                                    swap                                           centos_cloud1                             -wi-ao----  4.00g                                                    osd-block-aa83d76d-71d9-4290-8923-f5aa517bec1a ceph-8fb0dfd7-1515-4935-87ad-ff690d64c9ab -wi-ao---- <3.64t                                                    osd-block-f598936a-a49c-4fc7-bf2b-ff0072b92a04 ceph-a5499ea8-fdfa-4737-8894-0342ab076cfc -wi-ao---- <3.64t                                                    lv1                                            datavg                                    Owi-aos---  1.00g     

      恢复之后,lv_snapshot1会被删除,使用lvs命令看不到。
      [root@BG-IAP ~]# mount /dev/datavg/lv1_snapshot1 /mnt/data_data/
      mount: /dev/mapper/datavg-lv1_snapshot1 写保护,将以只读方式挂载 
  
注意:用快照对逻辑卷进行恢复,注意恢复之前需要先将对应的逻辑卷卸载。恢复之后可以看到,原有的快照消失,即LVM的快照是一次性的。

[root@BG-IAP ~]# lvcreate -L 1G -n lv3 /dev/datavg
WARNING: xfs signature detected on /dev/datavg/lv3 at offset 0. Wipe it? [y/n]: yWiping xfs signature on /dev/datavg/lv3.Logical volume "lv3" created.
[root@BG-IAP ~]# mkfs.xfs -f /dev/datavg/lv3 
meta-data=/dev/datavg/lv3        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@BG-IAP ~]# mount /dev/datavg/lv3 /mnt/data
[root@BG-IAP ~]# echo 'test3' /mnt/data/test3
test3 /mnt/data/test3
[root@BG-IAP ~]# echo 'test3'> /mnt/data/test3
[root@BG-IAP ~]# umount /mnt/data
[root@BG-IAP ~]# lvcreate -L 1G -n lv3_snap -s /dev/datavg/lv3Logical volume "lv3_snap" created.
[root@BG-IAP ~]# mount /dev/datavg/lv3 /mnt/data
[root@BG-IAP ~]# cat /mnt/data/test3 
test3
[root@BG-IAP ~]# rm -rf /mnt/data/test3 
[root@BG-IAP ~]# umount /mnt/data
[root@BG-IAP ~]# lvconvert --merge /dev/datavg/lv3_snap Merging of volume datavg/lv3_snap started.datavg/lv3: Merged: 100.00%
[root@BG-IAP ~]# mount /dev/datavg/lv3 /mnt/data
[root@BG-IAP ~]# cat /mnt/data/test3 
test3


9、回滚成功后再次创建快照成功。

[root@BG-IAP ~]# lvcreate -L 1G -n lv3_snap1 -s /dev/datavg/lv3
Logical volume "lv3_snap1" created.
不卸载lv,执行快照恢复   
[root@BG-IAP ~]# df
文件系统                            1K-块      已用       可用 已用% 挂载点
/dev/mapper/centos_cloud1-root 3899866616 108007704 3791858912    3% /
devtmpfs                         57639876         0   57639876    0% /dev
tmpfs                            57656852        88   57656764    1% /dev/shm
tmpfs                            57656852     19704   57637148    1% /run
/dev/mapper/datavg-lv3            1038336     32948    1005388    4% /mnt/data
[root@BG-IAP ~]# lvconvert --merge /dev/datavg/lv3_snap1 Delaying merge since origin is open.Merging of snapshot datavg/lv3_snap1 will occur on next activation of datavg/lv3.
[root@BG-IAP ~]# lvcreate -L 1G -n lv3_snap2 -s /dev/datavg/lv3Snapshots of an origin that has a merging snapshot are not supported.


注:由于没有卸载原生逻辑卷,就开始使用快照回滚,导致回滚失败,且造成原生逻辑卷回滚后就不能再创建快照。
错误提示:Snapshots of an origin that has a merging snapshot is not supported


10、将/dev/sdf3从data1vg挪动到datavg当中

[root@ZS-ISP ~]# vgsplit data1vg datavg /dev/sdf3
Existing volume group "datavg" successfully split from "data1vg"

11、创建LE数为2的lv

[root@ZS-ISP ~]# lvcreate -L 10G -i 2 -n lv22 /dev/datavgUsing default stripesize 64.00 KiB.Logical volume "lv22" created.
[root@ZS-ISP ~]# lsblk /dev/sdf
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdf                       8:80   0  3.7T  0 disk 
├─sdf1                    8:81   0  100G  0 part 
│ ├─datavg-lv5-real     253:5    0    2G  0 lvm  
│ │ ├─datavg-lv5        253:4    0    2G  0 lvm  /mnt/data
│ │ └─datavg-lv5_snap   253:7    0    2G  0 lvm  
│ ├─datavg-lv5_snap-cow 253:6    0    1G  0 lvm  
│ │ └─datavg-lv5_snap   253:7    0    2G  0 lvm  
│ └─datavg-lv22         253:8    0   10G  0 lvm  
├─sdf2                    8:82   0  100G  0 part 
│ └─datavg-lv22         253:8    0   10G  0 lvm  
├─sdf3                    8:83   0  100G  0 part 
├─sdf4                    8:84   0  100G  0 part 
└─sdf5                    8:85   0  100G  0 part 

12、指定在vg(datavg)上使用在pv(sdf2)创建lv(lvvv)

[root@ZS-ISP ~]# lvcreate -L 10G -n lvvv datavg /dev/sdf2Logical volume "lvvv" created.
[root@ZS-ISP ~]# lsblk
NAME                                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                  8:0    0  3.7T  0 disk 
├─sda1                                                                               8:1    0    1M  0 part 
├─sda2                                                                               8:2    0    1G  0 part /boot
└─sda3                                                                               8:3    0  3.7T  0 part ├─centos_cloud1-root                                                             253:0    0  3.6T  0 lvm  /└─centos_cloud1-swap                                                             253:1    0    4G  0 lvm  [SWAP]
sdf                                                                                  8:80   0  3.7T  0 disk 
├─sdf1                                                                               8:81   0  100G  0 part 
│ ├─datavg-lv5-real                                                                253:5    0    2G  0 lvm  
│ │ ├─datavg-lv5                                                                   253:4    0    2G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv5_snap-cow                                                            253:6    0    1G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvv                                                                     253:9    0   10G  0 lvm  
├─sdf2                                                                               8:82   0  100G  0 part 
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvvv                                                                    253:10   0   10G  0 lvm  
├─sdf3                                                                               8:83   0  100G  0 part 


13、指定在vg(datavg)上使用在pv(sdf3)对lv(lvvv)创建快照,即跨pv创建快照

[root@ZS-ISP ~]# lvcreate -L 1G -s -n lvvv_snap /dev/datavg/lvvv /dev/sdf3Logical volume "lvvv_snap" created.
[root@ZS-ISP ~]# lsblk
NAME                                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                  8:0    0  3.7T  0 disk 
├─sda1                                                                               8:1    0    1M  0 part 
├─sda2                                                                               8:2    0    1G  0 part /boot
└─sda3                                                                               8:3    0  3.7T  0 part ├─centos_cloud1-root                                                             253:0    0  3.6T  0 lvm  /└─centos_cloud1-swap                                                             253:1    0    4G  0 lvm  [SWAP]
sdf                                                                                  8:80   0  3.7T  0 disk 
├─sdf1                                                                               8:81   0  100G  0 part 
│ ├─datavg-lv5-real                                                                253:5    0    2G  0 lvm  
│ │ ├─datavg-lv5                                                                   253:4    0    2G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv5_snap-cow                                                            253:6    0    1G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvv                                                                     253:9    0   10G  0 lvm  
├─sdf2                                                                               8:82   0  100G  0 part 
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvvv-real                                                               253:11   0   10G  0 lvm  
│   ├─datavg-lvvv                                                                  253:10   0   10G  0 lvm  
│   └─datavg-lvvv_snap                                                             253:13   0   10G  0 lvm  
├─sdf3                                                                               8:83   0  100G  0 part 
│ └─datavg-lvvv_snap-cow                                                           253:12   0    1G  0 lvm  
│   └─datavg-lvvv_snap                                                             253:13   0   10G  0 lvm  

14、跨vg创建快照失败

[root@ZS-ISP ~]# lvcreate -L 1G -s -n lvvv_snap1 /dev/datavg/lvvv /dev/sdf4
Physical Volume "/dev/sdf4" not found in Volume Group "datavg".

注:能够在同一个vg中,跨pv创建快照,但是不能夸vg创建快照。

15、使用dd实现跨vg拷贝lv

(1)在datavg上创建lv1,格式化后并挂载,然后写入数据

[root@ZS-ISP ~]# lvcreate -L 100M -n lv1 /dev/datavg
WARNING: xfs signature detected on /dev/datavg/lv1 at offset 0. Wipe it? [y/n]: yWiping xfs signature on /dev/datavg/lv1.Logical volume "lv1" created.
[root@ZS-ISP ~]# mkfs.xfs /dev/mapper/datavg-lv1
meta-data=/dev/mapper/datavg-lv1 isize=512    agcount=4, agsize=6400 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@ZS-ISP ~]# mount /dev/mapper/datavg-lv1 /mnt/lv1
[root@ZS-ISP ~]# echo 'test'>/mnt/lv1/test
[root@ZS-ISP ~]# umount /mnt/lv1

(2)对lv1创建快照

[root@ZS-ISP ~]# lvcreate -s -L 100M -n lv1_snap /dev/datavg/lv1Logical volume "lv1_snap" created.

(3)对使用dd命令对快照生成img文件

[root@ZS-ISP ~]# dd if=/dev/mapper/datavg-lv1_snap of=/tmp/lv1_snap.img
记录了204800+0 的读入
记录了204800+0 的写出
104857600字节(105 MB)已复制,0.745093 秒,141 MB/秒
[root@ZS-ISP ~]# 


(4)在data1vg上创建lv2,格式化

[root@ZS-ISP ~]# lvcreate -L 100M -n lv2 /dev/data1vg
WARNING: xfs signature detected on /dev/data1vg/lv2 at offset 0. Wipe it? [y/n]: yWiping xfs signature on /dev/data1vg/lv2.Logical volume "lv2" created.
[root@ZS-ISP ~]# mkfs.xfs /dev/mapper/data1vg-lv2 
meta-data=/dev/mapper/data1vg-lv2 isize=512    agcount=4, agsize=6400 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

(5)使用dd命令把img文件dd到lv2上

[root@ZS-ISP ~]# dd if=/tmp/lv1_snap.img of=/dev/mapper/data1vg-lv2
记录了204800+0 的读入
记录了204800+0 的写出
104857600字节(105 MB)已复制,2.62914 秒,39.9 MB/秒
[root@ZS-ISP ~]# mount /dev/mapper/data1vg-lv2 /mnt/lv2
[root@ZS-ISP ~]# df /mnt/lv2
文件系统                1K-块  已用  可用 已用% 挂载点
/dev/mapper/data1vg-lv2 98980  5300 93680    6% /mnt/lv2
[root@ZS-ISP ~]# cd /mnt/lv2
[root@ZS-ISP lv2]# ls
test
[root@ZS-ISP lv2]# cat test 
test


注意:使用dd命令可以实现跨vg,拷贝lv

这篇关于Linux之LVM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117841

相关文章

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完