RAID 10 장치를 초기화해야하는 이유는 무엇입니까?


9

Linux 소프트웨어 RAID 장치를 raid10 장치로 만들 때 왜 초기화해야하는지 혼동됩니다. raid1 또는 raid0에도 동일한 질문이 적용됩니다.

궁극적으로 대부분의 사람들은 일종의 파일 시스템을 그 위에 놓을 것이며, 그 파일 시스템은 디스크 데이터의 상태를 가정해서는 안됩니다. 각 쓰기는 N 미러가 기록되는 raid10 또는 raid1 설정의 두 디스크 모두에 영향을 미칩니다. 시간이 지남에 따라 raid10이 초기화 될 이유가 없어야합니다.

패리티 요구 사항이있는 raid5 / 6 설정의 이유를 이해할 수 있지만 그럼에도 불구하고 게으르게 수행 될 수있는 것처럼 보입니다.

사람들이 그것에 대해 더 기분이 좋습니까?


1
좋은 질문. RAID가 생성 될 때 동기화를 건너 뛸 수 있으며 하나 이상의 기본 장치가 SSD 인 경우 권장 사항을 발견했습니다. 올바른 작업을 위해 동기화가 필요한 시나리오가 있는지 모르겠습니다.
kasperd

답변:


2

주기적 점검 중에 미러 간의 차이가 오류로 표시되므로 초기 동기화가 필요합니다.

그리고 정기적으로 점검해야합니다.


1
데이터의 가독성을 주기적으로 검사하는 것이 유용한 이유를 알 수 있습니다. 그러나 복제본이 동일한 지 정기적으로 검사하면 어떤 이점이 있습니까? 이러한 검사는 데이터를 체크섬하는 파일 시스템에서 수행하는 경우 유용 할 수 있습니다. 그러나 파일 시스템에 대한 지식이없는 RAID 계층에서는 서로 다른 두 복제본 중 어떤 것이 좋은지 알 수 없으며 처음부터 불일치가 발생한 방식을 알 수 없으며 어떤 파일 (있는 경우)이 영향을 받는지 알 수 없습니다. 따라서 관리자가 경고와 관련하여 수행 할 수있는 작업이 없기 때문에이 계층의 불일치에 대한 경고는 대부분 쓸모가 없습니다.
kasperd

어쨌든 데이터를 읽어야하기 때문에 데이터를 비교하는 데 드는 비용은 최소이지만 디스크 중 하나에서 감지되지 않은 문제 (예 : 드라이브 자체 캐시의 RAM이 잘못됨)가 발생했음을 보여줄 수 있습니다. 그런 다음 관리자는 어레이를 분리하고 수동으로 차이점을보고 교체 할 드라이브를 선택합니다.
Simon Richter

당신의 대답에서 그것을 확장해야합니다.
kasperd

몇 년이 지났음을 알지만 이것이 내가 볼 수있는 유일한 이유입니다. 데이터가 정의에 의해 아직 기록되지 않았기 때문에 데이터가 동기화되지 않은 경우에는 중요하지 않다고 생각하므로 RAID 드라이브에 적용된 파일 시스템은 해당 블록에서 읽지 않습니다. 그러나 주기적 점검이 처음부터 통과하도록하는 것이 필요합니다. 감사!
Michael Graff

7

미러 인 Raid 1은 미러의 모든 디스크가 서로의 정확한 사본이되도록합니다. 임의의 하드 드라이브와 다른 임의의 하드 드라이브를 가져 가면 다른 데이터가있을 수 있으므로이 가정을 위반합니다. 이것이 초기화가 필요한 이유입니다. 단순히 첫 번째 드라이브의 내용을 다른 드라이브로 복사합니다. 어떤 조건에서는 드라이브를 초기화하지 않고 벗어날 수 있습니다. 일반적으로 공장에서 새로 구입 한 장치에는 이미 0이 있으므로 무시해도됩니다. mdadm옵션은 --assume-clean이 작업을 수행하지만 경고 :

   --assume-clean

mdadm에 어레이가 이미 존재하며 깨끗하다고 ​​알려져 있습니다. 실제로 어레이에 쓰지 않는 한 데이터에 영향을 미치지 않기 때문에 중대한 장애로부터 복구하려고 할 때 유용 할 수 있습니다. 초기 재 동기화를 피하려면 RAID1 또는 RAID10을 생성 할 때도 사용할 수 있지만 일반적으로 안전하지만이 방법은 권장되지 않습니다. 실제로하고있는 일을 알고있는 경우에만 사용하십시오.

