mdadmパフォーマンスが低下したRAIDアレイでLVM物理ボリュームを縮小し、スペアを追加して再構築します。

mdadmパフォーマンスが低下したRAIDアレイでLVM物理ボリュームを縮小し、スペアを追加して再構築します。

私のDebian Wheezyシステムには、RAID-1(ミラー)に複数の500GB HDDがあり、mdadmその上にLVM合計サイズが47.15GiBの5つのパーティション(、、、および)を持つ論理ボリュームがあります。物理ボリュームには418.38GiBを使用できます。両方のドライブにインストールされます。bootrootusrvartmpGRUB

HDDの1つに障害が発生し、アレイのパフォーマンスが低下していますが、データは破損していません。

私が望むのは、システムを最初から再インストールせずに2台のHDDをすべて80GB SSDに交換することです。ここで微妙なことは、SSDのサイズに合わせてLVM物理ボリュームを縮小する必要がありますが、論理ボリュームが連続していない(最初は空き容量が多い)、論理ボリュームをSSD内で移動する必要があることです。何とか物理ボリューム。そしてlvmoveDebianにはコマンドはありません。

どうやってこれを達成できますか?

いくつかのコンソール出力:

バージョン:

root@wheezy:~# uname -a && mdadm --version && lvm version
Linux wheezy 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
mdadm - v3.2.5 - 18th May 2012
  LVM version:     2.02.95(2) (2012-03-06)
  Library version: 1.02.74 (2012-03-06)
  Driver version:  4.22.0

アレイの詳細:

