如何调整LVM软件大小RAID1分区(缩小和增长)

如何调整LVM软件RAID1分区(收缩和增长)

版本1.0
作者:Falko Timme

本文介绍如何使用LVM收集和扩展现有的RAID1分区(如果不使用LVM,请阅读本指南): 如何调整RAID分区(收缩和增长)(软件RAID) )。 我已经使用ext3作为文件系统的逻辑卷测试了这个。 我将描述完整的RAID阵列以及降级的RAID阵列的这个过程。

我不会保证这将为您工作!

1初步说明

几天前,我发现我的一台服务器有一个降级的RAID1阵列( / dev / md1 ,由/ dev / sda5/ dev / sdb5组成 ; / dev / sda5发生故障, / dev / sdb5仍然活动):

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[1]
      4988032 blocks [2/1] [_U]

md0 : active raid1 sda1[0] sdb1[1]
      248896 blocks [2/2] [UU]

unused devices: <none>
server1:~#

我试图修复它(使用本 ),但不幸的是在同步过程结束(完成99.9%),同步停止并重新开始。 正如我发现的,这是因为在(工作)分区/ dev / sdb5的末尾有一些缺陷扇区 - 这在/var/log/kern.log中

Nov 22 18:51:06 server1 kernel: sdb: Current: sense key: Aborted Command
Nov 22 18:51:06 server1 kernel: end_request: I/O error, dev sdb, sector 1465142856

所以这是最糟糕的情况,可能会发生 - / dev / sda死和/ dev / sdb即将死亡。 为了解决这个问题,我想我可以缩小/ dev / md1 ,以便在/ dev / sdb5的结尾留下破碎的扇区,然后将新的/ dev / sda5 (从更换的硬盘驱动器)添加到/ dev / md1 ,让同步完成,从阵列中删除/ dev / sdb5 ,并用新的硬盘驱动器替换/ dev / sdb ,将新的/ dev / sdb5添加到/ dev / md1 ,然后再次增加/ dev / md1

这是以下过程的一个用例(我会描述一个完整的数组和一个退化的数组)的过程。

本教程中使用了两个小硬盘(5GB),这样我就不用再等待完成了。 当然,在实际系统上,您将拥有更大的硬盘。

请注意, / dev / md1包含卷/ dev / server1与逻辑卷/ dev / server1 / root (系统分区,挂载点/ )和/ dev / server1 / swap_1 (交换)。

因为我必须调整我的系统分区( / dev / server1 / root ),所以我必须使用一个救援系统(例如Knoppix Live-CD )来调整数组的大小。 如果要调整大小的阵列不包含系统分区,则可能不需要启动到救援系统; 但是在这两种情况下,请确保逻辑卷已卸载!

2完整数组

我将介绍如何调整由/ dev / sda5/ dev / sdb5组成的数组/ dev / md1 。 这是现在的情况:

cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[1]
      4988032 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      248896 blocks [2/2] [UU]

unused devices: <none>
server1:~#
df -h
server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
                      4.5G  741M  3.5G  18% /
tmpfs                 126M     0  126M   0% /lib/init/rw
udev                   10M   68K   10M   1% /dev
tmpfs                 126M     0  126M   0% /dev/shm
/dev/md0              236M   18M  206M   8% /boot
server1:~#
pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               server1
  PV Size               4.75 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              1217
  Free PE               0
  Allocated PE          1217
  PV UUID               Ntrsmz-m0o1-WAPD-xhsb-YpH7-0okm-qfdBQG

server1:~#
vgdisplay
server1:~# vgdisplay
  --- Volume group ---
  VG Name               server1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               4.75 GB
  PE Size               4.00 MB
  Total PE              1217
  Alloc PE / Size       1217 / 4.75 GB
  Free  PE / Size       0 / 0
  VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0

server1:~#
lvdisplay
server1:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/server1/root
  VG Name                server1
  LV UUID                3ZgGnd-Sq1s-Rchu-92b9-DpAX-mk24-0aOMm2
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                4.50 GB
  Current LE             1151
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/server1/swap_1
  VG Name                server1
  LV UUID                KM6Yq8-jQaQ-rkP8-6f4t-zrXA-Jk13-yFrWi2
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                264.00 MB
  Current LE             66
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1

server1:~#

2.1收缩一个完整的数组

启动您的救援系统并激活所有需要的模块:

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

然后激活您的RAID阵列...

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan

...然后启动LVM:

/etc/init.d/lvm start

e2fsck -f /dev/server1/root

检查文件系统。

