계속 까먹어서 정리해야겠음..




참고. 

http://blog.daum.net/99lib/9

http://blog.boxcorea.com/wp/archives/448

https://wiki.gentoo.org/wiki/LVM/ko




# LVM 

: Logical Volume Manager


- 여러 물리적인 디스크를 하나의 논리적인 디스크처럼 사용할 수 있음. (RAID와 비슷)

- raid처럼 parity, mirroring등을 지원하지 않음

- 하지만 RAID보다 비교적 관리가 쉽고, 확장성, 안정성, 효율, 스냅샷지원 등의 이유에서 많이 사용됨




출처. http://ivanvillareal.com/linux/migrate-from-direct-partition-to-lvm/



1. Hard Drives -> Paritions

: LVM 타입으로 파티션 생성 (생략 가능한 듯)


# fdisk /dev/sda

(8e, linux LVM)



2. Partitions -> PV

: 물리볼륨을 생성


# pvcreate /dev/sda1

Physical volume "/dev/sda1" successfully created


# pvdisplay



3. PV -> VG

: 볼륨그룹을 생성


# vgcreate myVolumeGroup /dev/sda1 [나머지 PV들 나열]

Volume group "myVolumeGroup" successfully created


# vgdisplay


4. VG -> LV

: 논리볼륨을 생성


# lvcreate -n lv1 -L 5GB myVolumeGroup

Logical volume "lv1" created


# lvcreate -n lv2 -l 100%FREE myVolumeGroup

Logical volume "lv2" created


# lvdisplay


5. File System 

: 파일시스템 포맷 및 마운트


# mkfs.ex4 /dev/myVolumeGroup /lv1

mkfs.ex4 /dev/myVolumeGroup /lv2


# mkdir /mnt/volume1

# mkdir /mnt/volume2

# mount -t ext4 /dev/myVolumeGroup /lv1 /mnt/volume1

# mount -t ext4 /dev/myVolumeGroup /lv2 /mnt/volume2

