高级文件系统之-LVM管理

lvm应用

lvm的重点在于可以弹性的调整filesystem的容量! 而并非在于数据的存储效率及安全上面。

需要文件的读写效能或者是数据的可靠性是RAID所考虑的问题。

lvm:逻辑卷管理器

允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小

允许在多个物理设备间重新组织文件系统

  • 将设备指定为物理卷

  • 用一个或者多个物理卷来创建一个卷组

  • 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的

  • 在物理卷上创建的逻辑卷是由物理区域(PE)组成

  • 可以在逻辑卷上创建文件系统

lvm介绍

lvm:logical volume manager,version 2

dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

设备名:/dev/dm-#

  • 软链接:

    /dev/mapper/VG_NAME-LV_NAME
        /dev/mapper/vol0-root
    /dev/VG_NAME/LV_NAME
        /dev/vol0/root

LVM如何更改文件系统的容量?

LVM可以弹性的更改LVM的容量,是如何做到的?

是通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量!

高级文件系统之-LVM管理

创建和使用新的LVM逻辑卷的步骤:

1、建立LVM类型的分区   (fdisk t)
2、建立LVM物理卷      (pv)
3、建立LVM卷组       (vg)
4、建立LVM逻辑卷      (lv)
5、建立文件系统       (mkfs.ext2,3,4)
6、挂载文件系统       (mount)
7、使用文件系统

pv管理工具

高级文件系统之-LVM管理

命令行中输入pv 按两次TAB自动补全即可查看所有的pv命令

vg管理工具

高级文件系统之-LVM管理

和pv相似,在命令行中输入lv 按两次TAB即可查看所有的vg命令

注意:
删除卷组时:
    先做pvmove,再做vgremove

lv管理工具

高级文件系统之-LVM管理

扩展和缩减逻辑卷

  • 扩展逻辑卷:

    # lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    # resize2fs /dev/VG_NAME/LV_NAME
  • 缩减逻辑卷:

    # umount/dev/VG_NAME/LV_NAME
    # e2fsck -f /dev/VG_NAME/LV_NAME
    # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
    # lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
    # mount

逻辑卷管理器快照

  • 快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

  • 对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。

  • 快照只有在它们和原来的逻辑卷不同时才会消耗空间

由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须要要在同一个VG上!系统恢复的时候的文件数量不能高于快照区的实际容量

实战案例:

1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录

3、扩展testlv至7G,要求archlinux用户的文件不能丢失

4、收缩testlv至3G,要求archlinux用户的文件不能丢失

5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能




本实验基于 centos 7

首先介绍下我们的实现环境

高级文件系统之-LVM管理

如图:我们使用sdb的4个分区做LVM


第一问

第一步创建pv
[root@redhat7 ~]# pvcreate /dev/sdb{1,5,6,7}
[root@redhat7 ~]# pvs

高级文件系统之-LVM管理

高级文件系统之-LVM管理

第二步创建vg
[root@redhat7 ~]# vgcreate -s 16MB testvg /dev/sdb{1,5,6}
[root@redhat7 ~]# vgs
[root@redhat7 ~]# vgdisplay

高级文件系统之-LVM管理

第三步创建lv
[root@redhat7 ~]# lvcreate -L 5G -n testlv testvg
[root@redhat7 ~]# lvs
[root@redhat7 ~]# lvdisplay

高级文件系统之-LVM管理

