티스토리 뷰

ORACLE DB/Linux Server

PARTITION & LVM & RAID

sai505 2012. 11. 21. 16:35

PARTITION & LVM & RAID

 

Partition

파티션이란?

1. 물리적인 하드디스크를 논리적인 여러 영역으로 나눈 상태.

=> 물리적? 논리적? 이란...

 

물리적으로 하드디스크를 메인보드 슬롯에 있는 4개의 IDE 라는 곳에 각 2개씩 장착할 수 있다.

 

첫번째 슬롯 IDE0 에 'IDE 0:0' 과 'IDE 0:1' 하드디스크 장착 가능

두번째 슬롯 IDE1 에 'IDE 1:0' 과 'IDE 1:1'

세번째 슬롯 IDE2 에 'IDE 2:0' 과 'IDE 2:1'

네번째 슬롯 IDE3 에 'IDE 3:0' 과 'IDE 3:1'

 

이런식으로 총 8개의 물리적(눈에 보이는 물건)하드디스크를 장착 할수 있다.

 

이런 물리적 장치 종류에는 'IDE'말고 'SCSI'그리고 'SATA' 가 있다.

 

=> 'IDE' 'SCSI' 'SATA' 장치 차이

 

'IDE' 장치 : 대용량, 저속 ,저가

'SCSI' 장치 : 소용량, 고속, 고가 (서버용)

'SATA' 장치 : 대용량, 고속, 저가

 

서버용으로는 주로 SCSI 하드디스크가 사용된다.

 

VMWARE에는 어차피 가상이기때문에 'IDE'나 'SCSI'장치 모두 사용가능하다.

 

SCSI 는 VMWARE에서 4개의 슬롯이 제공되는데, 각 슬롯에 총 15개의 하드디스크를 장착할수 있다.

 

SCSI 0:0 슬롯에 SCSI 0:0 ~ SCSI 0:15 (SCSI 0:7 제외)

SCSI 1:0 슬롯에 SCSI 1:0 ~ SCSI 1:15 (SCSI 1:7 제외)

SCSI 2:0 슬롯에 SCSI 2:0 ~ SCSI 2:15 (SCSI 2:7 제외)

SCSI 3:0 슬롯에 SCSI 3:0 ~ SCSI 3:15 (SCSI 3:7 제외)

 

그러니까 FEDORA SERVER에서는 총 60개의 하드디스크가 사용가능하다. 그냥 되게 많이 사용가능하구나라고 인지 하고 있으면 될듯.

 

 

2. 하드디스크를 효율적으로 쓸수 있게 디스크를 분할해서 영역들을 만듬.

 

논리적 으로 여러 영역으로 나눠주는 것이다. 슬롯에 물리적으로 꽂힌 하드디스크를 물리적으로 칼이나 톱으로 나눠 줄수 없으니까... 논리적으로 나눠 주는것이다.

 

왜? 디스크 공간을 효율적으로 쓸수 있고, 데이터 손상이 왔을때 복구시간도 절약 되고, 부팅시간도 줄어들고, 한 시스템에서 다양한 운영체제 사용가능하니까. 우리가 윈도우에서 VMWARE로 페도라 서버 하는것처럼.

 

논릭적인 것들이니까 물리적으로 정해진 디스크 공간을 조금 더 효율적으로 나눠주는 것이다.

 

우리는 윈도우용이 아닌, 가상머신 VMWARE에서 페도라서버를 하는거니까, 하드디스크 추가할때도 실제로 물리적으로 추가하는것이 아니라 가상으로 논릭적으로 윈도우에 장착되어있는 물리적 하드디스크안에 논리적인 윈도우 파티션안에서 실제 물리적 하드디스크 처럼 논리적으로 가상하드디스크를 추가하고 논리적 파티션을 나눠 줄수 있는것이다. 

써놓고 나니까 물리적 논리적 더헷갈릴수도 있으니.... 

논리적은 파티션이고 물리적은 하드디스크라고 생각하면 되겠다..  

 

