2013년 12월 2일 월요일

RAID란 무엇인가?

RAID는 원래 1988년 미국의 U.C. Berkely의 컴퓨터공학과에서 발표한 논문으로부터 시작된 전산학 개념 중의 하나이다. 과거 대용량 디스크가 엄청나게 비쌌던 시절에, 값싼 저용량 디스크를 여러 개 묶어서 하나의 대용량 디스크처럼 쓰고자 하는 기술로 출발한 것이 RAID이다. 스토리지 업체 뿐만 아니라 웬만한 OS에서도 그것이 하드웨어 방식이건 소프트웨어 방식이건 RAID는 기본적으로 제공하는 기술이다. 과거에 비하여 100GB이상의 대용량 디스크가 가정에서도 쉽게 사용되고 있는 현대 시대에도 RAID는 필요하다. 스토리지에서 흔히 사용되는 테라바이트 단위의 정말로 대용량이 필요한 곳에는 없어서는 안될 기술이 바로 RAID이다. 단적으로 1TB짜리 디스크 모듈은 지구상에 존재하지 않는걸 봐도 그렇지 않은가. 사실 RAID를 논한다는 것은 대단히 기술적인 문제이고 아무리 쉽게 이야기를 하고 싶어도 어쩔 수 없이 어느 정도는 골치 아픈 용어와 익숙치 않은 개념 들을 사용할 수 밖에 없는, 별로 재미 없는 주제이긴 하지만 한번만 머리 아프면 IT업계에 종사하는 사람들에겐 여러 곳에서 아는 척(?)할 수 있는 유용한 개념중의 하나이기도 하므로 하품은 조금 뒤에 하기로 하고 수박 겉핥는 식으로라도 한번 알아보기로 하자.

RAID의 목적은 크게 세가지라고 볼 수 있다. 첫째는 서두에 밝힌 바와 같이 여러 개의 디스크 모듈을 하나의 대용량 디스크처럼 사용할 수 있도록 한다는 것, 두번째는 여러 개의 디스크 모듈에 데이터를 나누어서 한꺼번에 쓰고 한꺼번에 읽는 식으로 IO속도를 높인다는 것, 마지막으로 여러 개의 디스크를 모아서 하나의 디스크로 만들었으니 그중 하나 혹은 그 이상의 디스크에 장애가 나더라도 최소한 데이터가 사라지는 것은 방지하자는 것이 그 목적이라고 할 수 있다. 이러한 RAID에는 몇 가지 종류가 있다. RAID 레벨이라고 하는 것이 그것인데 RAID-0, RAID-1 이런 식으로 뒤에 번호가 붙는다. RAID 레벨에는 0부터 7까지가 있고 이들을 조합한 것이 몇 가지가 있는데, 모두 설명하자면 정말 이 페이지를 바로 지나쳐 버릴지도 모르므로 실제로 업무 환경에서 사용되고 제품에 적용되는 몇 가지만 간단하게 알고 넘어가자.


RAID-0

두번째 목적에서 언급한 것처럼 여러 개의 디스크 모듈에 데이터를 분산 저장하는 기술을 스트라이핑(striping)이라고 한다. RAID-0는 단순한 스트라이핑이다. 10개의 100GB용량의 디스크를 하나의 1TB디스크로 묶어서 RAID-0를 적용할 수 있다. 10GB짜리 파일 하나를 1개의 디스크에 저장하는 것보다는 10개의 디스크에 동시에 나누어 저장하고 한꺼번에 읽어들이는 것이 빠르다는 것은 직감으로도 알 수 있으리라. 얼핏 보면 10배 빠를 것 같기도 하다. 다섯번째 디스크에 장애가 난다면….? 10개 디스크에 저장된 모든 데이터는 지구상에서 사라진다. 이것이 RAID-0이다. 실제로 RAID-0만으로 구성된 스토리지는 주변에서 찾기 쉽지 않다. 어지간한 강심장이 아니라면 RAID-0만으로는 사용하지 않는다고 보면 된다. 단, 이후에 설명하는 모든 RAID레벨은 기본적으로 RAID-0를 포함한다고 보면 된다. 데이터를 분산 저장한다는 개념은 누가 보아도 명백히 훌륭하기 때문이다.


