본문 바로가기

Linux/Linux공통

[Linux] Raw Device에 대한 이해

Raw(날것의) Device

 

볼륨을 구성할 때 사용하는 개념이다. 대칭되는 개념으로는 File System이 있다.(일반적으로 리눅스에서 볼륨을 구성하여 사용하는 방식이다.)

 

1. Raw Device란?

: 블록 장치로 구성되는 것이 아닌 문자 장치로 구성되는 방식으로 포맷을 지정하지 않고 디스크 구성하는 방식이다.

File System을 구성하기 이전의 디스크 상태라고 보면 된다.

# 문자장치란?

: 문자 단위로 입출력이 이루어지며, 커널이 제공하는 버퍼를 사용하지 않고, 입출력 장치의 버퍼 또는 큐를 사용

 

2. 등장 배경

: Raw Device의 경우 주로 DBMS의 데이터를 저장하는 공간으로 사용한다.

DBMS의 저장 공간으로써 가장 중요한 부분은 Disk의 I/O 성능이다. Raw Device의 경우 운영체제가 필요 없으므로 File System에서 사용하는 운영체제를 거치지 않고 바로 데이터 I/O가 일어나기 때문에 뛰어난 I/O 성능을 자랑한다.

 

3. 장/단점

장점: 1. 공유 파일시스템이 자동으로 지원된다. (Read & Write가 동시에 가능, 솔루션 구입시 비쌈)

          2. Disk I/O 성능이 우수하고, 불필요한 Overhead가 발생하지 않는다.

 

단점: 1. 구성과 관리가 어렵다.

          2. DBMS에서 사용 시 데이터 파일에서 사용할 용량을 초기에 예상하고 미리 볼륨을 잡아야 하기 때문에 단편화가                  발생할 수 있다.

          3. DBMS에서 데이터 파일 백업 시 볼륨 전체를 백업해야하기 때문에 백업하는데 시간도 오래 걸리고 불필요한                      용량을 차지한다.

 

 

4. Raw Device를 이용한 기술

 

Tibero설치 순서

Case1: Raw Device -> Tibero

 

Case2: Raw Device -> TAS(Tibero Active Storage) -> Tibero

 

Case3: Raw Device -> TAS(Tibero Active Storage) -> TAC(Tibero Active Cluster) -> Tibero

 

Oracle설치 순서

Case1: Raw Device -> Oracle

 

Case2: Raw Device -> ASM(Automatic Storage Managerment) -> Oracle

 

Case3: Raw Device -> ASM(Automatic Storage Managerment) -> Oracle  RAC(Real Application Cluster) -> Oracle

 

# 최근 오라클은 자체 공유 파일 시스템(동시에 Read & Write)를 만들어 ASM을 안쓸수 있다고 함

 

5. 기타

 

온프레미스가 아닌 클라우드는 공유 스토리지 구축이 어렵기 때문에(속도문제) 대부분 싱글 인스턴스로 구성된다.

스토리지 종류는 보통 케이블명을 따라간다.

NAS(Network Attached Storage), DAS(Dual Attachment Stations), SAN(Storage Area Network)

티베로는 보통 SAN으로 구성된다.

 

6. 리눅스에서 Raw Device 생성하기

6-1 LVM 생성하기

Raw Device를 잡기위한 LVM을 먼저 생성하도록 하자.

 

가상화 솔루션에 추가 볼륨을 붙인다는 가정이다.

 

6-1-1 fdisk를 통하여 리눅스 LVM으로 파티션 구성

fdisk /dev/sdb

위와 같이 질문 답변형식으로 먼저 파티션을 구성하고 구성을 확인한다.

 

아직 끝난 것은 아니고 이제 해당 파티션을 LVM형식으로 구성하도록 한다.

기본적인 구성이 아니므로 파티션 System ID를 리눅스 LVM(8e)로 변경한 후 확인한다.

그리고 마지막으로 저장한 후 나온다.

 

제대로 구성이 되었는지 체크해보자

5-1-2 Physical Volume 생성

파티션 구성을 완료하였으니 Physical Volume을 생성하도록 하자.

 

대상은 위에서 구성된 Device 명을 입력해준다.

pvcreate /dev/sdb1

5-1-3 Volume Group 생성

Physical Volume 생성이 완료되었다면 이들을 묶어서 사용할 Volume Group을 생성한다.

 

여러개를 묶을 수 있지만 현재는 하나의 Physical Volume만 생성하였으니 하나만 추가하도록 하자.

vgcreate vg01 /dev/sdb1

/dev/sdb1이 포함되어 있고 "vg01"이라는 Group명을 가진 VG를 생성하였다.

 

5-1-4 Logical Volume 생성

Physical Volume을 통째로 사용해도 되지만 해당 Volume들을 Volume Group으로 묶고 그 안에서 Logical Volume으로 쪼개서 사용할 예정이기 때문에 Logical Volume도 생성하도록 하자.

lvcreate -L 2G -n lv_01 vg01

-L 2G: 용량을 설정, -n lv_01: Logical Volume의 명칭, vg01: 소속될 Group명

Logical Volume까지 생성을 완료했다.

 

File System으로 사용할 경우 여기서 생성된 Volume을 포맷해줘야 하지만 저희는 Raw Device로 사용할 예정이므로 Raw하게 날 것으로 유지한다.

 

5-2 Raw Device 등록하기

이제 생성된 LV(Logical Volume)를 Raw Device 목록에 등록하도록 하자.

 

5-2-12 udev(리눅스 커널 장치 관리자)에 룰 등록하기

vi /etc/udev/rules.d/60-raw.rules

/etc 밑에 있는 /udev 폴더의 rule을 관리하는 폴더에 60-raw.rules라는 파일을 생성 혹은 수정하여 등록한다.

 

등록하는 규칙은 다음과 같다.(LVM의 경우)

5-2-2 udev 데몬에 룰 적용

udevadm control --reload-rules
udevadm trigger --type=devices --action=add

udev데몬에 udevadm 명령을 통하여 등록한 Raw Device의 룰을 적용한다.

 

5-2-3 생성된 Raw Device 확인하기

raw -qa

위의 명령을 통해 Raw Device가 정상적으로 생성되었다는 것을 확인할 수 있다.

 

이렇게 생성된 공간에 DBMS의 경우에는 데이터 파일을 저장하면 된다.