RAID với LVM vs MDRAID - ưu và nhược điểm?


51

Trong câu trả lời cho câu hỏi "các loại đột kích hỗn hợp" , HBruijn đề nghị sử dụng LVM để triển khai RAID so với MDRAID chuẩn hơn.

Sau khi điều tra một chút, có vẻ như LVM cũng hỗ trợ chức năng RAID. Trước đây, tôi đã sử dụng LVM trên MDRAID và cho đến bây giờ LVM cũng hỗ trợ chức năng RAID. Đây dường như là một sự phát triển tương đối gần đây, nhưng tôi chưa tìm ra chính xác khi nào nó được thực hiện.

Vì vậy, đây là những cách khác để triển khai RAID phần mềm trên Linux. Những ưu và nhược điểm của hai cách tiếp cận khác nhau này là gì? Tôi đang tìm kiếm sự so sánh tính năng giữa hai cách tiếp cận để mọi người có thể quyết định cái nào tốt hơn cho họ. Kết luận dựa trên thử nghiệm (như trong, tính năng này không hoạt động tốt như tính năng này và đây là lý do) cũng được, miễn là bạn đưa dữ liệu của mình vào câu trả lời.

Một số vấn đề cụ thể cần giải quyết:

  1. Giả sử tôi muốn thực hiện sw RAID + LVM (một kịch bản phổ biến). Tôi có nên sử dụng hỗ trợ của LVM cho sw RAID và do đó sử dụng một tiện ích thay vì hai? Liệu cách tiếp cận tích hợp hơn này có bất kỳ lợi thế?
  2. LVMs có hỗ trợ cho RAID sw có thiếu sót đáng kể so với MDADM trưởng thành hơn không? Cụ thể, LVM hỗ trợ ổn định / không có lỗi như thế nào? Có vẻ như hỗ trợ này chỉ quay trở lại năm 2011 (xem bên dưới), trong khi MDADM cũ hơn nhiều. Ngoài ra, làm thế nào để so sánh về mặt tính năng thiết lập? Nó có thiếu sót tính năng đáng kể so với MDADM không? Ngược lại, nó có hỗ trợ cho bất kỳ tính năng RAID sw nào mà MDADM không có không?

GHI CHÚ:

  1. Có một cuộc thảo luận chi tiết tại http://www.olearycomputers.com/ll/linux_mirrors.html nhưng tôi không thể tìm ra ngày nào nó được viết vào ngày nào.

    Câu hỏi tương tự trên Serverfault: nhân bản linux LVM so với nhân bản MD . Tuy nhiên, câu hỏi này đã được hỏi vào năm 2010 và câu trả lời có thể không cập nhật.

  2. Mục thay đổi cho phiên bản 2.02.87 - ngày 12 tháng 8 năm 2011 có

    Thêm cấu hình --with-raid cho segtype 'raid' mới để hỗ trợ MD RAID 1/4/5/6

    Vì vậy, có vẻ như hỗ trợ RAID trong LVM khoảng 3 năm.


Một lợi thế tôi có thể nghĩ đến là sử dụng các chức năng liên quan đến HA có sẵn cho LVM.
Bratchley

1
@JoelDavis Bạn có thể giải thích? Tôi không biết các chức năng liên quan đến HA có nghĩa là gì.
Faheem Mitha

Ngoài ra, có một lợi thế thông thường là bạn làm việc với âm lượng hợp lý thay vì âm mdlượng. Vì vậy, bạn có lvextendpvmovecó sẵn để di chuyển giữa các thiết bị trong khi với mdquy trình thì thủ công hơn rất nhiều mà không có lợi ích rõ ràng.
Bratchley

@JoelDavis có thể viết câu trả lời?
Faheem Mitha

2
LVM luôn hỗ trợ raid1 và raid0. Gần đây hơn, họ đã bỏ việc thực hiện của chính họ và thay vào đó sử dụng nội bộ mã tính cách đột kích của md, mở ra các cấp độ đột kích khác.
psusi

Câu trả lời:


55

LVM RAID trưởng thành và đầy tính năng như thế nào?

