一、由于硬盘或者分区的 *** 作方式其实都一样,所以就以分区为例。
二、/home分区2.6G,由如下pv组成:
/dev/sda5 100M
/dev/sda6 200M
/dev/sda7 300M
/dev/sda8 400M
/dev/sda9 500M
/dev/sda10 600M
/dev/sda11 500M
很碎对吧?^_^因为测试。
三、随机写了一堆文件进去,用量达到了2G,空闲500M
四、准备将sda6这个200M的PV卸掉(卸掉的容量必须小于空闲容量)
好了开始具体 *** 作了。
卸载分区(缩小 *** 作必须卸载才能进行):
umount /home
缩小分区:
e2fsck -f /dev/liuhg_disk/home
resize2fs /dev/liuhg_disk/home 2200M
首先将分区缩小到2200M这是为了给sda6腾出空间,sda6为200M,而我腾出了400M,因此应该是足够的。
缩小逻辑卷:
lvreduce -L 2200M /dev/liuhg_disk/home
分区缩小了用到的逻辑卷也要随着缩小,并查看PV使用的状态:
pvdisplay -m
显示如下:
--- Physical volume ---
PV Name /dev/sda5
VG Name liuhg_disk
PV Size 103.26 MiB / not usable 3.26 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25
Free PE 0
Allocated PE 25
PV UUID 5lnx52-b4jc-OOfZ-f2QA-ttdQ-DZeD-Ce3rb3
--- Physical Segments ---
Physical extent 0 to 24:
Logical volume /dev/liuhg_disk/home
Logical extents 0 to 24
--- Physical volume ---
PV Name /dev/sda6
VG Name liuhg_disk
PV Size 203.92 MiB / not usable 3.92 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 50
Free PE 0 <-----太悲剧了,sda6里写满了数据一点不剩
Allocated PE 50 <-----这50PE的数据要挪走才行,否则数据就丢了,并且存放的地方也必须是连续的至少50PE
PV UUID S2ane6-nlFG-uSNR-35NP-Yxa6-cXRb-r8E8mK
--- Physical Segments ---
Physical extent 0 to 49:
Logical volume /dev/liuhg_disk/home
Logical extents 25 to 74
--- Physical volume ---
PV Name /dev/sda7
VG Name liuhg_disk
PV Size 305.89 MiB / not usable 1.89 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 76
Free PE 76 <---这个分区有76个空余,因此预计装那50个是不会有问题的
Allocated PE 0
PV UUID 9CFnlx-CAEw-CSul-Rig9-FiCN-zK0a-oGmTEP
--- Physical Segments ---
Physical extent 0 to 75:
FREE
--- Physical volume ---
PV Name /dev/sda8
VG Name liuhg_disk
PV Size 407.87 MiB / not usable 3.87 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 101
Free PE 60
Allocated PE 41
PV UUID X0I8p0-x2xr-2xLG-QQD4-jbtS-3C4i-xPn4Bl
--- Physical Segments ---
Physical extent 0 to 40:
Logical volume /dev/liuhg_disk/home
Logical extents 471 to 511
Physical extent 41 to 100:
FREE
--- Physical volume ---
PV Name /dev/sda9
VG Name liuhg_disk
PV Size 509.84 MiB / not usable 1.84 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 127
Free PE 0
Allocated PE 127
PV UUID avJQaA-oMKt-NEoJ-ojBK-2Csc-1dca-1mh6Ue
--- Physical Segments ---
Physical extent 0 to 126:
Logical volume /dev/liuhg_disk/home
Logical extents 225 to 351
--- Physical volume ---
PV Name /dev/sda10
VG Name liuhg_disk
PV Size 603.98 MiB / not usable 3.98 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 150
Free PE 0
Allocated PE 150
PV UUID JlMIAF-A49n-M6HA-ZLXf-d8nS-pfZr-YeQsKT
--- Physical Segments ---
Physical extent 0 to 149:
Logical volume /dev/liuhg_disk/home
Logical extents 75 to 224
--- Physical volume ---
PV Name /dev/sda11
VG Name liuhg_disk
PV Size 478.47 MiB / not usable 2.47 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 119
Free PE 0
Allocated PE 119
PV UUID xnHJNA-tDVx-dryX-KM1x-g96Y-sptI-9iUOcU
--- Physical Segments ---
Physical extent 0 to 118:
Logical volume /dev/liuhg_disk/home
Logical extents 352 to 470
将sda6设置为离线状态:
pvchange -xn /dev/sda6
使用pvdisplay -m
显示如下:
??
--- Physical volume ---
PV Name /dev/sda6
VG Name liuhg_disk
PV Size 203.92 MiB / not usable 3.92 MiB
Allocatable NO <-----表示已经关闭了该PV
PE Size 4.00 MiB
Total PE 50
Free PE 0
Allocated PE 50
PV UUID S2ane6-nlFG-uSNR-35NP-Yxa6-cXRb-r8E8mK
??
将sda6的数据移走:
pvmove -i 1 /dev/sda6
-i 1是每1秒钟报告一次数据迁移的进度。
[root@liuhg /]# pvmove -i 1 /dev/sda6
/dev/sda6: Moved: 38.0%
/dev/sda6: Moved: 84.0%
/dev/sda6: Moved: 100.0%
重新用pvdisplay -m
显示如下:
??
--- Physical volume ---
PV Name /dev/sda6
VG Name liuhg_disk
PV Size 203.92 MiB / not usable 3.92 MiB
Allocatable NO
PE Size 4.00 MiB
Total PE 50
Free PE 50 <----显示完全空闲和Total PE数一致
Allocated PE 0
PV UUID S2ane6-nlFG-uSNR-35NP-Yxa6-cXRb-r8E8mK
??
从卷组里把sda6删除:
[root@liuhg /]# vgreduce liuhg_disk /dev/sda6
Removed "/dev/sda6" from volume group "liuhg_disk"
pvdisplay -m再看看吧:
--- NEW Physical volume --- <-----还告诉你这是一个新的PV ^_^
PV Name /dev/sda6
VG Name <-----空了
PV Size 203.92 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID S2ane6-nlFG-uSNR-35NP-Yxa6-cXRb-r8E8mK
到此vgdisplay -v能看到已经没有了/dev/sda6了。重新挂载/home
[root@liuhg /]# mount /dev/liuhg_disk/home /home
[root@liuhg /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 2.0G 546M 1.3G 30% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/mapper/liuhg_disk-home
2.2G 1.8G 42M 98% /home
进去看看数据,一个都没丢。
这里以red hat as4 为例。当磁盘分区发现不够用时,能想道的第一个做法就是增加分区大小。但是一般linux如果没有采用逻辑卷管理,则动态增加分区大小很困难,一个能想道的办法就是,备份分区文件系统数据,删除分区,然后再重新创建分区,恢复备份的文件系统,这个做法比较玄,可能删除分区后导致系统无法启动。第二个做法就是,创建一个新的逻辑分区(当然必须有未使用的磁盘空间能分配),将文件系统从老分区拷贝到新分区,然后修改fstab,使用新分区/文件系统替换老的分区/文件系统
第三种做法是,创建一个新的逻辑分区,将新的逻辑分区格式化ext3(或其他类型)的文件系统,mount到磁盘空间不够的文件系统,就跟原来的分区/文件系统一样的使用。
许多Linux使用者安装 *** 作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装 *** 作系统,以满足应用系统的需要。
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。
LVM的配置过程也很简单,并不是很难,为此,我画了一张图文并茂的解析图,解析了LVM创建的整个过程。更详细的理论知识还请参看一些教程或者去Google哦!
实验环境:
首先从空的硬盘sdb上创建两个分区sdb1 1G,sdb2 2G. 为接下来做LVM做准备.
为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存
一、创建逻辑卷
将新创建的两个分区/dev/sdb1 /dev/sdb2转化成物理卷,主要是添加LVM属性信息并划分PE存储单元.
创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。
从物理卷vgdata上面分割500M给新的逻辑卷lvdata1.
使用mkfs.ext4命令在逻辑卷lvdata1上创建ext4文件系统.
将创建好的文件系统/data1挂载到/data1上.(创建好之后,会在/dev/mapper/生成一个软连接名字为”卷组-逻辑卷”)
便于以后服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面.UUID可以通过 blkid命令查询.
为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount –a 使内核重新读取/etc/fstab,看是否能够自动挂载.
二、逻辑卷 lvdata1 不够用了,如何扩展。
给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vgdata/lvdata1或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增加500M空间(lvdata1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。
三、当卷组不够用的情况下,如何扩大卷组
重新从第二块硬盘上创建一个分区sdb3,具体 *** 作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。
四、当硬盘空间不够用的情况下,如果减少逻辑卷的空间释放给其他逻辑卷使用。
减少逻辑卷空间,步骤如下
1、 先卸载逻辑卷data1
2、 然后通过e2fsck命令检测逻辑卷上空余的空间。
3、 使用resize2fs将文件系统减少到700M。
4、 再使用lvreduce命令将逻辑卷减少到700M。
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。
完成之后,就可以通过mount命令挂载重新使用了。
五、如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去。
1、通过pvmove命令转移空间数据
2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。
3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。
4、手工拆除硬盘或者通过一些工具修复分区。
六、删除整个逻辑卷
1、先通过umount命令卸载掉逻辑卷lvdata1
2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。
3、通过lvremove 删除逻辑卷lvdata1
4、通过vgremove 删除卷组vgdata
5、通过pvremove 将物理卷转化成普通分区。
删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可。
总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用以致学,学以致用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)