그렇게하지 않으면 드라이브간에 불일치가 발생하여 읽습니다. 드라이브가 무엇을 읽을 지 알 수 없습니다. 파일 시스템을 사용하는 것이 안전해야합니다 (하지만 아래 참고 사항). 대부분 해당 장치에서 내용을 읽기 전에 쓰면 분명하기 때문입니다.

최소한 Linux mdadm는 백그라운드에서 배열을 초기화합니다. FS를 처음부터 행복하게 만들 수 있습니다. 초기화가 완료 될 때까지 성능이 저하되지만 그게 전부입니다.

그러나:

a) mkfs일부 유틸리티를 수행 할 때 해당 드라이브에 이미 무언가가 있는지 확인하십시오. 이것은 잘 알려진 드라이브 영역에 닿아 있지만 내용을 쓰기 전에 읽으므로 위험에 처하게됩니다.

b) 어레이를 주기적으로 재 동기화하면 RAID 장치는 FS를 알 수 없습니다. 단순히 모든 장치에서 모든 블록을 읽고 비교합니다. 또한 기록 중 복사 FS (예 : ZFS 또는 BTRFS)를 사용하지 않고 FS를 채우지 않는 경우 수년 동안 블록이 FS 관점에서 초기화되지 않은 상태로 유지 될 수 있습니다.

RAID1 장치와 재 동기화해야하는 이유는 무엇입니까?

같은 이유로 RAID5 장치 또는 다른 수준 (RAID0 제외)과 다시 동기화합니다. 모든 데이터를 읽고 RAID 체크섬을 비교 / 확인합니다 (RAID 5 또는 6). 비트가 어떤 식 으로든 뒤집힌 경우 (HD 메모리가 자발적으로 뒤집어지기 때문에 귀하와 5 명의 이웃의 핸드폰이 우연히이 특정 플래터 영역에 간섭했기 때문에) 불일치를 감지하지만 일치 할 수는 없습니다. 도와주세요. 하드 드라이브 중 하나 인 OTOH가 단순히 "고장을 읽을 수 없습니다"라고보고하는 경우 (실패한 드라이브에서 발생했을 가능성이 높음) 오류를 조기에 감지했으며 성능 저하 모드에서 실행중인 시간을 줄였습니다. 드라이브 고장, 눈에 띄지 않을 때). 한 드라이브가 고장 나고 한 달 후에 다른 드라이브가 고장 나면 Raid가 도움이되지 않습니다.

RAID10

이제 RAID10의 경우 위의 모든 내용이 유지됩니다. 모든 RAID10은 '두 개의 RAID1 장치를 RAID0 쌍에 넣습니다'라고 말하는 현명한 방법입니다.

경고:

이것은 모두 정의되지 않은 동작입니다. Linux에서 내가 mdadm다른 소프트웨어 RAID 구현을 사용하여 확인한 이유 는 다르게 동작 할 수 있습니다. mdadm내가 사용하는 것과 다른 Linux 커널 및 / 또는 도구 버전 도 다르게 작동 할 수 있습니다.


1
에 대한 인용을 제공하십시오 If you don't do it, there is a discrepancy between the drives and it's read, the RAID device will report failure of a drive. 나는 그 진술이 틀렸다고 믿는다. 최소한 오류 메시지의 예를 제공하여 소스가 어떤 상황에서 발생하는지 확인하기 위해 소스를 참조 할 수 있도록하십시오.
kasperd

1
그게 낫다. 0을 쓰는 것에 대한 진술을 확인 했습니까? 0을 쓰지 않고 디스크 중 하나를 다른 디스크에 복사한다고 생각합니다.
kasperd

1
While this only touches a few well-known regions of drive, it reads before you write anything, thus putting you in danger.뭐가 위험 해? 나는 읽는 것이 어떤 결과를 초래할 수 있다는 것을 알고 있지만 (a) 읽은 정보가 어디에도 사용되지 않고 (b) 쓰기가 발생하면 왜 사용자에게 어떤 위험을 초래할 수 있습니까?
Vegard