root@wheezy:~# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Dec  4 12:20:22 2014
     Raid Level : raid1
     Array Size : 488148544 (465.53 GiB 499.86 GB)
  Used Dev Size : 488148544 (465.53 GiB 499.86 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Thu Dec  4 13:08:59 2014
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : wheezy:0  (local to host wheezy)
           UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
         Events : 26

Number   Major   Minor   RaidDevice State
   0       8       16        0      active sync   /dev/sdb
   1       0        0        1      removed

LVM簡単な説明:

root@wheezy:~# pvs && vgs && lvs                                                                                               
  PV         VG     Fmt  Attr PSize   PFree                                                                                          
  /dev/md0   system lvm2 a--  465.53g 418.38g                                                                                        
  VG     #PV #LV #SN Attr   VSize   VFree                                                                                            
  system   1   5   0 wz--n- 465.53g 418.38g                                                                                          
  LV   VG     Attr     LSize   Pool Origin Data%  Move Log Copy%  Convert                                                            
  boot system -wi----- 152.00m                                                                                                       
  root system -wi-----   2.00g                                                                                                       
  tmp  system -wi-----  10.00g                                                                                                       
  usr  system -wi-----  20.00g                                                                                                       
  var  system -wi-----  15.00g

PV分析:

root@wheezy:~# pvs -v --segments /dev/md0
    Using physical volume(s) on command line
    PV         VG     Fmt  Attr PSize   PFree   Start  SSize LV   Start Type   PE Ranges             
    /dev/md0   system lvm2 a--  465.53g 418.38g      0 89600          0 free                         
    /dev/md0   system lvm2 a--  465.53g 418.38g  89600    38 boot     0 linear /dev/md0:89600-89637  
    /dev/md0   system lvm2 a--  465.53g 418.38g  89638   512 root     0 linear /dev/md0:89638-90149  
    /dev/md0   system lvm2 a--  465.53g 418.38g  90150  5120 usr      0 linear /dev/md0:90150-95269  
    /dev/md0   system lvm2 a--  465.53g 418.38g  95270  3840 var      0 linear /dev/md0:95270-99109  
    /dev/md0   system lvm2 a--  465.53g 418.38g  99110  1280          0 free                         
    /dev/md0   system lvm2 a--  465.53g 418.38g 100390  2560 tmp      0 linear /dev/md0:100390-102949
    /dev/md0   system lvm2 a--  465.53g 418.38g 102950 16226          0 free  

答え1

PVを縮小したり、アレイを再構築する必要はありません。新しいドライブから新しいアレイを作成し、それを新しいpv(pvcreate+ vgextend)として追加し、pvmove古いPVから既存のlvをすべて削除し、古いpv(vgreduce)を削除してドライブのサービスを停止します。

答え2

しかしlvmovepvmove

pvmove --alloc=anywhere /dev/md0:89600-102950 /dev/md0:0-12070

これにより、89600-102950の範囲内のすべての項目が0-12070の範囲に移動されます。公開されたデータによれば、LVはPVの先頭に再配置されます。

答え3

注:このガイドは最適なガイドとは離れています。受け入れられた回答を確認してください。

さて、私が試したことをする方法を見つけました。これは一種のチュートリアルになります。

この期間中、LVの運営は実際に可能ファイルシステムが一部のliveLinuxディストリビューション(SystemRescueCD)にマウントされ起動されている場合。ここでは、実際のファイルシステムを操作せずにLVを並べ替えてPVを縮小する場合は、これを行う必要はないと説明しました。

したがって、このガイドを使用することで確実に達成することができますが、LVMの本質、つまり作業の実行可能性に直面するので、効率的な方法ではありません。生きる

  1. 物理ボリュームから論理ボリュームが不連続であるため、何らかの方法で物理ボリュームの先頭に移動する必要があります。pvmove@frostschutzが提案したように、コマンドは次のLVs場所に移動できますPV

    root@wheezy:/home/a# pvmove --alloc=anywhere /dev/md0:89600-102950 /dev/md0:0-12070
    /dev/md0: Moved: 100.0%
    
    root@wheezy:/home/a# pvs -v --segments /dev/md0
        Using physical volume(s) on command line
      PV         VG     Fmt  Attr PSize   PFree   Start SSize  LV   Start Type   PE Ranges          
      /dev/md0   system lvm2 a--  465.53g 418.38g     0     38 boot     0 linear /dev/md0:0-37      
      /dev/md0   system lvm2 a--  465.53g 418.38g    38    512 root     0 linear /dev/md0:38-549    
      /dev/md0   system lvm2 a--  465.53g 418.38g   550   5120 usr      0 linear /dev/md0:550-5669  
      /dev/md0   system lvm2 a--  465.53g 418.38g  5670   2560 tmp      0 linear /dev/md0:5670-8229 
      /dev/md0   system lvm2 a--  465.53g 418.38g  8230   3840 var      0 linear /dev/md0:8230-12069
      /dev/md0   system lvm2 a--  465.53g 418.38g 12070 107106          0 free  
    
  2. これでPVSSDサイズ(80GB)に縮小する準備が整いました。 80GBは実際には80000000000バイトです。

    root@wheezy:/home/a# pvresize --setphysicalvolumesize 80000000000B /dev/md0
      Physical volume "/dev/md0" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized
    
    root@wheezy:/home/a# pvs
      PV         VG     Fmt  Attr PSize  PFree 
      /dev/md0   system lvm2 a--  74.50g 27.36g
    
  3. その後、配列自体のサイズを変更できます。このレベルにはファイルシステムがないため、配列の縮小にもmdadm --grow実際に動作するコマンドを1つだけ使用するようになりました。サイズはkibibytes80000000000 / 1024 = 78125000と入力する必要があります。

    root@wheezy:/home/a# mdadm --grow --size=78125000 /dev/md0
    mdadm: component size of /dev/md0 has been set to 78125000K
    
    root@wheezy:/home/a# mdadm -D /dev/md0
    /dev/md0:
            Version : 1.2
      Creation Time : Thu Dec  4 12:20:22 2014
         Raid Level : raid1
         Array Size : 78125000 (74.51 GiB 80.00 GB)
      Used Dev Size : 78125000 (74.51 GiB 80.00 GB)
       Raid Devices : 2
      Total Devices : 1
        Persistence : Superblock is persistent
    
        Update Time : Thu Dec  4 17:56:53 2014
              State : clean, degraded 
     Active Devices : 1
    Working Devices : 1
     Failed Devices : 0
      Spare Devices : 0
    
               Name : wheezy:0  (local to host wheezy)
               UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
             Events : 60
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       0        0        1      removed
    
  4. これで、既存のSSDをアレイに追加して再構築します。

    root@wheezy:/home/a# mdadm --add /dev/md0 /dev/sdc
    mdadm: added /dev/sdc
    
    root@wheezy:/home/a# cat /proc/mdstat 
    Personalities : [raid1] 
    md0 : active raid1 sdc[2] sdb[0]
          78125000 blocks super 1.2 [2/1] [U_]
          [>....................]  recovery =  1.3% (1081920/78125000)         finish=11.8min speed=108192K/sec
    
    unused devices: <none>
    

再構築後、健康な配列を持つようになりました。そのメンバーを交換でき、GRUBインストールを使用できますgrub-install /dev/sdc

関連情報