Cần tìm ổ đĩa nào được nhân đôi trong mảng RAID-10


8

Tôi có một máy chủ phương tiện gia đình đang chạy trên openSUSE 12.2. Tôi đang sử dụng tám ổ đĩa 2TB trong cấu hình RAID-10. Tôi đã cố tình mua hai loại ổ đĩa khác nhau: bốn Seagate Barracuda Green và bốn Western Digital Red. Mục tiêu của tôi là cấu hình RAID sao cho mỗi cặp được nhân đôi trong mảng sẽ bao gồm các ổ đĩa không giống nhau (nghĩa là một ổ Seagate và một ổ WD). Rất tiếc, Bộ phân vùng YaST2 không cho tôi mức độ lựa chọn này trong cấu trúc của mảng, vì vậy bây giờ tôi đang cố gắng tìm hiểu cấu trúc RAID10 mặc định trông như thế nào.

Tôi biết những điều sau đây:

  • sdc, sdd, sde và sdf là tất cả các ổ WD
  • sdg, sdh, sdi và sdj đều là các ổ Seagate

Tôi đã chọn bố cục 'n2' mặc định khi tạo RAID. Tôi đoán dựa trên thông tin từ hai nguồn này là các ổ đĩa liền kề được nhân đôi (ví dụ: sdc == sdd, sde == sdf, v.v.), nhưng tôi muốn biết chắc chắn:

Đây là đầu ra của 'mdadm --detail / dev / md0':

/dev/md0:
        Version : 1.0
  Creation Time : Sat Mar 16 12:55:11 2013
     Raid Level : raid10
     Array Size : 7814045696 (7452.05 GiB 8001.58 GB)
  Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB)
   Raid Devices : 8
  Total Devices : 8
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Mar 16 13:09:37 2013
          State : active, resyncing
 Active Devices : 8
Working Devices : 8
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 2048K

  Resync Status : 1% complete

           Name : aldaris:0  (local to host aldaris)
           UUID : c6cc3943:97394500:b77d44cd:f02ed876
         Events : 149

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       65        2      active sync   /dev/sde1
       3       8       81        3      active sync   /dev/sdf1
       4       8       97        4      active sync   /dev/sdg1
       5       8      113        5      active sync   /dev/sdh1
       6       8      129        6      active sync   /dev/sdi1
       7       8      145        7      active sync   /dev/sdj1

Và đây là nội dung của / Proc / mdstat:

Personalities : [raid10] md0 : active raid10 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
      7814045696 blocks super 1.0 2048K chunks 2 near-copies [8/8] [UUUUUUUU]
      [>....................]  resync =  4.8% (375163456/7814045696) finish=1206.5min speed=102751K/sec
      bitmap: 57/59 pages [228KB], 65536KB chunk

unused devices: <none>

Vì vậy, câu hỏi của tôi là:

  1. Làm thế nào để tôi biết ổ đĩa nào là gương của nhau?
  2. Có cách nào để thay đổi điều này không, hay tôi chỉ nên trao đổi dây xung quanh (vì điều đó sẽ hoán đổi các ký tự ổ đĩa) và sau đó xây dựng lại RAID?

Cảm ơn trước.


Lưu ý tiếp theo, đối với bất kỳ ai muốn biết lý do của tôi để làm điều này là: Các ổ đĩa có cùng kiểu và lô, được vận hành theo tải trọng sử dụng tương tự, thời gian hoạt động và nhiệt độ có ít sự thay đổi hệ thống và sự khác biệt về thời gian thất bại giữa các ổ sẽ được điều khiển chủ yếu bởi sự thay đổi ngẫu nhiên trong quá trình sản xuất. Điều này làm tăng nguy cơ nhiều ổ đĩa chết cùng một lúc. Bằng cách mua các ổ đĩa không chỉ từ các lô khác nhau mà các nhà sản xuất hoàn toàn khác nhau, tôi giới thiệu biến thể có hệ thống vào mảng của mình, do đó ảnh hưởng đến ổ đĩa nào sẽ thất bại ở những thời điểm tương tự.


1
Các máy chủ phương tiện gia đình không có chủ đề cho ServerFault. Điều đó nói rằng, bạn đặt rõ một số nỗ lực vào điều này và tôi sẽ gắn cờ để chuyển đổi sang unix.SE .
Andrew B

@AndrewB, tại sao vậy?
poige

Đó là một câu hỏi rất thú vị và lý do đằng sau được hiểu rất rõ. Bạn không phải thay đổi dây vì chỉ xác định đĩa khi (việc tái tạo) RAID đơn giản hơn nhiều.
poige

@poige Điều này rơi vào bất cứ điều gì trong một thiết lập nhà . Tôi đã cố gắng làm rõ rằng tôi đã xem xét câu hỏi được nghiên cứu đầy đủ mặc dù điều này.
Andrew B

Nếu tôi suy đoán dữ dội, thì tôi đoán rằng bạn có thể nhìn vào RaidDevicecột. Nó có thể đơn giản như (0,1), (2,3), (4,5), (6,7). Điều đó sẽ khiến tôi cho rằng bạn cần phải sắp xếp RaidDevice như WD / Sea / WD / Sea / vân vân ... Nhưng tôi không chắc chắn 100% về điều đó.
Zoredache

Câu trả lời:


5

Các phiên bản gần đây mdadmcho thấy điều này ngay trong các chi tiết của mảng. Ví dụ từmdadm v3.3 - 3rd September 2013

 $ mdadm --detail /dev/md1

