[撒花][撒花]元旦临近,新的2022年就要来了,旺财 在这里祝大家元旦快乐![撒花][撒花]
本篇是《Linux入门系列》的最后一篇。接下来我要写的就是Golang相关的文章,希望大家多多支持[谢谢][谢谢][心][心]
对LVM进行扩容
当LV的空间不够用的话,要先看它所使用的VG中还有没有空间,如果VG中没有多余的空间了,那就必须先对该VG进行扩容;如果这个VG中还有多余的空间,那么可直接从该VG中再划点空间给LV。
- 对PV扩容
对PV的扩容很简单,就是再加进来一块硬盘就可以了。
- 对VG扩容
语法: vgextend vg_name /path/to/pv
[root@ns2 ~]# vgs //查看扩展前的容量
VG #PV #LV #SN Attr VSize VFree
myvg 1 1 0 wz--n- 1.87G 888.00M
[root@ns2 ~]#
[root@ns2 ~]#
[root@ns2 ~]# vgextend myvg /dev/sdb12
Volume group "myvg" successfully extended
[root@ns2 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 1 0 wz--n- 3.73G 2.73G
[root@ns2 ~]#
- 对LV扩容
[root@ns2 ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mylv myvg -wi-ao 1.00G
[root@ns2 ~]#
[root@ns2 ~]# lvextend -L +1G /dev/myvg/mylv
Extending logical volume mylv to 2.00 GB
Logical volume mylv successfully resized
[root@ns2 ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mylv myvg -wi-ao 2.00G
[root@ns2 ~]#
-L 2G 则表示扩容到2G,
-L +2G 则表示在现在的基础上再扩容2G;
“-l”(小写的L), 则表示不直接指定大小,而是指定PE的个数;
现在已经成功的对LV进行了扩容,但是现在OS还识别不了增加的空间:
[root@ns2 ~]# df -hTP //-P表示use the POSIX output format,也就是使用输出的结果不换行显示;
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 ext3 2.8G 1.5G 1.2G 56% /
/dev/sda1 ext3 190M 12M 169M 7% /boot
tmpfs tmpfs 248M 0 248M 0% /dev/shm
/dev/mapper/myvg-mylv ext3 1008M 34M 924M 4% /lvmdata
[root@ns2 ~]#
从上面可以看出来,OS并没有识别到新增加的空间,所以要执行下面的命令:
[root@ns2 ~]# resize2fs /dev/myvg/mylv
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/myvg/mylv is mounted on /lvmdata; on-line resizing required
Performing an on-line resize of /dev/myvg/mylv to 524288 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 524288 blocks long.
[root@ns2 ~]#
再来查看现在的容量:
[root@ns2 ~]# df -hTP
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 ext3 2.8G 1.5G 1.2G 56% /
/dev/sda1 ext3 190M 12M 169M 7% /boot
tmpfs tmpfs 248M 0 248M 0% /dev/shm
/dev/mapper/myvg-mylv ext3 2.0G 34M 1.9G 2% /lvmdata
[root@ns2 ~]#
对LVM进行缩减
当发现LVM中的某一个LV卷在分配空间的时候分配的有点过多了,那么就要对该分区进行LVM的缩减操作;
当对LVM进行缩减的时候要注意以下几点:
- 不能在线进行缩减,也就是说要先把LV卸载了;
- 要确保缩减后的空间,能够存放下现有的数据大小;
- 在缩减之前一定要强行检查该文件系统,以确保该文件系统处于一致性状态;
- 查看目录LV的使用情况,确保有足够的空间来存放缩减后的数据:
[root@ns2 /]# df -hTP
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 ext3 2.8G 1.5G 1.2G 56% /
/dev/sda1 ext3 190M 12M 169M 7% /boot
tmpfs tmpfs 248M 0 248M 0% /dev/shm
/dev/mapper/myvg-mylv ext3 2.0G 34M 1.9G 2% /lvmdata
[root@ns2 /]#
从上面可以看出,总大小有2G,数据只占用了32M,所以这里进行缩减1G的操作;
- 卸载要缩减的LV:
[root@ns2 /]#
[root@ns2 /]# umount /dev/myvg/mylv
[root@ns2 /]#
- 对目标LV文件系统做强制的检查,确保文件系统的一致性:
[root@ns2 /]# e2fsck -f /dev/myvg/mylv
e2fsck 1.39 (29-May-2006)
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/myvg/mylv: 12/262144 files (8.3% non-contiguous), 16824/524288 blocks
[root@ns2 /]#
- 对目标LV进行OS层次的逻辑边界的缩减:
[root@ns2 /]# resize2fs /dev/myvg/mylv 1G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/myvg/mylv to 262144 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 262144 blocks long.
[root@ns2 /]#
- 再来对目标LV进行真正的缩减:
[root@ns2 /]# lvreduce -L -1G /dev/myvg/mylv
WARNING: Reducing active logical volume to 1.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y //这里会提示,可能会损坏数据;
Reducing logical volume mylv to 1.00 GB
Logical volume mylv successfully resized
[root@ns2 /]#
- 查看缩减后的结果:
[root@ns2 /]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mylv myvg -wi-a- 1.00G
[root@ns2 /]#
空间是缩减回来了,但是还要看看里面的数据还在不在,通常只要按照这个步骤来,就不会出问题;
上面的是对LV的缩减,那么对VG的缩减呢?
如果要对VG进行缩减,也就是说要从该VG中移出去一块硬盘,所以一定要先把该硬盘上的数据先移动到其他的硬盘上去。然后,再来对VG进行缩减的操作;
[root@ns2 lvmdata]# pvmove /dev/sdb11 //该命令会把/dev/sdb11硬盘上的所有数据都移动到属于该硬盘现在所属的vg中的其他的硬盘上去;
/dev/sdb11: Moved: 0.0%
/dev/sdb11: Moved: 100.0%
[root@ns2 lvmdata]#
[root@ns2 lvmdata]# vgreduce myvg /dev/sdb11 //把/dev/sdb11中的数据都移动到myvg中的其他硬盘上后,就可以把/dev/sdb11从myvg中移出了;
Removed "/dev/sdb11" from volume group "myvg"
[root@ns2 lvmdata]#
[root@ns2 lvmdata]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 1 0 wz--n- 1.87G 888.00M
[root@ns2 lvmdata]#
如果想把某块硬盘从PV中移出,则可以使用如下命令:
[root@ns2 lvmdata]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb11 lvm2 a-- 1.87G 1.87G
/dev/sdb12 myvg lvm2 a-- 1.87G 888.00M
[root@ns2 lvmdata]# pvremove /dev/sdb11
Labels on physical volume "/dev/sdb11" successfully wiped
[root@ns2 lvmdata]#
[root@ns2 lvmdata]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb12 myvg lvm2 a-- 1.87G 888.00M
[root@ns2 lvmdata]#
那么这块硬盘又可以重新的分区格式化挂载使用了;
利用LVM生成快照
- 生命周期为整个数据时长,在这段时长内,数据的增长量不能超过快照量的大小;
- 快照卷应该是只读的;
- 快照卷和原卷在同一卷组内;
语法: # lvcreate -s -L # -p r|w -n snapshot_name /path/to/lv
[root@ns2 /]# lvcreate -s -L 20M -p r -n myvg_snapshot /dev/myvg/mylv
Logical volume "myvg_snapshot" created
[root@ns2 /]#
[root@ns2 /]# mount /dev/myvg/myvg_snapshot /snapshot/ //注意:快照也要挂载后,才能使用;
mount: block device /dev/myvg/myvg_snapshot is write-protected, mounting read-only
[root@ns2 /]#
[root@ns2 /]# ls /snapshot/
inittab lost+found test2.dat test.dat
[root@ns2 /]#
[root@ns2 /]# cd /lvmdata/
[root@ns2 lvmdata]# ls
inittab lost+found test2.dat test.dat
[root@ns2 lvmdata]#
发现这两个目录下的文件是一样的,但是snapshot目录里的文件是”静止”的,当你修改了/lvmdata目录里的文件,它也不会变化,所以可以利用快照来做一个完全备份。
当备份做完后,再把这个快照给删除了,这样可以保证,我们备份的数据的一致性;但是有一点要注意的是:在创建快照的时候,这个快照的大小,要能够满足:在我们利用快照进行数据备份期间,所增长的数据量的大小。如果快照的大小设置过小,那么这个快照是无法创建的,同样备份也就不用谈了;
注意:在备份的时候一定要使用快照挂载的路径去备份文件,否则备份的数据很有可能是不一致的状态;
当我们的完整备份完成后,可以再把刚刚创建的快照删除:
[root@ns2 /]# umount /snapshot/ //一定要先卸载才能进行快照的删除操作;
[root@ns2 /]# lvremove /dev/myvg/myvg_snapshot
Do you really want to remove active logical volume myvg_snapshot? [y/n]: y
Logical volume "myvg_snapshot" successfully removed
[root@ns2 /]#