RAID-1

그렇다면 어떻게 해야 디스크 모듈의 장애로 인하여 데이터가 사라지는 경우를 막을 수 있을까. 이것을 연구한 것이 RAID-0를 제외한 모든 종류의 RAID가 고민하는 부분이고 각각 다른 접근 방식을 택하고 있다. 가장 단순하면서도 가장 강력한 방법이 RAID-1이다. RAID-1은 미러링(mirroring)이라고도 하는데, 말 그대로 완전히 동일한 내용의 디스크 모듈을 두개씩 가져가는 것이다. 100GB디스크 모듈 10개로 500GB의 대용량 디스크를 만들 수 있다. 각 모듈이 두개씩 한쌍이 되기 때문에 실제 가용량은 반밖에 되지 않는다. 이것이 RAID-1의 단점이다. 원하는 만큼의 용량을 구성하고자 할 때 가장 돈이 많이 든다는 것이다. 어떤 디스크에 장애가 나도 데이터는 멀쩡히 살아 있게 된다. 단, 하나의 쌍으로 이루어진 디스크 두개가 동시에 장애가 난다면 역시 속수 무책이다.


RAID-4

RAID-1은 너무 비싸다. 디스크를 반밖에 사용하지 못한다니… 너무 아깝다는 생각이 들지 않는가. 그래서 연구해낸 것이 패리티(Parity)라는 것이다. 각 디스크에 데이터를 분산 저장할 때 저장되는 데이터들을 특정 연산을 한 결과값이 패리티 데이터인데, 이러한 패리티 데이터를 별도의 패리티 디스크에 저장하는 것이 RAID-4이다. 데이터 디스크와 패리티 디스크가 독립적이기 때문에 볼륨을 확장할 때 별도의 데이터 백업과 복구 과정을 없앨 수 있는 유연성을 가지고 있는데 이것이 RAID-4의 최대 장점이다. 하지만 문제는 한 개의 디스크 장애에 대해서는 완벽하게 대처할 수 있지만 동시에 두개의 디스크에 장애가 나면 데이터가 손실된다. 왜 그럴 수 밖에 없는가는 계속 숫자 이야기를 해야 하기 때문에 자세히 설명 하지는 않겠다. 또 하나의 문제는 패리티 디스크에 병목 현상이 발생할 소지가 매우 많고 이로써 전체 스토리지의 성능 저하를 가져온다는 것이 가장 큰 단점인데, 이 병목 현상을 근본적으로 해결하는 원천 기술을 보유한 네트워크 어플라이언스(Network Appliance, 이하 넷앱)를 제외한 다른 스토리지 업체들이 RAID-4를 채택하지 못하는 이유가 여기에 있다. 이 병목현상만 없앨 수 있다면 RAID-4는 가장 장점이 많은 RAID방식이라고 할 수 있다.


RAID-5

RAID-4의 병목현상을 해결하기 위하여 나온 것이 RAID-5이다. 별도의 패리티 디스크를 가지고 있지 않고 모든 패리티 데이터를 데이터 디스크에 분산 저장하는 것이다. 이렇게 하면 패리티 디스크 자체가 없기 때문에 패리티 디스크로 인한 병목 현상 자체도 없어지는 것은 당연하다. 하지만 동시에 두개의 디스크에 장애가 나면 데이터를 손실하는 문제는 여전히 가지고 있고 더군다나 RAID-4가 가지고 있는 볼륨 확장의 유연성은 사라진다. 디스크를 추가할 때 모든 데이터에 대한 패리티 데이터를 다시 연산하여 재기록 해야 하기 때문이다. 하지만 현재까지는 세계적으로 가장 많이 사용되는 RAID레벨이기도 하다.

홈페이지 jQuery 라이브러리에서 CVE-2019-11358 취약점 패치 여부 확인 방법

현재 홈페이지에서 사용 중인 jQuery 라이브러리가 CVE-2019-11358 취약점 패치를 적용했는지 확인하는 방법은 다음과 같습니다. 1. jQuery 버전 확인 홈페이지 소스 코드를 확인하여 jQuery 라이브러리 버전을 직접 확인합니다. 웹 ...