LVM-RAID thực sự sợ hãi dưới vỏ bọc. Về cơ bản, nó hoạt động bằng cách tạo hai khối logic trên mỗi thiết bị RAID (một cho dữ liệu, được gọi là "rimage"; một cho siêu dữ liệu, được gọi là "rmeta"). Sau đó nó chuyển những thứ đó cho các trình điều khiển md sợ hiện có. Vì vậy, những việc như xử lý lỗi đọc đĩa, cân bằng tải I / O, v.v ... nên khá thành thục.

Đó là tin tốt.

Công cụ

Bạn không thể sử dụng mdadmnó (ít nhất, không phải theo cách dễ dàng nào) và các công cụ RAID LVM không ở đâu hoàn thiện. Ví dụ: trong Debian Wheezy, lvskhông thể cho bạn biết trạng thái đồng bộ hóa RAID5. Tôi rất nghi ngờ việc sửa chữa và phục hồi (đặc biệt là từ các tình huống "không bao giờ xảy ra!") Ở bất cứ nơi nào gần như mdadm (và tôi đã vô tình gặp phải một trong những thử nghiệm của mình, và cuối cùng đã từ bỏ việc khôi phục nó. mdadm sẽ dễ dàng).

Đặc biệt nếu bạn không sử dụng các phiên bản mới nhất của tất cả các công cụ, nó sẽ trở nên tồi tệ hơn.

Tính năng thiếu

Các phiên bản hiện tại của LVM-RAID không hỗ trợ thu nhỏ ( lvreduce) một khối lượng logic RAID. Họ cũng không hỗ trợ thay đổi số lượng đĩa hoặc cấp độ RAID ( lvconvertđưa ra thông báo lỗi cho biết chưa được hỗ trợ). lvextendkhông hoạt động và thậm chí có thể tăng mức RAID mà chỉ sợ gần đây mới nhận được hỗ trợ, chẳng hạn như RAID10. Theo kinh nghiệm của tôi, việc mở rộng LV phổ biến hơn nhiều so với việc giảm chúng, vì vậy điều đó thực sự hợp lý.

Một số tính năng sợ khác không có, và đặc biệt là bạn không thể tùy chỉnh tất cả các tùy chọn bạn có thể với mdadm.

Trên các phiên bản cũ hơn (ví dụ như tìm thấy trong Debian Wheezy), LVM RAID cũng không hỗ trợ phát triển. Ví dụ: trên Wheezy:

root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.

Nói chung, bạn không muốn chạy các phiên bản Wheezy.

Trên đây là một khi bạn đã cài đặt nó. Đó cũng không phải là một quá trình tầm thường.

Vấn đề về công cụ

Chơi với máy ảo Jessie của tôi, tôi đã ngắt kết nối (hầu như) một đĩa. Mà làm việc, máy vẫn chạy. lvsmặc dù, không có dấu hiệu cho thấy các mảng đã bị suy giảm. Tôi gắn lại đĩa, và loại bỏ một giây. Vẫn đang chạy (đây là raid6). Đính kèm lại, vẫn không có dấu hiệu từ lvs. Tôi chạy lvconvert --repairtrên âm lượng, nó nói với tôi rằng nó ổn. Sau đó, tôi kéo một đĩa thứ ba ... và máy bị chết. Đã chèn lại, khởi động lại và hiện không biết cách khắc phục. mdadm --force --assemblesẽ khắc phục điều này; không có vẻ như vgchangecũng không lvchangecó tùy chọn đó (lvchange chấp nhận --force, nhưng dường như nó không làm gì cả). Ngay cả khi cố gắng dmsetuptrực tiếp đưa bảng ánh xạ vào kernel, tôi không thể tìm ra cách khôi phục nó.

Ngoài ra, mdadmlà một công cụ chuyên dụng chỉ để quản lý RAID. LVM còn làm được nhiều hơn thế, nhưng nó cảm thấy (và tôi thừa nhận điều này khá chủ quan) giống như chức năng RAID đã bị loại bỏ trong đó; nó không phù hợp lắm

Làm thế nào để bạn thực sự cài đặt một hệ thống với LVM RAID?

