高级文件系统之-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
下一篇 2016-09-02

相关推荐

  • Bash编程之流程控制

    Bash作为一种过程式编程语言,拥有一套流程控制体系,可完成选择执行,循环执行功能。下面分别介绍if/else,case,select,for,while/until等语法的使用。

    Linux干货 2016-08-21
  • Zabbix 新版微信告警 [2017]

    Zabbix 新版微信告警 Zabbix 新版微信告警 date 2017-06-14zabbix Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。 关于邮件报警可以参考: Zabbix 使用脚本发送…

    2017-06-17
  • 你的数据根本不够大,别老扯什么Hadoop了

    本文原名“Don’t use Hadoop when your data isn’t that big ”,出自有着多年从业经验的数据科学家Chris Stucchio,纽约大学柯朗研究所博士后,搞过高频交易平台,当过创业公司的CTO,更习惯称自己为统计学者。对了,他现在自己创业,提供数据分析、推荐优化咨询服务,他的邮件是:stucchio@gmail.co…

    Linux干货 2015-04-04
  • bash变量详解

       shell作为用户和Unix/Linux沟通的桥梁,既可以是一个可执行的二进制程序,同时也是一个具备了编程能力的程序设计语言,定义了各种各样的变量和参数,下面介绍一下shell之上的各种变量。 1、本地变量    特性:只对当前shell生效 [root@centos7 ~/bin]#cat …

    Linux干货 2016-08-15
  • N25期第七周作业

    创建一个10G分区,并格式为ext4文件系统   要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 fdisk /dev/sdb # size 10G type 83 mke2fs -t ext4 -b 20…

    Linux干货 2017-02-28
  • 操作系统文件管理

      在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然,这是用户所不能胜任、也不愿…

    Linux干货 2015-04-13