LVM常规操作记录梳理(扩容/缩容/快照等)

基本介绍 Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, lvm是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux环境下对磁盘分区进行管理的一种机制, LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM基本术语: 1)物理存储介质:这里指系统的存储设备:硬盘,如: /dev/hda、/dev/sda等等,是存储系统最低层的存储单元。 2)物理卷physical volume (PV ) 物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如 RAID),是 LVM的基本存储逻辑块 3)卷组Volume Group (VG ) LVM卷组由一个或多个物理卷组成,但是更确切的说,它包含由这些物理卷提供的许多PE。 4)逻辑卷logical volume (LV ) 这里是我们存储信息的地方,在逻辑卷之上可以建立文件系统 (比如/home或者 /usr等)。 5)PE(physical extent ) 每一个物理卷被划分为称为 PE的基本单元,具有唯一编号的 PE是可以被 LVM寻址的最小单元。 PE的大小是可配置的,默认为 4MB。

具体操作 1)创建一个分区 [root@test-server ~]# fdisk -l             // 查看磁盘情况 [root@test-server ~]# fdisk /dev/sda            // 进入磁盘(可以依次按键p->n->e->回车->回车->w,即用此磁盘所有空闲空间创建分区) Command (m for help): n                        //n 为添加一个分区, p查看分区 First cylinder (2898-10443, default 2898):         // 按Enter 键决定 Using default value 2898                               // 起始柱面选择默认值 Last cylinder or +size or +sizeM or +sizeK (289810443, default 10443): +2G             // 给2G的大小 Command (m for help): t       // 更改分区类型 Partition number (1-5): 5        // 选着分区 Hex code (type L to list codes): l       // 分区类型列表

Hex code (type L to list codes):8e        //将新添加的分区标注成 lvm Command (m for help): p              // 查看分区表 /dev/sda5 2756 2999 1959898+ 8e Linux LVM Command (m for help): w        // 保存 [root@test-server ~]# partprobe /dev/sda            // 系统识别分区(代替重启) [root@test-server ~]# mkfs.ext4 /dev/sda5           // 格式化新添加的分区

2)PV的创建 [root@test-server ~]# pvcreate /dev/sda5 // 创建pv Writing physical volume data to disk "/dev/sda5" Physical volume "/dev/sda5" successfully created [root@test-server ~]# pvs                    //或pvdisplay,查看当前pv的信息 PV VG Fmt Attr PSize PFree /dev/sda5 lvm2 a-- 1.87G 1.87G

3)VG的创建 [root@test-server ~]# vgcreate vg0 /dev/sda5           //vg0 为当前vg的名 Volume group "vg0" successfully created [root@test-server ~]# vgs              //或vgdispaly,查看vg 的信息 VG #PV #LV #SN Attr VSize VFree vg0 1 0 0 wz--n- 1.87G 1.87G

4)lvm的创建 #lvcreate -L 大小 -n 名字 隶属哪一个巻组 #lvcreate -l PE个数 -n 名字 隶属哪一个巻组 [root@test-server ~]# lvcreate -L +500M -n lv01 vg0 Logical volume "lv01" created [root@test-server ~]# lvs                              //或lvdispaly,查看lv 的信息 LV VG Attr LSize Origin Snap% Move Log Copy% Convert lv01 vg0 -wi-a- 500.00M You have mail in /var/spool/mail/root [root@test-server ~]# mkfs.ext4 /dev/vg0/lv01 //格式化

5)lvm的使用 [root@test-server ~]# mkdir /mnt/lv01      //建立挂在目录 [root@test-server ~]# mount /dev/vg0/lv01 /mnt/lv01          //将制作的lvm挂载起来 [root@test-server ~]# df -h [root@test-server ~]# touch /mnt/lv01/lv.file [root@test-server ~]#ls /mnt/lv01

lvm的增大 [root@test-server ~]# lvextend -L +300M /dev/vg0/lv01      //原来lv大小500M ,拉伸分区到 800M。前提是vg0里面还有剩余空间(vgdispaly查看Free PE)。如没有剩余,需要vgextend扩建。 Logical volume lv01 successfully resized [root@test-server ~]# resize2fs /dev/vg0/lv01           //拉伸文件系统 [root@test-server ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert lv01 vg0 -wi-ao 800.00M                   //大小变成了 800M

lvm的减小 [root@test-server ~]# umount /dev/vg0/lv01               //卸载逻辑卷 /dev/vg0/lv01,或者卸载/mnt/lv01目录也可以 [root@test-server ~]# df -h              //查看 [root@test-server ~]# e2fsck -f /dev/vg0/lv01                // 磁盘校验 [root@test-server ~]# resize2fs /dev/vg0/lv01 500M              //回缩文件系统到 500M [root@test-server ~]# lvreduce -L 500M /dev/vg0/lv01           //回缩分区到 500M WARNING: Reducing active logical volume to 500.00 MB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv01? [y/n]: y [root@test-server ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert lv01 vg0 -wi-a- 500.00M           //此时已变成500M大小 [root@test-server ~]# mount /dev/vg0/lv01 /mnt/lv01        //重新挂载分区 [root@test-server ~]# df -h           //查看 [root@test-server ~]# ls /mnt/lv01         //查看文件

