RAID 0이 두 개의 다른 크기의 디스크에서 모든 디스크 공간을 활용할 수없는 이유는 무엇입니까?


10

RAID에 관한 Wikipedia 기사 를 인용하려면 :

RAID 0은 크기가 다른 디스크로 만들 수 있지만 각 디스크별로 어레이에 추가 된 저장 공간은 가장 작은 디스크의 크기로 제한됩니다. 예를 들어 100GB 디스크가 350GB 디스크와 함께 스트라이핑 된 경우 어레이의 크기는 200GB (100GB × 2)입니다.

그러나이 기사에서는 RAID를 함께 사용할 수없고 전체 디스크 공간을 사용하는 이유를 설명하지 않습니다 . 스트라이핑 이 두 디스크 사이에 쓰지만 , 성능이 저하되는 동안 두 번째 디스크의 후반 섹터에 쓰지 못하게 해야한다는 것을 이해합니다 . 이러한 기능을 제공하는 대체 RAID 시스템 (예 : 소프트웨어 RAID)이 있습니까?


이것이 일부 하드웨어 공격과 소프트웨어 공격에서 작동하는지 확실하지 않은 경우, 100GB와 350GB와 같은 서로 다른 크기의 두 드라이브에서 사용 가능한 공간을 더 많이 사용하면서 RAID 0의 일부 측면을 활용하려면 3 더 큰 드라이브에는 100GB 파티션이 있고 첫 번째 드라이브에는 100KB 파티션이, 두 번째 드라이브에는 3 개의 100GB 파티션이 스트라이프됩니다. RAID 레벨 0은 약간의 읽기 / 쓰기 성능 향상을 제공하면서 사용할 400Gig를 제공하지만 200GB 드라이브 2 개를 스트라이핑하는 것보다 적을 수 있습니다.
키이스 레이놀즈

일반적으로이 작업을 원하지 않습니다. 데모 목적으로 1G 및 16G 플래시 드라이브 하나를 사용하여 RAID0을 설정했습니다. 각 디스크를 채우는 확장 파티션을 만들었습니다. 그런 다음 각 드라이브가 가득 찰 때까지 981MB의 파티션을 만들었습니다. 그런 다음 linux 명령으로 16 개의 파티션을 사용하여 공격을했습니다 mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19. 나는 16GB 드라이브를 사용했던 것보다 적은 공간으로 끝났다
Keith Reynolds

답변:


11

크기가 가장 작은 디스크의 크기로 제한되는 이유는 줄무늬가 "대체적으로"쓰여지고 크기가 같아야한다는 사실과 관련이 있습니다.

두 개의 디스크 시스템에서 모든 홀수 스트라이프는 하나의 디스크에 있고 다른 하나는 다른 디스크에 있습니다. 홀수 / 짝수 / 홀수 / 짝수 / ...

스트라이프의 크기는 동일해야하고 쌍을 이루어야하므로 (두 디스크의 경우) 사용 가능한 최대 공간 2 * (가장 작은 디스크 크기)로 제한됩니다.


3

남은 공간을 사용할 수 있습니다 . 남은 공간을 사용하여 볼륨을 만들거나 다른 RAID의 일부로 사용할 수도 있습니다. 그러나이 추가 공간을 사용하면 서로 다른 두 프로세스가 동일한 물리적 컨트롤러 및 디스크에 액세스하려고 시도 할 수 있으므로 RAID 0이 제공하는 성능이 저하됩니다.

이 여분의 공간을 원래 RAID에 추가 할 수없는 이유는 무엇입니까? RAID에 사용되는 알고리즘으로 인해 세부 사항에 대해 언급하지 않아도됩니다. RAID 0은 RAID의 첫 번째 디스크에 쓴 후 다음 디스크에 씁니다. 이전 디스크 읽기 또는 쓰기가 완료 될 때까지 기다릴 필요가 없으므로 성능이 향상됩니다. 게시물에 250GB가 사용 된 경우 대부분의 쓰기 작업은 첫 번째 디스크에 기록되므로 성능 향상이 거의 없습니다.

볼륨을 확장해야하는 드라이브의 모든 공간을 사용하려는 경우 RAID가 원하는 솔루션이 아닐 수 있습니다. 스패닝을 사용하면 많은 볼륨을 가져 와서 하나의 큰 볼륨으로 연결할 수 있습니다. 스패닝은 성능 향상이나 중복성을 제공하지 않습니다.


한 볼륨에서 두 개의 드라이브를 모두 사용할 수없는 이유 는 설명하지 않습니다 . 또한 별도의 볼륨 부분이 전혀 성능 문제를 일으키지 않습니다. 낮은 수준의 디스크 IO 제어는 disk.sys를 통한 인터럽트에 의해 처리되므로 읽기 / 쓰기 요청은 파이프 라인이되고 Windows는 중복 된 IO도 지원합니다.
다항식

그래, 당신은 여전히 ​​업데이트 설명하지 않았다. 스트라이핑 작동 방식에 익숙하지만 작은 디스크가 가득 차면 단일 디스크 모드 (표준 단일 디스크 성능 사용)로 전환 할 수없는 이유를 설명하지 못합니다. 볼륨 스패닝에 대해 언급 해 주셔서 감사합니다. 유용합니다.
다항식

