본문 바로가기
Linux/Linux

Linux) 파일 시스템 증설 (LVM 증설) - Online

by LILO 2021. 4. 25.
반응형

파일 시스템 증설

 

리눅스를 구축하고 추후에 "LV 증설 해주세요, LUN 증설 해주세요, 파일 시스템 증설해주세요, 파티션 용량 늘려주세요" 이러한 요구를 많이 듣게될 것입니다.

사실 결과론으로 이야기하면 그렇게 커맨드가 많은 편도 아니고 복잡한 편도 아닙니다.

 

하지만 중요한 것은 우리가 증설할 서버는 VM이 아닌 실제 운영중인 서버이기 때문에 온라인 증설을 할 때가 많습니다. 그만큼 조심해야되고 OS 단에서 제대로 인식을 하는지 확인해야 될 필요가 있습니다.

 

만약에 이중화 Mirror 클러스터 솔루션이 돌아가고 있는 상태라면 둘의 디스크 혹은 스토리지는 Mirroring이 되는 상태로 데이터의 일관성을 가져야됩니다. 만약 OS에서 증설된 디스크의 용량을 인식을 하지 못하는 상태가 계속 유지된다면 해당 파일 시스템은 Crash 상태로 빠질 수도 있습니다. 

 

이런 상황이 발생한다면 결국에는 fsck, xfs_repair 등을 이용해 파일시스템을 검사후 Repair하는 과정을 거쳐야됩니다. 대부분의 Mirror 클러스터를 사용하는 서버는 DB이기 때문에 일단 Repair 과정을 거치면 데이터 유실 부분에서 이슈가 나면 상당한 문제가 됩니다. 

 

 

 

파일 시스템 증설 작업 -LAB

 

먼저 증설 작업을 하기 위해 디스크를 추가로 하나 준비해줍니다. 가상 머신 설정에 들어가서 "+" 를 눌러 줍니다.

 

 

만들기를 눌러서 디스크를 만들어 주는 작업을 합니다.

 

 

다 만들었으면 확인을 누르고 가상머신을 키고 추가된 디스크를 확인합니다.

 

 

# fdisk -l

 

 

 

최근 VMware, VirtualBox 등의 가상머신은 온라인 상태에서 별도로 작업을 하지 않아도 바로 보여줍니다. VirtualBox의 경우는 100% 보여지는 이유가 가상머신의 전원을 끈 상태에서만 추가가 되기 때문입니다. 

 

재기동을 한 상태이니 당연히 보여져야하는 샘입니다.

 

 

제가 고객이라고 생각하고 LOG라는 LV에 기존 1G에서 3G로 증설하고 싶다는 요청을 했다는 가정을 하겠습니다.

요약하면 LOG에 2G를 증설하는 작업입니다.

 

현재 서버의 스토리지 상태를 모르기 때문에 아래와 같은 명령을 쳐서 확인합니다.

 

# df -Th

 

 

요구대로 1G를 사용하고 있는 상태이고 위에서 확인한 "/dev/sdb"의 용량 2G를 붙여주면 되겠다는 생각이 듭니다.

파일 시스템은 xfs인 것을 확인해줘야합니다.

 

이제 파티션을 생성해서 해당 파티션을 LVM 타입으로 만들어서 붙여주는 역할을 하게 만들어줍니다.

 

# fdisk /dev/sdb
# p                      (현재 파티션 상태 조회)
# n                      (파티션 만들기)

 

 

First Sector에서는 "Enter"를 누르고 Last Sector에서는 "+<용량>G" 용량을 지정해줍니다. 전체를 다 쓸 경우는 "Enter"를 치는 것이 좋습니다.

 

만들었으면 정상적으로 만들어졌는지 확인합니다.

 

 

여기서 가장 끝에 유형이 파티션 타입이 나오는데 현재 Linux로 잡혀있는 것을 LVM으로 바꿔줘야됩니다.

LVM으로 바꾸면 확장 축소에 유연한 파티션으로 바뀝니다.

 

# t
# 8e
# w    (저장하고 나가기)

 

 

 

"t"는 타입을 변경하고 Code 중 "8e"는 LVM 타입입니다. 절대로 이 t랑 8e 이러한 것들을 외울 생각을 하지 마시기 바랍니다. fdisk 명령 내부에 help 기능이 있으니 이를 적극적으로 활용할 필요가 있습니다.

 

친절하게 (m for help)라고 적혀있는 것을 볼 수 있으니 손가락이 외우기 전까지는 이것을 활용했으면 합니다.

 

 

 

HEX 코드 역시 "t"를 치고 나서 보이는 (type L to list all codes)를 보고 "L"을 쳐서 리스트를 봅니다.

 

 

Red Hat 공인 시험이나 강의를 들을 때 가끔씩 이러한 것들을 외우라고 하는데 솧직히 말하면 이러한 것들은 외우지 않는 것이 좋습니다. 리눅스 명령 자체에 있는 man이나 help를 사용하는 것은 부정 행위가 아니고 리눅스를 그만큼 잘 이용하는 것이기 때문입니다. 

 

모든 작업이 끝났으면 "w"를 치고 저장하고 나옵니다.

 

 

# partx /dev/sdb1

 

 

앞에서 저장하고 나온 파티션을 OS에 직접적으로 "나 추가됐어"라고 알려주는 작업을 해줍니다. 이 작업을 하지 않고 계속 작업을 해서 성공적으로 확장을 한다고해도 데이터의 일관성 및 유실은 보장받지 못합니다.

 

그리고 나서 우리가 추가할 볼륨 그룹의 상태를 확인해줍니다. "centos"라는 볼륨 그룹이네요.

 

# vgs

 

 

FREE 영역이 12MB 밖에 남지 않은 것을 확인할 수 있습니다. "vgextend" 작업도 필요할 것으로 예상됩니다.

 

 

 

# pvcreate /dev/sdb1
# pvs

 

 

나눠진 파티션을 Physical Volume으로 만들어줍니다. 

"pvs"를 통해 정상적으로 2G가 추가됐음을 확인해줍니다.

 

 

# vgextend centos /dev/sdb1
# vgs

 

 

"centos"라는 Volume Group에 "/dev/sdb1"의 Physical Volume 용량 만큼 늘려주는 작업을 합니다. 앞에는 12MB 밖에 여유가 없었는데 2G가 늘어난 것을 볼 수 있습니다.

이제 Logical Volume만 늘려주면 작업이 끝났음을 알 수 있습니다.

 

# lvextend -l +100%FREE /dev/mapper/centos-LOG
# lvs

 

 

"+100%FREE"를 줘서 LOG LV쪽에 아까 볼륨 그룹을 증설한 만큼 LV 영역을 확장시켜줍니다. 

정상적으로 확장이 됐음을 알 수 있습니다.

 

# df -Th

 

분명 확장을 했는데 lv에서는 인식하던게 파티션은 확장이 되었다고 인식하지 못하고 있습니다.

 

# xfs_growfs /dev/mapper/centos-LOG
# df -Th

 

 

Resize를 해줄 것이라는 명령어를 이용합니다. XFS의 경우는 "xfs_growfs", EXT의 경우는 "resizefs"를 이용합니다. 정상적으로 확장이 됐음을 확인했습니다.

 

 

이상으로 파일 시스템 증설에 관한 작업을 종료하겠습니다. 만약 중요한 솔루션들 Web이나 WAS 등은 내리고 작업하는 것이 가장 안전합니다. 그러므로 운영 서버의 파일 시스템 증설 작업은 새벽에 가지는 경우가 많습니다.

반응형