/dev/md1:
        Version : 1.1
  Creation Time : Tue Aug 23 11:45:41 2016
     Raid Level : raid10
     Array Size : 3864803328 (3685.76 GiB 3957.56 GB)
  Used Dev Size : 1932401664 (1842.88 GiB 1978.78 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Fri Aug 26 09:39:28 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : px4-300r-THXOAP:1  (local to host px4-300r-THXOAP)
           UUID : 5ee06437:83dfdb64:808feaa2:5d57b1e6
         Events : 620

    Number   Major   Minor   RaidDevice State
       4       8       50        0      active sync set-A   /dev/sdd2
       1       8       34        1      active sync set-B   /dev/sdc2
       2       8       18        2      active sync set-A   /dev/sdb2
       3       8        2        3      active sync set-B   /dev/sda2

Lưu ý ký hiệu set-Ahay set-B. Trong trường hợp trên, sddsdbcó thể thất bại với nhau mà không mất dữ liệu. Có thể dữ liệu này không có sẵn trong khi mảng đang được xây dựng lại.


2

Tôi đã có cùng một vấn đề và sau khi googling một thời gian tôi đã không tìm thấy một câu trả lời đáng tin cậy. Sau khi suy nghĩ kỹ, tôi đoán rằng các gương có cùng dữ liệu và vì vậy chúng ta có thể so sánh một phần của nó.

GHI CHÚ

Với một vài lệnh này, bạn có thể tìm ra nó:

for disk in sda sdb sdc sdd
do
  echo -n "$disk = ";
  dd if=/dev/$disk skip=1M bs=1M count=1 2>/dev/null | md5sum;
done

Điều này sẽ tạo ra một cái gì đó như:

sda = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdb = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdc = e02f7d61ad3791bd691da5b7516928a5  -
sdd = e02f7d61ad3791bd691da5b7516928a5  -

Bây giờ chúng ta biết rằng sda / sdb là một gương và sdc / sdd một cái khác. Một trong số đó phải ở lại để tránh mất dữ liệu.

Lệnh "dd" đang đọc một lần (đếm = 1) một Megabyte (bs = 1M) tại một điểm bù Megabyte từ đầu đĩa (Skip = 1M). Đừng bỏ qua = 0, vì phần đầu của đĩa chứa thông tin khác nhau. Dữ liệu thường bắt đầu sau 1MB.


dd if=/dev/$disk skip=1M bs=1M count=1không làm việc cho tôi. dd (coreutils) 8.23từ Debian 8 (Jessie) không hỗ trợ skipvới một đơn vị. Thay vào đó tôi sử dụng skip=1ở đâu 1là tương đối bs. Có thể là một lỗi đánh máy?
Daniel Böhmer 16/2/2016

FYI Nếu bạn thấy MD5 tổng số cuộc gọi d41d8cd98f00b204e9800998ecf8427ecủa bạn ddkhông thành công. Đó là hàm băm của chuỗi rỗng :-)
Daniel Böhmer 16/2/2016

0

Tôi nghĩ rằng bạn đang nói về một cuộc đột kích thực sự 10 mảng (phản chiếu sọc 1 + 0)

sdc/sdg = md0 raid1 2TB |
sdd/sdh = md1 raid1 2TB |_  md4 raid0 8TB
sde/sdi = md2 raid1 2TB |
sdf/sdj = md3 raid1 2TB |

1. Tạo 4 mảng raid1 của bạn:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/{sdc,sdg}
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/{sdd,sdh}
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/{sde,sdi}
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/{sdf,sdj}

Tại thời điểm này, bạn có 4 mảng đột kích 1 mảng với dung lượng 2TB trên mỗi mảng,

2. Hãy lắp ráp chúng!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md{0,1,2,3}

Các tùy chọn --sl rất hữu ích vì một số thành phần đang hoạt động trong một mảng khác

3. Điều chỉnh tệp mdadm.conf của bạn

Bạn có thể cần (tùy thuộc vào cấu hình của bạn) để điều chỉnh tệp này để phản ánh các thay đổi về mảng mới của chúng tôi (/ dev / md4).

4. Thưởng thức .. mảng DIY raid10 mới của bạn!


Không, anh ấy đang nói về tính cách mdadm raid10 của linux. Tôi tin rằng câu trả lời của bạn không được áp dụng (mặc dù, công bằng mà nói, nó mang lại cho OP một sự thay thế để đạt được những gì anh ấy cần làm)
GnP

Hiệu suất và các tính năng được hỗ trợ khác nhau là tốt.
Joachim Wagner

0

Bạn luôn có thể xác minh đó là gương bằng cách so sánh dữ liệu thô, ví dụ:

# dd if=/dev/sda1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdb1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -
# dd if=/dev/sdg1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdf1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -

(nếu bạn không nhận được bất kỳ trận đấu nào, bạn có thể cần tăng bỏ qua = , vì bạn không bỏ qua superblocksl của RAID; và nếu bạn nhận được cùng md5sum cho hơn 2 đĩa, bạn có thể cần tăng số lượng = , như bạn Có lẽ bạn đang đọc và m5summing các số không - để ngăn chặn rằng bạn nên đặt một số dữ liệu vào cuộc đột kích trước, nếu không chúng có thể chứa đầy các số 0)

Đối với các dây tráo đổi xung quanh, bạn không cần phải làm điều đó - mdadm nên tạo ra cuộc đột kích với các thiết bị như được chỉ định trên dòng lệnh trong mdadm --create , vì vậy bạn sẽ chỉ định các ổ đĩa theo thứ tự khác nhau trên dòng lệnh.


0

Chạy "mdadm --examine device" trên mỗi thiết bị thành phần (ví dụ / dev / sda1, / dev / sdb1, v.v.). Thông tin ở đó sẽ giúp bạn xác định thành phần nào là gương của nhau.

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.