( # mount -a)


# df -l

(# df -f)


# vi /etc/fstab

/dev/myVolumeGroup       /mnt/volume1    ext4    0    0

( UUID=(위에서 확인한 uuid)  /srv/repository  ext4  errors=remount-ro  0  1)







--------------------------------------------------------------------------------------------------------------------------------------------------------------

root@controller:~# fdisk -l


Disk /dev/sda: 500.1 GB, 500107862016 bytes

255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000bf3f3


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1            2048   390625279   195311616   fd  Linux raid autodetect

/dev/sda2       390625280   878907391   244141056   fd  Linux raid autodetect

/dev/sda3       937711616   976771071    19529728   fd  Linux raid autodetect

/dev/sda4       878907392   937711615    29402112   fd  Linux raid autodetect


Partition table entries are not in disk order


Disk /dev/sdb: 500.1 GB, 500107862016 bytes

255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000d3a7b


   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1   *        2048   390625279   195311616   fd  Linux raid autodetect

/dev/sdb2       390625280   878907391   244141056   fd  Linux raid autodetect

/dev/sdb3       937711616   976771071    19529728   fd  Linux raid autodetect

/dev/sdb4       878907392   937711615    29402112   fd  Linux raid autodetect


Partition table entries are not in disk order


Disk /dev/md1: 500.0 GB, 499999834112 bytes                                        * RAID 0으로 구성한 md1을 Linux LVM으로 바꾸었었는데

2 heads, 4 sectors/track, 122070272 cylinders, total 976562176 sectors        이런 경우 어떤의미를 가지는지 생각해봐야 할 듯.

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 524288 bytes / 1048576 bytes

Disk identifier: 0x0357007d


    Device Boot      Start         End      Blocks   Id  System

/dev/md1p1            2048   976562175   488280064   8e  Linux LVM


Disk /dev/md2: 40.0 GB, 39995834368 bytes

2 heads, 4 sectors/track, 9764608 cylinders, total 78116864 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 524288 bytes / 1048576 bytes

Disk identifier: 0x00000000


Disk /dev/md2 doesn't contain a valid partition table


Disk /dev/md3: 60.2 GB, 60214476800 bytes

2 heads, 4 sectors/track, 14700800 cylinders, total 117606400 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 524288 bytes / 1048576 bytes

Disk identifier: 0x00000000


Disk /dev/md3 doesn't contain a valid partition table


* 기존에 RAID 0 으로 설정했던 md0을 cinder-volumes로 사용하기 위하여 LVM physical volume으로 생성하기 위해 일단 "mdadm –manage –stop /dev/md0"으로 md를 중지 후"pvcreate"로 physical volume 생성

* cinder volume 생성한 것


// 1GB 짜리

Disk /dev/mapper/cinder--volumes-volume--ee1bc346--f489--42c4--b73a--135e97acf2b4: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000


Disk /dev/mapper/cinder--volumes-volume--ee1bc346--f489--42c4--b73a--135e97acf2b4 doesn't contain a valid partition table


// 20GB 짜리

Disk /dev/mapper/cinder--volumes-volume--5d6c6e13--f9e3--4146--9df2--ffbe312599c1: 21.5 GB, 21474836480 bytes            

255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors            

Units = sectors of 1 * 512 = 512 bytes 

Sector size (logical/physical): 512 bytes / 512 bytes  

I/O size (minimum/optimal): 512 bytes / 512 bytes 

Disk identifier: 0x00000000 


Disk /dev/mapper/cinder--volumes-volume--5d6c6e13--f9e3--4146--9df2--ffbe312599c1 doesn't contain a valid partition table

--------------------------------------------------------------------------------------------------------------------------------------------------------------




# cinder volume 삭제하는데 오래걸리는 구나


'System > Linux OS ' 카테고리의 다른 글

man  (0) 2015.12.24
리눅스 커널 커밋(commit)하기 - ing  (0) 2015.12.23
[Linux] 리눅스 모니터링  (0) 2015.04.22
[ubuntu] 디스크 늘리기(ESXi기반의 VM)  (0) 2015.04.21
[Linux]라우팅 테이블  (0) 2015.04.21

계속 헷갈려서.. 한번 써봐야겠음




# 스토리지의 문제점 2가지

1. CPU나 Memory 속도를 따라가지 못해 병목현상 유발

2. 드라이브 고장 시 데이터 날림

=> "Fault Tolerance"를 높이고자 함


=> RAID로 해결

- Redundant Array of Inexpensive Disks

     or

- Redundant Array of Independent Disks (최근)



# DIsk Array 

: 여러 하드웨어 디스크를 배열로 하나 혹은 하나이상의 논리 드라이브로 구성


# RAID 구성 방법

- 하드웨어적 구성 : 레이드 구성을 위해서는 레이드 컨트롤러가 필요하고 레이드를 구성할 시 데이터 처리에 있어 부하가 걸리므로

                         별도의 어댑터 형태의 컨트롤러를 사용. 이런 레이드 컨트롤러에는 프로세서 및 메모리가 따로 있으며 가격이 비쌈.

                         어댑터 형태의 컨트롤러 외에도 메인보드에 내장되어 나오기도 하는데(SATA), 지원여부에 대한 사전확인이 필요.


- 소프트웨어적 구성 : 별도의 레이드 컨트롤러없이 소프트웨어적으로 레이드를 처리하여 안정성이 하드웨어적인 레이드 구성보다는 떨어짐

                             





# RAID 0

Striping, 데이터를 배열 드라이브에 분산시켜 저장

- 단순 round-robin 방식을 사용 (with out Fault Tolerance)

- 단순히 하나의 디스크로 보여지도록 만들어 줌


그림. 위키

- 최소 2개의 드라이브가 있어야지 적용이 가능

- 같은 모델, 같은 용량의 디스크 준수

- 데이터 분산방식으로 배열드라이브의 전체 용량이 하나로 통합

- 입출력 병렬처리로 인하여 속도 향상(RAID 구성 중 가장 빠른 속도)

- parity데이터를 저장하거나 미러링하지 않음. 즉 하나의 디스크에 문제가 발생하면 나머지 디스크에 저장된 데이터를 쓸 수 없음(복구 불가능)




# RAID 1

Mirroring&Duplexing, 한 디스크 드라이브에 저장된 데이터를 다른 배열 드라이브로 복제

- disk mirroring을 사용하여 데이터 데스크에 저장된 모든 데이터들을 pair를 이루고 있는, 반사 디스크 같은 위치에 복사

- 거의 완변한 Fault Tolerance를 제공하지만 가격이 높음

- 신뢰도가 높은 시스템에서 사용


그림. 위키

- 2n개씩 구성

- 두개의 디스크에 똑같은 데이터를 저장

- 일정한 수준의 데이터 중복을 허용

- 하나의 디스크 고장시 복제된 데이터로 복구가 가능

- 일반적으로 입출력 성능이 저하됨. 

- HDD 사용시, 데이터에 더 가까운 배열 드라이브 헤더가 더 빨리 데이터에 액세스하므로 탐색 및 회전대기 시간이 줄어듬

- 구성한 디스크 용량은 하나의 디스크 용량과 동일(중복이므로)




# RAID 2

: Each bit of data word is written to a data disk drive


- 비트단위 인터리빙 방식을 사용 : 데이터를 각 디스크에 비트 단위로 분산 저장

- Hamming code를 이용한 오류 검출 및 정정 방식을 사용

단점! 필요한 검사 디스크들의 수가 많아서 가격이 비쌈

주요 용도! 오류가 많이 발생하는 환경에서 사용


=> 현재 거의 사용하지 않음




# RAID 5

: Parity, Striping, 배열 드라이브에 패리티 데이터 저장하여 데이터의 손실여부를 점검 할 수 있도록하며 RAID 0처럼 Striping 지원

- RAID 4의 문제점을 보완하기 위해 패리티 블록을 라운드-로빈 방슥으로 분산 저장

=> 병목현상을 해소하고, 쓰기 동작들의 병렬수행이 가능

- but, small write problem : 어느 한 블록만 갱신하는 small write의 경우 네번의 디스크 액세스가 필요하기 때문에 성능 저하가 발생


그림. 위키

- 최소 3개의 드라이브 필요

- striping 기능으로 성능을 향상하며, 패리티데이터를 저장하여 RAID 1처럼 일정수준의 중복을 제공

- ahems eltmzmdp voflxl wjdqh wjwkd

- 디스크가 고장이나도 데이터 손실은 없음

- 다시 복구하는데 오래걸림. 일반적으로 작은 용량에 추천

- 3개의 1짜리 드리이브를 RAID 5로 구성시. 2만큼의 용량을 제공

- 가장 널리 사용됨


* RAID 1과 RAID 5의 비교

- RAID 1 : 읽기와 작은 쓰기가 많은 환경에 적합하고 데이터를 완벽하게 보관할 수 있음

- RAID 5 : 용량과 비용면에서 보다 우수하고, 응용이나 큰 쓰기가 필요한 시스템에 적합함(가격대비성능 굳)




# RAID 6

: 패리티데이터를 모든 디스크에 저장하며 2차 패리티데이터도 저장

- 두개의 패리티를 따로 다른 디스크에 저장

- 데이터를 디스크에 나누어 저장

- N개의 데이터 디스크와 2개의 패리티 디스크가 필요


- 데이터 가용성이 높음

: 데이터가 손실되려면 3개의 디스크가 동시에 불량이 있어야 함

: 쓰기 문제가 심각해 짐


- 2개의 디스크가 고장이나더라도 복구가 가능

- 성능이슈 및 사용가능한 디스크 공간이 그만큼 줄어듬




# RAID 3, 4

Parity, 패리티 데이터를 별도의 디스크에 따로 저장

 (하나의 데이터를 디스크 수대로 나누어 여러개의 디스크에 저장)

- 패리티비트 p = b1 XOR b2 XOR b3 XOR b4 (보통 짝수 패리티 사용)


- 최소 3개의 드라이브 필요

- RAID 3 : Byte 단위

- RAID 4 : Block 단위 (속도 장점)

- Parity Disk에 고장나면 복구가 불가능

- Disk 1,2,3 / Disk 4의 속도차이로 병목현상 발생의 가능성이 있음


=> 장점 : 병렬 데이터 read/write가 가능하여 디스크 액세스 속도 향상

단점 : write 동작 때마다 패리티 비트를 갱신할 필요가 있음

별도의 패리티 정보가 저장되어있는 패리티 디스크를 읽어야 하므로 여러번 액세스를 해야함

(원래 데이터 읽기, 원래 패리티 읽기, 새로운 데이터 쓰기, 새로운 패리티 쓰기) 

=> 디스크 수에 상관없이 한 블럭 갱신 시 네번의 디스크 액세스가 필요




# RAID DP(Double Parity)

: 1차, 2차 패리티데이터를 여러 드라이브에 분산으로 저장하지 않고, 2개의 드라이브에 패리티데이터를 저장



# RAID 10

: RAID 0, RAID 1 각각의 장점만 가지고 결합

- 4개의 드라이브 필요

- 2개씩 RAID 1로 구성(총 2개), mirroring이 되어 복구가 가능

- 2개의 RAID 1을 RAID 0으로 구성, RAID 1에 비하여 용량이 2배

- 용량 추가시에는 RAID 1을 더 추가

- RAID 1로 구성된 디스크가 고장나도 정상동작이 가능

- 용량은 줄지만 가용성이 높음




# RAID 0+1

: RAID 10과 반대, RAID 0으로 먼저 구성한 후 구성된 묶음들을 RAID 1 방식으로 mirroring 시킴

- Striping, Mirroring을 동시에 사용

- 속도와 안정성 

- mirroring의 이유로 RAID 10이 더 많이 쓰임





# 현재 테스트로 사용중이던 intel 서버에서 보드에서 RAID를 지원하지만 리눅스용 드라이버를 제공하지 않음.

그래서 BIOS에서 보드에서 지원하는 RAID 기능 부분을 disable 시키고 설치시 파티션 부분에서 software raid 0로 설정









'System > Etc.' 카테고리의 다른 글

[OS기초] CPU Scheduling  (0) 2015.09.22
[OS기초] Process & Thread  (0) 2015.09.21
[OS기초] 개요  (0) 2015.09.17
KVM/KSM  (0) 2015.08.13
마이크로커널운영체제  (0) 2015.06.25

정말 오랜만에 음식하고 사진찍었...



내 아침식사

닭다리 닭갈비랑 소고기파래국




'취미 ㅋㅋ' 카테고리의 다른 글

버섯덮밥이랑 캬라멜 맛탕  (0) 2015.08.16
계란된찌랑 김치비지찌개  (0) 2015.08.16
감자수제비  (0) 2015.04.21
빼빼로랑 진저쿠키  (0) 2015.04.21
촉촉한 초코칩쿠키  (0) 2015.04.21

+ Recent posts