LVM : Logical Volume Manager , Version 2
LVM使用的是内核模块’dm’;
‘dm’全称为 device mapper , 设备映射,将一个或多个底层块设备组织成一个逻辑设备的模块;
1、基本概念
PE : Phsical Extent , 物理盘区,默认大小为4M;PV 加入 VG 时可自定义此值的大小;
LV : 逻辑卷
VG : 卷组
PV : 可以在分区、磁盘、RAID上创建;
/dev/dm-# : 源设备文件;
/dev/mapper/VG_NAME-LV_NAME : 符号链接文件,目标指向源设备文件 ‘/dev/dm-#’;
/dev/VG_NAME/LV_NAME : 符号链接文件,目标指向源设备文件 ‘/dev/dm-#’;
[root@kouyuushinn ~]# ll /dev/mapper/ total 0 lrwxrwxrwx 1 root root 7 May 7 11:35 centos-root -> ../dm-0 lrwxrwxrwx 1 root root 7 May 7 11:35 centos-swap -> ../dm-1 crw------- 1 root root 10, 236 May 7 11:35 control [root@kouyuushinn ~]# [root@kouyuushinn ~]# ll /dev/centos/ total 0 lrwxrwxrwx 1 root root 7 May 7 11:35 root -> ../dm-0 lrwxrwxrwx 1 root root 7 May 7 11:35 swap -> ../dm-1 [root@kouyuushinn ~]#
2、PV管理命令
pvs : 简明显示pv信息;
pvdisplay : 详细显示pv信息;
pvdisplay /dev/DEVICE : 指定块设备显示pv详细信息;
pvcreate /dev/DEVICE … : 创建PV;
pvremove /dev/DEVICE … : 移除PV;
pvmove : 把PV上的PE移动到另一个PV中;
3、VG管理命令
vgcreate : 创建VG;
vgcreate -s PE数值 VG_NAME /dev/DEVICE : ‘-s’ 指定PE大小,单位可以是M,G等,默认为4M;还需指定PVNAME;
vgrename OLD_VG_NAME NEW_VG_NAME : 重命名VG
vgremove : 删除VG
vgextend VG_NAME /dev/DEVICE : 扩展VG;
vgreduce VG_NAME /dev/DEVICE : 缩减VG;先要移动PE(pvmove /dev/DEVICE),再缩减VG;
vgs : 简明查看VG信息
vgdisplay VG_NAME : 详细查看VG信息
4、LV管理命令
lvcreate -L #[mMgGtT] -n LV_NAME VG_NAME : 创建LV;
说明:
-L #[mMgGtT] : 指定LV的大小,’#’表示数字,后面跟单位;
-n LV_NAME VG_NAME : 创建LV的名字,后面跟VG_NAME,指定属于哪个VG;
lvremove : 移除LV;
lvrename : 重命名LV;
lvextend -L #[mMgGtT] /dev/VG_NAME/LV_NAME : 扩展LV;扩展到’#’容量大小;
lvextend -L +#[mMgGtT] /dev/VG_NAME/LV_NAME : 扩展LV;在原有容量基础上增加了’#’容量大小;
扩展了LV后,需要更新文件系统的大小,使用下面命令(此命令只使用’ext’系列的文件系统格式):
resize2fs /dev/VG_NAME/LV_NAME
lvreduce : 缩减LV;
操作次序:先’umount’ LV ; 然后强制检测LV,然后缩减文件系统,接着缩减LV,最后重新挂载[备注,’e2fsck’,’resize2fs’只适用于’ext’文件系统];
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 /dev/VG_NAME/LV_NAME mount_point
lvs : 简明查看LV信息;
lvdisplay /dev/VG_NAME/LV_NAME : 详细查看指定的LV信息;
5、文件系统的挂载使用
光盘设备文件标识:
IDE : /dev/hdc
SATA : /dev/sr0
光盘设备的符号链接文件:
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
6、dd命令
dd – convert and copy a file
转换和复制文件;
命令用法:
dd if=/PATH/ROM/SRC of=/PATH/TO/DEST bs=# count=#
参数说明:
bs=# : block size , 指定复制单元大小,单位是字节;即从源文件中复制多少字节内容到目标文件;
count=# : 复制多少个’bs’;
dd命令通常用作如下应用:
磁盘拷贝 : dd if=/dev/sda of=/dev/sdb
备份MBR : dd if=/dev/sda of=/data/mbr.bak bs=512 count=1
linux的2个特殊设备:
/dev/null : 数据黑洞,所有转入这个设备的数据都将丢弃;
/dev/zero : 无限产生数字0的设备;
dd命令举例: ----------- [root@kouyuushinn test]# [root@kouyuushinn test]# ll total 4 -rwxr-xr-x 1 root root 683 May 6 20:14 six.sh [root@kouyuushinn test]# [root@kouyuushinn test]# dd if=six.sh of=aa bs=20 count=10 10+0 records in 10+0 records out 200 bytes (200 B) copied, 0.000139188 s, 1.4 MB/s [root@kouyuushinn test]# [root@kouyuushinn test]# ll total 8 -rw-r--r-- 1 root root 200 May 8 01:58 aa -rwxr-xr-x 1 root root 683 May 6 20:14 six.sh [root@kouyuushinn test]# [root@kouyuushinn test]# dd if=six.sh of=bb bs=200 count=2 2+0 records in 2+0 records out 400 bytes (400 B) copied, 0.000102895 s, 3.9 MB/s [root@kouyuushinn test]# [root@kouyuushinn test]# ll total 12 -rw-r--r-- 1 root root 200 May 8 01:58 aa -rw-r--r-- 1 root root 400 May 8 01:58 bb -rwxr-xr-x 1 root root 683 May 6 20:14 six.sh [root@kouyuushinn test]#
======================================================
======================================================
A.创建LVM完整流程:
—————-
先创建分区,文件系统格式指定为’8e’;
~]# pvcreate -v /dev/sdb11 创建PV,-v选项表示显示创建过程;
~]# vgcreate lucifer /dev/sdb11 创建VG;
~]# lvcreate -L 200M -n lv11 vglucifer 创建LV;
~]# mkfs.ext4 -b 1024 -L lvlabel /dev/vglucifer/lv11 格式化LV;
~]# mount /dev/vglucifer/lv11 /lvdata 挂载LV;把UUID信息写入’/etc/fstab’,开机可自动挂载;
查看及管理类操作:
~]# pvdisplay /dev/sdb11 指定块设备,显示 PV 信息;
~]# vgdisplay lucifer 指定块设备,显示 VG 信息;
~]# vgrename lucifer vglucifer 重命名VG;
~]# lvdisplay /dev/vglucifer/lv11 查看指定的LV信息;
B. 扩展VG操作:
———–
~]# pvcreate /dev/sdb12 先看系统是否有尚未加入任何VG的PV,如果没有,则查是否还有可用资源以创建新的PV;
~]# vgextend vglucifer /dev/sdb12 扩展VG,需指定VG_NAME , PV;
C. 缩减VG、移除PV操作(注意操作次序):
——————-
~]# pvmove /dev/sdb11
~]# vgreduce vglucifer /dev/sdb11
~]# pvremove /dev/sdb11 VG移除PV后,才可以删除PV;
D. 扩展LV逻辑卷操作(先扩展LV,再更新文件系统):
——————-
~]# lvextend -L 600M /dev/vglucifer/lv11
~]# resize2fs /dev/vglucifer/lv11
E. 缩减LV逻辑卷操作次序
1.用命令’umount’卸载LV;
2.用命令’e2fsck’强制检查LV;
3.用命令’resize2fs’缩减文件系统;
4.用命令’lvreduce’缩减LV; 此步骤有交互式问答,需要人为确认;
5.用命令’mount’重新挂载LV;
~]# umount /dev/vglucifer/lv11
~]# e2fsck -f /dev/vglucifer/lv11
~]# resize2fs /dev/vglucifer/lv11 550M
~]# lvreduce -L 550M /dev/vglucifer/lv11
~]# mount /dev/vglucifer/lv11 /lvdata
F. LVM的快照功能
给某个LV做快照的时候,快照卷必须跟原LV卷同属一个VG内,不能跨文件系统(不能跨分区);
快照刚创建时,默认是没有任何数据的;
当原LV卷的文件的内容发生变化时,快照会记录文件发生变化前的状态(从原LV卷中复制变化前的文件至快照中);
当原LV卷中有新增的文件时,快照内是不会备份此文件,只记录快照创建后,原LV卷内的原文件有发生变化的文件;
lvcreate -s -L #[mMgGtT] -p r -n SNAPSHOT_LV_NAME /dev/VG_NAME/LV_NAME
-s : 表示对某个逻辑卷LV创建快照;
-L #[mMgGtT] : 表示创建的快照的大小,一般设置成跟LV同样容量;
-p r : 表示快照是只读的;
-n SNAPSHOT_LV_NAME : 指定要创建的快照的名称;
/dev/VG_NAME/LV_NAME : 指定原LV卷的名称,必须是完整的路径;
快照卷也可以挂载到系统中,当快照内的文件做了备份后,可以卸载快照卷;
G. 卸载LVM(卸载LV,VG,PV):做卸载操作必须要备份数据;
~]# umount /dev/VG_NAME/LV_NAME
~]# lvremove /dev/VG_NAME/LV_NAME
~]# vgremove VG_NAME
~]# pvremove /dev/DEVICE