Thu nhỏ khối lượng vật lý LVM trên đỉnh RAID bị suy giảm mdadm, thêm một phụ tùng và xây dựng lại nó


8

Tôi có một Debian Wheezyhệ thống với một vài 500 GB ổ cứng trong RAID-1 ( mdadmgương), trên đỉnh mà ngồi LVMlogical volumes với 5 phân vùng ( boot, root, usr, vartmp), tổng kích thước của 47,15 GiB. 418,38 GiB trong khối lượng vật lý là miễn phí. GRUBcài đặt trên cả hai ổ đĩa.

Một trong những ổ cứng bị lỗi và hiện tại mảng đã xuống cấp, nhưng dữ liệu vẫn còn nguyên.

Điều tôi muốn là hoán đổi tất cả 2 ổ cứng này sang ổ SSD 80 GB mà không cần phải cài đặt lại hệ thống từ đầu. Điểm tinh tế ở đây là tôi cần thu nhỏ âm lượng vật lý LVM để phù hợp với kích thước của SSD, nhưng âm lượng logic không liền kề nhau (có rất nhiều không gian trống lúc ban đầu), vì vậy tôi phải di chuyển âm lượng logic trong một khối vật lý . Và không có lvmovelệnh nào trong Debian.

Làm thế nào để tôi đạt được điều này?

Một số đầu ra giao diện điều khiển:

Phiên bản:

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

Chi tiết mảng:

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

Chi tiết ngắn gọn về 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

Phân khúc của 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  

Hoặc bạn chỉ có thể tạo RAID / VG / LV mới trên SSD và rsynccác tệp của bạn. Nó không trực tuyến nhưng có khả năng nhanh hơn bất cứ thứ gì khác.
frostschutz

Lúc đầu tôi nên thu nhỏ cả PV và mảng. Sau đó tôi chỉ cần phục hồi mảng.
Chất dẫn truyền thần kinh

Câu trả lời:


5

Bạn không cần phải thu nhỏ pv hoặc xây dựng lại mảng. Bạn chỉ cần tạo một mảng mới từ các ổ đĩa mới và thêm đó là một pv ( pvcreate+ vgextend) mới, sau đó pvmovetất cả các lv hiện có khỏi pv cũ, sau đó loại bỏ pv ( vgreduce) cũ và đưa ổ đĩa đó ra khỏi dịch vụ.


Giải pháp thay thế tốt nhưng tôi thích bám vào mảng cũ chỉ để tiết kiệm thời gian: Tôi không muốn tái hòa nhập một mảng mới trong hệ thống cũ.
Chất dẫn truyền thần kinh

1
@TranslucentCloud, sẽ mất ít thời gian hơn để tạo một mảng mới hơn là thay đổi kích thước của cái cũ, xây dựng lại nó trên một trong những ổ đĩa mới, loại bỏ ổ đĩa cũ và xây dựng lại nó.
psusi

Nhưng bạn có thể phải đối mặt với các bước bổ sung khi cố gắng cài đặt GRUBtừ hệ thống Live. Dễ dàng hơn để khởi động vào hệ thống sản xuất và cài đặt GRUB từ nó bằng một lệnh đơn giản.
Chất dẫn truyền thần kinh

@TranslucentCloud, ai nói gì về một hệ thống sống? Dù bằng cách nào bạn cũng phải cài đặt grub trên các ổ đĩa mới. Vì bạn đang chạy debian khá dễ dàng: dpkg-reconfigure grub-pcvà chọn các ổ đĩa mới.
psusi

1
@TranslucentCloud, toàn bộ quan điểm của LVM là khả năng thay đổi kích thước và di chuyển mọi thứ trong khi hệ thống đang sử dụng. Tương tự đối với MD, bạn có thể thay thế đĩa và thay đổi kích thước trong khi nó đang chạy. Điều duy nhất có thể ngăn bạn là nếu hệ thống tập tin của bạn không hỗ trợ thay đổi kích thước trực tiếp (nếu bạn phải thu nhỏ nó).
frostschutz

3

Không phải lvmovenhưng pvmove.

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

Điều đó sẽ di chuyển bất kỳ phạm vi nào trong phạm vi 89600-102950 sang phạm vi 0-12070. Theo dữ liệu bạn đã đăng sẽ dẫn đến việc LV của bạn được chuyển đến đầu PV của bạn.


Vâng, điều này giải quyết việc LVsắp xếp một phần của nhiệm vụ.
Chất dẫn truyền thần kinh

3

CHÚ Ý: HƯỚNG DẪN NÀY ĐƯỢC TỪ TỐI ƯU. KIỂM TRA ĐÁP ÁN ĐƯỢC CHẤP NHẬN

Được rồi, tôi đã tìm ra cách để làm những gì tôi đã cố gắng. Đây sẽ là một loại hướng dẫn.

Trong thời gian này tôi vẫn chưa nhận ra rằng các thao tác với LV thực sự có thể xảy ra khi các hệ thống tập tin được gắn kết và khởi động vào một số livebản phân phối Linux (SystemResTHERCD). Mọi người ở đây giải thích cho tôi rằng không cần thiết phải làm điều này nếu bạn không thao tác với các hệ thống tập tin thực tế và chỉ căn chỉnh LV và thu hẹp PV.

Vì vậy, với hướng dẫn này, bạn chắc chắn sẽ đạt được những gì bạn muốn, nhưng không phải là một cách hiệu quả, bởi vì nó đối mặt với bản chất của LVM - khả năng thực hiện mọi thứ sống .

  1. Do tính chất không liền kề của các khối logic trên âm lượng vật lý của tôi, bằng cách nào đó tôi nên di chuyển chúng vào đầu khối lượng vật lý. Các pvmovelệnh, như được đề xuất bởi @frostschutz có thể di chuyển LVstrong phạm vi 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. Bây giờ PVđã sẵn sàng để thu nhỏ kích thước của SSD (80GB). 80 gigabyte thực sự là 80000000000 byte:

    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. Sau này, tôi có thể thay đổi kích thước mảng. Không có hệ thống tập tin nào ở cấp độ này, vì vậy tôi kết thúc chỉ bằng một mdadm --growlệnh duy nhất , thực sự có thể được sử dụng để thu hẹp các mảng. Kích thước phải được nhập vào kibibytes, vì vậy nó là 80000000000/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. Bây giờ là lúc để thêm một ổ SSD hiện có vào mảng và để nó được xây dựng lại:

    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>
    

Sau khi xây dựng lại tôi có một mảng khỏe mạnh. Các thành viên của nó có thể được hoán đổi xung quanh và việc cài đặt GRUB có thể được thực hiện thường xuyên (sau khi khởi động vào hệ thống sản xuất) với grub-install /dev/sdc.


Tôi hy vọng bạn đã không làm cho PV của bạn quá lớn; nếu SSD là 80 GB, bạn không thể đặt PV của mình thành 80 GB với mức bù trừ do phân vùng và siêu dữ liệu. Ngoài ra, tất nhiên đây là một hoạt động trực tuyến, tất cả, không cần cd trực tiếp.
frostschutz

@frostschutz, như bạn có thể đã thấy, tôi đã không đặt PV của mình thành 80 gigabyte, nhưng là 74,5 gibibytes (bước 3) và đây là một không gian đủ để phù hợp với kích thước của SSD. Ngoài ra, LV được gắn và sử dụng bởi hệ thống, vì vậy tôi phải khởi động vào một số hệ thống trực tiếp.
Chất dẫn truyền thần kinh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.