LVM과 RAID에 대해서
셧다운 명령어
shutdown -h 0
shutdown -h now
init 0
poweroff
-
LVM과 RAID란?
- LVM과 RAID는 똑같다 : 다수의 하드 디스크를 하나로 묶어 사용하는 기술
- 실무에서는 IDE는 쓰지 않는다 : vmware로 구성할때 sda형태로 1기가짜리 7개를 만든다.
- LVM(Logical Volume Manager)
-
- 여러 하드디스크를 합쳐서 하나의 파일시스템처럼 사용하는 방법
- 작은 용량의 디스크 여러개를 하나의 하드 디스크처럼 사용할수 있게 하는 방법
- 대용량의 별도 저장공간이 필요할때 사용한다.
- 디스크 크기가 달라도 상관없다.
-
용어
- Physical Volume : /dev/hda1, /dev/sda1 등의 물리적인 디스크 볼륨을 말한다.
- Volume Group : Physical Volume를 합쳐 하나의 물리적인 그룹을 만드는 것을 말한다.
- Logical Volume : Volume Group를 나누어 하나의 논리적 그룹으로 나누는 것을 말한다.
- VMWARE에서 지원하는 스냅샷을 만들어 놓자!!!
-
LVM구현
- LVM을 구현하기 위해서 SCSI 하드 디스크를 사용하고 싶은만큼 장착한다.
- 연습용으로 각 1기가짜리 디스크를 7개를 추가하였다.
-
fisk /dev/sda ~ /dev/sdc 까지 모두 sda1 ~ sdc1 의 파티션으로 만들고 LVM(8e)로 선언해 준다.
- fdisk로 들어가서 파티션을 만든 후, t를 눌러서 파티션 ID를 바꾼다..
- 이후에 L을 누르면 리스트가 나온다. 거기서 골라서 하면 된다. 연습용이므로, 8e(LVM)을 쓴다
-
pvcreate 명령어를 사용하여 각각의 디스크에 대한 physical volume을 생셩해 준다.
-
- pvcreate/dev/dsa1
- pvcreate /dev/sdb1
- pvcreate /dev/sdc1
-
생성한 3개의 physical volume을 하나의 볼륨으로 묶는다.
- vgcreate [볼륨이름] [장비1, 장비2, 장비3...]
- vgcreate zombie /dev/sda1 /dev/sdb1 /dev/sdc1
-
Volume Group zombie가 3기가로 설정되어 있음을 확인하려면 다음과 같은 명령어를 입력
- vgdisplay
-
CentOS에서 사용하는 일반적인 디스크이 파티션 생성을 위해서는 fdisk를 사용하지만, Volume Group의 파티션을 생성할 때는 lvcreate 명령을 사용한다.
- lvcreate -L 2.98G -n zombie1 zombie
- 설명 : lvcreate -L [파티션크기] -n [파티션이름] [Volume Group name]
- 이런식으로 여러개로 나누면 되지만, LVM을 쓰면서 다시 나누는짓은 LVM을 쓰는 목적에 부합된다.
- 위와같이 만든 후에, 쓰는 목적에 따라 알아서 포멧한다. -> 우리는 mkfs로 한다.
- 그리고 나서 mount를 한다.
- 많이 쓰지는 않는다.(이유는, 하나가 날라가면 죄다 날라가기 때문에)
- 장비는 /dev/[volume group]/[volume name]에 링크되어 있다. 실제 장비는 /dev/mapper/~ 있다.
- 예제 : 4개의 디스크를 LVM하여 부팅후에도 항상 그 자리에 mount 되도록 /etc/fstab에서 정의하시오.
-
삭제
- umount
- Logical volume 삭제 : lvremove [device]
- 옵션 -f 는 강제사항이다.
- physical volume 삭제 : pvremove -ff [device] -> 여러개일테니까 여러개 해야한다. ff는 반드시 들어가야한다.
- 확인 : pvdisplay, lvdisplay
- 이후 fdisk로 파티션 삭제
-
RAID
- Redundant Array of Indexpensive Disk
- 디스크 크기가 전부 같아야만 한다.
- 여러 디스크를 하나의 디스크처럼 사용함으로써 비용을 절감하고 성능을 향상시키기 위한 저장 장치를 의미
- hardware RAID와 software RAID로 나눌 수 있다.
-
hardware RAID
- 하드웨어 RAID는 하드웨어 제조업체에서 여러 하드디스크를 이용하여 장비를 만들고그 자체를 공급하는 것.
- 소프트웨어 RAID에 비해 좀 더 안정적이며, 제조업체에서 기술지원(A/S)을 받을 수 있으므로 대형 서버에서 선호
- 단점은 가격이 너무 비싸다.
-
software RAID
- 고가의 하드웨어 RAID에 대한 대안으로, 하드 디스크만 있으면 운영체제에서 지원하는 방식으로 RAID를 구성할 수 있는 방법.
- 하드웨어 RAID에 비해서 신뢰성(안정성)이나 속도가 떨어질 수 있지만, 저럼한 비용으로 좀 더 안전한 데이터의 저장이 가능하다.
-
RAID LEVEL
- 구성 방식에 따라 0, 1,2,3,4,5까지 6개로 분류된다.
- 실무에서는 주로 RAID 0m, 1, 5 그리고 RAID5의 변형인 RAID 5+1, 6 그리고 RAID 0+1, RAID10 등이 사용된다.
- LVM은 2개이상의 하드 디스크를 1개의 volume으로 사용하며, 앞 하드 디스크에 데이터가 모두 저장된 후에 다음 디스크에 데이터가 저장되는 방식이다.
-
설명
-
raid0
- 두개의 하드에 자료를 나누어서 저장한다.
- 하나의 데이터를 나누어서 저장하기 때문에 하나의 하드가 날라가면 다른 하드에 남아있는 데이터는 완전하지가 않다.
- 디스크 사용에 대한 효율은 좋아지지만, 안정성은 조금 떨어진다..
- 전체 하드 디스크를 쓸수 있다.. ex) 400+400 = 800
- 데이터를 순차적으로 하나씩 나누어져 있는 디스크에 따로 저장하게 된다.
- 속도면에서 가장 서능이 뛰어나다고 할 수 있으며, 디스크의 갯수만큼 용량을 모두 사용하므로 공간 효율이 뛰어나다
- 하지만 디스크 하나라도 고장나면 전체 데이터가 소실된다.
- 빠른 성능을 요고하되, 잃어버려도 큰 문제가 없는 자료들을 저장하는데 적당한 방식
-
raid1
- 두개의 하드를 쓰지만, 하나의 하드에 저장한 다음에 다른 하드에 같은 내용을 저장한다. : mirroring
- 사용 효율은 떨어지지만 안정성은 좋다.
-
2개 이상의 하드디스크 미러링은 raid5를 쓴다.
- 즉, RAID1 방식에서 1024 MB를 저장하기 위해서는 2048MB의 용량이 필요하다
- 두배의 저장공간이 필요하기 때문에 두배의 용량이 필요하므로 효율적인 측면에서는 RAID 0에 비해 현저히 떨어진다.
- 속도면에서 두개의 디스크에 같은 데이터를 동시에 저장하므로, 데이터 저장시의 시간 손실은 없다고 말할 수 있다.
-
비교 : raid0 & raid1
- 성능(속도) : 빠름 | 변화없음
- 결함 허용 : 허용함 | 허용안함
- 공간 효율 : 좋음 | 나쁨
-
raid 5
- 최소 3개 이상의 하드 디스크가 있어야 구성할 수 있지만, 일반적으로 5개 이상으로 구성한다.
- 오류가 발생했을 때 parity를 이용하여 데이터를 복구할수 있다는 장점이 있다. : 가장 마지막 하드 하나를 parity저장용으로 쓴다.
-
raid 6
- 많은 디스크를 RAID로 구성할 때 디스크 2개가 고장나면 복구가 불가능 하다
- 이에, 여러개의 디스크로 RAID5를 구성할 때 신뢰성을 높이기 위해서 RAID 6 방식을 사용할 수 있다.
- 하지만 RAID6는 parity를 2개 생성해야 하므로 wirte(쓰기) 알고리즘이 복잡해져 성능이 RAID5보다는 떨어지게 된다.
-
RAID 0 + 1
- RAID 0 으로 구성한 데이터를 RAID 1 하는 방식 (Stripping -> mirroring)
- 신뢰도는 RAID 5와 같다고 할수 있지만, 비용이 2배가 들기 때문에 좋은 방법은 아니다.
-
RAID 10(1+0)
- RAID 1 한 데이터를 RAID 0하는 방식 (morroring -> stripping)
- RAID 0 + 1과 마찬가지라고 할 수 있지만, 안정성과 속도 면에서 0 + 1보다 더 좋다
-
RAID설치
-
설치준비
- 설치를 위해 먼저 SCS 하드 디스크를 7개 준비, 시스템에 적용(1G * 7)
- VMware의 설정창에서 하드디스크 7개가 실행되는지 확인.(실제 장비는 실행되는것을 확인)
- dev에 sda ~ sdg 까지 디스크를 확인한다.
-
RAID를 구성하기 위한 패키지로 'mdada"를 사용한다. : 레드헷 리눅스에서는 raidtools라는 패키지를 사용한다. 시스템에 mdadm이 설치 되어 있는지를 확인한다.
- rpm -qa | grep mdadm
- mdadm 1.7이하는 RAID10 구성 불가.
- 되도록 최신 버전으로 업그레이드 하는 것이 좋다.
-
RAID 0 설치
- fdisk /dev/sda 명령으로 /dev/sda1파티션 생성. 여기서 파일 시스템의 유형을 fd(Linux Raid Auto)로 선택하고 저장 후 종료한다.
- 논리 디바이스를 직접 가져다 쓴다 : 리눅스에서 원래 구성해놓은것이 하나 있다. : /dev/md0
- 필요하면 다시 생성한다.
-
ls -l /dev/md? 명령으로 /dev/md0장치가 있는지 확인하고, 없다면 명령으로 추가한다.
- mknod /dev/md0 b 9 0 : 논리디바이스를 만드는것. md0 논리디바이스
- b는 Block Device를, 9는 md장치의 주 번호가 9번임을, 0은 0번째 장치임을 의미한다.
- 9번은 md 자체의 구성넘버이다..
- md0의 0과, 9 0의 0은 항상 같다.
-
설치명령어 : mdadm
-
mdadm --create /dev/md0 --level=0 --raid-device=2 /dev/sda1 /dev/sdb1
- mdadm [md0으로 만들되] [raid0이고] [2개 하드를 묶는다. 그 하드들은 이어서 나온다.]
-
mdadm --detail --scan : 확인용 명령어. 이 명령으로 해서 디바이스가 제대로 나온다면, 포멧후, 마운트해서 사용할 수 있다.
- mkfs.ext3 -c /dev/md0 : /dev/md0 파티션을 ext3으로 포멧한다.
- 마운트 이후 df명령으로 정상 설치되어 있는지 확인한다.
- fstab에 기록해 놓으면 dev/md0에 추가하면 된다.
-
- 예제 : sda와 sdb, sdc와 sdd를 raid0으로 구성, 각각 /raid0_1, raid0_2 에 항상 mount되도록 설정.
이 글은 스프링노트에서 작성되었습니다.















