WSL2 移動到非 C 槽的 HDD - Docker Desktop | Node.js | PosrgreSQL | google cloud SDK 要用 windows 還是 Linux 版本?
前言
我一直以為正在使用的 windows 電腦只有 128G 的 SSD。工作一年多以來,發現空間嚴重不足,實在是撐不下去了。本來想換 Mac,但覺得太貴,想說先升級硬體看看,沒想到居然解鎖了 1T 的 HDD 硬碟!!
原來,門市人員跟我說,我的硬碟被鎖起來了,所以電腦上才看不到。解鎖步驟也意外簡單,就是按右鍵解鎖而已,真的很奇葩。所以,當下我簡單換了電池 ( NTD 3500 ) + 記憶體 ( 16 GB | NTD 2000 ),SSD 等我備份完畢再來換,目前詢價是 480 GB,2500,也是很特別的規格 🤔。
因為 SSD 容量真的太小了,所以我打算 把整個 WSL2 和 Docker 搬到 HDD 裡面。雖然可能會跑比較慢,但也許是目前折衷最好的辦法。
WSL2 搬移
Terminal 使用 Window PowerShell
查看 wsl 版本:
wsl -l --all -v
將系統資料匯出,把整個 WSL2 系統 + 資料匯出成壓縮檔:
wsl --export Ubuntu-22.04 D:\wsl-ubuntu22.04.tar
取消目前正在使用的 WSL2:
wsl --unregister Ubuntu-22.04
重新導入,並安裝 WSL2 在 D:\Ubuntu-22.04 ( 資料夾名稱可以自己設定 ):
wsl --import Ubuntu-22.04 D:\Ubuntu-22.04 D:\wsl-ubuntu22.04.tar --version 2
- <Ubuntu-22.04>: 要導入的 Linux 版本
- <D:\Ubuntu-22.04>: 要導入的資料夾
- <D:\wsl-ubuntu22.04.tar> –version 2: 使用的壓縮案
移轉到 D 槽的 WSL2 預設是用 root 開啟,改成用 david 使用者開啟:
ubuntu2204 config --default-user david
發生錯誤: 無法將磁片 ‘D:\wsl-ubuntu22.04\ext4.vhdx’ 連結到 WSL2: 程序無法存取檔案,因為檔案正由另一個程序使用。 ( 可能是 docker desktop 還連著 WSL2 系統 )
wsl --shutdown
仍然無效重開機機
: 再次輸入ubuntu2204 config --default-user david
即可。
Docker Desktop 搬移
基本上跟 WSL2 的搬移是一樣的,要在 Windows 的系統上跑 Docker,一定要有 WSL,不然就是要灌雙系統。所以我也一起把 Docker 跟 Docker 的資料搬到 D 槽中。
將 Docker 跟 Docker 資料匯出
wsl --export docker-desktop-data D:\docker-desktop-data.tar
wsl --export docker-desktop D:\docker-desktop.tar
取消註冊 Docker 跟 Docker 資料
wsl --unregister docker-desktop-data
wsl --unregister docker-desktop
重新導入並安裝 Docker 在 D:\docker-desktop-data、D:\docker-desktop
wsl --import docker-desktop-data D:\docker-desktop-data D:\docker-desktop-data.tar
wsl --import docker-desktop D:\docker-desktop D:\docker-desktop.tar
要用 Windows 還是 Linux 版本?
之前還搞不太懂, Windows 跟 WSL2 都裝了一樣的工具,導致 SSD 大爆炸。但好在有這個經驗,讓我不斷刪掉不必要的檔案,才知道如果用了 WSL2,很多工具大部分是用 Linux 版本即可。
使用 Linux 版本:
- google cloud sdk
- MySQL
- PostgreSQL
- Node.js
- Git
使用 Windows 版本:
- Docker Desktop
後記
後來才發現,Docker Desktop 跟 Docker 的資料真的很大,難怪 SSD 一下就被撐滿了。
- WSL2: 7.48 GB
- Docker Desktop: 54.7 MB
- Docker Desktop Data: 37.9 GB