首页 > Linux, 系统服务 > (二) LVM系列之扩容篇—LVM的扩容/删除相关操作实例(linear线性模式)

(二) LVM系列之扩容篇—LVM的扩容/删除相关操作实例(linear线性模式)

本来打算将 LVM 的一些事情整理出来,以免遗忘,可是只写了一个大概的创建篇,就被种种”借口“,拖延至今没有再写,实在是自己太懒了,今儿又碰到了一个LVM的问题,所以,准备把扩容和删盘的问题写写。
之前创建篇的地址 http://www.edward-han.com/104.html
==============================================================================================

测试环境:2.6.18-128.7 & 2.6.18-194.1 & LVM2
如有不明白之处,可以先看上面提到的文章。

一、增加硬盘到 VG 中
1、先看下目前lvm的情况:

[root@localhost ~]# pvs
  PV            VG     Fmt   Attr   PSize    PFree 
  /dev/sdc   vg1  lvm2 a-   10.00G  2.00G
  /dev/sdd   vg1  lvm2 a-   10.00G 10.00G
[root@localhost ~]# vgs
  VG   #PV  #LV #SN  Attr   VSize     VFree 
  vg1    2     1   0     wz--n- 19.99G 11.99G
[root@localhost ~]# lvs
  LV   VG   Attr     LSize Origin Snap%  Move Log Copy%  Convert
  lv1  vg1  -wi-a- 8.00G                                      
[root@localhost ~]# 

2、识别到新的硬件 /dev/sde ;

3、把 /dev/sde 设为 pv

[root@localhost ~]# pvcreate /dev/sde
  Physical volume "/dev/sde" successfully created
[root@localhost ~]#

4、把 PV /dev/sde 加入到 vg1 中

[root@localhost ~]# vgextend vg1 /dev/sde
  Volume group "vg1" successfully extended
[root@localhost ~]#

5、再看下各个状态:

