Piki's Play
Chapter 7. 다중 디스크 볼륨 - RAID 본문
들어가기전에) 많은 중요 서버에서 성능, 신뢰성, 확장성을 위해 다중 디스크를 사용한다.
이번 장에서는 분석을 힘들게 하는 'RAID'와 '디스크 스패닝'에 대해서 배워보도록 하자.
=> 오래전 개념이므로 구식이 될수도있다. (이 책이 2011년도꺼라;;)
7.1 RAID(Redundant Array of Inexpensive Disks)
※ 특징
- 고성능 시스템이나 중요 시스템에서 자주 사용된다.
- 저비용 디스크로 고비용, 고성능 디스크와 유사한 성능과 저장능력을 가지고 있다.
- RAID의 주요이론은 중복디스크를 제공하고 성능향상을 위해 여러 디스크를 사용하는 것이다.
- 하드웨어 컨트롤러나 소프트웨어 드라이브는 여러 디스크를 한번에 병합하고 이는 단일 큰 볼륨으로 인식된다.
▶ RAID 레벨
- RAID는 여러레벨이 있고 각 레벨은 다른 정도의 신뢰성과, 성능향상을 제공한다. 여기서는 6가지 레벨을 다루자
- RAID 볼륨은 하드디스크와 결합하는 하드웨어나, 소프트웨어에 의해 만들어지는 볼륨이다.
※ RAID Lv.0 (스트라이핑)
-> 2개 이상의 디스크를 사용하고 두 디스크를 교차하면서 블록크기의 데이터 묶음으로 나눈다.
※ RAID Lv.1 (미러링)
-> 2개 이상의 디스크를 사용해서 데이터를 미러링한다. 한 디스크에 문제가 생기면 한 디스크를 복구용으로 사용한다.
※ RAID Lv.2
-> RAID 레벨2 볼륨은 흔하지 않다. 디스크에서 데이터를 읽을 때 정확하지 않은 데이터를 여러 디스크에 분배하고, 별도의 오류수정코드 값들을 포함하게 한다. 또한 비트 크기의 데이터 묶음으로 나눈다.
※ RAID Lv.3
-> 레벨3은 최소 3개의 디스크가 필요하다. 또한 전용 패리티 디스크를 가진다. 다른 두 디스크에서 오류 발생시 그 내용을 다시 생성하기 위해 패리티 디스크를 사용한다.
-> 데이터를 바이트 크기 묶음으로 나눠서 배분하거나 교대로 디스크에 나눠서 저장한다. 패리티 전용 디스크가 있는 것과 묶음단위가 블록이 아닌 바이트 인것을 제외하면 레벨 0과 비슷하다.
+) 패리티 정보를 계산하는 방법은 '배타적 논리합' (XOR)을 이용하는 것이다. 두개의 입력(1비트)를 가져오고 1비트의 출력을 만든다.
- XOR연산은 디스크 오류 복구가 용이하다. 만약 데이터디스크3개, 패리티 디스크 1개가 있다고 가정하자.
각각 1011 0010, 1100 1111, 1000 0001, 1111 1100 일때
디스크2가 오류발생시 다음과 같이 복구가 가능하다.
1111 1100 XOR (1011 0010 XOR 1000 0001) = 1100 1111
※ RAID Lv.4
-> 볼륨을 블록 크기 데이터 묶음으로 배분하는 차이 외에는 RAID Lv.3와 동일하다.
※ RAID Lv.5
-> RAID Lv.4 와 유사하지만 패리티의 병목현상을 제거했다. 전용 패리티 디스크가 없으며 모든 디스크는 데이터와 패리티를 포함한다.
▶ 하드웨어 RAID
-> RAID 볼륨을 만드는 한 방법은 특정 하드웨어를 사용하는 것이다.
이 정레서는 하드웨어 RAID 동작방법과 한 시스템에서 하드웨어 RAID 디스크를 수집할 수 있는 방법에 대해 알아보자.
▷ 배경
- 하드웨어 RAID는 두가지의 형태로 구현되어있다.
1. 버스들 중 한개에 삽입하는 특별한 컨트롤러
2. ATA, SCSI, Firewire 같은 일반적인 디스크 컨트롤러에 삽입하는 형태
하드디스크들을 이 특정부분에 연결시 컴퓨터들은 각 디스크가 아닌 오직 RAID 볼륨만을 보게된다.
아래 그림은 디스크, 컨트로러, 볼륨사이의 연결을 보여준다.
▷ 수집과 분석
-> 다양한 RAID 하드웨어 구현 유형이 존재한다. 그러나 여기서는 몇개의 기본적인 것만 언급하겠다.
- RAID 볼륨을 분석하기 위해서 최종 RAID 볼륨을 얻는것이 가장 쉽게 분석할 수 있는 방법이다. 이것을 수행하는 방법중 하나는 RAID 컨트롤러에 드라이버를 갖춘 리눅스 라이브 CD로 분석 대상 시스템을 부팅하는 것이다. 이후 dd나 비슷한 명령을 사용해서 분석할 수 있다.
- 현장 수집에서 RAID 컨트롤러 드라이브를 갖추지 못했다면 디스크와 컨트롤러를 분석실로 가져오자! (드라이브없이 통합하기 매우 어렵다)
- RAID 볼륨은 디스크의 모든 섹터를 사용하지 않는다. 따라서 비사용 섹터들은 숨겨진 데이터를 포함할 수 있다. 디스크 레이아웃을 모르면 디스크 비사용 섹터를 구분하기 어렵다.
▶ 소프트웨어 RAID
-> RAID를 소프트웨어로 구분한 방식이다.
▷ 배경
- 소프트웨어 RAID는 운영체제에서 개별 디스크들을 결합시켜주기 위해 특정 드라이버를 갖는다.
- 여기서 운영체제는 각각의 디스크들을 보지만 사용자는 RAID 볼륨만을 보게된다.
각 디스크들은 유닉스는 '미가공장치', 윈도우는 '장치오브젝트'를 통해서 시스템에 접근할 수 있다.
- 소프트웨어 RAID는 CPU가 비트를 계산하고 디스크에 데이터를 나눠야 하므로 하드웨어 RAID만큼 효율적이지 못하다.
- 윈도우 2000, XP는 LDM(Logical Disk Manager)가 RAID를 관리했다. (언제적이야...ㅜㅜ)
LDM은 도스기반 파티션과는 다른 동적 디스크로 포맷한 디스크들이 필요했다. LDM은 레벨 0(스트라이핑), 1(미러링), 5(패리티+스트라이핑)을 만들 수 있으나 레벨 1, 5는 오직 윈도우에서만 가능하다. 또한 RAID 볼륨의 모든 설정정보는 로컬이 아닌 디스크에 저장한다.
- 리눅스는 RAID를 MD(Multiple device)커널 드라이버로 구성한다. MD드라이버는 레벨 0, 1, 5를 지원한다. 또한 원래의 시스템 외에도 이런설정을 사용할 수 있도록 설정정보위치(/etc/raidtab)를 지정할 수 있는 '영구적인 슈퍼 블록'이 있다.
▷ 수집과 분석
-> 하드웨어 RAID분석과 마찬가지로 RAID 볼륨을 얻어야 한다. 하지만 하드웨어 RAID와 다르게 디스크들을 한번에 결합해줄 수 있는 일부 도구들이 있다.
-> 소프트웨어 RAID에서는 RAID 볼륨 재구성을 위한 원래의 소프트웨어(드라이버)가 필요하지 않다.
- 리눅스에서 윈도우 디스크를 분석시 LDM을 사용할 수 있다. 만약 RAID 볼륨 구성을 위해 윈도우를 사용하게 되면 '하드웨어 쓰기방지'를 반드시 해주어야 한다.
- 리눅스에서 윈도우 LDM을 확인하기 위해 부팅시 RAID내에 각 파티션을 위한 장치를 생성해야 한다. RAID 설치와 파티션 설정을 담고있는 '/etc/raidtab' 파일을 반드시 수정해야한다.
※ 다음은 64KB 블록을 사용하고 두 파티션(/dev/hdb1, /dev/hdd1)을 갖는 윈도우 LDM RAID 레벨 0의 설정파일이다.
- 이 설정파일을 이용해서 /dev/md0 장치를 읽기전용으로 마운트하거나 dd를 이용해서 이미지를 만들 수 있다.
- 수사전에 이 과정을 미리 테스트하고 분석 시 디스크 복사본을 만들어야 한다.
- 처리과정은 다음 절 "디스크 스패닝"에서 다루도록한다.
- 위 설정은 '리눅스 MD 소프트웨어 RAID'를 구성하기 위해 사용되고, 원본 시스템에서 raidtab을 복사할 수 있으면 RAID 볼륨을 구성할 수 있다.
-> Encase와 ProDiscover은 윈도우 RAID 볼륨에서 디스크를 가져오고 단독 볼륨이었던 것처럼 분석하는 기능을 제공한다.
▶ 전반적인 분석의견
-> RAID 볼륨으로 구서된 시스템을 조사하는 일은 많지 않고 구형 방법의 다양성 때문에 조사하기 쉽지 않다.
RAID 볼륨이나 디스크 수집시 원본디스크를 수정하지 않도록 매우 주의하자! (하드웨어 방지기, 읽기전용 점퍼사용)
-> 전체 RAID 볼륨 이미지를 만들기 전에 각 디스크의 이미지를 만드는 것을 추천한다.
-> RAID는 디스크 전체를 사용하지 않기 때문에 숨겨진 데이터 영역이 존재하기도 한다.
▶ 요약
- 많은 시스템들이 "디스크 스패닝" 불륨관리 지원해서 소프트웨어 RAID와 결합하기 때문에 자세한 사항은 "디스크 스패닝"에서 다룬다.
- 조사를 위해 필요한 것은 RAID 시스템 수집을 연습하는 것이다. 또한 개별적인 디스크를 수집하는 것은 매우 안전해야한다.
'포렌식 > 파일시스템 (파일시스템 포렌식분석)' 카테고리의 다른 글
(Part 3) Chapter 8. 파일시스템 분석 - 기초, 파일시스템, 내용 (0) | 2020.02.12 |
---|---|
다중 디스크 봄륨 - 디스크 스패닝 (0) | 2020.02.10 |
서버 기반 파티션 - GPT 파티션 (0) | 2020.02.06 |
서버 기반 파티션 - 썬 솔라리스 슬라이스 (0) | 2020.02.05 |
Chapter 6. 서버 기반 파티션 - BSD 파티션 (0) | 2020.02.03 |