티스토리 뷰



나의 첫 가상 머신은 VMWare였지만 얼마 전부터 가상 머신으로 버추얼박스(VirtualBox)를 사용하고 있다. 성능도 안전성도 불편함이 없다. 무엇보다 미리 설치된 상태로 배포하는 이미지들이 많다 보니 필요에 따라 적절한 이미지를 다운로드하여 사용되니 참 편하기도 하다. 그런데, 오랜 시간 사용하던 리눅스 가상 머신의 실제 용량에 비해서 가상 머신 이미지의 용량이 상당히 컸다. 이것을 정리해서 줄여 보기로 했다. 

117GB까지 늘어난 가상머신 이미지 파일이다.

그러나, 리눅스 내부의 용량은 10GB에 이를 뿐이고, 여러 가지 도구가 깔려있지만 이 정도가 맞다.

 

■ 리눅스 자체 파일 시스템 정리하기

일단 리눅스 자체에서 확보할 수 있는 공간을 확보하는 작업을 수행한다. 여기에는 불필요한 프로그램을 삭제하는 작업도 포함될 것이다. 여러 작업 중에서 큰 공간을 정리하는 작업을 이것저것 설치하는 과정에서 설치되었던 불필요한 패키지들을 정리하는 것이다.

"sudo apt-get autoremove"으로 사용되지 않는 불필요한 패키지를 삭제한다.

 

■ 사용하지 않는 공간 마킹하기

사전에 알아 두어야 사항은 사용하지 않는 공간 마킹하기와 가상 머신 디스크 이미지 용량 줄이기 모두 상당한 시간을 소요하는 작업이므로 감안해서 작업해야 한다.

"sudo apt install zerofree"로 사용하지 않는 공간 마킹하기에 필요한 도구를 설치한다. zerofree 도구는 사용하지 않는 공간에 0을 쓰고 나중에 사용할 버추얼박스 매니저에서 해당 공간들을 공간 줄이기에 사용하는 방식이다. 이 도구를 사용하기 위해서는 먼저 리눅스 시스템을 복구 모드(Recovery Mode)로 전환해야 한다.

일단 가상 머신을 시작하면서 버추얼박스 로고가 사라지면 바로 ESC를 여러 번 눌러서 GRUB 화면으로 진입하고 우분투용 고급 설정을 화살표로 움직여 선택하고 엔터를 누른다. 

 

가장 높은 버전의 "recovery mode"를 선택하고 엔터를 누른다. 

 

복구 메뉴에서 "root"를 선택하고 엔터를 누르고 "Press Enter for maintenance" 메시지에서 다시 엔터를 누르면 콘솔 창을 볼 수 있다.

 

우선 정리해야 할 디스크들을 확인한다. "df -h"로 확인할 수 있는데 sda1, sda2, sda4를 대상으로 삼았다.

 

zerofree를 수행하려면 디스크가 읽기 전용이어야 하므로 "mount -o remount, ro /dev/sda2"와 같은 명령으로 디스크를 읽기 전용으로 다시 마운트 한다. 그리고, 위의 그림처럼 -v 옵션을 추가하여 zerofree를 수행하면 진행 상황을 확인할 수 있다. 참고로 용량이 큰 만큼 시간이 상당히 오래 걸린다는 것을 감안해야 한다.

 

/dev/sda1의 경우 "mount point is busy"라는 메시지가 나오면서 읽기 전용으로 다시 마운트하는 명령을 수행할 수 없는데 이런 경우 "fuser -vm /dev/sda1" 명령으로 해당 디스크를 사용하고 있는 프로세스를 확인하여 해당 프로세스를 종료시켜야 한다. 사용 중인 프로세스를 모두 종료시켰으면 /dev/sda1 디스크도 다른 드라이브처럼 읽기 전용으로 다시 마운트 하여 zerofree를 수행한다.

 

그런데, 필자의 우분투 환경에서는 관련 프로세스가 너무 많아서 일일이 종료시킨다는 것이 용이하지 않았다. 그래서 찾아보고 여러가지로 시도해서 성공한 방법은 다음과 같다. 일단 "service rsyslog stop" 명령과 "service network-manager stop" 명령으로 기본적으로 중단할 수 있는 서비스를 정리한 다음에 "systemctl stop systemd-journald.socket && systemctl stop systemd-journald.service && sudo swapoff -a && mount -o remount,ro /dev/sda1 / && zerofree /dev/sda1" 명령을 한 번에 수행했다. 이렇게 작업하는 이유는 systemd-journald가 금방 다시 재가동되기 때문이다. 그래서, 드라이브를 사용하는 서비스를 중단시키면서 스왑 메모리 사용도 중지시키고 동시에 드라이브를 읽기 전용으로 다시 마운트 하여 zerofree 명령까지 수행한 것이다.

 

작업이 모두 끝나면 "halt"명령으로 리눅스 시스템을 종료시키고 가상머신도 닫는다(시스템 끄기).

 

 

■ 가상 머신 디스트 이미지 용량 줄이기

콘솔 창을 열고(윈도우+R 단축키 이후 cmd) cd "C:\Program Files\Oracle\VirtualBox" 명령으로 해당 디렉토리를 이동한다. 다음에는 버추얼박스가 관리하고 있는 가상 머신 이미지들을 "VBoxManage.exe list hdds" 명령으로 조회한다. "Location:" 항목에 있는 *.vdi 이미지 파일의 경로를 복사하여 다음과 같은 명령으로  이미지 파일 정리하기를 수행한다.

VBoxManage.exe modifymedium disk "C:\vms\Ubuntu 18.04.3 (64bit).vdi" --compact

 

정리 이후 이미지 파일의 크기는 31G이다. 86GB가 정리되었다. 가상 머신을 다시 가동 시켜서 정상 가동 여부를 확인하면 작업은 모두 끝난다.

 


댓글
댓글쓰기 폼