2022. 8. 6. 00:17ㆍDevOps
WSL Linux 배포판 관리
wsl을 통한 Linux배포판을 사용하다 보면 관리(?)의 필요성이 느껴지는 몇 가지 부분이 존재하는 것 같다.
해당 부분에 대한 내용은 지극히 개인적이지만 알아두면 유용한 부분이니 확인해보도록 하자.
※ 참고로 별도의 저장공간 없이 오직 C: 만을 사용한다면 굳이 고민하지 않고 뒤로 가기를 눌러도 된다고 본다.
WSL Linux 배포판 저장 위치
C:\Users\{userName}\AppData\Local\Packages\{배포판리눅스}\LocalState\ext4.vhdx
위에서 확인한 것과 같이 Ubuntu20.04 Linux 배포판을 설치하게 되면 해당 위치에 vhdx형태의 가상 디스크 형태로 저장이 되며 배포판 버전별로 별도의 가상 디스크가 생성되고 이를 통해 각각의 Linux에 접속을 할 수 있도록 되는 것이다.
WSL 저장 위치에 대한 생각
1. C드라이브는 최대한 용량을 확보하는 것이 좋다.
C드라이브는 보통 운영체제와 프로그램들이 설치가 되고 해당 항목들을 사용하면서 우리가 알지 못하게 생성되는 임시 파일 및 기타 정보 등등 항상 관리를 해줘야 조금 더 쾌적하게 사용이 가능하다고 생각한다.
WSL 통한 Linux 배포판들도 이에 해당하며 사용용도 및 개수에 따라 그 용량 또한 천차만별로 차이가 나게 되는데 가상화 디스크인 점을 감안하면 각각의 용량 또한 작지 않기 때문에 추후 원활한 사용을 위해서라도 별도의 디스크로 저장 위치를 변경하는 것을 고려해야 한다.
2. 데이터 소실 위험을 줄일 수 있다.
Appdata 폴더 하위는 운영체제하에서 관리하기 때문에 운영체제 설치 / 재설치 시 별도의 백업을 하지 않는다면 해당 항목들은 모두 사라지게 된다.
이때 Linux 배포판에 저장된 데이터 역시도 함께 사라지게 되는데 매번 신경 쓰기보다는 저장 위치를 변경함으로써 조금은 자유로워지는 부분이 존재할 것 같다.
이 처럼 개인적이지만 유용한 저장 위치 변경에 대해 알아보자.
WSL 명령어를 통한 저장 위치 변경
사전 준비
당연하게도 저장 위치 변경을 하기 위해서는 기존 사용 중인 배포판을 중지해야 한다.
배포판 중지는 --shutdown 또는 -t {배포판 이름}을 통해 중지하면 된다.
참고로 -t 옵션은 는 개별적으로 중지가 가능하며 --shutdown은 모든 배포판을 중지시킨다.
wsl -t {배포판이름} #or --shutdown
linux 배포판 추출 (export)
--export 옵션을 사용하여 기존 Linux 배포판 정보를 추출하여 tar파일 형태의 파일로 저장한다.
#wsl --export {배포판이름} {Export 파일}
wsl --export Ubuntu-20.04 D:\WSL\data\Ubuntu-20-04.tar
linux 배포판 등록 해제 (unregister)
--unregister 옵션을 통해 기존 등록되어있던 Linux 배포판의 배포 등록을 취소하고 루트 파일 시스템(ext4.vhdx)을 삭제하게 된다.
# wsl --unregister {배포판이름}
wsl --unregister Ubuntu-20.04
linux 배포판 등록 (import)
--import 옵션을 통해서 기존 추출한 Linux 배포판을 원하는 위치로 지정하여 등록이 가능하며 해당 위치에 ext4.vhdx의 가상 디스크가 생성된 것을 확인할 수 있다.
※ 등록할 때 {배포판 이름} 부분은 임의로 지정 가능하기 때문에 원하는 이름으로 생성할 수 있다.
# wsl --import {배포판이름} {Import 위치} {Export 파일}
wsl --import Ubuntu20 D:\WSL\Ubuntu-20-04 D:\WSL\data\Ubuntu-20-04.tar
기존 추출한 Linux배포판 tar파일을 통해 배포판 이름 변경 등 추가적으로 등록이 가능하니 해당 기능을 적절히 활용하면 특정 설정의 Snapshot기능으로 활용도 가능할 듯하다.
WSL자동 등록 스크립트
위에서 wsl 명령어를 통해 어렵지 않게 저장소를 변경할 수 있지만 해당 작업을 스크립트를 통해서 조금~~ 더 간단하게 할 수 있는 Github 프로젝트가 존재하니 참고해서 보면 좋을 것 같다.
GitHub - pxlrbt/move-wsl: Easily move your WSL distros VHDX file to a new location.
Easily move your WSL distros VHDX file to a new location. - GitHub - pxlrbt/move-wsl: Easily move your WSL distros VHDX file to a new location.
github.com
move-wsl.ps1 파일 다운로드
아래 보이는 move-wsl.ps1 파일을 다운로드하여 파일로 저장 후 해당 스크립트를 PowerShell을 통해 실행하면 된다.
move-wsl.ps1 실행
실행은 간단하며 아래에서 보듯이 이동할 Linux 배포판을 선택한 후 변경할 위치를 지정하게 되면 자동으로 Export -> Unregister -> Import를 순서대로 진행하고 tar파일 까지 깔끔하게 지워준다.
이후 지정한 위치로 가상 디스크 파일이 변경된 것을 확인할 수 있다.
워낙 간단해서 딱히 이야기할 게 없지만 Linux 배포판의 이름을 변경해야 하는 경우 또는 tar를 저장해놓고 백업 파일로 활용하는 경우를 제외하고는 편하게 사용 가능할 것 같다.
위치 변경 이후 확인사항
root 접속 변경
기존 Linux 배포판 접속 시 유저로 바로 접속되던 것과 다르게 새로 등록한 Linux 배포판 접속 시에는 root 계정으로 접속되는 것을 확인할 수 있다.
크게 신경 쓰지 않는다면 그대로 사용해도 되겠지만 보안등 일반적으로 sudo 권한이 있는 일반 사용자 계정을 사용하는 것이 좋다.
1. /etc/wsl.conf 파일 생성
sudo vi /etc/wsl.conf
wsl.conf 파일을 생성하여 아래 항목을 저장하면 된다.
[user]
default={로그인 유져 ID}
단, 해당 부분은 wsl -t를 통해 종료 후 시작한 이후부터 적용된다.
2. Termial 접속 시 -u 옵션 사용
아래 터미널 같이 접속 명령어 사용 시 -u {로그인 유져 ID} 옵션을 통해 해당 ID로 로그인하면 된다.
#wsl -d {배포판 이름} -u {로그인 유져 ID}
wsl.exe -d Ubuntu20 -u lovelettee01
Docker-Desktop 저장소 이동
Windows의 Docker-Desktop의 경우 내부적으로 WSL을 이용하고 있으며, 추가 설정을 통해 WSL2엔진을 사용하여 성능을 향상할 수 있다.
또한 WSL Integration(통합) 설정으로 WSL 리눅스 배포판들에 선택적으로 별도의 Docker설치 없이도 함께 사용할 수 있게 제공해 주고 있다.
Docker WSL 저장소 이동
WSL을 이용하여 서비스하는 Docker-Desktop의 경우 Linux 배포판과 동일한 형태의 데이터 저장 방식이 사용된다.
그러므로 결국 Linux 배포판과 동일한 방식으로 저장소를 이동하면 된다는 이야기이다.
wsl -l -v 명령어를 통해 WSL 하위에 설치된 Docker를 확인해보면 아래와 같이 docker-desktop, docker-desktop-data 두 개의 항목이 존재하고 따로 먼저 해야 하는 항목이 정해져 있지는 않으니 차례대로 이동시켜 주면 된다.
위에서 설명한 wsl명령어 또는 자동 스크립트 등 각자 편한 방식을 이용해 이동을 진행하게 되면 다음과 같이 정상적으로 저장소가 변경된 것을 확인할 수 있다.
※ 참고로 docker-desktop 두 가지 항목 모두 저장소 이름이 동일 하니 폴더를 구분하여 저장소 이동을 하여야 함!!
마치며...
개인의 취양이지만 결국 C:에 10G라는 저장공간을 확보하는 것으로 마무리를 짓는다.
'DevOps' 카테고리의 다른 글
WSL 설치 후 이슈... (0) | 2022.07.19 |
---|---|
WSL(Windows Subsystem for Linux) 설치 (0) | 2022.07.18 |
WSL(Windows Subsystem for Linux) 이란? (0) | 2022.07.12 |