RAID 1 모드에서 BTRFS를 사용하여 여러 장치에 Debian Jessie를 올바르게 설치하는 방법은 무엇입니까?

RAID 1 모드에서 BTRFS를 사용하여 여러 장치에 Debian Jessie를 올바르게 설치하는 방법은 무엇입니까?

간략한 소개로서 제가 어떤 종류의 설정을 갖고 있고 무엇을 달성하려고 하는지 말씀드리겠습니다. 그 후에 나는 내 문제를 설명하려고 노력합니다. 이것이 U&L에 대한 첫 번째 질문이므로, 이상할 수도 있다는 점에 대해 사과드립니다. 꽤 길기 때문에 BTRFS 또는 Debian의 새로운 사용자가 내 경험을 활용하거나 일종의 튜토리얼로 사용할 수도 있습니다.

기본 하드웨어 설정

저는 마더보드와 Haswell 세대 CPU, 일부 RAM, 두 개의 SSD를 가지고 있습니다.

(참고: 정확한 진단을 위해 이 부분 외에는 연결을 하지 않았습니다. 이 부분에 대해 더 많은 정보가 필요하신 경우, 언제든지 문의해 주시기 바랍니다.)

Debian Jessie를 두 개의 SSD에 설치하고 RAID 1 모드에서 BTRFS를 사용하여 두 드라이브를 모두 미러링하고 싶습니다. 그러면 한 드라이브에 장애가 발생하더라도 다른 드라이브를 성능 저하 모드에서 계속 사용할 수 있습니다.

내가 또 무엇을 성취했는가?

Jessie는 현재 테스트 중이므로 과거에 테스트 브랜치를 설치하는 데 문제가 있었기 때문에 이전 버전인 Wheezy를 새로 설치하기 시작했습니다. 설치하는 동안 첫 번째 드라이브를 분할했습니다(예:) 수동 방법은 다음과 같습니다.

  • 파티션은 하나만 있습니다(드라이브의 사용 가능한 모든 공간을 사용하는 모든 향후 마운트 지점 포함).
  • BTRFS 형식 및
  • 스왑 파티션은 그대로 둡니다.

설치가 성공적으로 완료되었습니다.예상대로, 그 후 Jessie로 업그레이드했습니다(edit /etc/apt/sources.list및 exec 를 통해 apt-get update && dist-upgrade). 재부팅을 수행했습니다. 이제 커널 3.14-2-amd64가 괜찮은 것으로 나타났습니다.

그 후 다른 드라이브를 준비하기 시작합니다(예:두번째). 파티션 테이블을 복사했어요그리고 sfdisk -d /dev/sda > /tmp/sda.pt다시 버려두번째그리고 sfdisk /dev/sdb < /tmp/sda.pt.

이제 다음 명령을 사용하여 장치를 추가하고 RAID 1로 변환할 준비가 되었습니다.

mount /dev/sda1 /mnt
btrfs device add /dev/sdb1 /mnt
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

btrfs filesystem show/dev/sda1별칭이 포함된 RAID 1을 보면 여기까지는 모든 것이 성공적이었습니다./dev/sdb1별칭두번째. 또한 blkidUUID는 동일하고 UUID_SUB가 다른 두 개의 드라이브도 나열됩니다.

/etc/fstab방금 몇 가지 SSD 관련 마운트 옵션을 추가했으며 마운트 지점은 거의 변경되지 않았습니다.

UUID=01234567-89ab-cdef-0123-456789abcdef / btrfs  defaults,noatime,nodiratime,discard  0   1

재부팅 후 시스템은 운영 체제로 완전히 부팅됩니다. 위 명령은 btrfs filesystem show여전히 blkid​​동일한 결과를 보여줍니다. RAID 1이 작동하는 것 같습니다.

나의 질문과 나의 질문

시스템이 콜드 부팅되기 전에 전원을 뽑았습니다.두번째(완전한 장치 오류 시뮬레이션)사용할 수 있으며 BTRFS는 여전히 성능 저하 모드에서 부팅되는 것으로 간주됩니다. 그러나 그것은 진실이 아니다. initramfs가 장치를 찾을 수 없다는 오류가 발생합니다.

  1. 이것이 BTRFS의 예상된 동작입니까, 아니면 내 initramfs에 문제가 있습니까? (아마 이것이 BTRFS가 오프라인 상태에서 드라이브가 손상되었음을 알려주는 방법일 것입니다.)

    ㅏ. 하나의 드라이브로만 부팅이 가능한가요?, 새 드라이브를 삽입(핫 스왑)합니다.온라인으로 다시 동기화하시겠습니까?

    박쥐btrfs.wiki.kernel.org성능 저하 모드에서 결함이 있는 장치를 먼저 설치한 다음 새 장치를 추가하라는 내용이 언급되어 있습니다. 이것이 유일한 방법입니까?

    (스스로에게 말하세요. 다른 베어 장치에 연결하여 테스트하겠습니다.무슨 일이 일어나는지 확인하세요. 아마도 독일 자료를 연구한 후에 이 질문에 스스로 답할 수 있을 것입니다.wiki.ubuntuusers.de.)

  2. 드라이버는 어떻게 만드나요?두번째부팅도 가능해집니다(드라이브가파괴될까)? 동기화 /boot? 장치에 GRUB만 설치해야 합니까?두번째아니면 grub-install /dev/sdb더 해야 하나요?

  3. fstab에서 마운트 옵션을 사용하는 것이 유용하지 ssd않은 것 같나요?btrfs.wiki.kernel.org자동으로 활성화된다고 설명하시나요? 나에게는 이것이 운영 체제가 SSD를 제대로 감지할 수 없는 경우에만 필요한 것 같습니다.

