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

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4