존재하다"혼합 공격 유형"이라는 질문에 대한 그의 답변, HBruijn은 보다 표준적인 MDRAID 대신 LVM을 사용하여 RAID를 구현할 것을 권장했습니다.
조사 결과 LVM은 RAID 기능도 지원하는 것으로 나타났습니다. 예전에는 MDRAID 위에 LVM을 사용했는데, LVM이 RAID 기능도 지원한다는 사실을 지금까지는 몰랐습니다. 이것은 비교적 새로운 개발인 것 같지만 언제 구현되었는지는 알 수 없습니다.
따라서 이는 Linux에서 소프트웨어 RAID를 구현하는 대체 방법입니다. 이 두 가지 접근 방식의 장단점은 무엇입니까? 사람들이 어떤 방법이 더 나은지 결정할 수 있도록 두 가지 방법 간의 기능 비교를 찾고 있습니다. 실험을 기반으로 한 결론(예: 다음과 같은 이유로 이 기능은 작동하지 않지만 이 기능은 작동함)도 괜찮습니다. 단, 답변에 데이터를 포함해야 합니다.
해결해야 할 몇 가지 구체적인 문제는 다음과 같습니다.
- sw RAID + LVM(일반적인 시나리오)을 수행하고 싶다고 가정해 보겠습니다. sw RAID에 대한 LVM 지원을 사용해야 하므로 두 개가 아닌 하나의 유틸리티를 사용해야 합니까? 이러한 보다 통합된 접근 방식에는 어떤 이점이 있습니까?
- 보다 성숙한 MDADM에 비해 sw RAID에 대한 LVM 지원에 심각한 결함이 있습니까? 구체적으로 LVM의 sw RAID 지원은 얼마나 안정적이고 버그가 없습니까? 이 지원은 2011년까지만 지원되는 것으로 보이지만(아래 참조) MDADM은 훨씬 오래된 것입니다. 또한 기능 세트 측면에서 어떻게 비교됩니까? MDADM에 비해 명백한 기능적 단점이 있습니까? 반대로 MDADM에 없는 sw RAID 기능을 지원합니까?
노트:
자세한 논의는 참조 http://www.olearycomputers.com/ll/linux_mirrors.html그런데 그 글이 쓰여진 날짜를 찾을 수가 없어요.
Serverfault에 대한 비슷한 질문:Linux LVM 이미지 및 MD 이미지. 하지만 이 질문은 2010년에 제기된 질문이므로 답변이 오래되었을 수 있습니다.
버전 2.02.87 - 2011년 8월 12일에 대한 변경 로그 항목은 다음과 같습니다.
MD RAID 1/4/5/6을 지원하는 새로운 세그먼트 유형 'raid'를 얻으려면 config --with-raid를 추가하세요.
따라서 LVM의 RAID 지원은 3년이 된 것 같습니다.
답변1
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의 모든 옵션을 사용자 정의할 수는 없습니다.
LVM RAID는 이전 버전(예: Debian Wheezy의 버전)에서의 확장도 지원하지 않습니다. 예를 들어 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
그러나 어레이의 성능이 저하되었다는 징후는 없습니다. 디스크를 다시 연결하고 두 번째 디스크를 삭제했습니다. 계속 실행하세요(raid6입니다). 다시 게시했지만 여전히 프롬프트가 없습니다 lvs
. 나는 lvconvert --repair
볼륨을 실행했고 괜찮다고 말했습니다. 그런 다음 세 번째 디스크를 뽑았는데... 기계가 멈췄습니다. 다시 연결하고 재부팅했는데 해결 방법을 모르겠습니다. mdadm --force --assemble
문제를 해결할 것입니다. 해당 옵션 vgchange
도 없는 것 같습니다 lvchange
(lvchange는 이를 허용 --force
하지만 아무 것도 하지 않는 것 같습니다). 매핑 테이블을 커널에 직접 공급 하려고 해도 dmsetup
복원 방법을 모르겠습니다.
또한 mdadm
RAID 관리를 위해 특별히 설계된 전용 도구입니다. LVM은 더 많은 기능을 수행하지만 RAID 기능이 너무 적합하지 않다고 느껴집니다.
LVM RAID가 있는 시스템을 실제로 어떻게 설치합니까?
다음은 Debian Jessie 또는 Wheezy에 설치하는 방법에 대한 간략한 개요입니다. Jesse가 훨씬 쉽습니다. 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 메뉴에서 마침을 클릭합니다. 이제 당신은많은표시된 논리 볼륨의 수입니다. 이는 설치 프로그램이 무슨 일이 일어나고 있는지 이해하지 못했기 때문입니다. 이름이 포함된 내용은 무시하세요
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 설치가 중단되었습니다. F2로 전환하고 실행
while kill $(pidof vgs); do sleep 0.25; done
한 다음 동일한 명령을 실행하여lvs
grub-install을 통해 가져옵니다. 그래도 유효한 구성을 생성하는 것 같았지만 만약에 대비해서 설치 되었는지chroot /target /bin/bash
확인한 다음 그렇게 했습니다 . 때가 되면 끝난다. 그런 다음 모든 가상 디스크의 MBR에 grub을 설치하기로 결정했습니다 ./proc
/sys
update-grub
dpkg-reconfigure grub-pc
Wheezy에서는 위 작업을 수행한 후 "부트로더 없이 계속"을 선택합니다.
설치를 마칩니다. 시작됩니다. 아마도.
지역사회 지식
mdadm
이에 대해 알고 있고 배포 경험이 풍부한 사람들이 꽤 있습니다 . Google은 아마도 귀하와 관련된 대부분의 질문에 답할 것입니다. 일반적으로 여기에 대해 질문하면 하루 안에 답변을 얻을 수 있습니다.
LVM RAID에서는 그렇지 않습니다. 가이드를 찾기가 어렵습니다. 내가 실행하는 대부분의 Google 검색에는 mdadm 배열을 PV로 사용하는 방법이 나와 있습니다. 솔직히, 그것은 아마도 더 새롭고 덜 일반적으로 사용되기 때문일 것입니다. 어떤 면에서는 이에 반대하는 것이 불공평하다고 느껴지지만, mdadm 주변의 기존 커뮤니티는 규모가 더 크고 문제가 발생할 경우 내 데이터를 복구할 가능성도 더 높습니다.
결론적으로
LVM-RAID의 개발은 매우 빠릅니다. Wheezy에서는 실제로 사용할 수 없습니다(적어도 LVM 및 커널을 백포팅하지 않으면 가능). 2014년 초 데비안 테스트에서는 흥미롭지만 아직 완성되지 않은 아이디어처럼 느껴졌습니다. 기본적으로 Jessie가 될 현재 테스트는 다양한 RAID 구성으로 타일을 자주 생성해야 하는 경우(관리하기가 악몽일 수 있음 mdadm
) 실제로 사용할 수 있는 것처럼 느껴집니다.
대규모 mdadm RAID 어레이(LVM을 사용하여 분할됨)로 귀하의 요구 사항을 적절하게 충족할 수 있다면 계속 진행하는 것이 좋습니다. 결국 많은 어레이(논리 볼륨 어레이 포함)를 생성해야 하는 경우 대신 LVM-RAID 사용을 고려하십시오. 하지만 백업을 잘 유지하시기 바랍니다.
LVM RAID(및 mdadm RAID)의 많은 사용이 클러스터형 스토리지/객체 시스템, ZFS 및 btrfs와 같은 것으로 대체되고 있습니다. 나는 이것들도 조사해 보는 것이 좋습니다. 귀하의 요구에 더 잘 맞을 수도 있습니다.
감사합니다
나는 감사하고 싶다푸수시LVM-RAID의 상태를 다시 살펴보고 이 기사를 업데이트하겠습니다.
각주
나는 당신이 어떻게든 메타데이터와 데이터를 함께 붙이기 위해 장치 매퍼를 사용할 수 있다고 생각합니다
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
추신: 원래 실험을 실제로 한 지 꽤 시간이 지났습니다. 난 내 일을 다 했어원주쓸 수 있는. 나는 이제 해당 노트가 아닌 이 답변에서 다루는 더 최근 작업을 수행했습니다.
답변2
또한 LVM이 RAID를 수행할 수 있다는 것도 몰랐습니다. 개인적으로 저는 mdadm이 동일한 작업을 수행할 수 있는 보다 성숙한 소프트웨어이기 때문에 계속 사용하겠습니다. LVM RAID에 문제가 있는 경우 mdadm만큼 많은 지원을 받지 못할 수 있습니다. 또한 LVM은 역사적으로 가장 강력한 소프트웨어가 아닌 것으로 입증되었기 때문에 LVM RAID를 신뢰하지 않습니다.
ZFS와 BTRFS는 미래를 나타냅니다. 블록 레이어가 달성할 수 있는 것 이상의 이점을 제공합니다. 호환성을 찾지 않는 한 LVM/mdadm을 다시 사용하지 않을 것입니다. ZFS 및 BTRFS에는 압축, 중복 제거, 기록 중 복사와 같은 많은 기능이 있지만 범위를 벗어나는 부분이므로 여기서는 자세히 다루지 않겠습니다.
마지막으로, 조사를 수행하고 필요/원하는 것에 맞는 것을 사용하십시오.