답변1

질문 1에 대한 답변 - 드라이브 고장 후 시작하는 방법

다음 단계에 따라 RAID 1을 복원할 수 있습니다.

  1. 어떤 방식으로든 포맷된 드라이브를 가져갔습니다(예:) 동일한 SATA 포트에 연결합니다.결함 있는운전하다두번째이전이었습니다.

  2. 그 후 컴퓨터를 시작하고 부팅 메뉴에서 e사전 부팅 편집 명령을 눌렀습니다.wiki.ubuntuusers.de에 의해:

    ㅏ. 관련 시작 항목으로 스크롤하여 다음 줄을 찾았습니다.

    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  01234567-89ab-cdef-0123-456789abcdef
    else
      search --no-floppy --fs-uuid --set=root 01234567-89ab-cdef-0123-456789abcdef
    fi
    echo    'Loading Linux 3.14-2-amd64...'
    linux   /boot/vmlinuz-3.14-2-amd64 root=UUID=01234567-89ab-cdef-0123-456789abcdef ro  quiet
    

    b. 그런 다음 라인 1을 편집하고 드라이브 번호를 작동 중인 하드 드라이브로 변경했습니다(제 경우에는 여전히 거기에 있었으며 hd0여러 드라이브가 여전히 연결되어 있을 수 있습니다 hd1).

    set root='hd0,msdos1'
    

    씨. 주석을 달기 위해 선행 문자를 추가하여 2~6행을 비활성화했습니다 #.

    #if [ x$feature_platform_search_hint = xy ]; then
    #  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  01234567-89ab-cdef-0123-456789abcdef
    #else
    #  search --no-floppy --fs-uuid --set=root 01234567-89ab-cdef-0123-456789abcdef
    #fi
    

    d. 그런 다음 8행을 편집하고 루트 플래그를 삽입하여 RAID( rootflags=degraded)를 낮췄습니다.

    linux   /boot/vmlinuz-3.14-2-amd64 root=UUID=01234567-89ab-cdef-0123-456789abcdef ro rootflags=degraded quiet
    

    e. 이 키를 누르면 F10방금 편집한 항목이 선택됩니다. 시스템이 시작되는 중입니다.

  3. OS를 완전히 부팅한 후 새 드라이브를 추가해야 했습니다.내 RAID 1로. 위에서 말한대로 했어요btrfs.wiki.kernel.org:

    ㅏ. 아직 작동하는 드라이브를 설치했습니다.:

    mount -o degraded /dev/sda1 /mnt
    

    b. 새 드라이브를 추가했습니다.:

    btrfs device add /dev/sdb1 /mnt
    

    씨. 그 후 이전 장치를 삭제했습니다(내 경우에는 드라이브두번째):

    btrfs device delete missing /mnt
    
  4. 마지막으로 위의 질문에서 언급 한 대로 btrfs filesystem show모든 것이 잘 진행되었는지 확인하기 위해 명령을 확인했습니다 . 두 드라이브 모두 UUID는 동일하지만 UUID_SUB가 다르며 RAID 1 모드에 있는 것으로 보고됩니다.blkidbtrfs fi df /mnt

    축하해요, 성공했어요!

개인 메모

다른 사람이 내가 틀렸다는 것을 증명할 때까지 예상대로 실패한 initramfs를 설명된 대로 처리합니다. 어쩌면 이것은 내 디스크가 너무 심하게 충돌하므로 이제 신중하게 대응해야 한다는 것을 알려주는 방법일 수도 있습니다. 그러나 그것은 단지 추측일 뿐입니다.

수동 다운그레이드 필요성에 대한 지침

그러던 중 이 주제와 관련된 흥미로운 토론을 발견했습니다.Linux 커널 개발자 메일링 리스트. 관련성 때문에 특히 신규 사용자의 경우 이해하는 것이 매우 중요하다고 생각되는 Duncan이 작성한 구절을 인용하고 싶습니다.

