#########################基本概念#########################
==
- pv ##物理卷
被lv命令处理过的物理分区 - vg ##物理卷组
被组装到一起的物理卷 - pe ##物理扩展块
是整个LVM中的最小存储单位,LVM默认使用4MB的PE数据块 - lvm ##逻辑卷
直接使用逻辑设备,可以增大缩减并保持原有数据不变
文件系统是否可以拉伸由文件系统决定
xfs的文件系统不可以拉伸
设备被拉伸或缩减文件系统要做出改变
H 1M=1000k
h 1M=1024k
在原始容量不变时对设备的容量进行伸缩
准备工作:
新建分区,并且修改分区的标签为8e
查看系统中存在的设备
1.lvm建立
1 .创建物理卷pv
watch -n 1 ‘pvs;echo ===;vgs;echo ===;lvs;echo ===;df -H /mnt’
监控lvm建立的过程以及/mnt/的变化
2 . 创建物理卷组 vg0
[root@server_sshd ~]# vgcreate vg0 /dev/vdb6
Volume group "vg0" successfully created
注意:vgcreate 后不加任何参数表示使用默认的PE数据块,即4M,如果想要设置PE的大小可以使用
vgcreate -s xx vgname 设备名
-s :后面接PE的大小,单位可以是M,G,T(大小写都可以)
3 . 将设备加入到物理卷组
[root@server_sshd ~]# vgextend vg0 /dev/vdb7
Volume group "vg0" successfully extended
- 划分逻辑卷lv0
[root@server_sshd ~]# lvcreate -L 200M -n lv0 vg0
Logical volume "lv0" created
- -L : 后面接容量,容量的单位可以是M,G,T等,这个数字必须是PE的倍数,若不符合,系统会自行计算最接近的容量
-l: 后面接PE的个数,容量=PE大小*PE个数
如此实验中的PE的大小时默认的4M,容量大小为200M,那么PE的个数就是50这是也可以使用命令
lvcreate -l 50 -n lv0 vg0
(-l和-L选择一个用即可,但都需要搭配-n使用)
-n:后面接的是lv的名称
5 .格式化逻辑卷
[root@server_sshd ~]# mkfs.xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0 isize=256 agcount=4, agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=51200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
6. 挂载逻辑卷
[root@server_sshd ~]# mount /dev/vg0/lv0 /mnt/
[root@server_sshd ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3340804 7133096 32% /
devtmpfs 469332 0 469332 0% /dev
tmpfs 484920 84 484836 1% /dev/shm
tmpfs 484920 12840 472080 3% /run
tmpfs 484920 0 484920 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 201388 10400 190988 6% /mnt
2.拉伸
- 表示拉伸到800M,lv的大小改变
[root@server_sshd ~]# lvextend -L 800M /dev/vg0/lv0
2 . 格式化文件系统,文件系统的大小发生改变
[root@server_sshd ~]# xfs_growfs /dev/vg0/lv0
3. 要继续拉伸lv,但vg的剩余大小不够,新建设备
fdisk /dev/vdb
同步分区表
partprobe
加入到pv
[root@server_sshd ~]# pvcreate /dev/vdb8
Physical volume “/dev/vdb8” successfully created
4 . 加入到vg
[root@server_sshd ~]# vgextend vg0 /dev/vdb8
Volume group "vg0" successfully extended
5. 拉伸lv到1500M,设备大小发生改变,文件系统大小不变
[root@server_sshd ~]# lvextend -L 1500M /dev/vg0/lv0
Extending logical volume lv0 to 1.46 GiB
Logical volume lv0 successfully resized
6. 格式化文件系统
[root@server_sshd ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=16, agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=204800, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 204800 to 384000
注:
xfs的文件系统不能缩减
ext4 文件系统可以缩减
设备拉伸相同
每个文件系统的拉伸不同
拉伸不需要卸载,但缩减需要卸载
检测设备数据容量
要缩减的设备为不闲置时要将设备上的数据移至别的闲置设备上
3.缩减
- 卸载设备,将文件系统格式化为ext4类型,因为xfs文件系统不支持缩减
[root@server_sshd ~]# mkfs.ext4 /dev/vg0/lv0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
96000 inodes, 384000 blocks
19200 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=394264576
12 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
2. 再次挂载设备,df查看
[root@server_sshd ~]# mount /dev/vg0/lv0 /mnt/
[root@server_sshd ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3340228 7133672 32% /
devtmpfs 469332 0 469332 0% /dev
tmpfs 484920 84 484836 1% /dev/shm
tmpfs 484920 12824 472096 3% /run
tmpfs 484920 0 484920 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 1479088 4512 1381392 1% /mnt
- 将设备拉伸到1800M,文件系统不同拉伸的方法相同
格式化文件系统,格式化的方法不同
[root@server_sshd ~]# lvextend -L 1800M /dev/vg0/lv0
Extending logical volume lv0 to 1.76 GiB
Logical volume lv0 successfully resized
[root@server_sshd ~]# resize2fs /dev/vg0/lv0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv0 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/lv0 is now 460800 blocks long.
- 卸载设备,进行缩减前检测设备数据
[root@server_sshd ~]# umount /mnt/
[root@server_sshd ~]# e2fsck -f /dev/vg0/lv0
e2fsck 1.42.9 (28-Dec-2013)
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
/dev/vg0/lv0: 11/120000 files (9.1% non-contiguous), 16862/460800 blocks
5. 格式化文件系统,重新挂载设备后将lv缩减到1000M
[root@server_sshd ~]# lvreduce -L 1000M /dev/vg0/lv0
WARNING: Reducing active and open logical volume to 1000.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
Reducing logical volume lv0 to 1000.00 MiB
Logical volume lv0 successfully resized
- 若是直接缩减vdb8可以直接pvremove /dev/vdb8
若是要缩减vdb7 需要先将vdb7的数据移动到vdb8
[root@server_sshd ~]# pvmove /dev/vdb7 /dev/vdb8
/dev/vdb7: Moved: 95.2%
/dev/vdb7: Moved: 100.0%
7. vg缩减vdb7
[root@server_sshd ~]# vgreduce vg0 /dev/vdb7
Removed “/dev/vdb7” from volume group “vg0”
8. pv中移除vdb7
[root@server_sshd ~]# pvremove /dev/vdb7
Labels on physical volume “/dev/vdb7” successfully wiped
注:
拉伸和缩减是两个相反的过程
拉伸是从物理卷到物理卷组再到逻辑卷最后到文件系统
缩减是先文件系统开始,在缩减逻辑卷,物理卷组最后缩减物理卷
4.lvm的快照
读的时母盘
写的时候往快照存放
- 母盘挂载的时候在挂载点目录新建3个文件
[root@server_sshd ~]# touch /mnt/file{1..3}
[root@server_sshd ~]# ls /mnt/
file1 file2 file3 lost+found
2. 卸载母盘
[root@server_sshd ~]# umount /mnt/
3. 创建快照
[root@server_sshd mnt]# lvcreate -L 50M -n /dev/vg0/lv0_snap -s /dev/vg0/lv0
Rounding up size to full physical extent 52.00 MiB
Logical volume "lv0_snap" created
4. 挂载快照,查看文件删除文件
[root@server_sshd mnt]# mount /dev/vg0/lv0_snap /mnt/
[root@server_sshd ~]# ls /mnt/
file1 file2 file3 lost+found
[root@server_sshd ~]# rm -fr /mnt/*
[root@server_sshd ~]# ls /mnt/
5. 卸载快照,移除快照
[root@server_sshd ~]# umount /mnt/
[root@server_sshd ~]# lvremove /dev/vg0/lv0_snap
Do you really want to remove active logical volume lv0_snap? [y/n]: y
Logical volume "lv0_snap" successfully removed
6. 再次建立快照,挂载后查看文件
[root@server_sshd ~]# lvcreate -L 50M -n /dev/vg0/lv0_snap -s /dev/vg0/lv0
Rounding up size to full physical extent 52.00 MiB
Logical volume "lv0_snap" created
[root@server_sshd ~]# mount /dev/vg0/lv0_snap /mnt/
[root@server_sshd ~]# ls /mnt/
file1 file2 file3 lost+found
注:
当快照存在时
对快照读的操作读的是母盘
对快照写是对快照本身进行操作
5.lvm的删除
-
卸载设备
[root@server_sshd ~]# umount /mnt/
-
删除快照
[root@server_sshd ~]# lvremove /dev/vg0/lv0_snap
Do you really want to remove active logical volume lv0_snap? [y/n]: y
Logical volume “lv0_snap” successfully removed
3. 删除逻辑卷
[root@server_sshd ~]# lvremove /dev/vg0/lv0
Do you really want to remove active logical volume lv0? [y/n]: y
Logical volume "lv0" successfully removed
4. 删除物理卷组
[root@server_sshd ~]# vgremove vg0
Volume group "vg0" successfully removed
5. 删除物理卷
[root@server_sshd ~]# pvremove /dev/vdb6
Labels on physical volume "/dev/vdb6" successfully wiped
[root@server_sshd ~]# pvremove /dev/vdb8
Labels on physical volume "/dev/vdb8" successfully wiped
6. 删除设备
[root@server_sshd ~]# fdisk /dev/vdb
注:
lvm的建立和删除是相反的过程