1
RAID가 작동하는 방식 때문입니다. 정말로 원한다면 RAID 0을 사용하여 여유 공간이있는 볼륨을 만든 다음 RAID와 추가 볼륨을 확장 할 수 있습니다. 그러나 나는 어떤 RAID 컨트롤러도 그렇게 할 수 있다고 생각하지 않습니다. 하드웨어와 소프트웨어 RAID의 조합으로이를 수행 할 수 있습니다.
Keltari

1
-1 "이전 디스크 읽기 또는 쓰기를 완료 할 때까지 기다릴 필요가 없으므로 성능이 향상됩니다."RAID 0에서 크기가 다른 두 개의 하드 디스크에
대해서도 마찬가지입니다.

2
@Polynomial RAID 0이 아닐 것입니다. RAID 0이 모든 디스크 공간을 사용할 수없는 이유를 물었고 "왜 그렇게 할 수 없는지 ..."라고 대답했습니다. RAID 0이기 때문에 불가능합니다. 다른 작업을 수행 한 경우 다른 작업이됩니다.
David Schwartz

0

RAID는 데이터를 디스크 어레이에 저장하는 방법을 설명하는 의사 표준입니다. 이 표준은 데이터를 저장하는 네 가지 방법을 기술합니다 (기술적으로는 더 많지만 대부분 다른 사람은 신경 쓰지 않습니다).

Raid-0 : 스트라이핑. 각 데이터 블록은 RAID 장치의 각 구성원으로 분할됩니다. 중복성이 없으므로 저렴한 디스크의 중복 배열이 아니라 저렴한 디스크 배열에 불과합니다.

레이드 -1 : 미러링. 각 데이터 블록은 어레이의 모든 디스크에 저장됩니다. 이것은 실제로 두 개의 디스크로 만들어집니다. RAID 1/0 또는 RAID 10은 미러링과 스트라이핑의 조합이며 둘 이상의 디스크를 활용하는 데 사용할 수 있습니다.

레이드 -5 : 패리티. 각 데이터 블록은 RAID 장치의 각 멤버에 분할되며 하나의 디스크는 패리티 전용입니다.

Raid-6 : 이중 패리티 : Raid-5와 동일하지만 두 개의 패리티 디스크가 있습니다.

그게 다야. Raid는 크기 불일치 또는 기타 작업에 대해 설명하지 않지만 스트라이핑은 실제로 동일한 크기의 디스크에서만 작동합니다. 일반적으로이 문제를 해결하는 방법은 남은 공간을 별도의 디스크 드라이브로 사용할 수 있다는 것입니다.

큰 디스크 어레이를 생성하는 방법으로 RAID에서 벗어나면 ZFS와 같은 것을 사용하고 디스크를 스토리지 풀에 추가 할 수 있습니다. ZFS는 항상 가능한 한 효율적으로 두 디스크를 모두 사용하려고하며 ZFS에 어느 정도의 중복성이 만족되는지 알려줄 수 있습니다.

이전 기술은 볼륨 매핑 (예 : LVM 또는 Windows와 동등한 것)과 같은 것으로, 블록을 디스크에 더 높은 수준으로 매핑하는 아이디어를 추상화합니다. LVM을 사용하면 여러 디스크에 걸쳐 있고, 파티션을 확장하고, 비 연속 파티션을 가질 수 있습니다. 볼륨 매핑은 RAID가 아니며 디스크를 늘릴 때 성능을 높이는 것이 아니라 파일 시스템의 위치에 따라 한 디스크 또는 다른 디스크에 무작위로 쓰도록 선택합니다. 이는 스패닝 (spanning)이라고하며 원시 성능이 아닌 IOPS를 사용하는 경우 일반적으로 RAID보다 낫습니다.


0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

이것은 사실 일 수 있으며 대부분의 RAID0 구현에 해당됩니다. 그러나 전부는 아닙니다.

RAID 0을 사용하는 데는 두 가지 이유가 있습니다.

  1. 여러 디스크를 하나의 큰 볼륨으로 연결하십시오.
  2. 공연.

옵션 2가 가장 일반적이며 거의 모든 현재 RAID 0 구현에 사용됩니다. 기술적 인 설명은 정보가 디스크간에 번갈아 쓰여진다는 것입니다.

비 기술적 인 방법으로 : 디스크를 두 권의 책으로 생각하십시오. 이 책들은 접근 (읽기 / 쓰기) 속도가 제한적입니다. 따라서 100 페이지의 두 권의 책 두 권을 두 권의 책으로 다시 포맷하지만 모든 짝수는 한 권의 책에 기록되고 다른 홀수에는 다른 책에 기록되도록 페이지 번호를 다시 매 깁니다.

이제 우리의 새로운 'R0 서적'동작은 두 배의 페이지 수와 두 배의 속도를 가진 단일 서적입니다.


옵션 1은 '책으로 돌아 가기'와 같이 간단 할 수 있습니다. 어떤 경우에는 속도 향상이 없지만 페이지 수가 다른 책을 붙일 수 있습니다. 1990 년 경에 이와 같은 'RAID0'구현을 떠올리는 것 같습니다. 그러나 대부분의 사람들이 '적절한 RAID 0'을 고려하는 것은 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.