Linux两块磁盘挂载指向一个文件夹LVM磁盘管理(二)

简介:

注意:任何磁盘的操作有可能损坏里面数据,请提前备份数据,切记!切记!切记!


0x00:前言。

  VG卷组的总空间是受物理磁盘大小限制,本教程有3块物理磁盘分别是100M、200M、300M,那么VG卷组总空间就是600M;而VG下所有的LV累加的总空间又受限于VG。

  使用过程中LV早晚会用完,那么上面的/LVM挂载点只能同时挂载一个,而有些程序不能支持有两个文件目录,比如WEB只有一个/,还有MySQL。


0x01:扩展VG卷组、缩小VG卷组。

  1)扩展VG卷组。

   上一章讲我看到添加了3块物理磁盘,第一块(/dev/sdb1)已经加入VG组,这次来把第二块(/dev/sdc1)加入到之前的那个vgdata的VG组里。


  首先还是格式化磁盘,并创建磁盘分区/dev/sdc1。这里图略,和之前一样。

1
   # fdisk /dev/sdc  //显示创建磁盘并和格式化,略去一些命令

  略。

1
2
3
   # pvcreate /dev/sdc1   //普通磁盘转换成PV
   # pvs  //查看VG组信息
   # vgextend vgdata /dev/sdc1   //加入VG组,vgdata要加入VG组名,/dev/sdc1新PV

  图里可以看到磁盘第一次pvs里只有一个PV,添加后,第二次pvs就又有多出一块PV。

  3b62ddb109d68dd5a4e25525941958e1.jpg-wh_

1
   # vgdisplay  //查看VG卷组详细信息,VG的总空间已经由之前100M变成300M

  ed8178d8ae4f853b6e4cfc2c35269e8f.jpg-wh_

  2).缩小卷组。

  实际使用中,因为磁盘损坏,或空间分配问题,我们需要从VG卷组删除一个PV物理卷。用过的PV物理卷肯定会被写入数据,那么在移走PV前,我们要先迁移数据。

  先用pvdisplay命令看看上面PE块被写了多少数据,假如/dev/sdb1是要移走的物理硬盘。

  注意,目的地空闲空间要大于/dev/sdb1。

  我们准备了/dev/sdd1来存放迁移过来的数据。

  ba4e0d7ce5339c208cee8044e6f3494d.jpg-wh_

  从上图可以看出sdb1总空间是100M,然后空闲是0M,也就是使用了100M。

 

1
2
3
4
   # pvmove -i 1 /dev/sdb1 /dev/sdd1  //将sdb1数据移动到sdd1里,
                                               -i 1是每1秒钟报告一次数据迁移的进度。
   # vgreduce vgdata /dev/sdb1  //将/dev/sdb1从vgdata卷组中移除
   #  pvremove /dev/sdb1  //将/dev/sdb1移除出PV

  8d84605abd9f6fdb7daf173a85a50233.jpg

  结果:数据没有任何丢失。

  d9f8075055262fc13fdc4fb85de0b780.jpg


0x02:扩展LV、缩小LV逻辑卷。

  1)VG卷组又有新的空间,而刚才创建的lvData(/dev/sdb1)已经使用完了,我们来扩展LV。

1
2
3
   # lvextend –L +50M /dev/vgdata/lvData
   或者
   # lvextend –l 150M /dev/vgdata/lvData

  -L和-l区别,-L后是写你要增加多少,而-l是写你要增加到的总数。

  执行命令后我们发现LV size变成150M了。

  b637d4c5c21dc7de38c569db40a4417c.jpg-wh_

  

   LV扩容完系统还没有识别,需要用resize2fs来更新,系统才能识别到。

1
   # resize2fs /dev/vgdata/lvData

  ffb4a8e67996aa51d7bcf5b97fd91bd2.jpg

 

  2)缩小LV(逻辑卷)空间。

  使用过程中LV空间总会分配不合理或大或小,如果分配大了,不用又造成空间浪费,现在将LV(逻辑卷)缩小以分配给其他LV(逻辑卷)用。

 

  我们之前创建了一个LV(逻辑卷),挂载到了/LVM下。

  1d01229eeae72774366893849b30231f.jpg-wh_


  调整钱我们先要卸载挂载点,因为挂载后是使用状态,不允许操作。如图,卸载成功。

