LVM과 MDRAID를 사용한 RAIDing-장단점?


51

에서 질문 "혼합 RAID 유형"에 대한 그의 대답 , HBruijn는 더 많은 표준 MDRAID 대 RAID를 구현하는 LVM을 사용하여 제안합니다.

약간의 조사 끝에 LVM도 RAID 기능을 지원하는 것 같습니다. 과거에는 MDRAID를 기반으로 LVM을 사용했지만 LVM도 RAID 기능을 지원한다는 사실을 알지 못했습니다. 이것은 비교적 최근의 개발 인 것 같지만 이것이 언제 구현되었는지 정확히 알지 못했습니다.

따라서 Linux에서 소프트웨어 RAID를 구현하는 다른 방법입니다. 이 두 가지 접근 방식의 장단점은 무엇입니까? 사람들이 더 나은 방법을 결정할 수 있도록 두 가지 접근 방식의 기능 비교를 찾고 있습니다. 실험을 기반으로 한 결론 (이 기능은이 기능뿐만 아니라 작동하지 않으므로 여기에 이유가 있습니다)도 답변에 데이터를 포함하면 좋습니다.

해결해야 할 몇 가지 특정 문제 :

  1. sw RAID + LVM (일반적인 시나리오)을 원한다고 가정합니다. sw RAID에 대해 LVM의 지원을 사용해야하므로 2 개 대신 1 개의 유틸리티를 사용해야합니까? 이보다 통합 된 접근 방식에 장점이 있습니까?
  2. sw RAID에 대한 LVM 지원은보다 성숙한 MDADM에 비해 상당한 결함이 있습니까? 특히 sw RAID에 대한 LVM 지원은 얼마나 안정적 / 버그 프리입니까? 이 지원은 2011 년으로 돌아가고 (아래 참조) MDADM은 훨씬 오래되었습니다. 또한 기능 세트 측면에서 어떻게 비교됩니까? MDADM에 비해 기능상의 결함이 있습니까? 반대로 MDADM에없는 sw RAID 기능을 지원합니까?

노트:

  1. http://www.olearycomputers.com/ll/linux_mirrors.html에 자세한 토론이 있지만 작성된 날짜를 찾을 수 없습니다.

    Serverfault와 비슷한 질문 : linux LVM mirror vs. MD mirror . 그러나이 질문은 2010 년에 요청되었으며 답변이 오래되었을 수 있습니다.

  2. 버전 2.02.87-2011 년 8 월 12 일에 대한 변경 로그 항목은

    MD RAID 1/4/5/6 지원을위한 새로운 segtype 'raid'를위한 configure --with-raid 추가

    따라서 LVM의 RAID 지원은 약 3 년 된 것 같습니다.


내가 생각할 수있는 한 가지 장점은 LVM에 사용 가능한 HA 관련 기능을 사용한다는 것입니다.
Bratchley

1
@JoelDavis 정교하게 할 수 있습니까? HA 관련 기능의 의미를 모르겠습니다.
Faheem Mitha

또한 볼륨 대신 논리 볼륨으로 작업 할 때 일반적으로 이점이 있습니다 md. 따라서 장치간에 이동할 수 lvextend있고 pvmove사용할 수있는 반면 md프로세스는 분명한 이점없이 훨씬 더 수동적입니다.
Bratchley

@JoelDavis가 답을 쓸까요?
Faheem Mitha

2
LVM은 항상 raid1 및 raid0을 지원했습니다. 최근에는 자체 구현을 중단하고 대신 내부적으로 md의 습격 성격 코드를 사용하여 다른 습격 레벨을 열었습니다.
psusi

답변:


55

LVM RAID는 얼마나 성숙하고 기능적인가?

LVM-RAID는 실제로 덮개 아래에서 mdraid입니다. 기본적으로 RAID 장치 당 두 개의 논리 볼륨을 생성하여 작동합니다 (하나는 "rimage", 메타 데이터는 "rmeta"). 그런 다음 이들을 기존 mdraid 드라이버로 전달합니다. 따라서 디스크 읽기 오류 처리, I / O로드 밸런싱 등은 상당히 성숙해야합니다.

좋은 소식입니다.

도구

