The Software-RAID HOWTOJakob Østergaard ( jakob_at_unthought.net) 번역: 한승수, netkevin_AT_hanmail.netv0.90.8, 2002-08-05 최종번역일: 2004-12-31 미완성 - 계속 번역중입니다.본 문서는 리눅스에서 Software RAID를 사용하는 방법에 대해 기술합니다. 이 문서는 Ingo Molnar 및 다른 여러 사람이 만든 0.90버전의 Software RAID를 대상으로 만들어 졌습니다. RAID는 커널 2.4 이상의 버전에서 기본으로 사용할 수 있으며 몇몇 리눅스 배포본에서는 2.2커널과 함께 제공하기도 했습니다. 0.90버전의 RAID는 커널 패치를 함으로써 2.2버전과 2.0버전의 커널에서도 사용할 수 있으며 이전 버전의 RAID보다 훨씬 더 안정적으로 작동합니다. 1. 서문본 문서는 버전 2.4 이상의 커널에서 사용되는 RAID에 대해 설명합니다. 2.0버전과 2.2버전 커널에서 사용되던 "이전"버전의 RAID는 언급하지 않습니다. 이 문서의 최신 버전은 http://unthought.net/Software-RAID.HOWTO/에서 구할 수 있습니다. Jakob Østergaard 가 작성한 이 문서는 RAID의 개발자인 Ingo Molnar (mingo@chiara.csoma.elte.hu) 와 많은 사람들이 주고 받은 linux-raid 메일링 리스트 (linux-raid@vger.kernel.org) 의 내용을 바탕으로 작성되었습니다. 2.0버전이나 2.2버전의 커널에서 새 버전의 RAID를 사용하려면 이 곳 http://people.redhat.com/mingo/에서 커널 패치를 구해 적용하십시오. 기본 상태의 2.2버전 커널은 이 문서에서 설명하는 새 버전의 RAID를 지원하지 않으므로 꼭 커널 패치를 해야합니다. 2.0버전과 2.2버전에서 사용하는 이전 버전의 RAID는 버그가 있으며 몇 가지 중요한 RAID기능이 누락되어 있습니다. RAID에 대해 잘 알고 계신다면 몇몇 부분은 읽을 필요가 없을 겁니다. 1.1 책임의 한계본 문서의 내용으로 인해 일어날 수 있는 어떠한 일에 대해서도 저자 및 해당 소프트웨어 개발자는 책임을 지지 않습니다. 본 문서의 내용을 실행하기 전에 귀하의 데이터를 백업하십시오. 1.2 요구사항이 문서는 여러분이 RAID 패치가 적용된 2.2버전과 2.0버전의 커널을 사용하며 0.90버전 이상의 RAID 유틸리티를 사용하고 있거나 2.4버전의 커널을 사용한다는 가정하에 작성된 것입니다. 사용되는 패치나 RAID 유틸리티는 이 곳 http://people.redhat.com/mingo/에서 구할 수 있습니다. 커널 패치와 상응하는 버전의 RAID 유틸리티를 사용하셔야 한다는 것도 중요합니다. 2.4버전 커널의 GNU/Linux(데비안) 배포판을 사용하신다면 RAID 사용에 큰 무리는 없을 것입니다. 2. RAID를 쓰는 이유
2.1 RAID 구현이 가능한 Device 와 파일 시스템Linux RAID는 대부분의 block devices에서 구현이 가능합니다. IDE나 SCSI장치 모두 사용 가능하며 둘의 혼용 또한 가능합니다. Network Block Device (NBD)를 통해 RAID를 구현한 경우도 있습니다. Linux Software RAID 장치 그 자체가 이미 block device이기 때문에, RAID장치를 모아서 또 RAID를 구성하는 것도 가능합니다.. 이것이 RAID-0과 RAID-1의 장점을 합친 RAID-10 (RAID-0 of multiple RAID-1 devices)입니다. 또 RAID-5 위에 RAID-5 를 구현한 "matrix" RAID와 같은 희한한 RAID구성도 가능합니다. RAID는 파일시스템과는 아무런 상관이 없습니다. 어떠한 파일 시스템(block device의 경우처럼)으로도 RAID를 구성할 수가 있습니다. 2.2 성능RAID는 성능 향상을 목적으로 사용되는 경우가 많지만 RAID의 각 레벨별 특징을 확실히 이해하지 않고 사용하면 큰 효과를 얻지 못할 수도 있습니다. RAID의 레벨의 설명에 각 레벨의 성능상 특징이 잘 나타나 있습니다. 2.3 용어의 정의"RAID"는 "Linux Software RAID"를 뜻합니다. 이 문서는 Hardware RAID에 대해 언급하지 않습니다. 운영체제 커널속에서의 Software RAID 기능에 대해 언급하지도 않습니다. RAID의 구성을 나타낼 때는 물리적 디스크의 갯수와 디스크의 크기를 명시하는 것이 알아보기 편합니다. N은 사용되는 디스크의 갯수를 나타내며(spare-disk는 제외) S는 별도의 설명이 없는 한 RAID구성에 사용되는 가장 작은 디스크의 크기를 나타내게 됩니다. P는 RAID array의 디스크 하나의 성능을 MB/s 단위로 표시한 것입니다. 이 때 RAID array 의 모든 디스크의 속도는 동일하다고 가정합니다. "device"와 "disk"는 같은 의미로 사용되었습니다."device"라 함은 RAID를 구성하는 디스크의 파티션을 나타냅니다. 동일 디스크상의 파티션들만으로 구성된 RAID는 의미가 없으므로 "devices"와 "disks"는 다른 디스크상의 파티션으로 생각하시면 되겠습니다. 2.4 RAID의 종류리눅스에서 사용할 수 있는 RAID의 종류에 대해 간략히 설명합니다. 대부분 RAID에 대한 기본적인 내용이지만 좀 더 추가한 내용도 있습니다.RAID에 대한 기반 지식이 있으시다면 이 부분은 읽지 않으셔도 무방합니다. RAID에서는 다음 레벨들을 사용할 수 있습니다.
예비 디스크예비 디스크란 RAID 가 장애 상태에 빠지면 복구에 사용되는 디스크를 말합니다. 디스크 장애가 감지되면 그 디스크는 bad 로 표시되고 첫번째 예비 디스크로 복구가 즉시 시작됩니다. 그러므로 예비 디스크는 특히 RAID-5 시스템을 더 안전하게 합니다. 결함이 있는 디스크로 RAID를 운영하다 발생할 수 있는 문제를 예비 디스크를 사용함으로써 막을 수 있습니다. 그래도 안심할 수는 없습니다. 아무리 RAID의 디스크가 안전하다고 해도 SCSI 콘트롤러나 IDE 칩셋의 에러 등에는 무방비일 수 밖에 없습니다. 또한 복구는 데이터 이중화에 필요한 정보를 장애가 발생하지 않은 디스크에서 가져오기 때문에 여러 디스크에서 배드 블럭이 점점 생겨나면 불완전한 데이터를 이용해 복구를 하는 셈이 되므로 멀쩡한 디스크의 데이터도 손상이 되고 결국은 전체 RAID가 망가지는 결과가 생깁니다. 자주 백업을 한다면 이 같은 상황이 발생할 가능성은 현저히 줄어들 것입니다. RAID도 백업은 해야한다는 것을 잊지 마십시오. 2.5 RAID를 스왑으로성능을 높이려고 스왑 영역을 RAID 장비에 잡을 필요는 없습니다. fstab파일에서 각 스왑영역에 동일한 우선순위만 부여하면 커널이 스스로 분산된 스왑영역을 사용할 수 있습니다. 예: /dev/sda2 swap swap defaults,pri=1 0 0 /dev/sdb2 swap swap defaults,pri=1 0 0 /dev/sdc2 swap swap defaults,pri=1 0 0 /dev/sdd2 swap swap defaults,pri=1 0 0 /dev/sde2 swap swap defaults,pri=1 0 0 /dev/sdf2 swap swap defaults,pri=1 0 0 /dev/sdg2 swap swap defaults,pri=1 0 0이 fstab 파일은 7개의 SCSI 디스크에 있는 스왑영역을 병렬적으로 사용하는 예를 나타내고 있습니다. 이는 오래전부터 커널이 제공하는 기능입니다. RAID를 스왑 목적으로 쓰는 다른 이유는 고가용성이기 때문입니다. 시스템 부트 영역이 RAID-1에 있으면 복구가 가능하므로 문제가 없지만 스왑 영역이 결함을 내포하는 RAID에 있다면 이것은 문제가 됩니다. 스왑 영역을 RAID-1에 잡으면 이 문제를 해결할 수가 있는 것입니다. RAID 장치에 있는 스왑 영역의 안정성에 대해서는 의견이 분분하며 이는 스왑은 커널과 관련된 내용이 많기 때문입니다. 제 생각에는 RAID에 스왑을 사용하는 것은 무척 안정적인 것 같습니다. 스왑 파티션으로 RAID를 만들 수도 있고(RAID의 각 디스크 파티션 타입을 swap으로 하고 RAID를 생성할 수도 있다는 뜻:역주) RAID를 스왑 파티션으로 쓸 수도 있습니다. 앞에서도 말씀드렸다시피 RAID는 블록 장치(block device)일 뿐입니다. 3. 하드웨어적인 문제이 단락에서는 software RAID 운영시 주의해야 할 사항을 설명합니다. 좀 더 나은 성능을 얻으려면 디스크를 연결하는 버스가 충분한 대역폭을 가지고 있어야 합니다. 디스크당 전송율이 20 MB/s 이고 버스의 대역폭이 160 MB/s 라고 할 때 하나의 Ultra Wide 스카시 콘트롤러에 14개의 디스크를 연결하는 일은 없어야 하겠습니다. 그리고 하나의 IDE 콘트롤러당 하나의 디스크만 연결하셔야 합니다. 마스터/슬레이브 디스크를 모두 RAID로 연결해 사용하는 것은 성능이 엄청나게 저하될 우려가 있습니다. IDE는 버스당 두 개이상의 디스크가 액세스 될 때에는 엄청나게 느려집니다. 하지만 요즘의 신형 메인보드들은 IDE버스가 두 개씩 있는 것도 있으므로 추가 비용없이 좀 더 나은 성능의 RAID를 운영할 수 있습니다. 물론 IDE 콘트롤러 가격도 저렴하므로 여러개의 IDE 콘트롤러를 달아서 6-8개 정도의 디스크로 된 RAID를 운영하는 방법도 나쁘지는 않을 것입니다. 3.1 IDE 설정IDE 디스크로 구성된 RAID를 운영하는 방법도 있으며 성능도 좋습니다. 일반적으로 IDE 디스크와 콘트롤러의 가격이 저렴하므로 IDE RAID를 고려해 보는 것도 괜찮을 것입니다.
하나의 IDE 버스당 하나의 디스크만 연결해서 사용해야 한다는 것은 매우 중요한 점입니다. 그렇게 하지 않으면 성능 저하뿐만 아니라 만약 디스크가 고장나면 IDE 버스 전체로 오류가 퍼지게 되며 그 버스에 연결된 모든 디스크에 장애가 발생하게 됩니다. 장애 처리가 가능한 RAID (RAID 레벨 1,4,5)는 한 개의 디스크 장애는 처리할 수 있지만, 두 개 이상의 디스크 장애는 처리할 수가 없기 때문에 위험한 것입니다. IDE 버스 하나당 하나의 디스크, 이것은 정말 중요한 것입니다. 여러 개의 IDE 콘트롤러 구매에 돈이 많이 들어도 IDE 디스크의 가격이 스카시에 비해 훨씬 저렴하므로 IDE 디스크를 많이 가지고 있는 경우라면 정말 괜찮은 방법이 될 것입니다. 규모가 커지게 되면 케이블링도 문제를 야기할 수 있으므로 IDE 케이블의 길이가 너무 길어지지 않게 주의해야 합니다. 게다가 최근의 어떤 디스크는 하루당 사용 시간 제한이 있는 것도 있습니다. 그런 디스크들은 데스크탑 용이기 때문에 무정지로 운영할 시스템에 사용하는 것은 심각한 결과를 초래할 수도 있을 겁니다. 3.2 핫스왑 기능디스크의 핫스왑은 주의해야할 점들이 많습니다. IDE 디스크의 핫스왑IDE 디스크는 핫스왑이 안됩니다. 물론, IDE 드라이버가 모듈로 컴파일되어 있다면 디스크를 교체하고 모듈을 다시 올리는 방법이 있기도 할겁니다.(2.2 버전의 커널에서만 되던 기능입니다) 하지만 IDE 콘트롤러나 디스크를 태우게 되는 불상사를 겪을 수도 있습니다. 문제는(하드웨어적으로 손상을 입히는 전기적인 문제는 제외) 디스크가 교체된 후에 IDE 버스는 다시 읽혀져야(re-scanning) 된다는 것입니다. 새 버전의 커널이 이 기능을 지원하긴 하지만(hdparm 유틸리티를 이용), 파티션 정보를 다시 읽어들이는 것까지는 되지 않습니다. 교체된 디스크가 교체전의 디스크와 100% 동일(파티션 구조등 모든 것)하다면 가능할 수도 있겠지만 여전히 위험을 감수해야 할 것입니다. SCSI 디스크의 핫스왑보통의 SCSI 하드웨어도 핫스왑이 안되긴 마찬가지이지만 될 수도 있긴 합니다. 버스 리스캐닝을 지원하면 핫스왑이 되는 겁니다. 하지만 전원이 들어와 있는 상태에서 장치를 탈/부착하는 행위는 없어야 하겠습니다. 이 역시 성공할 수도 있지만 장비가 탈 수도 있다는 것을 명심하십시오. SCSI 에서는 디스크가 고장나도 이를 대처할 수 있어야 합니다만 모든 SCSI 콘트롤러가 그럴 수 있는 아닙니다. 디스크가 고장나서 SCSI 콘트롤러도 죽고 시스템까지 같이 죽는 일이 생긴다면 핫스왑은 도움이 되지 못합니다. SCA(Single Connection Attach)의 핫스왑SCA는 핫스왑이 됩니다. 쉽지는 않지만 안전한 방법입니다. 다음 예제처럼 RAID 디스크를 교체하십시오:
위의 "scsi remove-single-device" 명령에 인수로 전달되는 숫자들은 각각: Host, Channel, Id, Lun 을 의미합니다. 이 값들은 "/proc/scsi/scsi" 파일에서 확인할 수 있습니다. 위의 예제는 IBM 사의 SCA방식 디스크와 Adaptec 사의 SCSI 콘트롤러에서 수행/테스트된 것입니다. 이 예제대로 실행중 문제가 발생하거나 개선점을 찾으셨다면 linux-raid 메일링 리스트를 통해 알려주시기 바랍니다. 4. RAID 설정4.1 공통 설정 사항준비물은 이렇습니다.
이제부터 나오는 내용은 대부분의 배포판에서 모두 표준인 것들입니다. 여러분 시스템의 커널이 RAID를 지원하고 있다면 RAID 에 포함시킬 파티션을 생성하십시오. 이제 각 RAID 레벨 별 설정을 해 보겠습니다. 4.2 Linear mode서로 크기가 다른(같아도 됩니다) 파티션을 합치는 경우입니다.
raiddev /dev/md0 raid-level linear nr-raid-disks 2 chunk-size 32 persistent-superblock 1 device /dev/sdb6 raid-disk 0 device /dev/sdc5 raid-disk 1한 디스크에 장애가 생기면 그 RAID 전체도 같이 죽습니다. 그래서 예비 디스크 설정은 의미가 없기 때문에 생략되었습니다. 병렬적으로 사용하는 것도 아닌데 왜 이제 RAID를 생성합니다. 다음 명령을 실행합니다. mkraid /dev/md0 이 명령은 RAID를 초기화하고 persistent superblock을 기록하며 RAID를 기동하게 됩니다.
이제 보통의 디스크처럼 파일시스템을 만들고, 마운트하고 fstab 파일에 추가하는 작업을 해주시면 됩니다. 4.3 RAID-0비슷한 크기의 디스크가 두 개 이상 있다고 할 때 두 용량을 합치면서 병렬사용을 통해 성능도 향상시키고자 하는 경우가 되겠습니다. 역시 raiddev /dev/md0 raid-level 0 nr-raid-disks 2 persistent-superblock 1 chunk-size 4 device /dev/sdb6 raid-disk 0 device /dev/sdc5 raid-disk 1Linear 모드와 마찬가지로 RAID-0은 데이터 이중화 기능이 없으므로 예비 디스크는 사용할 수 없습니다. 다음을 실행합니다. mkraid /dev/md0superblock을 초기화하고 RAID를 기동합니다. /proc/mdstat 파일을 통해 작동여부를 확인할 수 있습니다.
/dev/md0 을 이제 포맷하고 마운트해서 사용하면 됩니다. 4.4 RAID-1비슷한 크기의 디스크가 두 개 있고 한 디스크가 다른 디스크를 미러링하게 하는 경우입니다. 여분의 디스크를 예비 디스크로 지정해 놓으면 RAID에 장애가 생기면 자동으로 예비 디스크가 그 디스크를 교체해서 미러링을 하게 될 겁니다. RAID-1 의 raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sdb6 raid-disk 0 device /dev/sdc5 raid-disk 1예비 디스크 추가는 뒷부분에 이렇게 추가해 주시면 됩니다. device /dev/sdd5 spare-disk 0nr-spare-disks 부분을 정확히 설정해 주시는 것을 잊지 마십시오. 이제 RAID를 기동할 준비가 되었습니다. 두 디스크의 내용을 같게 만들어줘야 합니다. 다음 명령을 실행하십시오. mkraid /dev/md0미러링의 초기화를 시작합니다.
재구성 과정은 I/O 대역폭의 사용되지 않는 부분만을 사용하므로 디스크의 작동 LED 가 깜빡여도 시스템의 반응 속도에 큰 영향은 없습니다. 여러분은 재구성 과정과는 상관없이 RAID 장치를 사용할 수 있습니다. 재구성이 진행중일때 포맷을 해보십시오. 잘 될 겁니다. 마운트도 물론 할 수 있습니다. 하지만 재구성을 하는 도중에 디스크에 장애가 발생하면 어쩔 도리가 없습니다. 4.5 RAID-4주의: - 필자도 RAID-4의 셋업은 해보지 않았습니다. 이 부분만큼은 제가 경험하지 않은 부분입니다. RAID-4를 사용하고 계시다면 다음 이메일 주소로 여러분의 경험을 알려주시기 바랍니다. author 비슷한 크기의 세 개 이상의 디스크가 있고 그 중 하나가 나머지보다 속도가 월등히 빠를때 디스크를 하나로 합쳐서 쓰면서 데이터의 이중화도 꾀하는 경우가 되겠습니다. /etc/raidtab 파일의 내용: raiddev /dev/md0 raid-level 4 nr-raid-disks 4 nr-spare-disks 0 persistent-superblock 1 chunk-size 32 device /dev/sdb1 raid-disk 0 device /dev/sdc1 raid-disk 1 device /dev/sdd1 raid-disk 2 device /dev/sde1 raid-disk 3예비 디스크가 있으면 같은 방법으로 추가해 주시면 됩니다. device /dev/sdf1 spare-disk 0RAID 초기화를 합니다. mkraid /dev/md0포맷을 하시기 전에 mke2fs 명령의 옵션에 관한 부분을 꼭 읽어보십시오. 4.6 RAID-5비슷한 크기의 디스크가 세 개 이상있고 디스크들을 하나로 합쳐 사용하면서 데이터의 이중화를 하려는 경우입니다. 예비 디스크는 평상시엔 사용되지 않다가 다른 디스크에 장애가 발생하면 사용됩니다. N 개의 디스크가 있고 그 중 가장 작은 디스크의 크기가 S 라고 하면, 전체 RAID의 크기는 (N-1)*S 가 됩니다. 원래 디스크의 합보다 줄어드는 공간은 데이터 이중화를 위한 패리티 정보가 저장되는 데 사용됩니다. 이 덕택에 하나의 디스크에 장애가 발생하더라도 데이터는 안전합니다. 하지만 두 개 이상의 디스크에 장애가 발생하면 데이터가 손실됩니다. /etc/raidtab 파일의 내용입니다: raiddev /dev/md0 raid-level 5 nr-raid-disks 7 nr-spare-disks 0 persistent-superblock 1 parity-algorithm left-symmetric chunk-size 32 device /dev/sda3 raid-disk 0 device /dev/sdb1 raid-disk 1 device /dev/sdc1 raid-disk 2 device /dev/sdd1 raid-disk 3 device /dev/sde1 raid-disk 4 device /dev/sdf1 raid-disk 5 device /dev/sdg1 raid-disk 6예비 디스크가 있으면 역시 같은 방법으로 추가해 주시면 됩니다. device /dev/sdh1 spare-disk 0대체로 chunk size 는 32 kB 가 적당합니다. 위의 예제는 7 개의 6 GB 디스크로 구성되었으며 총 36 GB 의 저장공간을 가지게 됩니다.(공식을 사용, 계산하면 (n-1)*s = (7-1)*6 = 36) 이는 4 kB 블록사이즈의 ext2 파일시스템을 사용합니다. 더 큰 파일 시스템을 사용하거나 매우 큰 파일을 저장하시려면 chunk-size 와 filesystem block-size 의 값을 더 늘려주시면 됩니다. 이제 다음을 실행하십시오. mkraid /dev/md0디스크들이 재구성을 하느라고 정신없이 작동할 겁니다. /proc/mdstat 파일을 통해 과정을 지켜보십시오.
재구성 과정이 완료되기 전까지는 아직 끝난 것이 아닙니다. 하지만 재구성이 진행되는 중에도 모든 작업을 할 수 있습니다.(디스크 장애가 발생하는 경우는 제외) 포맷을 하시기 전에 mke2fs 명령의 옵션에 관한 부분을 꼭 읽어보십시오. 이제 여러분은 언제든지 다음 명령어로 RAID 장치를 정지/가동할 수 있습니다. raidstop /dev/md0또는 raidstart /dev/md0뒤에 설명드릴 autodetection 기능을 사용하면 init- 파일에 이를 추가하실 필요가 없습니다. 4.7 Persistent SuperblockRAID 관련 프로그램이 또한 RAID 장치에 있는 파일시스템을 마운트할 때에도 persistent superblock 이 이 문제를 해결합니다. 그래도 시스템이 부트되면서 RAID를 자동으로 인식하게 하려면 persistent superblock 옵션을 켜두어야 합니다. 더 자세한 설명은 Autodetection 부분에서 합니다. 4.8 Chunk sizechunk-size 는 중요합니다. 디스크에 기록하는 작업은 완벽한 병렬로 할 수 있는 게 아닙니다. 두 디스크가 있고 한 바이트를 쓰고자 한다면 각 디스크에 4비트씩 기록될 것이며 한 비트씩 0번 디스크와 1번 디스크에 번갈아가며 기록될 것입니다. 이는 하드웨어에서 제어하는 것이 아니라 우리가 지정해 주는 chunk-size, 한 장치에 기록되는 최소 데이터량을 정해줌으로써 가능해지는 것입니다. RAID-0 시스템이라면 chunk-size가 4 kB 일때 16 kB 크기의 데이터는 4 kB 로 네 등분되어 첫번째와 세번째 4 kB 가 0번 디스크에, 두번째와 네번째 4 kB 가 1번 디스크에 기록되게 됩니다. 그러므로 대용량의 쓰기 작업을 한다면 chunk-size 를 크게 함으로써 오버헤드를 줄일 수 있습니다. chunk-size 는 모든 RAID 레벨(linear 모드 포함)에서 명시되어야 합니다. 하지만 linear 모드에서는 chunk-size 가 아무런 영향을 끼치지 않습니다. block-size 와 chunk-size 를 잘 조절하면 최적의 성능을 얻을 수 있습니다.
RAID-0데이터는 병렬적으로 기록됩니다. 좀 더 명확히 말하면 chunk-size 가 4 kB 일 때 16 kB 가 세 개의 디스크에 기록된다면 RAID 는 디스크 0, 1, 2 에 4 kB 를 병렬적으로 기록하고 나머지 4 kB 를 0번 디스크에 기록하게 됩니다. 대체로 32 kB 의 chunk-size 가 적당합니다. 하지만 최적값은 RAID를 구성하는 디스크의 갯수와 기록되는 파일의 크기 등에 따라 달라집니다. 값을 변경해 가며 최적의 수치를 찾아야 합니다. ext2 파일시스템과 RAID-0이 팁은 michael@freenet-ag.de가 보내주었습니다. ext2 파일시스템의 블록 그룹의 시작 부분에는 다른 부분보다 더 많은 디스크 액세스가 일어납니다. 디스크가 하나일 때에는 문제가 되지 않지만 RAID-0 에서 모든 블록 그룹이 같은 디스크에 모여 있으면 문제가 될 수 있습니다. 그 예로: 4k stripe size 도 4k 이고 block size 도 4k 이면, 하나의 블록이 하나의 stripe 이 됩니다. 두 개의 디스크에서는 stripe-#disk-product 는 2*4k=8k 가 됩니다. 기본 block group size 가 32768 block 이면, 모든 블록 그룹은 0번 디스크에서 시작됩니다. 이 부분이 전체적인 성능을 저하시키는 hot spot 이 되는 것입니다. 아쉽게도 block group size 는 8 blocks 단위로(4k block 일때는 32k 단위로)만 조정할 수 있습니다. 그렇기 때문에 단순히 mkfs 의 -g 옵션으로 block group size 를 조정하는 것만으로는 이 문제를 해결할 수 없습니다. 디스크를 추가하면 stripe-#disk-product는 12가 되므로 첫번째 블록은 0번 디스크에 저장되고 두번째 블록은 2번 디스크에 저장되며 세번째 블록은 1번 디스크에 저장되게 됩니다. 블록 그룹의 시작부분에서 디스크 활동으로 생기는 부하는 각각의 디스크에 분산되게 됩니다. 디스크를 추가하지 못하는 상황이라면 stripe size 를 32k 로 해보십시오. stripe-#disk-product는 64k 가 될겁니다. 블록 그룹의 크기를 8 블록 단위(32k)로 바꿀수 있으므로 32760의 블록 그룹 사이즈가 알맞을 것입니다. 블록 그룹 경계는 stripe 경계와 맞아 떨어져야합니다. 위의 예제에서는 문제가 되지 않지만 stripe size 가 큰 경우에는 문제가 될 수 있습니다. RAID-1chunk-size는 디스크에 쓰기작업을 할 때는 별 의미가 없지만 읽기를 할 때는 어레이로부터 얼마만큼씩 연속적으로 읽어들여와야 할 지를 결정하므로 중요합니다. 모든 디스크가 동일한 내용을 담고 있으므로 어떤 디스크에서 읽어들여하하는가 하는 것은 RAID 계층에서 알아서 하게 됩니다. 이 동작은 평균 seek time을 개선하기 위해 원하는 데이터에 헤드가 가장 가까이 있는 디스크를 선택하게 됩니다. RAID-4RAID-4 에 쓰기작업이 수행된 후에는 패리티 디스크의 패리티 정보가 갱신되어야 합니다. RAID-4 의 읽기는 RAID-0 과 동일하므로 RAID-4의 chunk-sizes 역시 읽기 성능에 영향을 끼칩니다. RAID-5RAID-5의 읽기 작업에서의 chunk size는 RAID-0 에서와 의미가 같습니다. 다만 RAID-5 에서의 쓰기 작업은 좀 더 복잡합니다. RAID-5에 데이터가 기록되면 해당 패리티도 갱신되어야 합니다. 패리티를 갱신하려면 다음이 필요합니다.
통상적으로 RAID-5 에서의 적당한 chunk-size는 128 kB 입니다. mke2fs의 옵션에 대해 설명한 부분도 참고하시기 바랍니다. 이는 RAID-5 의 성능과 관계가 있습니다. 4.9 mke2fs 의 옵션mke2fs로 RAID-4 나 RAID-5 장치를 포맷할 때 쓸 수 있는 특별한 옵션이 있습니다.
chunk-size 가 32 kB 란 것은 32 kB 만큼 연속적으로 디스크에 데이터가 기록된다는 뜻입니다. ext2 파일시스템에 4kB 로 block-size를 정하게 되면, 8개의 파일시스템 블록이 하나의 array chunk에 기록되게 됩니다. 파일시스템을 생성할 때 쓰는 mke2fs 로 이렇게 지정할 수 있습니다. mke2fs -b 4096 -R stride=8 /dev/md0 RAID-{4,5} 의 성능은 이 옵션에 큰 영향을 받습니다. ext2fs 의 blocksize 는 파일시스템의 성능에 중대한 영향을 미칩니다. 파일시스템의 크기가 수백메가바이트 이상이라면 항상 4kB 의 block size 를 사용하십시오. (많은 수의 작은 파일을 사용하는 경우는 제외) 4.10 AutodetectionAutodetection 은 시스템 부팅시에 RAID 장치가 자동으로 인식되게 합니다. 이 기능을 사용하려면:
주의:파티션 타입을 바꾸려면 RAID를 멈추어야 합니다.
autodetection 기능이 동작하게 되었습니다. 시스템을 다시 시작하고
부팅과정에서 보이는 메시지는 대략 다음과 같습니다: Oct 22 00:51:59 malthe kernel: SCSI device sdg: hdwr sector= 512 bytes. Sectors= 12657717 [6180 MB] [6.2 GB] Oct 22 00:51:59 malthe kernel: Partition check: Oct 22 00:51:59 malthe kernel: sda: sda1 sda2 sda3 sda4 Oct 22 00:51:59 malthe kernel: sdb: sdb1 sdb2 Oct 22 00:51:59 malthe kernel: sdc: sdc1 sdc2 Oct 22 00:51:59 malthe kernel: sdd: sdd1 sdd2 Oct 22 00:51:59 malthe kernel: sde: sde1 sde2 Oct 22 00:51:59 malthe kernel: sdf: sdf1 sdf2 Oct 22 00:51:59 malthe kernel: sdg: sdg1 sdg2 Oct 22 00:51:59 malthe kernel: autodetecting RAID arrays Oct 22 00:51:59 malthe kernel: (read) sdb1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sdb1,1> Oct 22 00:51:59 malthe kernel: (read) sdc1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sdc1,2> Oct 22 00:51:59 malthe kernel: (read) sdd1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sdd1,3> Oct 22 00:51:59 malthe kernel: (read) sde1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sde1,4> Oct 22 00:51:59 malthe kernel: (read) sdf1's sb offset: 6205376 Oct 22 00:51:59 malthe kernel: bind<sdf1,5> Oct 22 00:51:59 malthe kernel: (read) sdg1's sb offset: 6205376 Oct 22 00:51:59 malthe kernel: bind<sdg1,6> Oct 22 00:51:59 malthe kernel: autorunning md0 Oct 22 00:51:59 malthe kernel: running: <sdg1><sdf1><sde1><sdd1><sdc1><sdb1> Oct 22 00:51:59 malthe kernel: now! Oct 22 00:51:59 malthe kernel: md: md0: raid array is not clean -- starting background reconstruction이 출력물은 RAID-5 가 시스템의 비정상적인 종료등으로 인해 올바르게 셧다운 되지 않았을때 나오는 것입니다. 재구성이 자동으로 실행됩니다. 패리티 정보만 불일치할 뿐 실제 데이터에는 이상이 없으므로 이 장치는 마운트해서 사용할 수 있습니다. 부팅시에 자동으로 인식되면 셧다운도 자동으로 됩니다. init 스크립트를 신경쓸 필요도 없습니다. 그냥 다른 /dev/sd 나 /dev/hd 장치처럼 사용하면 됩니다. init 스크립트에 있는 raidstart/raidstop 명령은 old-style RAID를 위한 것이므로 지워도 무방합니다. 4.11 Booting on RAIDThere are several ways to set up a system that mounts it's root filesystem on a RAID device. Some distributions allow for RAID setup in the installation process, and this is by far the easiest way to get a nicely set up RAID system. 새로은 LILO 는 RAID-1 장치를 지원하기때문에 RAID 장치로 부터 커널이 적재될 수 있습니다. Newer LILO distributions can handle RAID-1 devices, and thus the kernel can be loaded at boot-time from a RAID device. LILO will correctly write boot-records on all disks in the array, to allow booting even if the primary disk fails. The author does not yet know of any easy method for making the Grub boot-loader write the boot-records on all disks of a RAID-1. Please share your wisdom if you know how to do this. Another way of ensuring that your system can always boot is, to create
a boot floppy when all the setup is done. If the disk on which the
4.12 RAID 장치에 위치하는 루트 파일시스템RAID 디스크로 부팅하기위해서는 루트 파티션(/)이 RAID디스크로 마운트되어 있어야 합니다. 두 가지 방법이 있는데 한 가지는 RAID가 아닌 디스크에 설치된 루트파티션을 RAID디스크로 옮기는 방법입니다. 요즘의 배포판에서는 초기 설치시에 RAID를 생성해서 설치할 수 있으므로 이 방법은 별 쓸모가 없을겁니다. 하지만 기존 시스템을 이 방법을 이용해서 이전해야 할 경우도 있을 겁니다. In order to have a system booting on RAID, the root filesystem (/) must be mounted on a RAID device. Two methods for achieving this is supplied bellow. The methods below assume that you install on a normal partition, and then - when the installation is complete - move the contents of your non-RAID root filesystem onto a new RAID device. Please not that this is no longer needed in general, as most newer GNU/Linux distributions support installation on RAID devices (and creation of the RAID devices during the installation process). However, you may still want to use the methods below, if you are migrating an existing system to RAID. 1번 방법This method assumes you have a spare disk you can install the system on, which is not part of the RAID you will be configuring.
If you're doing this with IDE disks, be sure to tell your BIOS that all disks are ``auto-detect'' types, so that the BIOS will allow your machine to boot even when a disk is missing. 2번 방법This method requires that your kernel and raidtools understand the
You can only use this method on RAID levels 1 and above, as the method uses an array in "degraded mode" which in turn is only possible if the RAID level has redundancy. The idea is to install a system on a disk which is purposely marked as failed in the RAID, then copy the system to the RAID which will be running in degraded mode, and finally making the RAID use the no-longer needed ``install-disk'', zapping the old installation but making the RAID run in non-degraded mode.
4.13 RAID 장치에서 시스템이 부팅되게 만들기For the kernel to be able to mount the root filesystem, all support for the device on which the root filesystem resides, must be present in the kernel. Therefore, in order to mount the root filesystem on a RAID device, the kernel must have RAID support. The normal way of ensuring that the kernel can see the RAID device is to simply compile a kernel with all necessary RAID support compiled in. Make sure that you compile the RAID support into the kernel, and not as loadable modules. The kernel cannot load a module (from the root filesystem) before the root filesystem is mounted. However, since RedHat-6.0 ships with a kernel that has new-style RAID support as modules, I here describe how one can use the standard RedHat-6.0 kernel and still have the system boot on RAID. Booting with RAID as moduleYou will have to instruct LILO to use a RAM-disk in order to achieve
this. Use the mkinitrd --with=<module> <ramdisk name> <kernel>For example: mkinitrd --preload raid5 --with=raid5 raid-ramdisk 2.2.5-22 This will ensure that the specified RAID module is present at boot-time, for the kernel to use when mounting the root device. 4.14 Converting a non-RAID RedHat System to run on Software RAID이 부분의 내용은 IBM의 Mark Price 가 보내준 내용입니다. 소개RAID 를 사용하지 않던 리눅스 시스템을 Software RAID 를 사용하는 시스템으로 탈바꿈하는 방법에 대해 설명합니다. ScopeRedhat 7.1 에서 테스트되었으며 Software RAID (md) 가 지원되는 다른 배포본에도 적용가능한 내용입니다. Pre-conversion example system이 시스템에는 sda, sdb 두 개의 동일한 크기의 스카시 디스크가 있습니다. 두 디스크는 똑같은 파티션 설정을 가지고 있으며 블록크기까지도 동일합니다. DEVICE MOUNTPOINT SIZE DEVICE MOUNTPOINT SIZE /dev/sda1 / 2048MB /dev/sdb1 2048MB /dev/sda2 /boot 80MB /dev/sdb2 80MB /dev/sda3 /var/ 100MB /dev/sdb3 100MB /dev/sda4 SWAP 1024MB /dev/sdb4 SWAP 1024MB이 예제에서는 두 개의 물리적 디스크로 구성되는 RAID-1 (미러링) 을 설정해 보겠습니다. 1 단계 - rescue cd 나 floppy 로 부팅하기레드햇 설치 CD는 rescue 모드로 부팅하면 시스템에서 발견되는 모든 파일시스템을 마운트하는 기능을 제공합니다. lilo 프롬프트에서 다음을 입력합니다. lilo: linux rescue ide=nodma 위와 같이 설정을 하면 인스톨러가 어떤 디스크에 루트 파일시스템이 들어있는가를 물어보게 됩니다. 여기에서는 sda 를 선택하시면 됩니다. 인스톨러는 다음과 같이 파일시스템을 마운트합니다. DEVICE MOUNTPOINT TEMPORARY MOUNT POINT /dev/sda1 / /mnt/sysimage /dev/sda2 /boot /mnt/sysimage/boot /dev/sda3 /var /mnt/sysimage/var /dev/sda6 /home /mnt/sysimage/home 주의: - 다른 배포본은 마운트 포인트의 이름이 다르거나 수동으로 마운트해야 하는 경우도 있습니다. 2 단계 - raidtab 파일 생성하기/mnt/sysimage/etc/raidtab 파일(혹은 그에 상응하는 위치의 파일)을 생성합니다. 그 예는 다음과 같습니다. raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda1 raid-disk 0 device /dev/sdb1 raid-disk 1 raiddev /dev/md1 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda2 raid-disk 0 device /dev/sdb2 raid-disk 1 raiddev /dev/md2 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 주의: - 장치들을 올바른 순서로 설정하는 것이 중요합니다. 그 예로 이제 root 파일시스템을 복사해 옵니다. (rescue)# cp /mnt/sysimage/etc/raidtab /etc/raidtab 3 단계 - md 장치 생성하기두 가지 방법이 있습니다. /mnt/sysimage/dev 에서 장치 파일을 복사해 오거나 mknod 로 만들면 됩니다. md 장치는 major number가 9 입니다. (rescue)# mknod /dev/md0 b 9 0 (rescue)# mknod /dev/md1 b 9 1 (rescue)# mknod /dev/md2 b 9 2 4 단계 - 파일시스템 언마운트하기raid 장치를 기동하고 동기화하기 위해서는 먼저 임시 파일시스템들을 언마운트해야 합니다. (rescue)# umount /mnt/sysimage/var (rescue)# umount /mnt/sysimage/boot (rescue)# umount /mnt/sysimage/proc (rescue)# umount /mnt/sysimage 5 단계 - raid 장치 기동하기/dev/sda1, /dev/sda2, /dev/sda3 에 기존의 파일시스템이 있으므로 raid 장치를 강제로 가동시켜야 합니다. (rescue)# mkraid --really-force /dev/md2 진행상황, 상태, 진척도 등을 /proc/mdstat 파일을 통해 알 수 있습니다. /boot 와 / 파일시스템도 같은 방법을 적용합니다. (rescue)# mkraid --really-force /dev/md1 (rescue)# mkraid --really-force /dev/md0 md 드라이버는 한 번에 한 장치씩 동기화하게 됩니다. 6 단계 - 파일시스템들을 다시 마운트하기이제 동기화된 파일시스템들을 /mnt/sysimage 로 마운트합니다. (rescue)# mount /dev/md0 /mnt/sysimage (rescue)# mount /dev/md1 /mnt/sysimage/boot (rescue)# mount /dev/md2 /mnt/sysimage/var 7 단계- root 디렉토리 바꾸기현재 디렉토리를 루트 디렉토리로 바꿉니다. (rescue)# chroot /mnt/sysimage 8 단계 - 설정 파일 수정하기md 디바이스로 부팅하고 md 디바이스를 마운트하려면 /etc/fstab 파일을 알맞게 변경해 주어야 합니다. 주의: - boot device 는 /dev/sda 가 되고 root device 는 /dev/md0 로 설정해야 합니다. boot=/dev/sda map=/boot/map install=/boot/boot.b prompt timeout=50 message=/boot/message linear default=linux image=/boot/vmlinuz label=linux read-only root=/dev/md0
/dev/md0 / ext3 defaults 1 1 /dev/md1 /boot ext3 defaults 1 2 /dev/md2 /var ext3 defaults 1 2 /dev/sda4 swap swap defaults 0 0 9 단계 - LILO 실행하기With the 10 단계 - 파티션 타입 바꾸기md 를 구성하는 디스크들의 파티션 타입은 모두 0xFD 이어야 합니다. 't' 옵션으로 파티션의 타입을 변경합니다. (rescue)# fdisk /dev/sda (rescue)# fdisk /dev/sdb 'w' 옵션으로 변경된 파티션 테이블을 저장합니다. 11 단계 - 파일시스템 크기 변경하기raid 장치를 생성하게되면 두번째 수퍼블록이 파티션의 끝부분에 저장되기 때문에 물리적 파티션의 크기가 약간 줄어들게 됩니다. 이 상태에서 리부팅을 하게되면 수퍼블록이 손상됐다는 메세지가 나오며 부팅이 되지 않을 겁니다. 그래서 재부팅하기 전에 그 부분을 조정해 주어야 합니다. 루트파티션을 제외한 모든 md 기반 파일시스템이 언마운트 되었는지 확인하고 루트파티션을 read-only 로 마운트하십시오. (rescue)# mount / -o remount,ro 모든 md 장치를 fsck 하라는 메세지를 보게 될 것이기 때문에 루트파티션을 읽기 전용으로 마운트하는 겁니다. -f 옵션은 문제가 없는 파일시스템일지라도 강제로 fsck 를 수행하게 합니다. (rescue)# e2fsck -f /dev/md0 이 명령은 inconsistent sizes 와 수퍼블록 손상을 이유로 에러메세지를 내보낼 겁니다. 'Abort?' 하려면 N 을 입력하십시오. (rescue)# resize2fs /dev/md0 해당되는 모든 12 단계 - 점검사항이제는 리부팅을 할 차례입니다. 리부팅하기 전에 아래 목록을 빠짐 없이 확인하십시오.
13 단계 - 재부팅하기이제 안전하게 시스템을 재부팅할 수 있습니다. 시스템이 부팅되면서 자동으로 md 장치를 인식하게 됩니다. root 파일시스템은 이제 미러링된 겁니다. 4.15 주의사항동작중인 RAID 의 구성 디스크의 파티션을 절대로 바꾸지 마십시오. 꼭 그래야 한다면 RAID를 멈춘다음 하십시오. It is easy to put too many disks on a bus. A normal Fast-Wide SCSI bus can sustain 10 MB/s which is less than many disks can do alone today. Putting six such disks on the bus will of course not give you the expected performance boost. It is becoming equally easy to saturate the PCI bus - remember, a normal 32-bit 33 MHz PCI bus has a theoretical maximum bandwidth of around 133 MB/sec, considering command overhead etc. you will see a somewhat lower real-world transfer rate. Some disks today has a throughput in excess of 30 MB/sec, so just four of those disks will actually max out your PCI bus! When designing high-performance RAID systems, be sure to take the whole I/O path into consideration - there are boards with more PCI busses, with 64-bit and 66 MHz busses, and with PCI-X. More SCSI controllers will only give you extra performance, if the SCSI busses are nearly maxed out by the disks on them. You will not see a performance improvement from using two 2940s with two old SCSI disks, instead of just running the two disks on one controller. persistent-superblock 옵션이 누락되었다면 array 를 정지했다가 다시 동작시킬때 되지 않을 겁니다. raidtab 에 옵션을 올바르게 설정하고 array 를 다시 만드십시오. 물론 array 의 데이터는 소실됩니다. RAID-5 를 구성하는 디스크를 교체한 뒤 재구성이 실패하면 raidtab의 device 순서 때문일수 있습니다. raidtab의 첫 줄의 "device ..." 와 "raid-disk ..." 부분을 array 순서의 마지막부분으로 옮겨 보시기 바랍니다. 5. 성능시험RAID의 결함허용 기능이 정말 작동되는지, 여러분의 설정이 잘 되었는지 시험해 볼 차례입니다. 그런데 어떻게 디스크가 고장난 상황을 모의할까요? The short story is, that you can't, except perhaps for putting a fire axe thru the drive you want to "simulate" the fault on. You can never know what will happen if a drive dies. It may electrically take the bus it is attached to with it, rendering all drives on that bus inaccessible. I have never heard of that happening though, but it is entirely possible. The drive may also just report a read/write fault to the SCSI/IDE layer, which in turn makes the RAID layer handle this situation gracefully. This is fortunately the way things often go. 5.1 모의로 디스크 장애 상황을 만들기모의로 디스크 장애 상황을 만들려면 디스크 하나를 빼십시오. 물론 시스템이 꺼진 상태에서 빼야합니다. If you are interested in testing whether your data can survive with a disk less than the usual number, there is no point in being a hot-plug cowboy here. Take the system down, unplug the disk, and boot it up again. syslog 와 디스크 장애를 극복하는 것은 RAID-{1,4,5} 라는 것을 명심하십시오. Linear 나 RAID-0 은 구성 디스크가 없어지면 그대로 끝입니다. 디스크를 연결하고(물론 전원을 끈 후) 5.2 모의로 데이터 오류 상황만들기RAID는 (하드웨어 방식이든 소프트웨어 방식이든), 디스크에 기록한 뒤 에러가 리턴되지 않으면 문제가 없는 것으로 간주하게 됩니다. 물론 이는 발생할 확률이 극히 드물지만 이렇게 된다면 파일시스템에도 오류가 생기게 됩니다. RAID cannot and is not supposed to guard against data corruption on
the media. Therefore, it doesn't make any sense either, to purposely
corrupt data (using RAID는 데이터 무결성을 보장하지 않습니다. 디스크의 장애를 극복하는 것이 전부입니다. 6. 재구성여러분께서 이 문서의 나머지를 읽으셨다면 대충 감이 오실겁니다. 요약하자면,
다음의 내용은 Martin Bene 씨가 보내준 내용이며 위에 언급한 내용의 장애로 부터
복구하는 방법을 소개하고 있습니다.
이 부분은 6.1 여러 개의 디스크 장애로 부터의 복구상황은 이렇습니다.
이럴때에는 이를 위해서는 최신의 array 를 기동할 때 기록되는 내용을 syslog 에서 확인하면, 각 superblock 의 이벤트 카운트를 보실 수 있습니다. 보통 그 중 가장 낮은 숫자(가장 오래된 것)를 택하는 것이 좋습니다. 주의 :
7. 성능 (Performance)실제로 software RAID 를 사용하는 시스템에서 측정된 벤치마킹 자료를 소개합니다. 성능측정은 이 자료는 하나의 큰 파일의 입/출력 대역폭만을 측정한 것입니다. 대용량의 읽기/쓰기에서의 I/O 대역폭 최대치에 관점을 둔다면 이 자료들은 유용하게 쓰일 수 있습니다. 하지만 뉴스그룹 서버나 웹 서버 등을 용도로 하는 시스템에서는 큰 의미가 없을 수도 있습니다. 이 자료는 어디까지나 모의로 실험된 것입니다. 그러므로 참고만 하시기 바랍니다. 성능 측정에 사용된 시스템의 사양은 다음과 같습니다.
U2W 콘트롤러에 세 개의 U2W 디스크가 연결되어있고, UW 콘트롤러에 UW 디스크 하나가 연결되어있습니다. RAID 의 사용여부를 떠나서 이 사양의 시스템에서 SCSI 버스를 통해 30 MB/s 이상의 대역폭을 얻을 수 없었습니다. 이는 이 시스템이 구형인데다가 메모리의 대역폭이 낮기 때문이었던것 같습니다. 7.1 RAID-0읽기는 연속된 블록들의 입력이며, 쓰기는 연속된 블록들의 출력입니다. 측정에 사용된 파일의 크기는 1GB 이며 single-user 모드에서 수행되었습니다. TCQ 기능은 사용하지 않았습니다.
RAID 의 chunk-size 는 별 영향이 없어보입니다. 하지만 IA-32 시스템에서 ext2fs 의 block-size 는 4kB(page size)를 유지하는 것이 좋습니다. 7.2 TCQ 를 적용한 RAID-0이번에는 SCSI 드라이버에 크기 8의 queue depth TCQ 를 적용하였습니다. 별 차이가 없었습니다.
TCQ 가 약간의 쓰기 성능을 향상시켰으나 전체적으로는 큰 차이가 없었습니다. 7.3 RAID-5RAID-5 에서 같은 측정을 하였습니다.
이번에는 chunk-size 와 block-size 의 차이에 따라 다른 결과가 나왔습니다. 7.4 RAID-10RAID-10 은 mirrored stripes 로써, 두 개의 RAID-0 로 RAID-1 를 구현한 것입니다. RAID-10 is ``mirrored stripes'', or, a RAID-1 array of two RAID-0 arrays. chunk-size 는 RAID-1 과 RAID-0 array 모두 같게 설정했습니다. 서로 다른 크기의 chunk-size 도 가능하지만 측정해보지 않았습니다.
측정에 사용된 파일의 크기는 900MB 였으며 네 개의 500MB 파티션으로 구성되어 공간이 충분하지 못한 관계(두 개의 1000MB array 로 된 상황)로 1GB 파일을 사용할 수 가 없었습니다. 8. 관련 프로그램이 문서에는 없지만 Software-RAID 을 운영하는데 유용한 프로그램들이 개발중이거나 개발되어 있을 것입니다. 8.1
|
To criticize the incompetent is easy; it is more difficult to criticize the competent. |