Dưới đây là một phác thảo ngắn gọn về việc cài đặt nó trên Debian Jessie hoặc Wheezy. Jessie dễ dàng hơn nhiều; lưu ý nếu bạn sẽ thử điều này trên Wheezy, hãy đọc toàn bộ điều đầu tiên

  1. Sử dụng hình ảnh CD đầy đủ để cài đặt, không phải hình ảnh netinst.

  2. Tiếp tục như bình thường, vào phân vùng đĩa, thiết lập khối lượng vật lý LVM của bạn. Bạn có thể cài đặt /bootLVM-RAID (trên Jessie và trên Wheezy với một số công việc chi tiết bên dưới).

  3. Tạo nhóm âm lượng của bạn. Để nó trong menu LVM.

  4. Một chút thú vị đầu tiên, trình cài đặt không có dm-raid.komô-đun được tải, hoặc thậm chí có sẵn! Vì vậy, bạn có thể lấy nó từ gói hình ảnh linux sẽ được cài đặt. Chuyển sang bảng điều khiển (ví dụ: Alt- F2) và:

    cd /tmp
    dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
    depmod -a -b /tmp
    modprobe -d /tmp dm-raid
    
  5. Trình cài đặt không biết cách tạo LV LVM-RAID, vì vậy bạn phải sử dụng dòng lệnh để thực hiện. Lưu ý tôi đã không làm bất kỳ điểm chuẩn; kích thước sọc ( -I) bên dưới hoàn toàn là dự đoán cho thiết lập VM của tôi:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. Trên Jessie, bạn có thể sử dụng RAID10 để trao đổi. Trên Wheezy, RAID10 không được hỗ trợ. Vì vậy, thay vào đó bạn có thể sử dụng hai phân vùng trao đổi, mỗi RAID1. Nhưng bạn phải cho nó biết chính xác khối lượng vật lý nào để đặt chúng vào hoặc nó đặt cả hai nửa gương trên cùng một đĩa . Đúng. Nghiêm túc. Dù sao, nó trông giống như:

    lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
    lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
    
  7. Cuối cùng, chuyển trở lại trình cài đặt và nhấn 'Hoàn tất' trong menu LVM. Bây giờ bạn sẽ được trình bày với rất nhiều khối lượng logic hiển thị. Đó là trình cài đặt không hiểu chuyện gì đang xảy ra; bỏ qua mọi thứ có rimagehoặc rmetatrong tên của họ (xem đoạn đầu tiên ở trên để được giải thích về những gì chúng là).

  8. Đi trước và tạo hệ thống tập tin, phân vùng trao đổi, vv như bình thường. Cài đặt hệ thống cơ sở, v.v., cho đến khi bạn đến dấu nhắc grub.

  9. Trên Jessie, grub2 sẽ hoạt động nếu được cài đặt vào MBR (hoặc có thể với EFI, nhưng tôi chưa kiểm tra điều đó). Trên Wheezy, cài đặt sẽ thất bại và giải pháp duy nhất là backport grub2 của Jane. Điều đó thực sự khá dễ dàng, nó biên dịch sạch trên Wheezy. Bằng cách nào đó, hãy đưa các gói grub backported của bạn vào /target(hoặc thực hiện trong một giây, sau chroot) sau đó:

    chroot /target /bin/bash
    mount /sys
    dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb 
    grub-install /dev/vda … grub-install /dev/vdd # for each disk
    echo 'dm_raid' >> /etc/initramfs-tools/modules
    update-initramfs -kall -u
    update-grub # should work, technically not quite tested²
    umount /sys
    exit
    
  10. Trên thực tế, trên Jessicaie grub-install gần đây nhất của tôi. Chuyển sang F2 và thực hiện while kill $(pidof vgs); do sleep 0.25; done, tiếp theo là tương tự lvs, đã nhận được nó thông qua cài đặt grub. Nó dường như tạo ra một cấu hình hợp lệ mặc dù vậy, nhưng chỉ trong trường hợp tôi đã làm chroot /target /bin/bash, chắc chắn /proc/sysđược gắn kết, và đã làm một update-grub. Lần đó, nó đã hoàn thành. Sau đó tôi đã dpkg-reconfigure grub-pcchọn một cài đặt grub trên tất cả các MBR của các đĩa ảo.

  11. Trên Wheezy, sau khi thực hiện các thao tác trên, chọn 'tiếp tục mà không có bộ tải khởi động'.

  12. Kết thúc cài đặt. Nó sẽ khởi động. Có lẽ.

Kiến thức cộng đồng

Có một số lượng khá lớn những người biết mdadmvà có nhiều kinh nghiệm triển khai với nó. Google có khả năng trả lời hầu hết các câu hỏi về nó mà bạn có. Bạn thường có thể mong đợi một câu hỏi về nó ở đây để có câu trả lời, có thể trong vòng một ngày.

