Làm cách nào để thay đổi kích thước mảng RAID1 bằng mdadm?


12

Tôi đã chạy Ubuntu 11.04 (kernel 2.6,38-11). Tôi đã thay thế 2x160GB bằng các ổ đĩa 2x500GB. Chúng được cấu hình là RAID1.

Các bảng phân vùng hiển thị kích thước phù hợp. Đây là sfdisk:

# sfdisk -d /dev/sdb
# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=       63, size=   192717, Id=fd, bootable
/dev/sdb2 : start=   192780, size=  7807590, Id=fd
/dev/sdb3 : start=  8000370, size=968767695, Id=fd
/dev/sdb4 : start=        0, size=        0, Id= 0

Và fdisk:

# fdisk -l /dev/sdb

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c78f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          12       96358+  fd  Linux raid autodetect
/dev/sdb2              13         498     3903795   fd  Linux raid autodetect
/dev/sdb3             499       60801   484383847+  fd  Linux raid autodetect

Nhưng tôi không thấy không gian mới:

root@green:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md2              143G  134G  8.3G  95% /


root@green:~# mdadm --examine /dev/sdb3
/dev/sdb3:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : b8f83980:f60d820c:74c46fbf:0baa68bc
  Creation Time : Sun Mar 29 18:48:46 2009
     Raid Level : raid1
  Used Dev Size : 152247936 (145.19 GiB 155.90 GB)
     Array Size : 152247936 (145.19 GiB 155.90 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 2

    Update Time : Mon Oct 10 19:22:36 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 7b5debb7 - correct
         Events : 10729526


      Number   Major   Minor   RaidDevice State
this     0       8       19        0      active sync   /dev/sdb3
   0     0       8       19        0      active sync   /dev/sdb3
   1     1       8        3        1      active sync   /dev/sda3

Tôi đã thử mdadm và thay đổi kích thước2fs:

# mdadm --grow /dev/md2 --size=max
mdadm: component size of /dev/md2 has been set to 152247936K

# resize2fs /dev/md2 
resize2fs 1.41.14 (22-Dec-2010)
The filesystem is already 38061984 blocks long.  Nothing to do!

Có ý kiến ​​gì không?

Đã thêm theo yêu cầu

# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sdb3[0] sda3[1]
      152247936 blocks [2/2] [UU]

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

md1 : active raid1 sdb2[0] sda2[1]
      3903680 blocks [2/2] [UU]

unused devices: <none>

phân vùng

# cat /proc/partitions 
major minor  #blocks  name

   8        0  488386584 sda
   8        1      96358 sda1
   8        2    3903795 sda2
   8        3  152248005 sda3
   8       16  488386584 sdb
   8       17      96358 sdb1
   8       18    3903795 sdb2
   8       19  152248005 sdb3
   9        1    3903680 md1
   9        0      96256 md0
   9        2  152247936 md2

chia tay:

# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print all                                                        
Model: ATA WDC WD5000AAKX-0 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      32.3kB  98.7MB  98.7MB  primary  ext3            boot, raid
 2      98.7MB  4096MB  3997MB  primary  linux-swap(v1)  raid
 3      4096MB  500GB   496GB   primary  ext3            raid


Model: ATA WDC WD5000AAKS-4 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      32.3kB  98.7MB  98.7MB  primary  ext3            boot, raid
 2      98.7MB  4096MB  3997MB  primary  linux-swap(v1)  raid
 3      4096MB  500GB   496GB   primary  ext3            raid


Model: Linux Software RAID Array (md)
Disk /dev/md1: 3997MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system     Flags
 1      0.00B  3997MB  3997MB  linux-swap(v1)


Model: Linux Software RAID Array (md)
Disk /dev/md0: 98.6MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  98.6MB  98.6MB  ext3


Model: Linux Software RAID Array (md)
Disk /dev/md2: 156GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  156GB  156GB  ext3

Nhận xét qua email:

Vấn đề là ở siêu dữ liệu, bạn chỉ cần lắp ráp mảng đột kích với tham số --update deviceize

và sau đó -G / dev / md? -z max sẽ hoàn thành công việc :)


Đầu ra của là cat /proc/mdstatgì? Thế còn cat /proc/partitions?
Steven Thứ Hai

Đã thêm đầu ra ở trên.
Paul Schreiber

Bạn chưa đề cập đến việc làm thế nào để dữ liệu của bạn được sao chép vào các đĩa mới. Tuy nhiên, nó có thể ảnh hưởng đến câu trả lời nặng nề.
poige

Tôi đã nhận được dữ liệu được sao chép trên các đĩa mới bằng cách phân vùng chúng bằng sfdisk, sử dụng mdadm --add và để dữ liệu đồng bộ hóa.
Paul Schreiber

@Paul Schreiber, sfdiskbạn nói (?) Bạn có ý gì khi nói rằng bạn cũng sao chép lược đồ phân vùng đĩa không?
poige

Câu trả lời:


9

Chỉ dùng

mdadm --grow --size max /dev/md2

Sau đó, bạn sẽ có thể sử dụng

resize2fs /dev/md2

