lvm逻辑卷管理
功能:
1.磁盘整合
2.在线扩容
pv:物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或者实际物理硬盘上的分区。他只是在物理分区上划分了一个特殊的区域,用于记载于LVM相关的管理参数。
vg:卷组建立在物理卷上。
lv:逻辑卷建立在卷组基础上,建立后逻辑卷可以动态扩展和缩小空间。
pe:物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组是指定,一旦确定不能修改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小会自动更改为vg中定义的pe大小。
le:逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。由于受内核显示,一个逻辑卷LV最多只能包含65536个pe,所以一个pe的大小就决定了逻辑卷的最大容量,4MB(默认)的pe决定了单个逻辑卷最大容量是256G,若希望使用大于256G的逻辑卷,则创建卷组时指定更大的pe。pe的大小范围是8KB到16GB,并且总数是2的倍数。
1.创建pv
[root@localhost ~]# pvcreate /dev/sda5 /dev/sda6
[root@localhost ~]# pvdisplay
[root@localhost ~]# pvs
2.创建vg
[root@localhost ~]# vgcreate vg0 /dev/sda5 /dev/sda6
[root@localhost ~]# vgcreate -s 10M vg0 /dev/sda5 指定物理扩展块大小
[root@localhost ~]# vgdisplay
[root@localhost ~]# vgs
-s 卷组上的物理卷的pe大小。 -p 卷组允许添加的最大物理卷数 -l 卷组允许创建的最大逻辑卷数
3.创建lv
[root@localhost ~]# lvcreate -L 250M -n /dev/vg0/lv0 vg0
[root@localhost ~]# lvcreate -l 10 -n lv0 /dev/vg0 -l 指定物理扩展单元个数
[root@localhost ~]# lvdisplay
[root@localhost ~]# lvs
-L 指定逻辑卷大小 -l 指定逻辑卷的大小(le数)
注意:
pv不能跨越vg
lv不能跨越vg
系统中可以创建多个vg
vg中可以创建多个lv
使用
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/
在线扩容:挂载状态,数据不损坏
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/
[root@localhost mnt]# dd if=/dev/zero of=data bs=100M count=3
[root@localhost mnt]# md5sum data
3566de3a97906edb98d004d6b947ae9b data
[root@localhost mnt]# lvextend -L +100M /dev/vg0/lv0 扩大lv
[root@localhost mnt]# e2fsck -f /dev/vg0/lv0 检查文件系统的正确性
[root@localhost mnt]# resize2fs /dev/vg0/lv0 扩展文件系统(全部扩展)
[root@localhost mnt]# md5sum data
3566de3a97906edb98d004d6b947ae9b data
vgextend vggroup /dev/pvname
不需要卸载磁盘
xfs_growfs /dev/vg0/lv0 比如扩展root
e2fsck 执行后的传回值及代表意义如下:
0没有任何错误发生。1文件系统发生错误,并且已经修正。2文件系统发生错误,并且已经修正。4文件系统发生错误,但没有修正。8运作时发生错误。16使用的语法发生错误。128共享的函数库发生错误。
参 数:
-a:对partition做检查,若有问题便自动修复,等同-p的功能
-b:设定存放superblock的位置
-B:设定单位block的大小
-c:检查该partition是否有坏轨
-Cfile:将检查的结果存到file中以便查看
-d:列印e2fsck的debug结果
-f:强制检查
-F:在开始检查前,将device的buffercache清空,避免有错误发生
-lbad_blocks_file:将有坏轨的block资料加到bad_blocks_file里面
-Lbad_blocks_file:设定坏轨的block资料存到bad_blocks_file里面,若无该档则自动产生
-n:将档案系统以[唯读]方式开启
-p:对partition做检查,若有问题便自动修复
-v:详细显示模式
-V:显示出目前e2fsck的版本
-y:预先设定所有检查时的问题均回答[是]
大部分使用 e2fsck 来检查硬盘 partition的情况时,通常都是情况特殊,因此最好将 partition umount,然后再检查。若非要检查 / 时,则进入 singalusermode 再执行。
resize2fs程序会重新定义ext2,ext3或者是ext4文件系统。能够用于扩大或者缩小一个在设备上未挂载的文件系统。如果这个文件系统是挂在的,它能够用于扩大挂载了的文件系统,假定内核支持在线重新定义大小。大小参数指定要求的文件系统的新大小。如果单位没有指定,大小参数的单位会成为文件系统的文件系统的文件块尺寸。
resize2fs程序不会改变分区的大小。如果你希望扩大是一个文件系统,你必须首先确认扩大的潜在的分区的大小。这个能够用于使用fdisk通过过删除分区并重新创建一个各大的分区或者使用lvextend,如果你在使用本地卷管理lvm。
选项
-ddebug-flags(调试-标志)
打开多样的resize2fs调试特性,如果他们已经被编译进入了库当中。调试-标志应该通过相加下列列表设计的特性的数字来计算:
2-Debugblockrelocations(调试block再安置)
4-Debuginoderelocations(调试inode再安置)
8-Debugmovingtheinodetable(调试移动inodetable)
-f强制开始文件系统重定义大小操作,推翻一些resize2fs平常的强制安全检查。
-F开始之前排除文件系统设备的缓冲区的缓存。真正只对resize2fs的时间检验有用。
-M减小文件系统到最小的大小。
-p为了每一个resize2fs操作打印一个百分比完成条,因此用户可以保持注意程序正在运作的动态。
-P打印最小的文件大小并退出。
缩小lv
1.卸载
[root@localhost /]# umount /dev/vg0/lv0
2.检查文件系统
[root@localhost ~]# e2fsck -f /dev/vg0/lv0
3.缩小文件系统
[root@localhost ~]# resize2fs /dev/vg0/lv0 220M 缩小到220M
4.缩小lv
[root@localhost ~]# lvresize -L 220M /dev/vg0/lv0 缩小到220M
vg的扩大
[root@localhost ~]# pvcreate /dev/sda8
[root@localhost ~]# vgextend vg0 /dev/sda8
vg缩小
[root@localhost ~]# vgreduce vg0 /dev/sda5
数据移动
[root@localhost ~]# pvmove /dev/sda5 /dev/sda8 指定设备移动
[root@localhost ~]# pvmove /dev/sda5 不指定设备移动
删除lvm
1.umount /dev/vg0/lv0
2.[root@localhost ~]# lvremove /dev/vg0/lv0
3.[root@localhost ~]# vgremove vg0
4.[root@localhost ~]# pvremove /dev/sda{5,6,8}
错误:
[root@localhost ~]# vgreduce --removemissing vg0
快照
快照功能可以将某一时刻的信息记录到快照区中,因此,可以利用这一特点对数据做完全备份。而后,新提交的数据可以利用二进制日志文件来做增量备份和还原。因此,通过这种方式就可以实现对数据做几乎热备。
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/
创建快照
[root@localhost mnt]# lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0
使用
1.只使用快照,源lv不动
快照记录源lv数据的元数据,当需要文件内容,将数据块拷贝到快照中,快照使用率达到100%时,快照自动损坏.
2.只使用源lv,快照不动
主要用户备份(mysql),快照大小,源lv写入速度,采用cow技术,备份时间,
cp/tar 备份时只针对文件操作,不针对块操作,不会对空块操作,不会备份空块。
=========================================
parted 划分分区
quit 用于退出parted环境,信息提示更新/etx/fstab!
parted 到这里就完成了!
格式化磁盘 ext4 / xfs
[root@abintel ~]# parted --help
用法:parted [选项]... [设备 [命令 [参数]...]...]
将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行。
选项:
-h, --help 显示此求助信息
-i, --interactive 在必要时,提示用户
-s, --script 从不提示用户
-v, --version 显示版本
命令:
检查 MINOR 对文件系统进行一个简单的检查
cp [FROM-DEVICE] FROM-MINOR TO-MINOR 将文件系统复制到另一个分区
help [COMMAND] 打印通用求助信息,或关于 COMMAND 的信息
mklabel 标签类型 创建新的磁盘标签 (分区表)
mkfs MINOR 文件系统类型 在 MINOR 创建类型为“文件系统类型”的文件系统
mkpart 分区类型 [文件系统类型] 起始点 终止点 创建一个分区
mkpartfs 分区类型 文件系统类型 起始点 终止点 创建一个带有文件系统的分区
move MINOR 起始点 终止点 移动编号为 MINOR 的分区
name MINOR 名称 将编号为 MINOR 的分区命名为“名称”
print [MINOR] 打印分区表,或者分区
quit 退出程序
rescue 起始点 终止点 挽救临近“起始点”、“终止点”的遗失的分区
resize MINOR 起始点 终止点 改变位于编号为 MINOR 的分区中文件系统的大小
rm MINOR 删除编号为 MINOR 的分区
select 设备 选择要编辑的设备
set MINOR 标志 状态 改变编号为 MINOR 的分区的标志
注意
mklabel label-type 必须是一下这些类型:
bsd
loop (raw disk access)
gpt
mac
msdos
pc98
sun
例:(parted) mklabel gtp 或者 (parted) mklabel msdos
mkpart(建立新分区)
格式:mkpart part-type fs-type start end
建立一个新的分区
part-type是以下类型之一 primary(主分区), extended(扩展分区), logical(逻辑分区)。
fs-type来指定文件系统,比如ext4 。
start和end是新分区开始和结束的具体位置。0表示起止,-1表示结尾;或者以mb表示或者GB表示!