第四步创建文件系统并挂载
[root@redhat7 ~]# mkfs -t ext4 /dev/testvg/testlv
[root@redhat7 ~]# mkdir /users
[root@redhat7 ~]# mount /dev/testvg/testlv /users/
[root@redhat7 ~]# 
[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  4.8G   20M  4.6G   1% /users


第二问

[root@redhat7 ~]# useradd -d /users/archlinux archlinux
[root@redhat7 ~]# su - archlinux
hi,dangerous!
[archlinux@redhat7 ~]$ pwd
/users/archlinux
[archlinux@redhat7 ~]$ whoami
archlinux
[archlinux@redhat7 ~]$ cp /etc/pam.d/ ./ -r
[archlinux@redhat7 ~]$ ls
pam.d
[archlinux@redhat7 ~]$ du -sh pam.d/
156K    /etc/pam.d/

第三问

前提:lv所在的vg容量要足够;

[root@redhat7 ~]# lvextend -L 7G /dev/testvg/testlv 
  Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
  Logical volume testlv successfully resized.
[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  4.8G   21M  4.6G   1% /users
[root@redhat7 ~]# resize2fs /dev/testvg/testlv 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/testvg/testlv is now 1835008 blocks long.

[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  6.8G   23M  6.4G   1% /users
[root@redhat7 ~]# su - archlinux 
Last login: Mon Aug 29 20:14:12 CST 2016 on pts/0
[archlinux@redhat7 ~]$ pwd
/users/archlinux
[archlinux@redhat7 ~]$ ls
pam.d
[archlinux@redhat7 ~]$ du -sh pam.d/  //和扩展前大小一样,说明数据没有丢失
156K    pam.d/

第四问:

注意:缩减lvm必须严格按照前面我们所说的步骤,顺序很重要!!

这里我们再次强调下
1、卸载文件系统
2、使用e2fsck强制检测文件系统(这里只针对ext系列的文件系统)
3、首先缩减文件系统边界
4、缩减lvm
5、挂载使用

[root@redhat7 ~]# umount /users/
[root@redhat7 ~]# e2fsck -f /dev/testvg/testlv 
[root@redhat7 ~]# resize2fs /dev/testvg/testlv 3G
[root@redhat7 ~]# lvreduce -L 3G /dev/testvg/testlv //此处有个提示,我们选择y即可(如下图所示)
[root@redhat7 ~]# mount /dev/testvg/testlv /users/
[root@redhat7 ~]# df -h | tail -1
/dev/mapper/testvg-testlv  2.9G   16M  2.7G   1% /users
[root@redhat7 ~]# su - archlinux 
Last login: Mon Aug 29 20:30:30 CST 2016 on pts/0
[archlinux@redhat7 ~]$ ls
pam.d
[archlinux@redhat7 ~]$ du -sh pam.d/ //大小没变,说明数据保存完整
156K    pam.d/

高级文件系统之-LVM管理

第五问:

[root@redhat7 ~]# lvcreate -s -L 512M -n snap_testlv /dev/testvg/testlv
  Logical volume "snap_testlv" created.
[root@redhat7 ~]# ll /dev/testvg/snap_testlv  //查看快照设备
lrwxrwxrwx. 1 root root 7 Aug 29 20:45 /dev/testvg/snap_testlv -> ../dm-3
[root@redhat7 ~]# mount -r /dev/testvg/snap_testlv /mnt //快照卷挂载为只读,它不需要写数据
[root@redhat7 ~]# df -h | tail -2 
/dev/mapper/testvg-testlv       2.9G   16M  2.7G   1% /users
/dev/mapper/testvg-snap_testlv  2.9G   16M  2.7G   1% /mnt
  //这里注意:我们指定的大小为512M ;这里显示和原卷大小一样,但实际为512M

[root@redhat7 ~]# ll /mnt
total 20
drwx------. 6 archlinux archlinux  4096 Aug 29 20:16 archlinux
drwx------. 2 root      root      16384 Aug 29 20:09 lost+found
[root@redhat7 ~]# ll /users/
total 20
drwx------. 6 archlinux archlinux  4096 Aug 29 20:16 archlinux
drwx------. 2 root      root      16384 Aug 29 20:09 lost+found
   //和原卷数据完全一样

[root@redhat7 ~]# cd /users/archlinux/pam.d/
[root@redhat7 pam.d]# echo "Hello world" >> atd //修改原卷中的atd文件;向最后一行添加一个字符串
[root@redhat7 pam.d]# tail -1 atd //查看原卷中atd文件的最后一行,可以看到已经修改成功
Hello world

[root@redhat7 pam.d]# cd /mnt/archlinux/pam.d/  //进入快照卷内
[root@redhat7 pam.d]# tail -1 atd  //查看快照卷中的atd文件的最后一行,数据并没有发生变化
session    include     password-auth

//至此,说明快照卷使用成功

原创文章,作者:sixijie,如若转载,请注明出处:http://www.178linux.com/42722

(0)
sixijiesixijie
上一篇 2016-09-02 08:47
下一篇 2016-09-02 08:48

相关推荐

  • 马哥教育网络班第19期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; 2、写一个脚本     (1) 获取当前主机的主机名,保存于hostname变量中;     (2) 判断此变量的值是否为localhost,如果是…

    Linux干货 2016-09-19
  • Linux基础 文件权限

    概述 从接触linux第一天开始,Linux一切皆文件的哲学思想就深植于每个linuxer的心中,因此,实现Linux的系统安全必然绕不开文件权限。文件的权限是建立在用户的基础上的,脱离了用户,文件权限也就变得毫无意义了。用户、组和文件权限一起铸就了linux的系统安全模型。本文主要从文件权限方面了解Linux的安全模型。 文中主要讲解了: 1. 文件权限r…

    Linux干货 2016-08-05
  • Linux命令格式及基础命令使用

    Linux命令格式command [选项] [参数]其中 选项 以 – 开始,多个选项可用一个-连起来,如ls -l -a 与ls -la相同。根据命令的不同,参数分为可选的或必须的。ifconfig格式:ifconfig [网络设备] [参数]命令功能:命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。示例 :i…

    Linux干货 2018-03-03
  • Samba详解

    samba详解 yum list all | grep samba yum info samba yum -y install samba 服务端程序包:samba nmbd smbd rpm -ql samba-common rpm -ql samba-common-tools 主配置文件:/etc/samba/smb.conf systemd unit …

    Linux干货 2017-10-21
  • LAMP基于RPM包实现(httpd与php以module方式结合) 1

    概述:     LAMP是web服务的最基础的组合方式,本系列将介绍一下关于LAMP组合的各种部署方式,包括:     基于RPM包的实现:         httpd与php结合的方式为module…

    Linux干货 2016-10-14
  • shell编程if及find查找作业

    写一个脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息 [root@www sh.log]# cat createuser.sh  #!/bin/bash #author #使用一个用户名作为参数,如…

    Linux干货 2016-08-16