---------------------------------------------------------------------------------------------------- 特别注意的是: resize2fs命令         针对的是ext2、ext3、ext4文件系统。 xfs_growfs命令      针对的是xfs文件系统 ----------------------------------------------------------------------------------------------------

lvm的系统快照 原理:系统快照(snapshot)是 lvm的另外一种重要的功能,快照就是将当时的数据记录下来,就好像照相记录一样,以后数据有任何改动,原数据会被移动到快照区,没有被改变的区域则由快照区与文件系统共享。 由于快照区和原本的 LV共享很多 PE,所以快照区与被快照的区域必须在同一个 VG上 操作: 以上面创建的 lv01为例 1)挂载lvm [root@test-server ~]# mount /dev/vg0/lv01 /mnt/lv01 [root@test-server ~]# cd /mnt/lv01 [root@test-server lv01]# touch {a,b,c}{a,b,c} [root@test-server lv01]# ls aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable 2)为lvm创建快照 [root@test-server lv01]# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01 Logical volume "lv-backup" created 3)挂载快照 [root@test-server lv01]# mkdir /mnt/lv-backup [root@test-server mnt]# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/ 4)备份快照 [root@test-server tmp]# dump -0u -f /tmp/lv-backup.dump /mnt/lv-backup/                  //备份 DUMP: Date of this level 0 dump: Sun Nov 11 14:53:31 2012 DUMP: Dumping /dev/mapper/vg0-lv--backup (/mnt/lv-backup) to /tmp/lv-backup.dump 5)删除快照 [root@test-server tmp]# umount /mnt/lv-backup/ [root@test-server tmp]# lvremove /dev/vg0/lv-backup Do you really want to remove active logical volume lv-backup? [y/n]: y Logical volume "lv-backup" successfully removed 6)清空/dev/vg0/lv01下内容 [root@test-server tmp]# umount /mnt/lv01 [root@test-server tmp]# mkfs.ext3 /dev/vg0/lv01 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux 7)恢复数据 [root@test-server tmp]# mount /dev/vg0/lv01 /mnt/lv01 [root@test-server tmp]# cd /mnt/lv01 [root@test-server lv01]# ls lost+found [root@test-server lv01]# restore -rf /tmp/lv-backup.dump           //恢复 restore: ./lost+found: File exists [root@test-server lv01]# ls               //由于之前都删除了,所以这些都是改变的部分 aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable

lvm的关闭 (删除) [root@test-server ~]# umount /mnt/lv01 [root@test-server ~]# lvremove /dev/vg0/lv01        //删除lv Do you really want to remove active logical volume lv01? [y/n]: y Logical volume "lv01" successfully removed [root@test-server ~]# vgchange -a n vg0             //使vg0不具有 active标志 0 logical volume(s) in volume group "vg0" now active [root@test-server ~]# vgremove vg0            //删除vg Volume group "vg0" successfully removed [root@test-server ~]# pvremove /dev/sda5           //删除pv Labels on physical volume "/dev/sda5" successfully wiped

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL源码安装总结(r12笔记第12天)

作为一个DBA, MySQL源码安装还是要做做的,虽然不是推荐线上批量安装部署,但是自己作为了解MySQL的一个学习过程,还是值得的。 相比商业...

3107
来自专栏IT笔记

JavaWeb项目架构之Kafka分布式日志队列

架构、分布式、日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Kafka做消息队列罢了。

74910
来自专栏容器化

转载NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes

8734
来自专栏散尽浮华

Centos7.2下针对LDAP的完整部署记录

一、LDAP究竟是什么? LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP...

5.1K12
来自专栏小狼的世界

Analog使用中的一些技巧和总结

Analog是一款用来快速处理日志的开源工具,具有很高的效率,但是生成的结果并不美观,本文就analog使用过程中的一些问题进行总结,讨论如何对analog进行...

831
来自专栏WindCoder

SSM笔记(一)框架整合

用了好久了,但都是当初大神配置完后直接粘贴复制过来的,一直没仔细看过相关配置,趁此机会对自己也算是一个复习与深入,也希望对初学者有所帮助。本系列均是基于IDEA...

1491
来自专栏青玉伏案

iOS开发之使用XMPPFramework实现即时通信(一)

关于XMPP的理论介绍在本篇博客中就不做赘述了,如何在我们之前的微信中加入XMPP协议来实现通信呢?下面将会介绍一下XMPP的基本的知识,让我们的微信可以实现互...

20010
来自专栏运维

RH413-RHEL6.4课程总结

RH413-RHEL6.4课程总结 Unit1 Tracking Security Updates 更新分以下三类 RHSA RHBA RHEA yum up...

1081
来自专栏木木玲

Netty 那些事儿 ——— Reactor模式详解

4447
来自专栏IT笔记

JavaWeb项目架构之Kafka分布式日志队列

架构、分布式、日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Kafka做消息队列罢了。 ? kafka介绍 Kafka是由Apac...

33711

扫码关注云+社区