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

相关推荐

  • LAMP三个主机的简单配置和php-admin,wordpress

    LAMP:组合应用httpd2.4:yum install httpd.2.4php-fpm:yum install php-fpm php-mysqlmysql: yum install mysql 注意:在做实验时,一定要将iptables和selinux给关了。 http:只需在httpd上写一个必须的文件/etc/httpd/conf.d/fcgic…

    2017-06-06
  • 马哥教育网络班N22期+第3周课程练习

    马哥教育网络班N22期+第3周课程练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 示例: [root@Red Hat Enterprise Linux Desktop]# who | cut -d' &#039…

    Linux干货 2016-08-29
  • 自制linux系统

    本文主要通过裁剪现有Linux系统,打造一个属于自己的Linux小系统,让其能够装载网卡驱动,并配置IP地址,实现网络功能。 自制linux系统 步骤概述: 1、新建一个硬盘2、在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3、格式化并且挂载两个分区4、安装grub至目标磁盘5、为grub提供配置文件6、复制内核文件和initrd文件7、创建目标…

    Linux干货 2016-09-13
  • 单网卡多IP,双网卡实现负载

        有些时候会我们一个IP不够用,但是又不想加网卡,可以试试一个网卡实现多个IP,下面我们来操作一下。 生成新增IP配置文件信息;  [root@localhost network-scripts]# cat ifcfg-eth0      DE…

    Linux干货 2016-09-06
  • 第四周

    第四周blog 第四周blog 1 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1 ; chmod -R go-r /home/tuser…

    Linux干货 2016-12-23
  • 集中管理利器-puppet快速入门-中

    集中管理利器-puppet快速入门-中 6.    尝试启动master puppet 启动master puppet,并确认8140端口已被监听:  #puppet返回成功,但不一定能成功启动,puppet这个功能希望能改进… 7.    目录结构 /etc/puppet/  …

    Linux干货 2015-05-04