[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdc   vg1  lvm2 a-   10.00G  2.00G
  /dev/sdd   vg1  lvm2 a-   10.00G 10.00G
  /dev/sde   vg1  lvm2 a-   10.00G 10.00G
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg1    3   1   0 wz--n- 29.99G 21.99G
[root@localhost ~]# lvs
  LV   VG   Attr   LSize Origin Snap%  Move Log Copy%  Convert
  lv1  vg1  -wi-a- 8.00G                                      
[root@localhost ~]# 

加盘的操作已经完成,很简单,没什么复杂过程。

二、扩大 LV 容量
接着上面的环境,以下类同。
1、备份数据,养成好习惯;

2、卸载 lv1 ;

[root@localhost ~]# umount /dev/vg1/lv1

3、加大 lv1 容量,增加1G容量;

[root@localhost ~]# lvextend -L +1G /dev/vg1/lv1 
  Extending logical volume lv1 to 9.00 GB
  Logical volume lv1 successfully resized
[root@localhost ~]# 

4、做下 e2fsck 检测

[root@localhost ~]# e2fsck -f /dev/vg1/lv1 
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/vg1/lv1: 517/1048576 files (13.3% non-contiguous), 200111/2097152 blocks
[root@localhost ~]#

5、resize2fs 操作:
(1) ext2、ext3 文件系统

[root@localhost ~]# resize2fs /dev/vg1/lv1 
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vg1/lv1 to 2359296 (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 2359296 blocks long.
[root@localhost ~]# 

(2)reiserfs 文件系统

resize_reiserfs  -f   /dev/vg1/lv1

6、重新挂载,查看效果:

[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda2             6.7G  4.9G  1.6G  77% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 187M     0  187M   0% /dev/shm
/dev/mapper/vg1-lv1   8.9G  654M  7.9G   8% /mnt
[root@localhost ~]# lvs
  LV   VG   Attr   LSize Origin Snap%  Move Log Copy%  Convert
  lv1  vg1  -wi-ao 9.00G                                      
[root@localhost ~]#

三、缩小 LV 容量
1、备份数据;

2、卸载 lv1

3、从 lv1 中缩小1G空间;

[root@localhost /]# lvreduce -L -1G  -r /dev/vg1/lv1 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/mapper/vg1-lv1: clean, 3106/1179648 files, 869683/2359296 blocks
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/mapper/vg1-lv1 to 2097152 (4k) blocks.
The filesystem on /dev/mapper/vg1-lv1 is now 2097152 blocks long.

  Reducing logical volume lv1 to 8.00 GB
  Logical volume lv1 successfully resized

其中 -r 参数比较关键,如果直接缩小lv容量的话,容易把数据弄坏!

4、挂载上来,看看效果:

[root@localhost /]# lvs
  LV   VG   Attr   LSize Origin Snap%  Move Log Copy%  Convert
  lv1  vg1  -wi-a- 8.00G                                      
[root@localhost /]# mount /dev/vg1/lv1 /mnt
[root@localhost /]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda2             6.7G  4.9G  1.6G  77% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 187M     0  187M   0% /dev/shm
/dev/mapper/vg1-lv1   7.9G  3.2G  4.6G  42% /mnt

没什么问题,还可以测试下读写,应该也没什么问题。

四、从 VG 中删除某个硬盘

1、从 VG 中删除某个硬盘,得看该硬盘是否被使用,需要具体问题具体分析:

(1)、如果是下面情况,删除 /dev/sdd 和 /dev/sde ,自然没有问题,因为它们虽然在vg1组里,但根本没有使用,所以可以直接删除:

[root@localhost /]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdc   vg1  lvm2 a-   10.00G  2.00G
  /dev/sdd   vg1  lvm2 a-   10.00G 10.00G
  /dev/sde   vg1  lvm2 a-   10.00G 10.00G  
[root@localhost /]# vgreduce vg1 /dev/sde
  Removed "/dev/sde" from volume group "vg1"
[root@localhost /]# vgreduce vg1 /dev/sdd
  Removed "/dev/sdd" from volume group "vg1"
[root@localhost /]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdc   vg1  lvm2 a-   10.00G  2.00G
  /dev/sdd        lvm2 --   10.00G 10.00G
  /dev/sde        lvm2 --   10.00G 10.00G
[root@localhost /]# 

(2)、如果是下面情况

[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdc   vg1  lvm2 a-   10.00G     0 
  /dev/sdd   vg1  lvm2 a-   10.00G  7.99G
  /dev/sde   vg1  lvm2 a-   10.00G 10.00G

想删除 /dev/sdc 或者 /dev/sdd 的话,需要将 PV上的LE 移到其他空闲 PV 上:

[root@localhost ~]# pvmove /dev/sdc
  /dev/sdc: Moved: 8.7%
  /dev/sdc: Moved: 15.9%
  /dev/sdc: Moved: 23.0%
  /dev/sdc: Moved: 29.5%
  /dev/sdc: Moved: 37.5%
  /dev/sdc: Moved: 45.4%
  /dev/sdc: Moved: 53.5%
  /dev/sdc: Moved: 61.6%
  /dev/sdc: Moved: 69.6%
  /dev/sdc: Moved: 77.5%
  /dev/sdc: Moved: 85.5%
  /dev/sdc: Moved: 93.0%
  /dev/sdc: Moved: 100.0%
[root@localhost ~]# pvs
  PV             VG   Fmt   Attr   PSize   PFree 
  /dev/sdc   vg1  lvm2  a-   10.00G 10.00G
  /dev/sdd   vg1  lvm2  a-   10.00G  7.99G
  /dev/sde   vg1  lvm2  a-   10.00G     0 

pvmove时,可以手动指定目标地址(pvmove /dev/sdc /dev/sde),也可以象上面一样,不用手动指定,系统会自动转移到剩余可用的PV上。
如果当剩余可用空间小于要移动的硬盘时,转移将无法进行。

2、将数据 move 到其他 PV 上后,就可以将该 PV 从 VG 组里删除了:

[root@localhost /]# vgreduce vg1 /dev/sdc 
  Removed "/dev/sdc" from volume group "vg1"
[root@localhost /]# pvremove /dev/sdc
  Labels on physical volume "/dev/sdc" successfully wiped
[root@localhost /]# pvs
  PV              VG   Fmt  Attr PSize      PFree
  /dev/sdd   vg1  lvm2 a-   10.00G 6.99G
  /dev/sde   vg1  lvm2 a-   10.00G    0 

以上都是基于 线性 模式操作的,先写到这里,如有错误,请指正~我也会随时更新的。
后面有时间再写下基于 交错 模式的操作方法,希望不会拖的太久。



转载本站文章请注明,来自: Edward's Blog

本文链接: http://www.edward-han.com/205.html

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须启用 javascript 才能在这儿看到验证码!

无觅相关文章插件,快速提升流量

加载中……