逻辑卷管理器(LVM Logical Volume Manager )
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
将设备指定为物理卷
用一个或者多个物理卷来创建一个卷组
物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
在物理卷上创建的逻辑卷是由物理区域(PE)组成
可以在逻辑卷上创建系统
LVM可以弹性的更改LVM的容量,通过交换PE来进行资料的转换,
将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量
dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
逻辑卷真实设备名:/dev/dm-#
软链接:
/dev/mapper/VG_NAME-LV_NAME
例如:/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
例如:/dev/vg0/lv0
pv管理工具
显示pv信息
pvs:简要pv信息显示
pvdisplay:详细pv信息显示
pvscan:搜索当前系统任何具有pv的磁盘
创建pv
pvcreate /dev/DEVICE
例如:pvcreate /dev/sdb
移除pv
pvremove /dev/sdb
vg管理工具
显示卷组
vgs
vgdisplay
vgscan
创建卷组
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
例如:vgcreate -s 16M -n vg0 /dev/sd{b,c,d}
管理卷组
vgrename
往vg中添加pv
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
例如:vgextend vg0 /dev/sde(刚加已创建pv的硬盘,)
在vg内移除pv
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
配置vg是否启动(active)
vgchange
删除卷组(删除需要配置先不启动)
先做pvmove,再做vgremove
lv管理工具
显示逻辑卷
lvs
lvdisplay
lvscan
创建逻辑卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvcreate -l 60%VG -n lv0 vg0
lvcreate -l 100%FREE -n lv0 vg0
lvcreate -L 20G -n lv0 vg0
管理逻辑卷
往lv中添加容量
lvextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
例如:lvextend -r -L +10G lv0 r表示同步文件系统
在lv内移除容量(先卸载挂载lv)
lvreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
例如:lvreduce
删除逻辑卷
lvremove /dev/VG_NAME/LV_NAME
例如:lvremove /dev/vg0/lv0
重设文件系统大小
fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
扩展和缩减逻辑卷
扩展逻辑卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvresize -r -l +100%FREE /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
跨主机迁移卷组
源计算机上
1 在旧系统中,umount所有卷组上的逻辑卷
2 vgchange –a n vg0
lvdisplay 3
vgexport vg0
pvscan
vgdisplay
拆下旧硬盘
在目标计算机上
4 在新系统中安装旧硬盘,并vgimport vg0.
5 vgchange –ay vg0
6 mount所有卷组上的逻辑卷
创建逻辑卷示例
创建物理卷
pvcreate /dev/sda3
为卷组分配物理卷
vgcreate vg0 /dev/sda3
从卷组创建逻辑卷
lvcreate -L 256M -n data vg0
mke2fs -j /dev/vg0/data
mount /dev/vg0/data /mnt/data
逻辑卷管理器快照
快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择
快照只有在它们和原来的逻辑卷不同时才会消耗空间
在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照
逻辑卷管理器快照
快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
实验:创建LV
pvcreate /dev/sd{a5,b1}
vgcreate vg0 /dev/sd{a5,b1}
lvcreate -n lv0 -L 10G vg0
mkfs.ext4 /dev/vg0/lv0
mount
实验:扩展LV
lvextend -l +100%FREE /dev/vg0/lv0
resize2fs /dev/vg0/lv0 extN
xfs_growfs /mnt/lv0 xfs
或者
lvextend -r -l +100%free /dev/vg0/lv0
实验:缩减LV
umount /mnt/lv0
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 8G
lvreduce -L 8G /dev/vg0/lv0
mount -a
实验:删除PV
vgdisplay 看可用空间,大于pv的空间
pvmove /dev/sdc
vgreduce vg0 /dev/sdc
pvremove /dev/sdc
实验:迁移LV到新主机
1 确认VG名和目标主机不同
vgrename vg1 vg100
lvrename lv2 lv100
vgdisplay
pvs
2 umount /mnt/lv2
vgchange -an /dev/vg100/lv100
vgexport vg100
3 拆除,在新主机接入
4、lvs;vgs
vgimport vg100
vgchange -ay vg100
mount /dev/vg100/lv100 /mnt
设定LVM快照
使用LVM快照
为现有逻辑卷创建快照
lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data
挂载快照
mkdir -p /mnt/snap
mount -o ro /dev/vg0/data-snapshot /mnt/snap
恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot
删除快照
umount /mnt/databackup
lvremove /dev/vg0/databackup
案例:
选择磁盘
[root@hadoop2 ~]#fdisk /dev/vdb
Command (m for help): m ---------->帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n ---------->创建新的分区
Command action
e extended
p primary partition (1-4)
p ---------->创建主分区
Partition number (1-4):1 ---------->分区ID
First cylinder (1-65270, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-65270, default 65270):
Using default value 65270
Command (m for help):t ---------->修改分区类型
Command (m for help):8e ---------->Linux lvm
Command (m for help):w ---------->保存修改
创建新的pv卷 (整个磁盘都加pv)
[root@hadoop2 ~]#pvcreate /dev/vdb1
查看pv卷
[root@hadoop2 ~]#pvs
创建新的vg卷
[root@hadoop2 ~]#vgcreate mygroup /dev/vdb1
查看vg卷
[root@hadoop2 ~]#vgs
创建逻辑卷(-L 指定分区大小 -n 指定lvm名称)
[root@hadoop2 ~]#lvcreate -L 300G -n webroot mygroup
或者
[root@hadoop2 ~]#lvcreate -l 100%FREE -n webroot mygroup
创建文件系统(使用mkfs.ext4命令在逻辑卷webroot上创建ext4文件系统)
[root@hadoop2 ~]#mkfs.ext4 /dev/mygroup/webroot
挂在分区到本地目录/data
[root@hadoop2 ~]#mkdir /data
[root@hadoop2 ~]#mount /dev/mygroup/webroot /data
配置修改fstab 开机自动挂载
[root@hadoop2 ~]#vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Aug 14 21:16:42 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/vda1 / ext4 noatime,acl,user_xattr 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/mygroup/webroot /data ext4 defaults 0 0
:wq
保存重启测试
注意:
fstab一定要正确填写路径,一旦出错,可能无法正常启动.
可以在rc.local使用mount命令进行挂载
网友评论