/ dev / md1的大小为5GB; 我想缩小到4GB。 首先,我们必须使用resize2fs缩小逻辑卷/ dev / server1 / root上的文件系统; 文件系统在逻辑卷/ dev / server1 / root内 ,因此文件系统应该是<=逻辑卷(因此我使文件系统2GB)。 逻辑卷(LV - 我们有两个, / dev / server1 / root/ dev / server1 / swap_1 )再次在物理卷(PV) / dev / md1内 (因此LV / dev / server1 / root + LV / dev / server1 / swap_1 <= PV;我使LV / dev / server1 / root 2.5GB并删除/ dev / server1 / swap_1 ,见下一段),这是我们想要收缩的RAID阵列/ dev / md1所以PV <= / dev / md1 ;我将PV缩小到3GB)。

因为/ dev / server1 / swap_1在我们的硬盘驱动器的最后,我们可以删除它,缩小PV,然后再次创建/ dev / server1 / swap_1 ,以确保/ dev / server1 / root符合我们的PV。 如果您的情况下,交换LV不在硬盘驱动器的末尾,则无需删除它 - 您必须确保将驱动器上的最后一个LV缩小到足以使其适合PV。

所以我收缩/ dev / server1 / root的文件系统到2GB(确保你使用足够大的值,以便所有的文件和目录适合它!):

resize2fs /dev/server1/root 2G

...和/ dev / server1 / root LV到2.5GB:

lvreduce -L2.5G /dev/server1/root

然后我删除/ dev / server1 / swap_1 LV(如果交换不在硬盘驱动器的末尾,则不需要) - 在这种情况下,请确保缩小驱动器上的最后一个LV,以使其适合PV! 。

lvremove /dev/server1/swap_1

...并将PV调整到3GB:

pvresize --setphysicalvolumesize 3G /dev/md1

现在我们将/ dev / md1缩小到4GB。 --size值必须为KiBytes(4 x 1024 x 1024 = 4194304); 确保可以除以64:

mdadm --grow /dev/md1 --size=4194304

现在我将PV增长到最大值(如果不指定大小, pvresize将使用尽可能最大的值):

pvresize /dev/md1

现在我们检查一下输出

vgdisplay
root@Knoppix:~# vgdisplay
  --- Volume group ---
  VG Name               server1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  26
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               4.00 GB
  PE Size               4.00 MB
  Total PE              1023
  Alloc PE / Size       640 / 2.50 GB
  Free  PE / Size       383 / 1.50 GB
  VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0

root@Knoppix:~#

如你所见,我们有383个免费的PE,所以我们可以重新创建/ dev / server1 / swap_1 LV(在我们删除之前有66个PE):

lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1

让我们检查

vgdisplay

再次:

root@Knoppix:~# vgdisplay
  --- Volume group ---
  VG Name               server1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  27
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               4.00 GB
  PE Size               4.00 MB
  Total PE              1023
  Alloc PE / Size       706 / 2.76 GB
  Free  PE / Size       317 / 1.24 GB
  VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0

root@Knoppix:~#

我们还有317个免费的PE,所以我们可以扩展我们的/ dev / server1 / root LV:

lvextend -l +317 /dev/server1/root

现在我们将/ dev / server1 / root的文件系统调整到最大可能的值(如果没有指定大小,则resize2fs将使用尽可能大的值)...

resize2fs /dev/server1/root

...并再次运行文件系统检查:

e2fsck -f /dev/server1/root

就是这样 - 你现在可以再次启动进入正常系统

重新启动后,您应该会看到/ dev / md1现在更小:

cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[1]
      4194304 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      248896 blocks [2/2] [UU]

unused devices: <none>
server1:~#
df -h
server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
                      3.7G  742M  3.0G  20% /
tmpfs                 126M     0  126M   0% /lib/init/rw
udev                   10M   68K   10M   1% /dev
tmpfs                 126M     0  126M   0% /dev/shm
/dev/md0              236M   18M  206M   8% /boot
server1:~#
pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               server1
  PV Size               4.00 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              1023
  Free PE               0
  Allocated PE          1023
  PV UUID               Ntrsmz-m0o1-WAPD-xhsb-YpH7-0okm-qfdBQG

server1:~#
vgdisplay
server1:~# vgdisplay
  --- Volume group ---
  VG Name               server1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  28
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               4.00 GB
  PE Size               4.00 MB
  Total PE              1023
  Alloc PE / Size       1023 / 4.00 GB
  Free  PE / Size       0 / 0
  VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0

server1:~#
lvdisplay
server1:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/server1/root
  VG Name                server1
  LV UUID                3ZgGnd-Sq1s-Rchu-92b9-DpAX-mk24-0aOMm2
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                3.74 GB
  Current LE             957
  Segments               2
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/server1/swap_1
  VG Name                server1
  LV UUID                sAzi1B-pKdf-dM1E-Swx0-mgse-RFMP-ns50GQ
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                264.00 MB
  Current LE             66
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1

server1:~#
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