1
   # umount /LVM

  ce3e2178c86ce07f6536578526e854a9.jpg


   检查文件系统是否有坏块,这部检查必须要做。

1
   # e2fsck -f /dev/mapper/vgdata-lvData

  e4ba18c2f706fd3394bf461035e80b01.jpg

  

  从上面df -h 知道,总空间287M,使用128M,剩余146M空间。我们缩小总空间到250M,做演示。

  注意:缩小LV前,先要缩小PV,resize2fs在前,lvreduce在后,顺序不能错。

  

1
   # resize2fs /dev/mapper/vgdata-lvData 250M  //缩小PV

  eac4a09909edc9dc07a4b4532bcbb8a3.jpg

1
2
3
   # lvreduce -L 250M /dev/mapper/vgdata-lvData
  
   # lvreduce -L -50M /dev/mapper/vgdata-lvData  //-50M,在原基础上减去50M空间。

  0ff9f7080a79d5e1f7493cc5a6abbc10.jpg


   好了,缩减成功,挂载看看。

1
    # mount -a

   或

1
    # mount /dev/vgdata/lvData  /lvm

   因为PE默认4M,我们给的250M的PE不一定对其,所以系统会从新计算PE倍数来对其,显示的数就会小于我们写的数。

  b4a28b201ce575ec0023d8ffd666d79e.jpg

 注意:/dev/mapper/vgdata-lvData和/dev/vgdata/lvData是一样的,指向同一路径。

 

  查看PV有多少空闲空间。显示多出48M的空闲空间。

1
   # pvs

  41928d2cf3ea21db94bf912e9297a88f.jpg

  

0x03:LV测试篇。

   写此文章的时候,我就在想如果物理磁盘空间不够,但是LV分配很大,会发生什么现象。

   看下图,我在虚拟机里创建了一个5G的虚拟磁盘文件放到D盘。我的电脑D盘,用一些其他东西故意填满,只留下了很少的空闲空间。

   下面还有个3G的磁盘,我放到了C盘,C盘空闲空间充足。

62b93b17e513089d3b5469ff4ca0283d.jpg

  

  接着将上面创建两个盘在系统里转换成PV物理卷->加入VG卷组->加入LV卷。

  875911af2f602635bcb98bf16b237830.jpg

  

  LVM的存放数据的规律是由那个PV先被添加就先存放到哪个PV上,直到PV存满才到下一个PV上存。

  sde1就是我们放到上图显示D盘的那个文件,一会写文件先往sde1里写,然后在往sdf1里写。

  我们找来一个ISO镜像(大于4G的文件),来往里面拷贝数据,看看发生什么?

f8872358734781425f1ee7bfcd11f87e.jpg

  上传数据的过程中,D盘空间用完了,LVM而并没有尝试切换到sdf1的3G这空间去复制,而是直接报了系统错误,而且系统因为没有空间,直接退出了,重新启动都没成功,只好将D盘里删除一些文件,才将系统重新启动。

  bb8087e8d3b72418c6fcbf4f3488868c.jpg

  

  总结,PV的设置最大值不能超过物理磁盘的空间,否则会出现丢失数据的问题。

  