하나의 장치만 사용하여 다운그레이드 마운트 옵션을 사용하여 두 개의 장치 btrfs raid1 파일 시스템을 마운트할 수 있어야 하지만 현재 커널은 이 경우 읽기-쓰기 마운트를 거부하므로 두 번째 장치를 추가할 때까지 읽기 전용 액세스 권한을 갖게 됩니다. 일반 raid1 모드를 다시 수행할 수 있도록 btrfs 장치에 장치를 추가합니다. [...] 또한 btrfs가 실제로 파일 시스템의 모든 구성 요소를 찾을 수 있는 경우 다운그레이드된 mount-opt는 사실상 작동하지 않기 때문에 일부 사람들은 단순히 표준 마운트 옵션에 다운그레이드를 추가하기로 선택합니다(grub 구성을 편집하여 추가) 부팅할 때마다 나타납니다) 따라서 이에 대해 걱정할 필요가 없습니다. 그러나 설치를 다운그레이드하지 못하면 시스템 관리자에게 매우 잘못된 일이 발생하여 이를 수정해야 한다는 경고가 전달된다는 통념이 있기 때문에 이는 권장되지 않습니다. 그런 다음 원하는 경우 파일 시스템을 마운트하여 부팅할 수 있도록 일시적으로 성능 저하를 추가할 수 있지만 부팅할 때마다 해당 옵션을 정기적으로 추가하면 이 중요한 경고가 무시되고 결과적으로 관리자는 문제를 무시할 가능성이 높습니다. (또는 전혀 몰랐습니다) 너무 늦을 때까지.

(원천:https://www.mail-archive.com/[이메일 보호됨]/msg31265.html)

추가 참고 사항: 비록 제 예시 컴퓨터에는 스왑 파티션이 없지만, 스왑 파티션을 갖고 싶은 사람이라면 누구나 제가 링크한 이 흥미로운 이메일을 읽어보시길 권하고 싶습니다. RAID 모드에서 BTRFS로 스왑하는 방법을 설명하고 있기 때문입니다. .


질문 2에 대한 답변 - 다른 드라이브를 부팅 가능하게 만드는 방법

지금까지 내가 아는 한, grub-install /dev/sdb(추가 update-grub도) 사용하는 것만으로는 충분하지 않은 것 같습니다. 제가 그렇게 생각하는 이유를 설명하겠습니다.

드라이브를 오프라인으로 분리하여 반대의 경우드라이브를 사용해서만 부팅두번째다음과 같은 일이 일어났습니다. 부트로더 GRUB가 나타났고 질문 1의 2번 항목과 동일한 단계를 따랐습니다. 부팅 프로세스를 확인한 후 F10즉시 중지되고 빈 화면이 표시됩니다(활동 모니터, 검정색 배경, 커서 없음). 분명히 드라이브의 부트로더에 문제가 있는 것 같습니다.두번째. (주의: 저는 RAID 1을 가지고 있으며 첫 번째 드라이브가 "실패"한 후에 두 번째 드라이브에서 부팅할 수 없습니다.)

하드 리셋을 수행하고 드라이브를 연결하여 도움을 받았습니다.또 (그래서그리고두번째둘 다 다시 나타남) 운영 체제로 부팅합니다. 내 운전 때문에그리고두번째작업 드라이브에서 전체 MBR(부트로더 포함)을 복사한 것과 완전히 동일합니다.도착하다두번째원시 모드에서 vs. dd if=/dev/sda of=/dev/sdb bs=512 count=1컴퓨터를 종료하고 드라이브를 뽑았습니다.예전처럼 무슨 일이 일어났는지 추측해 보세요. 다운그레이드 단계를 다시 수행한 후 마침내 드라이브에서만 OS를 부팅할 수 있었습니다.두번째.

요약해야 하는데, 이것이 내 파티션 테이블(GPT가 아닌 MSDOS)과 관련이 있는지 아니면 grub-installBTRFS 또는 다른 것과 결합된 명령과 관련이 있는지는 여전히 알 수 없습니다. 또한 내 원본이 grub-install.

아직 이 문제를 해결하는 중이므로 이 답변을 다시 업데이트하겠습니다. 더 정리하고 싶지만 원래 코드를 연구하는 데 시간이 더 필요합니다.MBR 섹터 레이아웃두 드라이브를 모두 확인하고 문제가 부트로더에서 발생하는지 또는 심지어디스크 ID.


질문 3에 대한 답변 - SSD 마운트 옵션을 처리하는 방법

마더보드가 드라이버 상황을 올바르게 통과할 수 있는지 여부에 따라 다릅니다. 상술 한 바와 같이btrfs.wiki.kernel.orgBTRFS 자체는 운영 체제 값에 의존합니다. 운영 체제의 다른 모듈도 이러한 값에 따라 달라질 수 있으므로 일반적 /sys/block/sdX/queue/rotational으로 해당 값(0: SSD, 1: HDD)을 확인하는 것이 가장 좋습니다 . 값이 적절한 경우 SSD 옵션이 유지됩니다.

관련 정보