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 mdadm
nó (í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, lvs
khô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ợ). lvextend
khô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. lvs
mặ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 --repair
trê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 --assemble
sẽ khắc phục điều này; không có vẻ như vgchange
cũng không lvchange
có 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 dmsetup
trự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, mdadm
là 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
Sử dụng hình ảnh CD đầy đủ để cài đặt, không phải hình ảnh netinst.
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 /boot
LVM-RAID (trên Jessie và trên Wheezy với một số công việc chi tiết bên dưới).
Tạo nhóm âm lượng của bạn. Để nó trong menu LVM.
Một chút thú vị đầu tiên, trình cài đặt không có dm-raid.ko
mô-đ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
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
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
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ó rimage
hoặc rmeta
trong 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à).
Đ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.
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
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
và /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-pc
chọn một cài đặt grub trên tất cả các MBR của các đĩa ảo.
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'.
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 mdadm
và 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
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 --assemble
sẽ lấy nó. Tất nhiên, bạn chỉ có thể chạy mdadm
với khối lượng logic tốt ... và điều đó sẽ an toàn hơn.
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ú đó.