WSL2는 윈도우와 리눅스라는 서로 다른 두 OS 간의 상호운용성(Interoperability)을 지원합니다. 이를 통해 별도의 파일 복사나 이동 없이도 두 파일 시스템 간의 자원을 실시간으로 공유하고 수정할 수 있습니다.
1. 파일 시스템 접근 방법
윈도우 파일 시스템 접근 (Linux → Windows)
WSL은 윈도우의 드라이브를 리눅스의 특정 디렉토리에 자동으로 마운트(Mount)합니다.
- 마운트 경로:
/mnt/<drive_letter>/ - 사용 예시:
- C 드라이브 접근:
/mnt/c/ - D 드라이브 접근:
/mnt/d/ - 사용자 문서 폴더:
/mnt/c/Users/<UserName>/Documents/
- C 드라이브 접근:
- 특징 : 리눅스 터미널에서 윈도우 파일을 직접 수정하거나 실행 가능
- 심볼릭 링크(Symbolic Link) 활용: 자주 접근하는 윈도우 경로는 리눅스 홈 디렉토리에 링크를 걸어 편리하게 사용
ln -s /mnt/c/Users/<UserName>/Projects ~/projects
리눅스 파일 시스템 접근 (Windows → Linux)
윈도우 파일 탐색기나 명령 프롬프트에서도 WSL 내부 파일에 접근할 수 있습니다.
- 탐색기 접근: 주소창에
\\wsl$\<DistroName>\입력 (예:\\wsl$\Ubuntu\) - 명령어 활용: 리눅스 터미널에서 현재 위치의 윈도우 탐색기를 열고 싶을 때:
explorer.exe .
- 특징: 윈도우의 GUI 도구(VS Code, IntelliJ 등)를 사용하여 리눅스 내부에 있는 코드를 직접 편집 가능
2. 내부 통신 원리 (Internal Communication)
윈도우(NTFS)와 리눅스(ext4)는 파일 관리 규칙이 다르기 때문에, 중간에서 이를 번역해 주는 9P 파일 서버 프로토콜을 거치게 됩니다.
- 가상 네트워크 방식: 이 통신은 인터넷(Wi-Fi) 망을 타는 것이 아니라, 컴퓨터 내부(CPU/메모리)에서 일어나는 가상 네트워크 통신을 의미
- 통역 비용(Overhead): 서로 다른 시스템 간의 데이터를 주고받을 때마다 '통역(Protocol Conversion)' 과정이 발생하며, 이는 곧 성능 차이로 직결
3. 파일 시스템 간 파일 스토리지 및 성능
가장 핵심적인 원칙은 "리눅스 도구로 작업할 거면 리눅스 폴더(~/)에서, 윈도우 도구로 작업할 거면 윈도우 폴더(C:\)에서 하라"는 것입니다.
| 작업 환경 (도구) | 권장 저장 위치 | 성능 최적화 이유 |
| Linux 명령줄 (gcc, npm, git 등) | /home/<user>/ (Linux FS) |
최고 속도. 리눅스 네이티브 파일 시스템 활용 |
| Windows 명령줄 (PowerShell, CMD) | C:\Users\... (Windows FS) |
윈도우 네이티브 성능 유지 및 파일 잠금 방지 |
⚠️ 주의사항 (Performance Note)
/mnt/c/(마운트된 드라이브) 하위에서 대량의 파일 입출력이 발생하는 리눅스 작업(예:git clone,npm install, 컴파일 등)을 수행하면 통역 과정(9P)으로 인해 속도가 수십 배 느려질 수 있음- 따라서 대규모 프로젝트나 빌드 작업은 반드시 리눅스 네이티브 파일 시스템 영역(
~하위)에서 수행하는 것을 권장
참고 자료 (References)
'CS 기초부터 한 걸음씩' 카테고리의 다른 글
| [Android] Jetpack Compose 기본 개념 - View 시스템과의 차이점 (2) | 2025.08.25 |
|---|---|
| [Android] Fragment 개념 정리 (4) | 2025.08.21 |
| [Android] XML 레이아웃과 View 기본 개념 (0) | 2025.08.20 |
| [Android] 안드로이드 앱 구조 정리 (1) | 2025.08.19 |
| [Android] Android Studio Logcat과 로그 레벨 (3) | 2025.08.18 |