高级文件系统之-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

相关推荐

  • 我们都在前行的路上

    我们都在前行的路上         从0到1是一种突破,年少轻狂到心有余而力不足,力挽狂澜到恬淡人生需伏地脚踏实地地前行,漂泊在一线都市,立足我图网,途径百胜,一次机缘巧合转战阿里,对于一个工作6年的弄潮儿,他将所有经历的化作前行的动力和坚韧不拔的耐力,也许不经意,但却理所当然,…

    Linux干货 2016-11-03
  • MySQL复制

    目录: 1.备份与恢复 2.主从复制 3.主主复制 4.半同步复制 5.MHA 6.centos7搭建mariadb Galera集群 1.备份和恢复 备份工具:mysqldump+复制binlog xtrabackup (1) mysqldump+复制binlog 备份: mysqldump -E -R –triggers –master-data=2 –…

    2017-11-21
  • bash脚本进阶(续)

     1、打印99乘法表 [root@ _212_ ~/bin/for_script]# cat 99_changfa.sh  #!/bin/bash line=1 for i in `seq 1 9`;     …

    Linux干货 2016-08-21
  • 先给出自动化编译安装httpd的脚本,后面的mysql,php-fpm,xcache等还在测试中

    自动化编译安装httpd的脚本! FUNDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "Make …

    Linux干货 2016-10-30
  • nfs,samba同步LAMP与Mysql

    使用nfs功能实现WEB页面同步     拓扑图见NFS实现LAMP冗余:     目的:使用网络文件系实现LAMP的分步式资源共享    配置步骤:    配置test1:搭建NFS环境:&nbsp…

    2017-04-26
  • 网络通信安全基础OpenSSL

    OpenSSL: NIST: 保密性: 数据保密性 隐私性 完整性: 数据完整性 系统完整性 可用性  安全攻击: 被动攻击:窃听 主动攻击:伪装、重放、消息篡改、拒绝服  安全机制: 加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证 安全服务: 认证 访问控制 数据保密性 连接保密性 无连接保密性 选择域保密性 …

    Linux干货 2015-09-06