Điều tương tự không thể nói với LVM RAID. Thật khó để tìm hướng dẫn. Hầu hết các tìm kiếm Google tôi đã chạy thay vì tìm cho tôi công cụ sử dụng mảng mdadm làm PV. Thành thật mà nói, điều này có lẽ phần lớn là vì nó mới hơn và ít được sử dụng hơn. Một phần nào đó, cảm thấy không công bằng khi giữ điều này chống lại nó nhưng nếu có sự cố xảy ra, cộng đồng hiện tại lớn hơn nhiều xung quanh mdadm khiến việc khôi phục dữ liệu của tôi có nhiều khả năng hơn.

Phần kết luận

LVM-RAID đang tiến bộ khá nhanh. Trên Wheezy, nó không thực sự có thể sử dụng được (ít nhất là, không cần thực hiện các bản sao lưu LVM và kernel). Trước đó, vào năm 2014, khi thử nghiệm Debian, nó cảm thấy như một ý tưởng thú vị, nhưng chưa hoàn thành. Thử nghiệm hiện tại, về cơ bản, thứ sẽ trở thành Jessie, cảm thấy giống như thứ gì đó mà bạn thực sự có thể sử dụng, nếu bạn thường xuyên cần tạo các lát nhỏ với các cấu hình RAID khác nhau (một điều gì đó là một cơn ác mộng hành chính mdadm).

Nếu nhu cầu của bạn được phục vụ đầy đủ bởi một vài mảng RAID mdadm lớn, được cắt thành các phân vùng bằng LVM, tôi khuyên bạn nên tiếp tục sử dụng nó. Thay vào đó, nếu bạn buộc phải tạo ra nhiều mảng (hoặc thậm chí là mảng có khối lượng logic), hãy xem xét chuyển sang LVM-RAID thay thế. Nhưng giữ bản sao lưu tốt.

Rất nhiều việc sử dụng RAID LVM (và thậm chí cả mdadm RAID) đang được tiếp quản bởi những thứ như hệ thống lưu trữ / đối tượng cụm, ZFS và btrfs. Tôi cũng khuyên bạn nên điều tra những người, họ có thể đáp ứng tốt hơn nhu cầu của bạn.


Cảm ơn

Tôi muốn cảm ơn psusi vì đã cho tôi xem lại trạng thái của LVM-RAID và cập nhật bài đăng này.

Chú thích

  1. Tôi nghi ngờ bạn có thể sử dụng trình ánh xạ thiết bị để dán siêu dữ liệu và dữ liệu lại với nhau theo cách mdadm --assemblesẽ lấy nó. Tất nhiên, bạn chỉ có thể chạy mdadmvới khối lượng logic tốt ... và điều đó sẽ an toàn hơn.

  2. Khi thực hiện cài đặt Wheezy, tôi đã thất bại trong lần đầu tiên và không có cấu hình grub. Tôi đã phải khởi động hệ thống bằng cách nhập tất cả các thông tin tại dấu nhắc grub. Sau khi khởi động, nó đã hoạt động, vì vậy tôi nghĩ nó sẽ hoạt động tốt từ trình cài đặt. Nếu bạn kết thúc tại dấu nhắc grub, đây là các dòng ma thuật để gõ:

    linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
    initrd /boot/initrd.image-3.2.0-4-amd64
    boot
    

PS: Đã được một thời gian kể từ khi tôi thực sự làm các thí nghiệm ban đầu. Tôi đã làm cho ghi chú ban đầu của tôi có sẵn. Lưu ý rằng bây giờ tôi đã thực hiện những cái gần đây hơn, được đề cập trong câu trả lời này, và không phải trong những ghi chú đó.


2
Thực tế, bạn đang gặp phải lỗi đó do phiên bản lvm trong trạng thái khò khè là cực kỳ cũ và lỗi; Nó hoạt động tốt với tôi ở đây trên Ubuntu 14.04 với phiên bản lvm 2.02.98 (Tôi tin rằng jessie ít nhất là mới đó). Thứ hai, lệnh bạn cho thấy thất bại là thay đổi kích thước - định hình lại là một cái gì đó hoàn toàn khác. Định hình lại có nghĩa là thay đổi từ raid1 sang raid5 hoặc từ raid5 3 đĩa sang raid5 4 đĩa. Điều đó vẫn không được hỗ trợ, nhưng chỉ cần thay đổi kích thước hoạt động tốt.
psusi

