LVM ( Logical Volume Manager )
- 여러 개의 디스크의 용량을 합쳐 하나의 File System으로 구성하는 것을 말한다.
- 서버 운영에 있어 작은 용량의 HDD를 합쳐 새로운 대용량의 저장공간으로 구성할 수 있다.
( 즉, 용량이 다른 HDD간 구성이 가능, Raid는 용량이 다르면 구성이 불가 )
*확장은 쉽지만 축소는 힘들다. 축소를 하기 위해선 데이터의 무결성이 깨지기 때문
LVM에서 사용하는 용어
a. Physical Volume : 물리적인 볼륨을 말하며, /dev/sdb1 , /deb/sdc1 이런 실제 Partition을 말한다.
b. Volume Group : Physical Volume을 합친 그룹을 말한다.
c. Logical Volume : 합쳐진 Volume Group을 나누어 실제 사용하는 Volume을 의미한다.
EX.1 : lvcreate -L 1.5GB -n myLV myVG -> lv 용량 지정 옵션
EX.2 : lvcreate -l +50%VG -n myLV myVG -> 전체 용량의 %만큼 사용한다.
EX.3 : lvcreate -l +100%FREE -n myLV myVG -> 나머지 전체 용량을 사용한다.
sda는 파티션을 두개 가지고있다.
sda1번은 1G로 일반 파티션 /boot와 마운트 되어있다
sda2번은 19G가 일반 파티션인데 아래에 lvm이라는 타입이 있다.
sda2번이 하나의 볼륨그룹을 구성하고있는거고 그 안에서 lvm이라는 타입의 centos-root와 centos-swap을 만들어냄
헷갈릴 수 있기 때문에 vmware에서 초기설정으로 돌리고 하드디스크 1GB를 싱글로 3개 만들어줌
파티션 추가한 3개의 디스크를 피지컬 볼륨으로 만들어준다.
혹시나 잘못 만들었을 경우 pvremove로 지워줄 수 있다.
만들었으니 볼륨그룹으로 묶어준다. myVG라고 묶어주고 확인하는 vgdisplay로 확인해준다.
cur pV 서런트 피브이 Act pv는 액티브 피브이이다.
3개가 묶여있고 3개가 정상적으로 잘 동작하고있다라는 뜻
vgdisplay는 전체를 확인하는 것 뒤에 이름을 붙이면 그 그룹만 확인이 가능하다.
로지컬볼륨을 만들 땐 lvcreate로 만들어준다. 60%르르 사용하는 myLV를 만든다는 것이다.
그리고 나머지 40퍼센트를 모두 사용한다는 myLV2를 만들어준다
lvscan으로 만들어진걸 확인할수있다.
실제로 써야하는 애들이니까
마운트로 연결해주고 df -h로 확인해보면 연결된걸 확인할 수 있다.
당연히 오토마운트도 걸어줄 수있다. vi /etc/fstab을 쳐서 들어와주고 작성해준다.
init 0 로 종료해주고 vmware에서 디스크 1GB를 하나 더 추가해준다.
df -h를 확인해보면 오토마운트 설정했던게 보인다.
피지컬 볼륨으로 만들어준다. 볼륨그룹 확장을 해주었음
vgdisplay myVG로 확인도 해준다.
lv를 추가하기 위해서 명령어를 작성해준다. 점유
잘 들어갔는지 확인하기 위해서 lvscan을 작성해주면 확인 가능하다.
용량은 들어갔는데 파일시스템에서 용량정보가 이전껄로 유지가 되어있기 때문에 갱신을 해주는 느낌
아래에 용량이 313344에서 574464로 바뀌었다고 출력해준다.
다시 확인해보면 갱신되어서 늘어난걸 확인할 수 있음
삭제를 해줄 땐 항상 역순으로 돌아가주면 된다.
vi /etc/fstab에서 추가해주었던 마지막 두줄도 dd로 삭제해준다.
RAID (redundant Array of Inexpensive Disks)
- 장애요인 최대로 제거한 고성능 무 정지 저장장치
- 여러 개의 disk를 하나의 가상 disk로 구성, 대용량 저장 장치 구축 가능
- 다수의 disk에 dㅁㅅㅁfmf qnsgkf, qudfuf wjsthdgo wjsthd threh gidtkd
- Hardware RAID 와 Softare RaID로 구분 ( Test 환경은 Software 구성에 해당 )
- RAID는 Level1 이 존재하며, 각 Level 마다 기능이 다르다.
- CentOS 7.x 에서는 Raid 0 , 1 , 5 , 6 , 1+0 번을 제공 한다.
Hardware RAID 란?
Server에 별도에 Raid Controller를 장착하여 물리적인 Raid구성을 의미한다,
Software RAID에 비해 안정적이고, 속도가 빠르다.
Software RAID 란 ?
기본 OS에 내장되어있는 Raid를 이용하는 것을 말하며, Hardware RAID에 비해 성능이 떨어진다.
Raid Level1 0 ( Stripe Volume ) -> 절대 사용하면 안된다.
- 둘 이상의 디스크 내의(최대 32개 ) 빈 공간을 하나의 볼륨으로 결합
- Stripe 볼륨에 데이터 쓰기 발생 시 64kb 블록으로 나뉘어져 배열된 모든 디스크에 균등 분산
- 성능은 향상되나 내결함성이 없음
- 디스크의 수에 따라 성능 향상
Raid Level 1 ( Mirror Vloume )
- 디스크 짝수 개 필요
- 기존의 단순 볼륨을 Mirroring
- 내결함성 제공
- 사용 가능 디스크의 용량 [ 총 디스크 용량 / 2 ]
Raid Level 5 ( Stripe With Parity )
- 디스크 최소 3개 이상 필요
- 추가 디스크 하나만으로 내결함성
- 오류 검사를 위해 parity bit 사용
- 사용 가능 디스크의 용량 [ 총 디스크 용량 - 하나의 디스크 용량 ]
Raid Level 6 ( 중복 패리티 )
- 디스크 최소 4개 이상 필요
- Raid5의 단점인 2개 이상의 HDD가 Fail 하더라도 복구 가능
- 오류 검사를 위해 중복 parity bit 사용
- 사용 가능 디스크의 용량 [ 총 디스크 용량 - 두 개의 디스크 용량 ]
Raid Level 1 + 0
- 디스크 최소 4개 이상 필요
- Raid 1번 구성 후 Raid 0번으로 재 구성하는 형태
- 신뢰성과 성능은 우수 하지만, 효율적인 측면이 떨어짐
- 사용 가능 디스크의 용량 [ 총 디스크 용량 / 2 ]
Raid를 시험하기 위해서 VMware종료 후 디스크를 6개까지 추가한다.
그리고 스냅샷 후 다시 켜줌
그리고 일케 침
만들어졌는지 확인하고싶으면 mdadm --detail --scan를 쳐서 확인해보면 되고
자세히 확인해보고싶으면 mdadm --query --detail /dev/md0로 확인해본다.
이렇게 되면 Raid0은 테스트가 끝난 것이다.
[ Raid - 0 구성 하는 방법 ]
[ Raid - 0 을 Test 하기 위해서 새로운 HDD 2개를 추가 ]
Linux에서는 기본적은 장치를 컨트롤 하기 위해 장치 파일이 있어야 한다, 하지만 현재 RAID구성 시 RAID에 관한 장치 파일이 없으므로
장치 파일을 수동으로 생성, 이때 쓰는 명령어가 mknod 명령어 이며, 기본사용 형식은 mknod [생성할 장치파일 이름] [장치파일형식] [주 번호] [보조 번호] 형식이다.
장치 파일형식은 b , (c, u) , p를 사용 각 의미는 b=blocks Device, p=FIFO, c, u = Character 특수파일을 의미 한다.
주 번호와 보조 번호는 특별한 의미는 없으며, 비슷한 역할을 진행하는 장치 파일간 주 번호는 통일해서 사용하고 보조 번호로 각 장치를 세부 구분하는 형태로 쓰인다.
통상적으로 md 장치의 주 번호 값은 9번으로 통일하여 사용한다.
# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
위에서 생성한 장치 파일에 Raid 0의 정보를 입력 한다.
# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=RAID:0 UUID=94706d9b:77bf9660:3a4921bf:cfa5ccb7
정보 입력 후 확인하게 되면, 입력 된 정보를 토대로 장치의 UUID값 등이 표시되는 것을 확인
# mdadm --query --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Jun 22 21:04:51 2017
Raid Level : raid0
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Jun 22 21:04:51 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : RAID:0 (local to host RAID)
UUID : 94706d9b:77bf9660:3a4921bf:cfa5ccb7
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
--scan 옵션 보다 자세한 정보를 획득 할 수 있다.
# mkfs.xfs /dev/md0 ( 해당 Raid 장치 Format )
meta-data=/dev/md0 isize=512 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mkdir /raid0
# mount /dev/md0 /raid0 ( Raid 장치 Mount )
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 2.0G 33M 2.0G 2% /raid0
# mdadm --detail --scan > /etc/mdadm.conf ( md 장치 정보 저장 하기, System 재 부팅 시 장치번호가 변경 될 수 있으므로 반드시 저장. )
# vi /etc/fstab ( Raid 장치 Auto Mount 설정 하기 )
/dev/md0 /raid0 xfs defaults 0 0
# reboot ( 재 부팅 후 정상적으로 Auto Mount 되는지 확인 )
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md0 2.0G 33M 2.0G 2% /raid0
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
Raid1 구성
확인하면 나온다.
[ Raid - 1 구성 ]
# 스냅샷 초기설정 상태로 변경 할 것 !! #
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? Y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
Raid 1번의 경우 중복데이터를 저장 하기 때문에 기본 적으로 /boot에 관한 부분은 Raid로 설정을 하면 안 된다.
즉, 부팅과 관련 된 데이터는 Raid 1번 장치에는 적합한 형태가 아니다.
# mdadm --detail --scan
ARRAY /dev/md1 metadata=1.2 name=RAID:1 UUID=06264731:2b2ba277:c075fdb0:7e7f262b
# mdadm --query --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Jun 23 12:36:17 2017
Raid Level : raid1
Array Size : 1046976 (1022.44 MiB 1072.10 MB)
Used Dev Size : 1046976 (1022.44 MiB 1072.10 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 23 12:39:12 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : RAID:1 (local to host RAID)
UUID : 06264731:2b2ba277:c075fdb0:7e7f262b
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
# mkfs.xfs /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=65436 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=261744, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mkdir /raid1
# mount /dev/md1 /raid1
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md1 1020M 33M 987M 4% /raid1
# mdadm --detail --scan > /etc/mdadm.conf ( md 장치 정보를 저장 해준다. )
# vi /etc/fstab
/dev/md1 /raid1 xfs defaults 0 0
# reboot ( 재 부팅 후 정상적으로 Auto Mount 되는지 확인 )
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md1 2.0G 33M 2.0G 2% /raid1
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
# halt ( 시스템 종료 )
VMware 프로그램에서 물리적으로 가상 디스크 한 개를 제거 한다. ( Raid 1번으로 구성 된 HDD를 제거한다 !! )
이 작업으로 인하여 기존에 Raid 1번에 문제가 발생하게 될 것이며, 우리는 새로운 HDD 1GB를 이용 하여 복구 작업을 진행한다.
# mdadm --query --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Jun 23 13:09:59 2017
Raid Level : raid1
Array Size : 1046976 (1022.44 MiB 1072.10 MB)
Used Dev Size : 1046976 (1022.44 MiB 1072.10 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Fri Jun 23 13:13:57 2017
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : RAID:1 (local to host RAID)
UUID : 73caab78:06cf3b92:371e65b7:32c20731
Events : 21
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
- 0 0 1 removed
Raid 1번으로 묶인 2번째 장치가 Removed 상태인 것을 확인 할 수 있다. ( 위에 HDD를 물리적으로 삭제하였기 때문에 Removed 상태로 표시 된다. )
여기서 주의 할 점으로는 물리적인 HDD를 삭제를 하게 되면 fdisk -l /dev/sd* 명령어를 이용하여 확인하면 각 Disk의 알파벳 이름이 달라진다.
기존에 3개의 HDD에서 2개로 변경되었는데 기존의 이름은 /dev/sdb , /dev/sdc , /dev/sdd 로 표시 되었지만, /dev/sdc Disk 하나를 삭제한 지금
확인해 보면 /dev/sdb, /dev/sdd 가 아닌 /dev/sdb , /dev/sdc 로 표시 되는 것을 확인 할 수 있다, 기본 적으로 System이 부팅 되면서
삭제 HDD의 이름을 비어 두고 사용하는 것이 아닌, 삭제 Disk 다음 Disk에게 순차적인 이름부여를 진행하게 된다.
★★★★★ [ 주의 할 점 ] ★★★★★
기본적으로 우리는 HDD를 제거 하였기 때문에, Removed 상태로 표시가 된다.
하지만, 실제 업무에서는 HDD가 제거되는 일은 거의 없고 대부분 HDD에 문제가 발생하는 상태이다, 이때 장치의 상태를 Failed 상태라 말한다,
Failed 상태일 때에는 문제가 생긴 Failed Disk를 먼저 md 장치에서 제거 후 복구 작업을 진행 해야 한다.
fail해서 망가뜨리고
삭제해주고
복구해준다.
[ Failed 장치 제거 및 복구 순서 ]
1. umount /dev/md1 ( Mount 해제 )
2. mdadm /dev/md1 -r /dev/sdc1 ( Failed 장치 MD장치에서 제거 )
3. 복구 작업 진행
# mdadm /dev/md1 --add /dev/sdc1
mdadm: added /dev/sdc1
정상적인 HDD 를 md1 장치에 추가해 준다.
# mdadm --query --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Jun 23 13:09:59 2017
Raid Level : raid1
Array Size : 1046976 (1022.44 MiB 1072.10 MB)
Used Dev Size : 1046976 (1022.44 MiB 1072.10 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 23 13:30:19 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : RAID:1 (local to host RAID)
UUID : 73caab78:06cf3b92:371e65b7:32c20731
Events : 40
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
2 8 33 1 active sync /dev/sdc1
새로운 HDD를 추가 해줌으로써, md1 장치가 정상적인 상태로 돌아 온 것을 확인 할 수 있다.
# mdadm --detail --scan > /etc/mdadm.conf ( md 장치 정보를 다시 저장 해준다. )
'학원' 카테고리의 다른 글
2023/06/20(예비군) 방화벽, IPtables (0) | 2023.06.23 |
---|---|
2023/06/19 네트워크 관련 서비스 (0) | 2023.06.19 |
2023/06/15 디스크 (0) | 2023.06.15 |
2023/06/14 Shell Script (0) | 2023.06.14 |
2023/06/13 ShellScript (0) | 2023.06.13 |