단일 장치에서 btrfs raid1과 btrfs -m dup -d dup의 차이점은 무엇입니까

단일 장치에서 btrfs raid1과 btrfs -m dup -d dup의 차이점은 무엇입니까

저는 여러 장치에서 약 2년 동안 btrfs를 사용해 왔습니다.

신뢰할 수 없는 섹터가 있는 HDD(싱글 플래터)에서 일부 btrfs 구성을 테스트할 계획입니다. HDD에 있는 수십 개의 섹터를 읽을 수 없는 경우가 있습니다.

다음 설정에서 데이터 무결성과 전체 읽기 및 쓰기 속도 측면에서 차이가 있습니까?

1 TB HDD
-1 TB btrfs partition created with `mkfs.btrfs -d dup -m dup /dev/sda1`

1 TB HDD
-500 GB partition
-500 GB partition
--500 GB btrfs Raid 1 `mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sda2`

답변1

dup동일한 장치에 여러 파티션을 배치하고 이를 습격하는 대신 변형을 사용하는 것이 좋습니다 . raid 변형은 데이터에 액세스하는 동안 두 복사본을 모두 읽도록 요청하기 때문에 좋지 않습니다(두 장치 중 하나가 더 빠르면 데이터를 더 빨리 사용할 수 있으므로 일반적인 다중 장치 raid에 좋습니다). 단일 장치 회전 장치를 사용하면 읽기 헤드가 서로 다른 파티션 간에 건너뛰게 되므로 대기열에 여러 요청이 있는 경우(일반적인 경우) 성능이 매우 저하됩니다. 대기열 깊이와 CFQ 스케줄러를 늘리면 전체 대기 시간이 약간 줄어들 수 있지만 혼란을 피하는 것이 좋습니다.

변형 dup은 일반적으로 하나의 복사본만 읽을 수 있을 만큼 정상이어야 하며 섹터를 읽을 수 없는 경우에만 다른 복사본으로 대체해야 합니다.

dup구현 에 대해서는 잘 모르겠지만 dup복사 1/2 장치를 첫 번째 복사본에서 멀리 두지 않으므로 dup쓰기 성능도 향상될 것 같습니다. 단일 장치 RAID를 사용하면 쓰기 성능도 나쁠 것입니다. 왜냐하면 하나의 논리적 쓰기 작업은 물리적 회전 장치의 두 위치에 작성되어야 하고 차이는 항상 1/2 장치이므로 실제로 전체를 구현하는 알고리즘으로 끝나기 때문입니다. 회전 장치의 최악의 동작.

답변2

DUP와 RAID1의 한 가지 차이점은 다음과 같습니다.

  • 나처럼 SSD를 사용하지 않을 때 임의의 섹터를 읽을 수 없다고 말하기 시작하는 경우
  • 그런 다음 BTRFS 파티션 헤더의 읽을 수 없는 섹터 중 하나와 BTRFS가 여기에 저장된 항목을 마운트하거나 읽을 수 없으므로 DUP는 PANIC이 될 수 있습니다. RAID1을 사용하는 동안 다른 BTRFS 파티션 헤더에 읽을 수 없는 섹터가 없는 경우 다른 하나를 마운트하고 스크럽을 수행하여 읽을 수 없는 섹터를 다시 씁니다.
  • RAID1은 각각 헤더가 있는 두 개의 파티션을 의미하므로 한 헤더가 손상되고(파티션 다시 포맷) 다른 파티션 헤더가 올바른 경우 다른 파티션을 마운트하고 성능 저하 모드에 액세스하여 수정할 수 있습니다(다른 새 파티션 추가) , 누락된 항목 삭제, RAID1 수준에서 균형 유지)

이제 KingDian SSD에 대한 개인적인 이야기는 전원 공급이 중단된 후 오랜 기간(8일 이상) 후에 무작위로 읽을 수 없는 섹터가 발생하는 문제입니다. BTRFS RAID1이 어떻게 SSD를 저장하고 사용할 수 있는지(읽을 수 없는 섹터에서 충돌이 발생할 때까지).

