2026년 1월 3일 토요일

WSL의 가상 드라이브 사용 팁

WSL의 가상 드라이브 사용 팁

1. 윈도우즈에서 가상 드라이브를 만들고 WSL 리눅스에서 마운트
    1-1. WSL: 가상 드라이브 만들기
    1-2. WSL: 가상 드라이브 마운트
    1-3. Linux: 가상 드라이브 마운트
    1-4. Linux: 리눅스 파일 시스템 포맷
    1-5. Linux: 드라이브 장치 마운트
    1-6. Linux: 소유자 변경

2. 리눅스에서 가상 드라이브 사용
    2-1. WSL: 가상 드라이브 마운트
    2-2. Linux: 가상 드라이브 마운트
    2-3. WSL: 가상 드라이브 마운트 해제

3. 가상 디스크 빈공간 줄이기

-----------------

1. 윈도우즈에서 가상 드라이브를 만들고 WSL 리눅스에서 마운트

리눅스 운영체제와 각종 응용 프로그램을 한 드라이브에 저장할 경우 백-업하기 불편하다. 설계가 늘어나 사용자 자료가 증가하여 한개의 드라이브가 모자랄 수도 있다. 별도의 드라이브를 만들어 마운트 하는 방법을 설명한다.

1-1. WSL: 가상 드라이브 만들기(Create Virtual Disk)

관리자 권한으로 파워 쉘(Power Shell)을 열고 diskpart 실행,

PS> diskpart

가상 드라이브 생성 후 종료,

DISKPART> create vdisk file="D:\WSL2\ext4_ETRI050_DesignKit.vhdx" maximum=1024000 type=expandable

DISKPART> exit

1-2. WSL: 가상 드라이브 마운트(Mount Virtual Disk)

관리자 권한으로 파워 쉘(Power Shell)을 열고 WSL 의 마운트 실행,

PS> wsl --mount --vhd 'D:\WSL2\ext4_ETRI050_DesignKit.vhdx' --bare

* 가상 드라이브를 리눅스에서 마운트하여 관리하기 용이하도록 bare 옵션으로 마운트 할 경로를 지정하지 않는다.

1-3. Linux: 가상 드라이브 마운트(Linux: List usable block devices)

WSL에서 마운트 한 가상 드라이브가 리눅스에서 인식 되었는지 확인,

$ lsblk

    NAME
        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    sda   8:0    0 388.4M  1 disk
    sdb   8:16   0   186M  1 disk
    sdc   8:32   0     4G  0 disk [SWAP]
    sdd** 8:48   0  1000G  0 disk
    sde*  8:64   0     1T  0 disk /mnt/wslg/distro
                              /

* /dev/sde: mnt/wslg/distro 는 WSL의 리눅스 배포판이 설치된 드라이브가 마운트된 디렉토리 다.

* * /dev/sdd 는 별도로 WSL에서 별도로 마운트 한 가상 드라이브로 아직 리눅스에 마운트되지 않았다. 

1-4. Linux: 리눅스 파일 시스템 포맷(Linux: Make file system)

WSL에서 처음 생성한 가상 드라이브에 리눅스 파일 시스템으로 포맷(format),

$ sudo mkfs -t ext4 /dev/sdd
[sudo] password for mychip:

    mke2fs 1.47.0 (5-Feb-2023)
    Discarding device blocks: done
    Creating filesystem with 262144000 4k blocks and 65536000 inodes
    Filesystem UUID: d77d38b1-8c84-4a26-a3ed-005673e83399
    Superblock backups stored on blocks:
            32768, 98304, 163840, ......
            .........
            102400000, 214990848

    Allocating group tables: done
    Writing inode tables: done
    Creating journal (262144 blocks): done
    Writing superblocks and filesystem accounting information: done

1-5. Linux: 드라이브 장치 마운트(Linux: Mount block device)

리눅스 파일 파일 시스템으로 포맷 한 드라이브를 리눅스 파일 시스템에 마운트 한다.

$ sudo mount /dev/sdd ~/ETRI050_DesignKit

마운트할 위치는 ~/ETRI050_DesignKit 다. 미리 디렉토리를 만들어 뒀어야 한다.

1-6. Linux: 소유자 변경(Linux: Change file owner)

마운트 한 드라이브의 소유자는 root 다. 일반 사용자로 변경하려면,

$ sudo chown -R mychip:mychip ~/ETRI050_DesignKit

2. 리눅스에서 가상 드라이브 사용

WSL의 리눅스 사용을 마치고 종료하면 마운트 했던 드라이브들의 마운트가 해제된다. 따라서 재 마운트 해야 한다.

2-1. WSL: 가상 드라이브 마운트(Mount Virtual Disk)

관리자 권한으로 파워 쉘(Power Shell)을 열고 WSL 의 마운트 실행;

PS> wsl --mount --vhd 'D:\WSL2\ext4_ETRI050_DesignKit.vhdx' --bare

2-2. Linux: 가상 드라이브 마운트(Linux: List usable block devices)

WSL에서 마운트 한 가상 드라이브가 리눅스에서 인식 되었는지 확인,

$ lsblk

    NAME
        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    sda   8:0    0 388.4M  1 disk
    sdb   8:16   0   186M  1 disk
    sdc   8:32   0     4G  0 disk [SWAP]
    sdd** 8:48   0  1000G  0 disk
    sde*  8:64   0     1T  0 disk /mnt/wslg/distro
                              /

$ sudo mount /dev/sdd ~/ETRI050_DesignKit

2-3. WSL: 가상 드라이브 마운트 해제(Un-Mount Virtual Disk)

리눅스를 종료하면 자동으로 마운트가 해제된다. WSL에서도 가상 드라이브 마운트 해제(Un-Mount Virtual Disk) 시키는 것이 안전하다.

PS> wsl.exe --unmount 'D:\WSL2\ext4_ETRI050_DesignKit.vhdx'

PS> wsl --shutdown

3. 가상 디스크 빈공간 줄이기(Defragment Virtual Disk)

가상 드라이브를 생성 할 때 형식을 확장 가능으로 설정 했었다(type=expandable). 드라이브를 사용하면서 쓰기와 지우기를 반복하다 보면 지워진 공간이 늘어날 수 있다. 가상 드라이브의 크기가 일방적으로 늘어나므로 과도한 용량이 되었다고 판단되면 쓰지 않는 공간을 줄일 수 있다.

WSL을 중단 시키고 가상 드라이브 마운트를 해제한다.

PS> wsl --shutdown

PS> wsl.exe --unmount 'D:\WSL2\ext4_ETRI050_DesignKit.vhdx'

파워 쉘을 관리자 권한으로 실행 시킨 후,

PS> diskpart

가상 드라이브 파일 선택,

DISKPART> select vdisk file="D:\WSL2\ext4_mychip.vhdx"

만일의 손상을 예방하기 위해 읽기 전용으로 관리 연결,

DISKPART> attach vdisk readonly

줄이기 명령 실행,

DISKPART> compact vdisk

줄이기거 완료되면 연결 해제,

DISKPART> detach vdisk

DISKPART> exit



댓글 없음:

댓글 쓰기