LVM

LVM

LVM

Logic Volume Manager,version:2

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

    /dev/dm-#

/dev/mapper/VG_NAME-LV_NAME
    /dev/mapper/v0_l0
/dev/VG_NAME/LV_NAME
    /dev/v0/l0
上面这两方式都是指向LV设备的链接文件,真正LV设备文件是/dev/dm-#

PV管理工具

pvs

简要pv信息显示
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--  59.99g 7.99g

pvdisplay

显示pv的详细信息
[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg0
  PV Size               60.00 GiB / not usable 8.00 MiB
  Allocatable           yes 
  PE Size               8.00 MiB
  Total PE              7679
  Free PE               1023
  Allocated PE          6656
  PV UUID               WOJfGB-lKLN-Gvbl-MZmT-r4gK-AkSg-8lb9uj
在这里,显示了LV的详细信息,包括他的PV、VG名称,PV大小,PE的大小,PE总额和PV UUID

pvcreate

  • 创建之前
    before pvcreate
    已经分配了4个分区,大小都是5G,但是他们的ID都是fd也就是用于创建raid,再创建PV之前要把他们的ID修改为8e(Linux LVM)
  • 创建PV
    pvcreate /dev/DISK#

    [root@localhost ~]# pvcreate /dev/sdb{1,2,3}
    Physical volume “/dev/sdb1” successfully created
    Physical volume “/dev/sdb2” successfully created
    Physical volume “/dev/sdb3” successfully created
![](http://i.imgur.com/ig6yuwg.jpg)

pvmove

pvmove /dev/DISK#

pvmove命令用于移除VG中的PV,没有加入VG的PV是不能pvmove的

pvremove

pvremove /dev/DISK#

pvremove用于将PV分区(磁盘)删除,删除之后,这个磁盘就可以当作正常的分区使用了

VG管理工具

vgs

vgdisplay

vgdisplay

vgcreate

vgcreate  [-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtT]] VolumeGroupName  PhysicalDevicePath...
    -s选项用于指定PE的大小,默认大小为4MB

将上述的sdb1,sdb2,sdb3合并作为一个VG

[root@localhost ~]# vgcreate -s 8M vghusa /dev/sdb{1,2,3} 
  Volume group "vghusa" successfully created

在这里指定PE大小为8M

vgreduce

vgreduce VolumeGroupName  PhysicalDevicePath...
这里要先使用pvmove,表示移走了pv

首先使用pvmove移除PV,但是VG中仍然是15G
然后使用vgreduce移除PV所在分区,VG的大小就变了
vgreduce

vgextend

vgextend VolumeGroupName  PhysicalDevicePath...
[root@localhost ~]# vgextend vghusa /dev/sdb3
  Volume group "vghusa" successfully extended
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  vg0      1   4   0 wz--n- 59.99g  7.99g
  vghusa   3   0   0 wz--n- 15.02g 15.02g

再次把移除的PV添加进来,VG大小变为15G

vgremove

移除VG

lv管理工具

lvs

lvdisplay

lvdisplay /PATH/TO/LV

这个命令只能使用LV详细的设备文件,不能只是用LV的名称
lvdisplay

lvcreate

lvcreate  -L|--size LogicalVolumeSize[bBsSkKmMgG]} [-n|--name  LogicalVolume{Name|Path}] VolumeGroup{Name|Path}
    -L指定逻辑卷大小-n指定逻辑卷名称
[root@localhost ~]# lvcreate -L 5G -n lvhusa vghusa
[root@localhost ~]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   vg0    -wi-ao---- 20.00g                                                    
  swap   vg0    -wi-ao----  2.00g                                                    
  usr    vg0    -wi-ao---- 10.00g                                                    
  var    vg0    -wi-ao---- 20.00g                                                    
  lvhusa vghusa -wi-a-----  5.00g  

可以看到已经创建了LV

lv文件系统创建

当LV建立以后,LV就是一种建立在各种分区上的设备了,此时就要给LV建立文件系统

mke2fs
在LV上创建文件系统之后,这个LV就可以投入使用了,以下是挂载并创建文件的过程

[root@localhost ~]# mkdir /backup
[root@localhost ~]# mount /dev/dm-4 /backup
[root@localhost ~]# cd /backup
[root@localhost backup]# ls
lost+found
[root@localhost backup]# touch lvhusa.rootfile
[root@localhost backup]# cc
[root@localhost backup]# vim lvhusa.rootfile 