먼저 BTRFS와 해당 DUP(가까운 미래에 테스트할 예정) 및 RAID1(이미 완벽한 결과로 테스트됨)에 감사를 전하고 싶습니다. 덕분에 KingDian 브랜드의 SSD를 사용할 수 있게 되었습니다. Yucun 및 Samsung 브랜드의 경우 KingDian 브랜드의 SSD 3개를 모두 표시하는 "읽을 수 없는 섹터" 문제가 아직 표시되지 않습니다. 총 11개의 SSD를 사용하고 있는데 KingDian 1개가 죽어서 지금은 10개만 사용하고 있습니다. 그리고 KingDian 1TiB SSD 1개를 사용하기가 두렵습니다(합법적으로 TV 재생을 위해 FAT32 또는 NTFS에서 사용할 계획이었습니다). H.264/2xAAC로 변환된 DVD를 구입하세요).

KingDian SSD의 문제는 정말 이상하므로 문제를 확인하기 위해 단계별로 수행할 작업을 알려 드리겠습니다.

  1. 90%만 파티션을 만들고 포맷하세요. 며칠 전까지만 해도 저는 Ext4(Linux) / NTFS(Windows 시스템 파티션)를 사용했습니다. 나는 Windows를 정말 싫어하지만 강제로 Windows를 사용하게 되었습니다.
  2. 해당 파티션에 시스템 설치
  3. 매일 시스템 사용 --> 문제 없음
  4. 전원을 끄고 8일 이상 그대로 두십시오. --> KingDian SS에 문제가 나타납니다.
  5. Live Linux 배포판(DVD/USB/등)으로 부팅하는 문제를 확인하려면 주로 SystemRescueCD를 사용하지만 "ntfsclone" / "partclone.*" / "partimage" 또는 일반 "dd"가 있는 다른 배포판에서는 제공하다
  6. 파일로 파티션을 복제하여 저장합니다(예: 백업 미디어에 시스템 파티션 저장).
  7. 문제가 나타납니다. 읽을 수 없는 일부 섹터(25~30개 정도)가 있습니다.
  8. 나는 읽을 수 없는 섹터를 종이에 기록합니다.
  9. 이제 이상한 일이 시작됩니다. 전원을 올바르게 끄고 8일 이상 꺼두었습니다.
  10. 이제 읽을 수 없는 섹터를 확인하기 위해 4~7단계를 반복합니다. 목록이 많이 변경되고 대부분의 경우 두 목록에 공통된 항목이 없으므로 읽을 수 없는 모든 섹터를 읽을 수 있게 되었고 지금 읽을 수 있었던 다른 섹터는 읽을 수 없게 되었습니다.
  11. 이 작업을 여러 번 반복할 수 있으며(SSD에 전혀 쓰지 않음) 읽을 수 없는 섹터의 모든 목록에는 공통된 섹터가 없는 경향이 있습니다(때때로 하나가 두 목록에 있음).

왜 이 SSD(KingDian 브랜드에만 해당)가 그렇게 추악하고 이상한 일을 합니까? 임의로 일부 섹터는 전원 공급 없이 오랜 기간(8일 이상) 후에 읽을 수 없고, 전원 공급 없이 또 다른 기간(8일 이상) 후에 다시 읽을 수 있게 되었다고 말합니다.

가장 이상한 점은 읽을 수 없었다가 다시 읽을 수 있게 된 후에도 항상 올바른 데이터를 가지고 있다는 것입니다.

또한 SMART 데이터를 참조한 결과 새로운 재할당된 섹터가 없다고 합니다(한때 Windows에서 읽을 수 없는 섹터를 강제로 재할당하는 도구를 사용했기 때문에 일부가 있었습니다).

SMART 정보에는 읽기 오류가 없다고 나와 있지만 일부 섹터는 읽을 수 없으며 쓰기 오류도 없다고 나와 있습니다.

분명히 "읽기" 오류는 없습니다. "잘못된" 데이터가 있는 "읽기"는 없습니다... 이는 기술적으로 읽을 수 없는 것과 다릅니다... 그리고 SMART 데이터에는 읽을 수 없는 오류 수를 표시하는 필드가 없습니다. ... 등.