Để cho hệ thống tập tin phù hợp với kích thước cuộc đột kích. Tất cả điều đó được thực hiện trực tuyến mà không cần kết nối với md2.


1
Lệnh hoàn chỉnh:resize2fs -p /dev/md2
Milan Kerslager 25/03/19

@MilanKerslager, đang làm gì -pở đó?.
Jaime Hablutzel

1
@JaimeHablutzel -p là thanh hoàn thành phần trăm để bạn biết điều gì đang xảy ra, vì có thể mất một thời gian (câu trả lời ban đầu đã được sửa).
Milan Kerslager

2

Tôi thường xuyên sử dụng mdadm và coi nó là một trong những tiện ích Linux nguy hiểm nhất. Tuy nhiên, nếu bạn sử dụng các biện pháp phòng ngừa an toàn chính xác, bạn có thể tránh được hầu hết các trường hợp mất dữ liệu tiềm năng Sao lưu tất cả dữ liệu của bạn !!! Tôi đã bị cắn bởi mdadm hai lần trong quá khứ, mất hơn 700GB dữ liệu và rất ít trong số đó có thể được phục hồi, bạn đã được cảnh báo.

Có một cơ hội rất tốt bạn sẽ cần phải tạo lại mảng RAID vì mdadm không mong đợi hoặc bù đắp cho các ổ đĩa tăng kích thước đột ngột. Nó sẽ sử dụng kích thước được nêu trong siêu khối đột kích chứ không phải chính ổ đĩa. Với điều kiện các ổ đĩa đã được đồng bộ hóa, bạn sẽ không gặp nhiều vấn đề.

Hãy nhớ nếu bạn muốn khởi động nó, hãy sử dụng phiên bản superblock 0.9.

Biên tập

Đây là cách tôi sẽ làm điều đó, chưa được kiểm tra !

Tạo RAID1 với một lần lặn bị thiếu chỉ để chúng tôi có thể nhanh chóng kiểm tra dữ liệu vẫn còn trong khi vẫn còn một ổ đĩa khác có bản sao dữ liệu, siêu dữ liệu cũ của bạn là 0,90 vì vậy chúng tôi sẽ giữ nguyên phiên bản ở đây.

mdadm --create /dev/md2 --level=mirror --metadata=0.90 --raid-devices=2 missing /dev/sdb3

Gắn kết nó để kiểm tra xem mọi thứ có hoạt động không

mkdir /mnt/test
mount /dev/md2 /mnt/test

kiểm tra dữ liệu của bạn

   ls -l /mnt/test

Nếu tất cả đều ổn, hãy ngắt kết nối ổ đĩa và thay đổi kích thước.

unmount /mnt/md2
resize2fs /dev/md2

Khi đã xong, bạn có thể thêm ổ đĩa khác vào mảng.

mdadm --add /dev/md2 /dev/sdb3

và đợi các ổ đĩa đồng bộ lại

mèo / Proc / mdstat


Bạn có bất cứ đề nghị cụ thể? tức là các bước để tôi thực hiện?
Paul Schreiber

nhìn vào bản chỉnh sửa của tôi ở trên
Silverfire

/ dev / md2 đã tồn tại. Tại sao tôi muốn tạo lại nó? Và: Tôi phải khởi động đĩa cứu hộ để thực hiện điều này? Có cách nào tôi có thể thay đổi kích thước trực tiếp này?
Paul Schreiber

Sống, có thể không nhưng bạn có thể thực hiện được với khởi động lại, nếu bạn loại bỏ ổ đĩa khởi động chính khỏi mảng, sau đó bạn có thể tạo một mảng mới trên nó (đặt tên là / dev / md3 hoặc một cái gì đó) với một ổ đĩa bị thiếu, hệ thống sau đó sẽ khởi động mảng ổ đĩa / đột kích mới và sau đó bạn có thể thêm mảng cũ
Silverfire

Điều có lẽ sẽ dễ dàng nhất là chỉ cần khôi phục từ bản sao lưu trên một mảng mới.
Silverfire

2

Từ việc nhìn vào / Proc / phân vùng , rõ ràng linux nghĩ rằng sda3sdb3 nhỏ hơn so với thực tế.

Tính tổng kích thước của các phân vùng

8       17      96358 sdb1
8       18    3903795 sdb2
8       19  152248005 sdb3

và bạn sẽ nhận được một số lượng thấp hơn nhiều so với kích thước của đĩa.

8       16  488386584 sdb

152248005 khối 1024 byte phù hợp với kích thước mdadm --growresize2fsđang báo cáo cho md2 .

Ban đầu bạn có tạo các phân vùng này với kích thước nhỏ hơn không, sau đó tạo lại chúng để sử dụng phần còn lại của các đĩa? Nếu vậy, khởi động lại sẽ cho phép kernel đọc lại bảng phân vùng. Sau đó, phát triển thiết bị RAID và thay đổi kích thước hệ thống tập tin sẽ hoạt động.


Vâng, đó chính xác là những gì tôi đã làm.
Paul Schreiber

Máy treo khi khởi động lại. Tắt để điều tra ...
Paul Schreiber
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.