this is a file created by root in lvhusa

扩展逻辑卷

lvextend

lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME   
    这里lv要使用上述的这种形式
    +表示增加多少
    没有+表示直接指定lv大小
因为LV直接建立在VG之上,以上还没有完全是用掉VG,所以还可以继续扩展LV的容量

resize2fs

虽然扩展了物理空间,但是文件系统还是原来的大小,所以还要格式化lv
resize2fs /dev/VG_NAME/LV_NAME
修改lv文件系统,这样lv就扩大了

扩展逻辑卷之后LV自动调整大小了,所以也就不用再resizeLV的大小了

缩减逻辑卷

缩减逻辑卷是一个危险的操作,因为可能丢失LV上建立的文件,缩减LV要在LV卸载的状态下进行

卸载lv

umount /dev/VG_NAME/LV_NAME
[root@localhost /]# umount /dev/dm-4

文件系统检测

e2fsck -f /dev/VG_NAME/LV_NAME
[root@localhost /]# e2fsck -f /dev/dm-4
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
ext4husa: 12/655360 files (0.0% non-contiguous), 76784/2621440 blocks

修改lv文件系统大小

resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
[root@localhost /]# resize2fs /dev/dm-4 5G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/dm-4 to 1310720 (4k) blocks.
The filesystem on /dev/dm-4 is now 1310720 blocks long.

缩减lv大小

lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
[root@localhost /]# lvreduce -L 5G /dev/vghusa/lvhusa 
  WARNING: Reducing active logical volume to 5.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvhusa? [y/n]: y
  Size of logical volume vghusa/lvhusa changed from 10.00 GiB (1280 extents) to 5.00 GiB (640 extents).
  Logical volume lvhusa successfully resized
注意:这里要使用上面的这种路径形式,否则会报错

重新挂载lv

[root@localhost /]# ls /backup/
[root@localhost /]# mount /dev/vghusa/lvhusa /backup/
[root@localhost /]# ls /backup/                      
lost+found  lvhusa.rootfile
从以上可以看出,缩减了大小之后以前创建的文件还存在

注意:以上文件系统的检查和修改大小仅仅针对ext文件系统,其他文件系统(xfs、btrfs)需要用相应的管理工具

删除逻辑卷

lvremove

[root@localhost /]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0  -wi-ao---- 20.00g                                                    
  swap vg0  -wi-ao----  2.00g                                                    
  usr  vg0  -wi-ao---- 10.00g                                                    
  var  vg0  -wi-ao---- 20.00g  

Snapshot Volumes

快照卷是逻辑卷中的元数据的一种备份,可以理解为它是LV中文件的另一条访问路径。
当LV中的文件没有发生变化,那么snapshot volume能够正确的访问当时的文件,但是如果LV中的文件变化,那么snapshot也只能访问创建快照卷那一刻的文件,任何新增的文件是不能找到的

序列化

把文件转换为一种传输的形式,java中类的序列化

创建snapshot volume

lv -L #[mMgGtT] -p PERM -s -n snapshot_lv_name orginal_lv


以上过程中,快照卷中的文件是快照那一刻的文件,后来的任何修改都不会影响快照卷,因此,可以备份快照卷的内容,备份完毕之后,快照卷也就没有什么作用了
另外,由于快照卷也是建立在LV之上,所以可以直接挂载而不用建立文件系

注意:快照卷的作用用于备份,如果原卷变化,则路径不再存在,需要把原卷的内容复制到快照卷。快照卷用完复制(备份)就要删除了,快照卷不要长期存在,其空间超过设定容量,直接崩溃

例子

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

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

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

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

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

dd命令

cp通过文件系统赋值,但是dd通过blocks复制

用法

dd if=/PATH/TO/SRC of=/PATH/to/DEST
    bs=#:block size,复制单元大小,大小为字节
    count=#:复制多少个bs

拷贝磁盘

dd if=/dev/sda of=/dev/sdb

备份MBR

dd if=/dev/sda of=/dev/mbr.bak bs=512 count=1

清除MBR和bootloader

dd if=/dev/zero of=/dev/sda bs=512 count=1
dd if=/dev/zero of=/dev/sda bs=256 count=1
实验过程


可以发现系统不能开启了

特殊设备

/dev/null
/dev/zero
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值