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

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

Linux部署jar包过程

《Linux部署jar包过程》文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法... 目录linux部署jar包1.统一jdk版本2.打包插件依赖3.修改密码4.执行jar包总结Linux部署jar包部署

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例