어제 논리볼륨까지는 어찌어찌 만들고 잘 이해를 한 것 같으니(?) 이어서 더 많은 명령어를 연습해보았다. 이건 오래도록 기억해두어야 할 명령어들 같아서 시간내어 벨로그에 기록...!

논리적 볼륨 확장

* 확장 전 파일 시스템 상태 확인

df -h

근데 왜 안보일까... 내가 어제 만든 논리적 볼륨이 안 보인다. 근데... 일단 넘어가자. fdisk 명령어를 통해서는 확인하긴 했다.

  1. 새로운 디스크를 추가한다. VirtualBox에서 5GB 크기의 VDI를 추가해주었다.

  1. 새로운 디스크가 잘 인식되었는지 확인한다.
sudo fdisk -l

5GB의 /dev/sdd 디스크가 잘 생성된 것을 확인한다!

  1. 새 디스크를 물리적 볼륨으로 변환한다. 그리고 기존 볼륨 그룹에 물리적 볼륨을 추가한다.
# PV 변환 
sudo pvcreate /dev/sdd

# PV 추가
sudo vgextend vg_data /dev/sdd

성공적으로 추가했다.

  1. 논리적 볼륨 크기를 확장한다. (4GB를 확장해보자)
sudo lvextend -L +4G /dev/vg_data/lv_storage

메시지를 잘 봐야한다 ^^... 나는 성공한줄 알고 다음 명령어를 친 상황에서 잘못됨을 깨달았다.

엥?! 어제 분명히 잘 만들었는데 왜?! 없다는거지?!

이상하다... 싶을 땐 이름을 확인해보면 된다.

* 논리적 볼륨 확인 명령어

sudo lvdisplay

충격적... 오타났죠? storage를 쓰고 싶었는데... stroage가 되어버렸다... ㅠㅠ

올바른 ^^... 이름으로 다시 명령어를 입력하면 정상적으로 잘 확장되었다는 문구가 출력된다.

  1. 파일 시스템 크기 확장

논리적 볼륨만 확장하면 끝이 아니었다! 파일 시스템의 크기도 확장시켜 주어야 한다.

sudo e2fsck -f /dev/vg_data/lv_stroage

sudo resize2fs /dev/vg_data/lv_stroage

원래는 resize2fs 명령어를 먼저 쳤다. 하지만 e2fsck를 먼저 하라는 에러? 문구가 떴다.

그래서 하라는대로 한 뒤 resize2fs 명령어를 다시 내리니

올바르게 실행된 것 같다.

* e2fsck 명령어는... 파일 시스템 점검/복구 명령어라고 한다. 대상 파일시스템이 마운트되어 있지 않은 상태에서 실행하라는데...? 어랏...?

  1. 볼륨이 잘 확장되었는지 확인해본다.
sudo fdisk -l

기존 8GB였던 디스크가

12GB가 되었다! 확장을 잘 한 듯 하다. 후후.

논리적 볼륨 스냅샷 생성 및 복구

  1. 데이터를 저장하기 위해 논리적 볼륨을 마운트할 디렉토리가 필요하다.
sudo mkdir -p /mnt/storage
  1. 논리적 볼륨의 스냅샷을 생성하는 명령어를 입력한다.
sudo lvcreate -L 1G -s -n lv_storage_snap /dev/vd_data/lv_stroage

생성되었다는 문구가 뜬 후 확인해보면

요렇게 스냅샷 저장 디스크가 생성되어 있는 것을 확인할 수 있다.

  1. 그럼 우리는 스냅샷을 통해서 데이터를 복구할 수 있다.
# 기존 디스크 언마운트
sudo umount /mnt/storage

# 스냅샷을 통해서 데이터 복구 
sudo lvconvert --merge /dev/vg_data/lv_storage_snap

# 복구된 데이터로 다시 마운트
sudo mount /dev/vg_data/lv_storage /mnt/storage
  1. 다음 명령어를 통해 복구된 파일을 확인해볼 수 있다.
ls /mnt/storage

흠... not mounted 이거 맞나? 근데 일단 넘어갈게요...

논리적 볼륨 크기 축소

  1. 백업 디렉토리를 만들어준다.
sudo mkdir -p /mnt/backup
  1. rsync 명령어를 통해 데이터를 백업한다.
sudo rsync -av /mnt/storage /mnt/backup

  1. 기존 논리적 볼륨을 마운트 해제한다.
sudo umount /mnt/storage

불안하게... 이건 왜 아래 뭐가 안 뜨지? 아까는 마운트가 제대로 안 됐던 것일까?...

  1. 파일 시스템의 크기를 축소한다.
# 점검하는 것 같음 
sudo e2fsck -f /dev/vg_data/lv_stroage

# 파일 크기 축소 
sudo resize2fs /dev/vg_data/lv_stroage 6G

  1. 논리적 볼륨의 크기도 축소해준다.
sudo lvreduce -L 6G /dev/vg_data/lv_stroage

이 명령어는 데이터 손상의 우려가 있다 보니 "정말 원하니?" 라며 묻는다. 평소 하던대로 최소한의 책임만 지고 싶기 때문에 ^^ Y라고 안 쓰고 걍 엔터를 눌렀지만 넘어가지 않는다. 명확한 의사표현을 해주자... 그러면 크기가 조정된다.

  1. 사이즈를 조정한 논리적 볼륨을 다시 마운트한 뒤 데이터를 복원해준다.
# 마운트 명령
sudo mount /dev/vg_data/lv_stroage /mnt/storage

# 복원
sudo rsync -av /mnt/backup /mnt/storage

무사히 복원을 마치고 나면 용량이 잘 줄어들었나 확인해준다.

잘 줄어들었다!

업로드중..

df 명령어로도 잘 확인.

느낀점

lv_stroage... 틀린걸 알았지만 이미 돌이킬 수 없어... 변경 명령어야 있겠지만 시간적 여유가 없기 때문에 킹받음을 감수하고 과감히 패스.

그리고 어제는 LVM 자체를 이해하느라 시간을 많이 쏟았다면, 오늘은 파일시스템과의 연관성(?)을 생각하며 시간을 보냈다. 볼륨 크기, 용량만 신경 쓰면 끝이 아니었다. 계속해서 파일시스템이 같이 움직여야 했다. 이 점을 무척 신경을 써주어야 하는 것 같다. 용량만 있다고 끝~ 이 아니라, 파일 시스템을 생성하고 용량 관리를 해주어야 편하게 사용할 수 있다.

좋은 실습이었다... 후... 불태웠어.


본 포스팅은 글로벌소프트웨어캠퍼스와 교보DTS가 함께 진행하는 챌린지입니다

profile
영차영차 😎

2개의 댓글

comment-user-thumbnail
2024년 9월 13일

정말 열심히 하시네요! 대단하십니다..

1개의 답글