VMWARE에서 제공하는 첫번째 슬롯에 장착한 서버용 SCSI 0:0 하드디스크는 /dev/sda 라고 불린다. 그럼 /dev/sda 장치의 파티션은?

 

SCSI 0:0 은 슬롯 이름

/dev/sda 은 하드디스크 이름

/dev/sda1 은 파티션 이름

 

SCSI 0:1 은 슬롯 이름

/dev/sdb 하드디스크

/dev/sdb1 파티션

 

이라고 부른다. 

 

그러면 4개의 SCSI 0:0 ~ 3:0 슬롯에

총 60개의 하드디스크 SCSI 0:0 ~ SCSI 3:15 이고.

이 60개의 /dev/sda ~ /dev/sd0 하드디스크는 몇개의 파티션이 있을까?

 

=> 파티션의 종류

종류는 3가지가 있다.

 

- 주 파티션 (primary)

- 확장 파티션 (extended partition)

- 논리 파티션 (logical partition)

 

주 파티션은 최대 4개

확장 파티션

논리 파티션은 최대 12개

 

그럼 파티션은 총 16개 만들수 있다.

여기서 의아한 점은...어차피 논리적으로 파티션을 만들었는데 거기서 또 주 파티션 논리 파티션을 구분해서 나누냐..라고 궁금할수도있다. 나도 궁금하다. 이유는 아직 내가 찾아 보지 못해서 설명할수 없으므로 알게되면 수정해서 올리겠다.

 

그럼 확장 파티션은 뭐하는것이냐?

 

 

 

이렇게 우리는 주 파티션 최대 4개 밖에 만들수 없다.

만약에 파티션을 4개 이상을 만들고 싶으면 확장 파티션을 써야한다.

 

이렇게 주파티션 4개 있던거 대신 마지막 주를 확장 파티션으로 주고. 그 확장 파티션안에 논리 파티션을 만들어서 최대 12개를 만들수 있다. 그래서 주파티션 최대 4개 ( 확장 파티션 포함) + 확장안에 있는 논리파티션 최대 12개 = 총 16개의 파티션을 만들 수있따.

 

단, 확장 파티션은 논리 파티션을 위한 그릇 역활만 하는것이고, 실제 확장파티션에 데이터를 따로 저장할수 있는 공간은 없다.

 

 

*** 리눅스 설치 최소 파티션

두개만 있으면된다. 루트기능이있는 파티션과 스왑기능이 있는 파티션. 그러니까 루트(root)와 스왑(swap)만 있으면 된다.

 

루트 파티션은  시스템파일, 개인파일, 모든파일 저장 되는것이고.

(기본적인 사용은 /boot, /var등을 안만들어줘도 된다. 루트안에 다 있다.)

 

스왑 파티션은  시스템 메모리 확장 역활을 한다.

 

 

 

LVM

LVM 이란?

 

LVM : LOGICAL VOLUME MANAGER

 

 

물리적인 개념은 일반 /dev/sda 와 같다. 가상으로 SCSI 0:1 식으로 장착된다. 하지만 논리적으로 LVM 구현 방법이 일반 하드디스크와 조금 다르다. 

 

나는 이렇게 이해하고 있다. 일반 하드디스크들을 /dev/sda, /dev/sdb 등을 동일하게 주파티션으로 파티션을 나눠주되 시스템 방식을 리눅스 파일시스템이 아니라, 리눅스LVM 시스템으로 바꿔주는것이 LVM 구현 시작이다.

그리고 이것을 physical volume(물리 볼륨)이라고 한다.

 

쉽게 말하면

/dev/sda 를 일반 리눅스 파티션으로 나눠주면

/dev/sda1 이라는 주 파티션(primary partition)이 되는거고

/dev/sda 를 리눅스 LVM 시스템 파티션으로 나눠주면

/dev/sda1 이라는 (이름은 같다) 물리볼륨 (physical partition)이 되는거다.

 

 

그럼 LVM 이 LOGICAL VOLUME MANAGER라고 해서 논리적인 디스크 관리자라고 하는것은 알겠는데..... 왜? 하는것일까.

