LVM RAID는 얼마나 성숙하고 기능적인가?
LVM-RAID는 실제로 덮개 아래에서 mdraid입니다. 기본적으로 RAID 장치 당 두 개의 논리 볼륨을 생성하여 작동합니다 (하나는 "rimage", 메타 데이터는 "rmeta"). 그런 다음 이들을 기존 mdraid 드라이버로 전달합니다. 따라서 디스크 읽기 오류 처리, I / O로드 밸런싱 등은 상당히 성숙해야합니다.
좋은 소식입니다.
도구
당신은 그것을 사용할 수 없으며 mdadm
(적어도 쉬운 방법은 아닙니다 ¹) LVM RAID 도구는 거의 성숙하지 않습니다. 예를 들어, Debian Wheezy에서는 lvs
RAID5 동기화 상태를 알려줄 수 없습니다. 복구 및 복구 (특히 "그렇지 않아야합니다!"상황에서)가 mdadm만큼 좋은 위치에 있다는 것은 의심의 여지가 있습니다. mdadm은 쉬웠을 것입니다).
특히 모든 도구의 최신 버전을 사용하지 않으면 더 나빠집니다.
누락 된 기능
현재 버전의 LVM-RAID는 lvreduce
RAID 논리 볼륨 축소 ( )를 지원하지 않습니다 . 또한 디스크 수 또는 RAID 레벨 변경을 지원 lvconvert
하지 않습니다 (아직 지원되지 않음을 나타내는 오류 메시지가 표시됨). lvextend
작동하지만 RAID10과 같이 mdraid가 최근에 지원 한 RAID 수준을 늘릴 수도 있습니다. 내 경험상 LV를 확장하는 것이 LV를 줄이는 것보다 훨씬 일반적이므로 실제로 합리적입니다.
일부 다른 mdraid 기능은 없으며 특히 mdadm으로 사용할 수있는 모든 옵션을 사용자 정의 할 수 없습니다.
이전 버전 (예 : Debian Wheezy)에서 LVM RAID는 확장을 지원하지 않습니다. 예를 들어 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.
일반적으로 Wheezy 버전을 실행하고 싶지 않습니다.
위의 내용은 일단 설치하면됩니다. 그것은 사소한 과정이 아닙니다.
도구 문제
Jessie VM을 사용하여 하나의 디스크 연결을 끊었습니다. 그 기계는 계속 작동했습니다. lvs
그러나 어레이의 성능이 저하되었다는 표시는 없었습니다. 디스크를 다시 연결하고 1 초를 제거했습니다. 러닝을 유지했습니다 (raid6입니다). 에 다시 연결했지만의 표시는 없습니다 lvs
. 나는 lvconvert --repair
볼륨에 달렸다 , 그것은 나에게 OK라고 말했다. 그런 다음 세 번째 디스크를 꺼내고 기계가 죽었습니다. 다시 삽입하고 재부팅 한 후 수정 방법을 잘 모르겠습니다. mdadm --force --assemble
이것을 고칠 것입니다. 어느 쪽도 vgchange
아니다 lvchange
(은 lvchange이 수락하는 옵션을 가지고 나타납니다 --force
,하지만 아무것도하지 않는 것). dmsetup
매핑 테이블을 커널에 직접 공급 하려고해도 복구 방법을 알 수 없었습니다.
또한 mdadm
RAID 관리 전용 도구입니다. LVM은 훨씬 더 많은 작업을 수행하지만 RAID 기능이 일종의 영향을받은 것처럼 느낍니다. 적합하지 않습니다.
실제로 LVM RAID가있는 시스템을 어떻게 설치합니까?
다음은 데비안 Jessie 또는 Wheezy에 설치하는 간단한 개요입니다. 제시가 훨씬 쉬워졌습니다. Wheezy에서이 작업을 시도하려면 먼저 모든 내용을 읽으십시오.
netinst 이미지가 아닌 전체 CD 이미지를 사용하여 설치하십시오.
정상적으로 진행하고 디스크 파티셔닝으로 이동하여 LVM 물리 볼륨을 설정하십시오. LVM-RAID를 착용 할 수 있습니다/boot
(Jessie 및 Wheezy에서 아래에 자세히 설명 된 작업이 있음).
볼륨 그룹을 만듭니다. LVM 메뉴에 그대로 두십시오.
첫 번째 재미 – 설치 프로그램에 dm-raid.ko
모듈을로드 하지 않았 거나 사용할 수도 없습니다! 따라서 설치 될 linux-image 패키지에서 가져옵니다. 콘솔로 전환 (예 : Alt- F2)과 :
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
설치 관리자가 LVM-RAID LV를 만드는 방법을 모르므로 명령 줄을 사용해야합니다. 참고 나는 벤치마킹을하지 않았다. -I
아래 의 스트라이프 크기 ( )는 전적으로 VM 설정에 대한 추측입니다.
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
Jessie에서는 스왑에 RAID10을 사용할 수 있습니다. Wheezy에서는 RAID10이 지원되지 않습니다. 대신 두 개의 스왑 파티션 (각 RAID1)을 사용할 수 있습니다. 하지만 당신은 해야한다 을에 넣어 어떤 물리적 볼륨 정확히 말해 아니면 같은 디스크에 미러의 두 반쪽을 넣습니다 . 예. 진심으로. 어쨌든 다음과 같습니다.
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
마지막으로 설치 프로그램으로 다시 전환하고 LVM 메뉴에서 'Finish'를 누르십시오. 이제 많은 논리 볼륨이 표시됩니다. 현재 진행 상황을 이해하지 못하는 설치 관리자입니다. 이름 이 rimage
있거나 rmeta
이름이 붙은 모든 것을 무시 하십시오 (위의 첫 번째 단락의 방법을 참조하십시오).
계속해서 파일 시스템, 스왑 파티션 등을 정상적으로 만듭니다. grub 프롬프트가 표시 될 때까지 기본 시스템 등을 설치하십시오.
Jessie에서는 grub2가 MBR에 설치되어 있거나 EFI와 함께 설치되어 있으면 작동하지만 테스트하지는 않았습니다. Wheezy에서는 설치가 실패하며 Jessie의 grub2를 백 포트하는 것이 유일한 해결책입니다. 그것은 실제로 상당히 쉽습니다. Wheezy에서 깔끔하게 컴파일됩니다. 어떻게 든 백 포트 된 grub 패키지를 가져 오십시오 /target
(또는 chroot 다음에 잠시 후에 수행하십시오).
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
실제로 가장 최근의 Jessie VM에서 grub-install이 중단되었습니다. F2로 전환하고을 수행 한 while kill $(pidof vgs); do sleep 0.25; done
다음 lvs
grub-install을 수행했습니다. 그럼에도 불구하고 유효한 구성을 생성하는 것처럼 보였지만, 내가 chroot /target /bin/bash
했는지 확인 /proc
하고 /sys
마운트 하고 수행 한 경우를 대비 하여 update-grub
. 그때는 완성되었습니다. 그런 다음 dpkg-reconfigure grub-pc
모든 가상 디스크의 MBR에 grub 설치를 선택했습니다.
Wheezy에서 위의 작업을 수행 한 후 '부트 로더없이 계속'을 선택하십시오.
설치를 완료하십시오. 부팅됩니다. 아마.
커뮤니티 지식
에 대해 아는 사람들 mdadm
이 많으며 배포 경험이 풍부합니다. Google은 귀하가 가진 대부분의 질문에 답변 할 것입니다. 일반적으로 여기에 대한 질문은 아마 하루 안에 대답을 얻을 것으로 기대할 수 있습니다.
LVM RAID에 대해서도 마찬가지입니다. 가이드를 찾기가 어렵습니다. 내가 실행 한 대부분의 Google 검색은 mdadm 배열을 PV로 사용하는 데 도움이됩니다. 솔직히 말하면 이것은 아마도 새롭고 덜 일반적으로 사용되기 때문일 것입니다. 어쨌든, 이것을 반대하는 것은 불공평하지만 어떤 일이 잘못되면 mdadm 주변의 훨씬 더 큰 기존 커뮤니티가 내 데이터를 복구 할 가능성이 높아집니다.
결론
LVM-RAID는 상당히 빠르게 발전하고 있습니다. Wheezy에서는 적어도 LVM과 커널의 백 포트를 수행하지 않고는 실제로 사용할 수 없습니다. 2014 년 초, 데비안 테스트에서는 흥미롭지 만 완성되지 않은 아이디어처럼 느껴졌습니다. 기본적으로 Jessie가 될 현재 테스트는 다른 RAID 구성 (관리상의 악몽 mdadm
)으로 작은 조각을 자주 만들어야하는 경우 실제로 사용할 수있는 것처럼 느껴집니다 .
LVM을 사용하여 파티션으로 분할 된 몇 개의 큰 mdadm RAID 어레이가 사용자의 요구를 적절히 충족시키는 경우 계속 사용하는 것이 좋습니다. 대신 많은 어레이 (또는 논리 볼륨 어레이)를 만들어야하는 경우 대신 LVM-RAID로 전환하십시오. 그러나 좋은 백업을 유지하십시오.
클러스터 스토리지 / 객체 시스템, ZFS 및 btrfs와 같은 것들이 LVM RAID (및 mdadm RAID)를 많이 사용하고 있습니다. 나는 또한 그것들을 조사 할 것을 권장합니다.
고마워요
LVM-RAID의 상태를 다시 방문하여이 게시물을 업데이트하게 해준 psusi 에게 감사의 말씀 을 전 합니다.
각주
장치 매퍼를 사용하여 메타 데이터와 데이터를 결합하는 방식으로 붙일 수 있다고 생각 mdadm --assemble
합니다. 물론, mdadm
논리 볼륨에서 정상적으로 실행할 수 있습니다.
Wheezy 설치를 수행 할 때 처음으로 실패했으며 grub 구성이 없었습니다. grub 프롬프트에서 모든 정보를 입력하여 시스템을 부팅해야했습니다. 부팅되면 제대로 작동하므로 설치 프로그램에서 제대로 작동한다고 생각합니다. grub 프롬프트에서 종료하면 입력 할 매직 라인은 다음과 같습니다.
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
initrd /boot/initrd.image-3.2.0-4-amd64
boot
추신 : 실제로 원래 실험을 한 지 오래되었습니다. 내가 만든 원래의 음이 가능합니다. 나는 지금이 답변에서 다루는 더 최근의 것들을 수행했지만 그 노트는 아닙니다.