그건 그렇고, 읽을 수 없는 섹터를 데이터로 다시 쓰면 섹터를 다시 매핑하지 않고도 다시 읽을 수 있게 됩니다. 아마도 사용된 내부 섹터가 실패한 섹터가 아니기 때문일 것입니다(쓰기 시 SSD는 확장하기 위해 다른 위치를 사용한다는 것을 기억하십시오). 실시간 SSD는 내부 맵 LBA(칩 내부의 실제 위치)를 사용합니다.

그런데 30GiB의 데이터가 있는 파티션을 복제하는 데 문제가 발생하는 데 1분도 채 걸리지 않았습니다(SSD는 파티션을 복제하는 동안 지속되는 550MiB/s의 속도로 읽을 수 있습니다. 즉, 대부분 순차 읽기입니다). 그러나 읽을 수 없는 25개의 섹터가 있으면 24시간 이상이 걸렸으며(그러한 오류를 무시하거나 그렇지 않으면 종료되지 않음) 일부 "손상된" 데이터(읽을 수 없음)가 있게 됩니다.

BTRFS가 나를 구해준 곳은 다음과 같습니다.

  • 먼저 DATA 및 METADATA에 대해 BTRFS의 RAID1 수준에서 동일한 SSD에 두 개의 파티션을 사용하고 있었습니다.
  • 이제 RAID1 대신 DUP에 대해 알았습니다. DUP로 테스트하겠습니다. 그러면 매번 두 개의 복제 파티션 백업을 실행하지 않고 하나만 실행할 수 있습니다. 그거 좋을 것 같아 (효과가 있어)

나를 구하게 된 계기는? 쉬움: BackUP 미디어에 대한 복제를 수행하기 전에 읽을 수 없는 섹터로 인해 BTRFS가 해당 섹터를 다른 복사본으로 덮어쓰도록 복제할 항목을 스크럽합니다(두 복사본 모두에 대해 읽을 수 없는 섹터가 없음). 같은 시간, 같은 위치).

두 개의 파티션을 사용하면 제대로 작동했고(느리지만 작동함) 복제된 데이터의 일부 섹터가 손실되지 않았습니다. 이제 두 개의 동일한 크기 파티션에서 RAID1 대신 하나의 파티션에서 DUP로 테스트해야 합니다.

BackUP 수행 시간이 단축되지는 않지만(스크럽에도 추가 시간이 소요됨) 적어도 모든 데이터가 정확하다는 것을 확신할 수 있습니다. 언젠가 두 개의 읽을 수 없는 섹터가 동일한 데이터(콜리전)에 대해 발생할 때까지 말이죠. 동시에 같은 위치에 있으면 복구할 수 없습니다.

다른 옵션은 분명합니다. 더 이상 KingDian SSD를 전혀 사용하지 않습니다. 지금까지 제가 사용한 유일한 SSD는 해당 문제를 나타내는 것입니다(전원이 공급되지 않고 오랜 기간 동안 읽을 수 없는 섹터).

휴가를 갔다가 집의 일반 전력을 끊고 돌아왔는데 SSD에 읽을 수 없는 부분이 있다고 상상해 보세요!!! SSD가 항상 전원을 공급받는 데이터 센터가 아닌 일반 사용자에게는 큰 문제입니다.

훌륭한 BTRFS!!! 이제 다른 추악한 부분인 NTFS 파티션(Windows 시스템 파티션)에 대해 유사한 작업을 수행하는 방법을 생각해 보십시오. 전혀, NTFS에는 해당 옵션이 없습니다(SERVERS가 아닌 Windows HOME 버전 등을 기억하십시오).

BTRFS에게 감사드립니다. Linux는 며칠 전 생각했던 것보다 훨씬 낫습니다. 저는 수십 년 동안 Linux 사용자입니다. 그러나 전체 손상 등에 대한 모든 나쁜 정보 때문에 BTRFS 시도를 거부했습니다. SSD 문제가 발생하고 중복성이 필요한 것이 필요할 때까지.