1
@kasperd가 맞습니다. 첫 번째 장치를 두 번째 장치에 복사합니다. urandomLinux mdadm 을 사용하여 초기화 된 장치를 테스트 하면 처음 80k와 마지막 48k가 다르게 유지됩니다. 후자는 아마도 RAID 크기를 블록 크기로 반올림했기 때문일 것입니다. 다른 장치 크기로 테스트하지는 않았지만 80 + 48은 RAID 장치와 기본 블록 장치의 크기 차이입니다.
Torinthiel

1
고려해야 할 한 가지는 일반적으로 초기화 중에 RAID 시스템이 항상 디스크 A를 읽고 디스크 B에 복사한다는 것입니다. 왜 그렇습니까? 디스크를 초기화하는 동안 디스크를 사용할 수 있으므로 블록 100,000에서 데이터를 기록했을 수 있습니다. 레이드 초기화가 해당 블록에 도달하면 A와 B는 이미 동일하므로 아무 일도 일어나지 않습니다. 대신 제로 블록이라면 좋은 데이터를 지울 것입니다. 따라서 다시 한 번, 블록이 동일한 지 확인해야하는 두 가지 이유가 있습니다. "항상 완료되었습니다"와 "나중에 검사를 실행할 수 있습니다"– 또한 검사의 유용성에 의문을 제기합니다. 독서는 좋은가요? 확실하지 않다.
Michael Graff

5

RAID 1은 미러이고 RAID 10은 스트라이프 스트라이프입니다.

문제는 각 미러의 어떤 디스크에서 데이터가 유효합니까? 새로 생성 된 어레이에서는 디스크에 다른 데이터가있을 수 있으므로 알 수 없습니다.

또한 RAID는 매우 낮은 수준에서 작동합니다. 파일 시스템이나 디스크에 저장 될 수있는 데이터를 전혀 알지 못합니다. 사용중인 파일 시스템 이 없을 수도 있습니다 .

따라서 이러한 어레이의 초기화는 각 미러의 한 디스크에서 다른 디스크로 그대로 복사되는 데이터로 구성됩니다.

또한 어레이는 생성 순간부터 안전하게 사용할 수 있으며 백그라운드에서 초기화 할 수 있습니다. 대부분의 RAID 컨트롤러 (및 Linux mdraid)에는이 옵션이 있거나 자동으로 수행됩니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Michael Hampton

1

두 개의 새 디스크가 처음부터 서로의 완벽한 미러 복사본이 될 것으로 예상되지 않기 때문에 간단히 말하십시오.

그들은 서로의 완벽한 사본으로 바뀌어야합니다.

또한 초기화에는 어레이 구성에 대한 정보로 메타 데이터 수퍼 블록을 설정하는 작업도 포함됩니다.

/ proc / mdstat 파일은 장치가 시작되었고 미러가 재구성되고 있음과 재구성 완료의 ETA를 알려줍니다. 유휴 I / O 대역폭을 사용하여 재구성이 수행됩니다. 따라서 디스크 LED에도 많은 활동이 표시되지만 시스템은 여전히 ​​응답 성이 있어야합니다.

재구성 프로세스는 투명하므로 미러가 현재 재구성중인 경우에도 실제로 장치를 사용할 수 있습니다.


2
그러나 서로의 완벽한 사본이되어야합니까? 파일 시스템에서 전혀 사용하지 않은 섹터에서 두 가지가 일치하지 않을 수있는 것은 무엇입니까?
kasperd

@kasperd RAID는 모든 파일 시스템보다 낮은 수준에서 구현됩니다. 그래서 당신이 말하는 "파일 시스템"은 무엇입니까?
Taemyr

@Taemyr 특정 파일 시스템을 언급하지 않습니다. 파일 시스템을 초기화하기 전에 복제본이 동기화되지 않은 RAID-1에서이를 사용하여 원하는 것을 선택하고 설명하십시오.
kasperd

@kasperd RAID 작동 수준에서 중단 파일 시스템 이 없습니다 .
Taemyr

1
제 경우에는 원래 포스터로서 어떤 파일 시스템을 신경 쓰지 않습니다. 나는 결코 쓰여지지 않은 섹터를 읽을 파일 시스템이 없다는 것을 알고 있으므로, 기록되지 않은 섹터의 결정되지 않은 상태는 중요하지 않습니다.
Michael Graff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.