0x04:LVM快照(转:http://www.linuxidc.com/Linux/2017-05/143774.htm)。

   LVM快照是一种以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作,并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大,快照卷同样也会产生这样大的改变。因而,对于空间有效利用的最佳途径,就是总是进行小的修改。如果快照将存储空间消耗殆尽,我们可以使用lvextend来扩容。而如果我们需要缩减快照所占用卷的大小,可以使用lvreduce。实验如下:目标逻辑卷信息如下:

1
$ pvs

  PV         VG   Fmt  Attr PSize PFree

  /dev/sdb   vg0  lvm2 a--  7.00g    0 

  /dev/sdd1  vg0  lvm2 a--  7.00g 1.99g

1
$ vgs

  VG   #PV #LV #SN Attr   VSize  VFree

  vg0    2   1   0 wz--n- 13.99g 1.99g

1
$ lvs

  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv0  vg0  -wi-ao---- 12.00g

       现在对逻辑卷lv0创建快照,命名为snaplv0

1
$ lvcreate -s -n snaplv0 -p r -L 1G  /dev/vg0/lv0

  Logical volume "snaplv0" created.

1
$ vgs

  VG   #PV #LV #SN Attr   VSize  VFree   

  vg0    2   2   1 wz--n- 13.99g 1016.00m

1
$ lvs

  LV   VG   Attr   LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv0     vg0  owi-aos--- 12.00g 

  snaplv0 vg0  sri-a-s---  1.00g      lv0    0.00

  这里/dev/vg0/lv0的挂载点为/mnt。往/mnt里面写入300MB的随机文件,再观察快照情况,可以看    到,快照对应的Data一项有所增长:

1
dd  if = /dev/urandom  of= /mnt/2 .txt bs=1M count=300

  300+0 records in

  300+0 records out

  314572800 bytes (315 MB) copied, 27.5877 s, 11.4 MB/s

1
ls

  1.txt  2.txt  data

1
$ lvs

  LV   VG   Attr   LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv0  vg0  owi-aos--- 12.00g

  snaplv0 vg0  sri-a-s---  1.00g      lv0    29.42

  用snaplv0对逻辑卷进行恢复,注意恢复之前需要先将对应的逻辑卷卸载。恢复之后可以看到,原有的snaplv0消失,因此可以得出结论,LVM的快照是一次性的:

1
2
umount  /mnt
$ lvconvert --merge  /dev/vg0/snaplv0

  Merging of volume snaplv0 started.

  lv0: Merged: 71.0%

  lv0: Merged: 91.9%

  lv0: Merged: 100.0%

1
ls  /dev/vg0

  lv0

1
2
mount  /dev/vg0/lv0  /mnt
ls  /mnt

  1.txt  data

  如果想要删除LVM快照,用lvremove命令,后面跟上快照设备文件的绝对路径即可,例如:

1
$ lvremove  /dev/vg0/snaplv0

   

0x05:删除LVM。

  删除LVM,先取消开机自动挂载,在取消挂载、取消LV、取消VG、取消PV,还原磁盘83类型。

1
2
3
4
5
   # umount /lvm                            //取消挂载
   # lvremove /dev/vgdata/lvData                //删除LV
   # vgremove vgdata                            //删除vgdata组
   # pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1   //磁盘还原成普通磁盘
   #  fdisk /dev/sdb1  //执行t ID输入83,让磁盘恢复普通磁盘。





参考文章:

http://dreamfire.blog.51cto.com/418026/1084729/

http://www.linuxidc.com/Linux/2016-06/132709.htm

https://www.cnblogs.com/mchina/p/linux-centos-logical-volume-manager-lvm.html

http://www.linuxidc.com/Linux/2017-05/143774.htm




本文转自 piazini 51CTO博客,原文链接:http://blog.51cto.com/wutou/1980891
相关文章
|
2月前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
298 5
|
18天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
15 3
|
2月前
|
Linux Shell
linux 查看某个文件夹属于哪个盘
在 Linux 系统中,要查看某个文件夹属于哪个磁盘分区,你可以使用多种方法。以下是几种常见的方法: 方法一:使用 df 命令 df 命令用于显示文件系统的磁盘空间使用情况。 打开终端。 使用以下命令查看文件夹所属的磁盘分区: bash df -h /path/to/your/folder 其中 /path/to/your/folder 是你要查询的文件夹路径。 示例: bash df -h /home/user/Documents 输出将类似于: Filesystem Size Used Avail Use% Mounted on /dev/sda1
281 1
|
3月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
2月前
|
Linux
linux开机挂载镜像
【10月更文挑战第1天】在 Linux 系统中,开机挂载镜像通常涉及几个关键步骤,包括创建挂载点、编辑配置文件以及重新加载配置
86 0
|
2月前
|
Unix Linux 对象存储
Linux 磁盘管理
Linux 磁盘管理
40 1
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
60 0
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
43 0
|
23天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
142 6
|
24天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
65 3