당신은 그것을 사용할 수 없으며 mdadm(적어도 쉬운 방법은 아닙니다 ¹) LVM RAID 도구는 거의 성숙하지 않습니다. 예를 들어, Debian Wheezy에서는 lvsRAID5 동기화 상태를 알려줄 수 없습니다. 복구 및 복구 (특히 "그렇지 않아야합니다!"상황에서)가 mdadm만큼 좋은 위치에 있다는 것은 의심의 여지가 있습니다. mdadm은 쉬웠을 것입니다).

특히 모든 도구의 최신 버전을 사용하지 않으면 더 나빠집니다.

누락 된 기능

현재 버전의 LVM-RAID는 lvreduceRAID 논리 볼륨 축소 ( )를 지원하지 않습니다 . 또한 디스크 수 또는 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매핑 테이블을 커널에 직접 공급 하려고해도 복구 방법을 알 수 없었습니다.

또한 mdadmRAID 관리 전용 도구입니다. LVM은 훨씬 더 많은 작업을 수행하지만 RAID 기능이 일종의 영향을받은 것처럼 느낍니다. 적합하지 않습니다.

실제로 LVM RAID가있는 시스템을 어떻게 설치합니까?

다음은 데비안 Jessie 또는 Wheezy에 설치하는 간단한 개요입니다. 제시가 훨씬 쉬워졌습니다. Wheezy에서이 작업을 시도하려면 먼저 모든 내용을 읽으십시오.

  1. netinst 이미지가 아닌 전체 CD 이미지를 사용하여 설치하십시오.

  2. 정상적으로 진행하고 디스크 파티셔닝으로 이동하여 LVM 물리 볼륨을 설정하십시오. LVM-RAID를 착용 있습니다/boot (Jessie 및 Wheezy에서 아래에 자세히 설명 된 작업이 있음).

  3. 볼륨 그룹을 만듭니다. LVM 메뉴에 그대로 두십시오.

  4. 첫 번째 재미 – 설치 프로그램에 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
    
  5. 설치 관리자가 LVM-RAID LV를 만드는 방법을 모르므로 명령 줄을 사용해야합니다. 참고 나는 벤치마킹을하지 않았다. -I아래 의 스트라이프 크기 ( )는 전적으로 VM 설정에 대한 추측입니다.

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. 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
    
  7. 마지막으로 설치 프로그램으로 다시 전환하고 LVM 메뉴에서 'Finish'를 누르십시오. 이제 많은 논리 볼륨이 표시됩니다. 현재 진행 상황을 이해하지 못하는 설치 관리자입니다. 이름 이 rimage있거나 rmeta이름이 붙은 모든 것을 무시 하십시오 (위의 첫 번째 단락의 방법을 참조하십시오).

  8. 계속해서 파일 시스템, 스왑 파티션 등을 정상적으로 만듭니다. grub 프롬프트가 표시 될 때까지 기본 시스템 등을 설치하십시오.

  9. 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
    
  10. 실제로 가장 최근의 Jessie VM에서 grub-install이 중단되었습니다. F2로 전환하고을 수행 한 while kill $(pidof vgs); do sleep 0.25; done다음 lvsgrub-install을 수행했습니다. 그럼에도 불구하고 유효한 구성을 생성하는 것처럼 보였지만, 내가 chroot /target /bin/bash했는지 확인 /proc하고 /sys마운트 하고 수행 한 경우를 대비 하여 update-grub. 그때는 완성되었습니다. 그런 다음 dpkg-reconfigure grub-pc모든 가상 디스크의 MBR에 grub 설치를 선택했습니다.

  11. Wheezy에서 위의 작업을 수행 한 후 '부트 로더없이 계속'을 선택하십시오.

  12. 설치를 완료하십시오. 부팅됩니다. 아마.

커뮤니티 지식

에 대해 아는 사람들 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 에게 감사의 말씀 을 전 합니다.

각주

  1. 장치 매퍼를 사용하여 메타 데이터와 데이터를 결합하는 방식으로 붙일 수 있다고 생각 mdadm --assemble합니다. 물론, mdadm논리 볼륨에서 정상적으로 실행할 수 있습니다.

  2. 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 버전으로 인해 오류가 발생하는 것은 매우 오래되고 버그가 있습니다. lvm 버전 2.02.98의 우분투 14.04에서 나에게 잘 작동합니다 (제시는 적어도 새로운 것으로 생각합니다). 두 번째로, 실패한 명령은 크기 조정입니다. 모양 변경은 완전히 다릅니다. 형태 변경은 raid1에서 raid5로, 또는 3 개의 디스크 raid5에서 4 개의 디스크 raid5로 변경하는 것을 의미합니다. 그것은 여전히 ​​지원되지 않지만 단순히 크기를 변경하면 정상적으로 작동합니다.