여러개의 일반 하드디스크를 나눠서 관리하기 불편하니까 /dev/sda 1GB, /dev/sdb 3GB 등을 하나의 하드디스크로 합쳐서 한개의 파일 시스템으로 사용하는것이다.

 

서버이용시 대용량 별도 저장 공간이 필요하거나.

적은용량의 하드디스크들을 한개의 큰용량으로 사용하고 싶을때..

 

그런데 일반 리눅스 시스템 하드디스크들은 합쳐서 한개의 파일시스템으로 사용하는것은 불가능하고.

파일시스템을 LVM파일시스템으로 바꿔줘야 가능하다.

이런 한개의 일반 하드디스크들은 LVM파일시스템으로 바꿔준것이

PHYSICAL VOLUME물리볼륨 이고.

이런 여러개의 PV물리볼륨들을 하나로 합쳐준것이 물리적 그룹이다. 그것을 VG = VOLUME GROUP 볼륨그룹이라고 부른다.

볼륩들을 합쳐준게 볼륨그룹인데.

이 볼룹그룹 VG는 그냥 파티션없는 /dev/sda 와같은 /dev/sda1파티션 나눠주기 이전에 하드디스크에 불과하다.  

 

그러니까 논리적으로 개념적으로

/dev/sda1 1GB + /dev/sdb1 1GB 의 파티션들을 합쳐놓은

= /dev/VoulumeGroup 2GB 가 되는거다. 결국엔 묶는 작업이다.

파티션들을 합쳐놓은 하나의 하드디스크가 된것이다.

 

여기까지가 LVM 구현 선작업이다.

 

일반적인 하드디스크와 같은개념으로.

우리는 /dev/sda라는 하드디스크를 사용하려면 파티션을 나눠준다.

/dev/sda 를 /dev/sda1 로

 

마찬가지다. 합쳐진 VG그룹을 파티션을 나눠줘야한다.

이 파티션을 LV LOGICAL VOLUME 논리 볼륨이라고 한다.

 

그리고 이것을 우리는 /dev/volumegroup/logicalvolume이라고 읽는다. (저 디렉토리이름은 만들기 나름이다)

 

그리고 이 LV논리볼륨을 포맷해주고 마운트 시켜주면 구현완성이다.

즉 여러개의 PV를 하나의 VG로 바꾼후 파티션을 LV로 나눠준것이다.

 

 

 

RAID

     RAID 란?

 

RAID : Redundant Array of Inexpensive Disks

    Redundant Array of Independant Disks

복수의 저렴한 혹은 독립적 디스크들의 배열 직역하면 그렇다.

LVM과 비슷한 개념으로 여러개의 디스크를 하나의 디스크처럼 사용하는것이다. 

 

LVM과 RAID는 저장방식의 차이가 있다

 

 

현실감있게 발로 그린것 같이그림이 좀 이상합니다..

 

LVM 은 저장방식이 순서대로 저장한다. 디스크가 다차면 그다음 디스크에 저장하고.

RAID0는 똑같은 12byte 데이터를 저장할때 stripping 방식으로 세개의 디스크에 4byte씩 배분에서 동시에 저장한다.

 

그래서 LVM은 raid0보다는 느린편이다.

 

또하나의 차이점은... LVM과 달리 RAID는 디스크 용량이 모두 동일해야한다.

만약에 RAID0방식으로 50GB 디스크와 2GB디스크를 합쳐서 사용하게 되면 자동적으로 작은 크기의 디스크용량으로 잡혀준다. 그래서 총 4GB의 사용량이 되고 46GB는 쓸수 없게 된다.

 

 

 

RAID0 이었다 방금 본것은...

RAID에도 레벨별로 구성방식에 따라 성격도 다르다

RAID0~RAID6 이 있다.

 

보통 RAID0,  RAID1, RAID5, RAID6이 많이 쓰인다고 하고,

아직은 나도 이것밖에 모르기 때문에..나중에 더 많이 알면 

수정해서 올리도록 하겟습니다~~

 

