Linux md RAID: / dev / md0 so với / dev / md / 0


19

Trên các hệ thống mới hơn /usr/share/mdadm/mkconf(tập lệnh được sử dụng để tạo /etc/mdadm/mdadm.conf) có xu hướng sử dụng tên thiết bị /dev/md/0thay vì /dev/md0:

new-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md/0 metadata=1.2 UUID=a0021927:0e4f10bf:2c47dc72:ca0b352e name=unassigned:0

Điều này có thể gây ra một số kích thích cho người dùng mong đợi /dev/md0ở đó, nhưng rõ ràng nó hoạt động tốt vì máy chủ khởi động mà không gặp vấn đề gì.

Trong /proc/mdstatthiết bị vẫn được gọi là /dev/md0:

new-system ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[2] sda2[0]
      1953381184 blocks super 1.2 [2/2] [UU]

unused devices: <none>

lscho thấy đó /dev/md/0là một liên kết tượng trưng đến /dev/md0:

new-system ~ # ls -l /dev/md/0 
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0

Trên một hệ thống cũ hơn mkconfvẫn sử dụng /dev/md0thay thế và /dev/mdtrống rỗng:

old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0

Tôi muốn biết sự khác biệt giữa các tên thiết bị này và tôi không thể tìm thấy bất kỳ lời giải thích nào trên Google. Là /dev/mdNtên cũ, và mdđang có kế hoạch chuyển sang /dev/md/Ntên thiết bị? Sự thay đổi này có liên quan đến siêu dữ liệu 1.2 không (tôi đã nhận thấy rằng máy chủ mới đang sử dụng md 1.2, trong khi máy chủ cũ vẫn đang sử dụng 0,90)?


EDIT 2017-09-11: Tôi nghĩ câu trả lời của Krzysztof Stasiak là câu trả lời đúng. Bây giờ tôi đã hoàn toàn quên mất câu hỏi này. Trong khi chơi với RAID thử nghiệm vào thứ sáu tuần trước, tôi đã nghĩ "tại sao không đặt tên cho mảng của mình thay vì ghi nhớ những gì md0, md1, md2, ... vv trong các thiết lập phức tạp?", Và vì vậy tôi đã thử:

test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device.  Try /dev/md/mdfoobar

Và thực sự nó hoạt động:

test-server ~ # mdadm --assemble /dev/md/foobar /dev/loop[01]
mdadm: /dev/md/foobar has been started with 2 drives.

test-server ~ # ll /dev/md/foobar 
lrwxrwxrwx 1 root root 6 Sep 11 10:45 /dev/md/foobar -> ../md0

test-server ~ # cat /proc/mdstat 
Personalities : [raid1]
md0 : active (auto-read-only) raid1 loop0[0] loop1[1]
      102272 blocks super 1.2 [2/2] [UU]

unused devices: <none>

(Bạn cũng có thể làm mdadm --assemble foobar DEV...).

Có một lời giải thích chi tiết trong man mdadmphần DEVICE NAMES.



@frostschutz ah, vậy tên mảng mdadm -Ehiện tại unassigned:0trên máy chủ mới được phân chia tại :, và phần thứ hai trở thành một phần của /dev/md/<name>? Vì vậy, nếu tôi thay đổi tên mảng thành unassigned:asdf, symlink sẽ được gọi là /dev/md/asdfgì? Và thiết bị thực tế luôn được gọi /dev/mdN, trong đó N là số miễn phí tiếp theo?
Martin von Wittich

1
Bạn có thể sử dụng nó theo cách đó, nhưng không ai làm điều đó; nó không thực sự hoạt động, vì thông thường md được tạo từ một đĩa CD trực tiếp không có tên máy chủ của bạn, v.v ... Một cái tên giống như unassigned:0chỉ là chữ nổi.
frostschutz

Câu trả lời:


1

bạn có thể đặt tên mảng là tên riêng (không chỉ 0-127) và vì mdadm 3.0.3, bạn chỉ có thể sử dụng tên. Nếu đường dẫn suy nghĩ đã được thay đổi để sử dụng thư mục con /dev/md/$nameđể làm cho linh hoạt hơn hoặc một số loại mảng hoặc nhóm sạch. Nếu mảng md được tạo ở định dạng, /dev/mdXcó thêm symlink để tạo khả năng tương thích với định dạng mới.


1

Khi nói đến tên thiết bị, tốt hơn hãy hỏi udev . Theo hiểu biết của tôi,

  1. md%dĐặt tên được sử dụng bởi kernel, nó được tạo trực tiếp bởi trình điều khiển md.c # L5284 và nó được sử dụng trong /proc/partitionssysfs. Do đó, nó xuất hiện trong/dev

  2. /dev/md/.../dev/disk/by-id/...được tạo ra dưới dạng symlink bởi udevd. Trong hệ thống của tôi, các quy tắc tương ứng được giữ trong /usr/lib/udev/rules.d/63-md-raid-arrays.rules:

    ...
    ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
    ...
    

Dường như tập tin udev xuất phát từ openSUSE 11.1-rc3theo cam kết này trong mdadm. Tôi đã kiểm tra tệp này openSUSE 11.0, nhưng nó không có md/%dliên kết tượng trưng ...


0

Có lẽ đường dẫn gốc khác nhau tùy thuộc vào phiên bản nhân Linux hoặc hệ thống Unix. Liên kết tượng trưng /dev/md/Ncó thể tồn tại vì lý do tương thích. Các chương trình hoặc tập lệnh có thể sử dụng đường dẫn này thay vì /dev/mdN.

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.