psusi

@psusi 아, 크기 조정도 재구성이라고 생각한다고 생각합니다 (디스크 수를 변경하는 것과 거의 비슷하게 RAID 구조가 변경되기 때문에). Jessie에서도 오류가 발생하기 전에 다시 테스트 할 것이라고 생각했습니다. (새 Jessie LVM-RAID VM을 구축해야하므로 약간 시간이 걸립니다.) 감사합니다.
derobert

dpkg-deb단계적으로 뛰어 다닐 필요없이 deb 패키지에서 파일을 추출하는 더 확실한 방법을 제공합니다.
muru

@muru는 dpkg-deb설치 프로그램 환경에서 사용할 수 있습니까? 예전에는 사용되지 않았습니다. Wheezy도 확인하십시오.
derobert

@derobert ar -x는 deb 아카이브의 압축을 풀기 위해 노력해야하지만 더 복잡 합니다. 또한 현재 상태로 답변을 업데이트하는 방법은 무엇입니까?
Faheem Mitha

7

LVM도 RAID를 수행 할 수 있다는 것을 몰랐습니다. 개인적으로, mdadm은 동일한 기능을 수행하는 훨씬 성숙한 소프트웨어이기 때문에 mdadm을 사용합니다. LVM RAID에서 문제가 발생하면 mdadm을 사용했을 때보 다 많은 지원을받지 못할 수 있습니다. 또한 LVM은 역사적으로 가장 강력한 소프트웨어가 아니기 때문에 LVM RAID를 신뢰하지 않습니다.

ZFS와 BTRFS는 미래입니다. 그들이주는 이점은 블록 레이어에서 가능한 것 이상의 것을 제공합니다. 호환성을 목표로하지 않는 한 더 이상 LVM / mdadm을 사용하지 않습니다. ZFS와 BTRFS에는 압축, 중복 제거 및 COW (Copy-On-Write)와 같은 많은 기능이 있지만 여기서는 범위를 벗어나므로 여기서 다루지 않겠습니다.

결국 연구를 수행하고 필요 / 원하는 바에 맞는 것을 사용하십시오.


답변 해주셔서 감사합니다. LVM을 신뢰하지 않는 이유에 대해 조금 확장 해보십시오.
Faheem Mitha

2
"ZFS와 BTRFS는 미래입니다"반드시 그런 것은 아닙니다. 내 지식으로는 Linux의 ZFS는 여전히 FUSE 기반이므로 Solaris 또는 FreeBSD를 사용하지 않고 ZFS 기능을 얻는 데 주로 사용됩니다. BTRFS는 대단하지만 반드시 미래는 아닙니다. 예를 들어, Red Hat은 LVM+XFSBTRFS 가 아닌 방향으로 더 나아가고있는 것 같습니다. BTRFS를 지원하지만 Oracle / SuSE에 가깝습니다.
Bratchley

어떤 이유로 btrfs를 좋아하지 않는다고 말할 수는 없습니다 (실제로 많이 좋아합니다). 그것은 단지 Red Hat과 같은 주요 배포판이 가고있는 방향이 아니며 LTR / XFS가 적어도 대략적으로 잘 할 수 없다는 BTRFS가 할 수있는 일을 생각할 수 없습니다.
Bratchley

또한 BTRFS는 훌륭하지만 LVM은 BTRFS가 할 수없는 많은 일을 할 수 있다고 말합니다 (아직). 예를 들어 (AFAIK) BTRFS가 수행 할 수없는 하이브리드 볼륨 및 씬 프로비저닝 스냅 샷을 수행 할 수 있습니다.
Bratchley

9
"제 생각에 Linux의 ZFS는 여전히 퓨즈 기반입니다"이것은 5 년 이상 잘못되었습니다. ZoL은 커널 모듈이며 생산 준비가 완료되었습니다. 2010 년 초부터 광범위하게 사용하고 있습니다.
Jim Salter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.