RAID는 값이 비싼 RAID 카드에 따라서 분류가 된다.

 

저장방식이

RAID 0은 stripping 방식이고

RAID 1은 mirroring 방식이고

RAID 5은 +1 Hot sparing 방식이다.

 

RAID 0은 방금 본것과 같이 데이터가 동시에 나눠서 저장되기 때문에 빠르다. 이것을 STRIPPING 방식이라고 한다.

속도적인 측면에서는 장점이지만........ 공간효율성도 좋고

만약에 하나의 디스크가 고장이 나면. 모든 데이터가 날아가는 점이 단점이다. 왜냐하면 저장 방식이 스트라이핑이기때문에 하나가 고장이 나면 원래의 데이터를 찾을수가 없다.

 

 

RAID 1은 미러링 방식이라고해서, MIRROR 와같이 거울처럼 두개의 디스크가 똑같은 데이터를 저장하는 방식이다.

12byte 데이터를 두 디스크에 똑같이 저장해서 그 두배인 24byte로 사용해서 공간효율 측면에서는 단점이다.

하지만 하나의 디스크가 고장나도 똑같은 데이터를 가지고 있는 디스크가 하나 더 있기 때문에 데이터 손상이 없다.

이것을 결함 허용(Fault-tolerance) 제공이라고 한다.

그렇지만 저장되는 속도는 2배가 느린것이아니다. 동시에 저장되기때문에.

 

 

RAID 5은 저장방식은 스트라이핑이다.

그래서 공간 효율성이 좋다.

그리고 RAID0과 달리 패리티 기능이 있어서 데이터 복구가 가능하다.

 

패리티라고 (PARITY) 오류 검출 기능이다.

데이터가 저장되는 디스크외에

또 하나의 Sparing 스패어링 디스크가 있어야 한다.

스패어링 디스크에서 패리티기능을 사용하기 때문에...

저장공간은 1GB짜리 디스크 세개가 있어도, 패리티 기능을 하는 스패어링 디스크를 제외한 총 2GB를 사용하는 것이 된다.

좋은거다. 저장공간을 효율있게 사용하는것

 

그럼 패리티. PARITY는 무엇일까?

일단 패리티는 데이터를 복구하는 기능이다.

어떻게?

데이터는 디스크에 저장이 될때 0 이나 1로 저장이 된다.

그럼 디스크 3개(스패어링 디스크포함)에 데이터를 줘보자

01이라는 2byte 짜리 데이터를 준다.

 

그럼 스트라이핑 방식으로

디스크1에 0 저장되고

디스크2에 1 저장되고

스패어링디스크에 뭐라고 저장이 될까?

 

일단 스패어링에 있는 패리티기능에 뭐라고 저장 되는지 알려면 총 디스크 갯수가 짝수인지 홀수 인지 알아야한다.

우리 총 3개이니까 홀수이다.

그러면

디스크1 데이터값 + 디스크2 데이터값 + 스패어링 패리티값 = 홀수이어야 한다.

 

그래서 0 + 1 + 패리티값 = 홀수 라고 했을때, 우리는 패리티값이 '1' 이 아닌 '0'이라고 알수있다.

왜냐하면

0 + 1 + 0 = 1 홀수가 되니까.

 

자 그럼 만약에 디스크 2 가 고장이 났다.

데이터를 살릴수 있을까? 

0 + 고장알수없음 + 0 = 홀수 일때

우리는 고장난 디스크의 데이터 값을 누가봐도 알수 있다.

힌트는 '1' 이거나 '0' 중 하나이다. 뭐가 될까?

 

 

 

 

     RAID 6

 

RAID 5 는 하나가 뻑나면 데이터 복구가 가능하다.

그렇지만 두개가 고장나면?

패리티값과 짝수 홀수 계산해서 손실된 데이터값 유추가 불가능하다.

 

그래서 RAID 6는 패리티 기능이 있는 스패어링 디스크를 두개로 구성하는것이다.

그래서 두개의 디스크가 고장이 나도 두개의 스패어링 디스크가 백업을 해주는 방식이다.

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함