@psusi Ah, tôi nghĩ rằng họ cũng coi việc thay đổi kích thước cũng là một định hình lại (vì nó thay đổi hình dạng RAID, không có gì thay đổi nhiều như số lượng đĩa thay đổi). Tôi đã nghĩ trước khi tôi gặp lỗi khi thử nó với Jessie, tôi sẽ kiểm tra lại. (Phải xây dựng một máy ảo Jessie LVM-RAID mới, vì vậy sẽ mất một chút.) Cảm ơn bạn.
derobert

dpkg-debcung cấp một cách sạch hơn để trích xuất các tập tin từ các gói deb, không cần phải nhảy xung quanh theo các giai đoạn.
muru

@muru dpkg-debcó sẵn trong môi trường cài đặt? Nó không được sử dụng để ... Đảm bảo kiểm tra Wheezy quá.
derobert

@derobert ar -xcũng nên làm việc để giải nén tài liệu lưu trữ, mặc dù nó vụng về hơn. Ngoài ra, làm thế nào về việc cập nhật câu trả lời của bạn với trạng thái hiện tại?
Faheem Mitha

7

Tôi cũng không biết LVM có thể làm RAID. Cá nhân, tôi sẽ gắn bó với mdadm vì đây là một phần mềm trưởng thành hơn rất nhiều làm điều tương tự. Nếu có gì đó không ổn với LVM RAID, có lẽ bạn sẽ không thể nhận được nhiều sự hỗ trợ hơn so với khi bạn đã đi với mdadm. Ngoài ra, tôi không tin tưởng LVM RAID vì LVM trong lịch sử được chứng minh là không phải là phần mềm mạnh nhất.

ZFS và BTRFS là tương lai. Những lợi ích họ mang lại vượt xa những gì có thể ở lớp khối. Trừ khi tôi nhắm đến khả năng tương thích, tôi sẽ không sử dụng LVM / mdadm nữa. ZFS và BTRFS có rất nhiều tính năng như nén, sao chép và sao chép khi viết, nhưng tôi sẽ không đi sâu vào vấn đề này ở đây, vì nó sẽ nằm ngoài phạm vi một chút.

Cuối cùng, hãy nghiên cứu và sử dụng bất cứ thứ gì phù hợp với nhu cầu / mong muốn của bạn.


Cảm ơn câu trả lời. Cân nhắc mở rộng một chút về lý do tại sao bạn không tin tưởng LVM.
Faheem Mitha

2
"ZFS và BTRFS là tương lai" Không nhất thiết. Theo hiểu biết của tôi, ZFS trên Linux vẫn dựa trên FUSE nên nó chủ yếu được sử dụng để có các tính năng ZFS mà không cần sử dụng Solaris hoặc FreeBSD. BTRFS là tuyệt vời nhưng nó không nhất thiết là tương lai. Ví dụ, Red Hat dường như đang di chuyển nhiều hơn theo hướng LVM+XFSchứ không phải BTRFS. Họ hỗ trợ BTRFS nhưng đó là một điều của Oracle / SuSE.
Bratchley

Không phải nói rằng tôi không thích btrfs vì một số lý do (tôi thực sự thích nó rất nhiều). Chỉ là đó không phải là hướng mà một nhà phân phối lớn như Red Hat đang đi vào và tôi không thể nghĩ bất cứ điều gì BTRFS có thể làm mà LVM / XFS ít nhất có thể xấp xỉ khá tốt.
Bratchley

Tôi cũng nói rằng BTRFS sẽ tốt nhưng LVM có thể làm rất nhiều thứ mà BTRFS không thể làm được (chưa). Ví dụ: bạn có thể thực hiện khối lượng kết hợp và ảnh chụp nhanh cung cấp mỏng mà BTRFS (AFAIK) không thể làm được.
Bratchley

9
"Theo hiểu biết của tôi, ZFS trên Linux vẫn dựa trên FUSE", điều này đã không chính xác trong hơn năm năm. ZoL là một mô-đun hạt nhân và sẵn sàng sản xuất. Tôi đã sử dụng nó rộng rãi từ đầu năm 2010
Jim Salter
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.