내가 생각한 또 다른 옵션은 ZFS였습니다. 훨씬 더 복잡하고 GRUB2 부트로더에 통합되지 않았고 커널에 통합되지 않았습니다(아마도 라이센스 시스템 때문에 통합되지 않을 것입니다). 그래서 (어제) BTRFS를 팬적으로 시도했는데... 놀랍게도 정말 안정적이고 상대적으로 사용하기 쉬운 것 같습니다(네 디스크를 추가할 때 경고합니다. RAID1이 아닌 RAID0에 추가됩니다. 저는 RAID5/6을 사용하지 않습니다/ 등을 사용하고 싶지 않음), 데이터 손실 없이(KingDian SSD가 아닌 경우) 치명적인 손상(두 파티션 중 하나를 다시 포맷)으로부터 쉽게 복구할 수 있습니다.

물론 하위 볼륨, 스냅샷 등은 사용하지 않습니다. 단지 RAID1의 Linux 루트 "/"용 일반 파일 시스템으로만 사용합니다. 내가 말했듯이 RAID1 대신 DUP로 테스트해야 하지만 걱정됩니다(저는 편집증이 심합니다). 파티션 헤더의 읽을 수 없는 섹터는 모든 BTRFS가 복구 불가능함을 의미하므로 RAID1의 동일한 SSD에 2개의 파티션을 유지하게 될 것입니다. /읽을 수 있습니다.

무작위로 읽을 수 없는 섹터 오류 중에서 KingDian SSD를 계속 사용할 수 있다면 비용이 절약될 것입니다. 단일 비트 셀 SSD만 사용하고 싶기 때문에 SSD는 저렴하지 않으며 크기가 커질수록 비용이 더 많이 듭니다. 편집증이 심해요) 그리고 100개 이상의 마지막 상태 기록이 포함된 모든 데이터의 오프라인 백업 복사본을 10개 이상 보유하고 있습니다(너무 편집증적이라는 걸 알아요).

답변3

적어도 한 가지 차이점을 발견했습니다.

성능이 저하된 raid1 rw를 한 번만 마운트할 수 있습니다. 장치의 다른 파티션이 정상인 동안 특정 파티션이 실패할 가능성은 희박할 수 있지만 이는 차이입니다.

원천: https://btrfs.wiki.kernel.org/index.php/Gotchas#raid1_volumes_only_mountable_once_RW_if_degraded

raid1 볼륨은 성능이 저하된 경우 RW 한 번만 마운트 가능

단일 프로필 청크가 없더라도 성능이 저하된 raid1 볼륨은 -o Degraded,rw 옵션을 사용하여 한 번만 읽기/쓰기로 마운트될 수 있습니다.

노트:

  • 2개 이상의 장치가 있는 경우에는 이런 일이 발생하지 않는 것으로 알려졌습니다.

  • 이는 raid10 프로필 볼륨에서는 발생하지 않습니다.

  • 이는 종종 단일 청크가 남아 있는 "불완전한 청크 변환" 문제로 인해 발생합니다.

가능한 복구:

  • 여전히 읽기/쓰기 상태인 경우 충분한 공간이 있으면 프로필 raid1에서 프로필 단일(또는 프로필 dup)로 청크를 변환할 수 있습니다.

  • 여전히 읽기/쓰기 상태인 경우 btrfs 장치가 누락된 장치를 교체할 수 있습니다.

  • 두 가지 이유로 raid1 볼륨이 읽기 전용으로 멈춘 경우 해당 내용을 덤프하고 다시 생성한 후 내용을 복원해야만 복구할 수 있습니다.

답변4

파티에 늦었지만 어쨌든. 나는 같은 질문에 대해 궁금해하고 있었고 내가 읽은 남자에게서 (dup에 대해):

"예를 들어 SSD 드라이브는 블록을 내부적으로 단일 복사본으로 다시 매핑하여 중복을 제거할 수 있습니다. 이는 중복성 증가(원문) 목적을 무효화하고 공간만 낭비할 뿐입니다."

아마도 raid1은 그러한 우려를 피할 수 있는 방법이 될 것입니다.

관련 정보