Bagikan melalui


Cara mengelola ruang disk WSL

Panduan ini mencakup cara mengelola ruang disk yang digunakan oleh distribusi Linux yang diinstal menggunakan WSL 2, termasuk:

Subsistem Windows untuk Linux (WSL 2) menggunakan platform virtualisasi untuk menginstal distribusi Linux bersama sistem operasi Windows host, membuat Virtual Hard Disk (VHD) untuk menyimpan file untuk setiap distribusi Linux yang Anda instal. VHD ini menggunakan jenis sistem file ext4 dan diwakili pada hard drive Windows Anda sebagai file ext4.vhdx.

WSL 2 secara otomatis mengubah ukuran file VHD ini untuk memenuhi kebutuhan penyimpanan. Secara default setiap file VHD yang digunakan oleh WSL 2 awalnya dialokasikan jumlah maksimum ruang disk 1 TB (sebelum rilis WSL 0,58,0 default ini diatur ke maks 512 GB dan maks 256GB sebelum itu).

Jika ruang penyimpanan yang diperlukan oleh file Linux Anda melebihi ukuran maksimum ini, Anda akan melihat kesalahan yang menyatakan bahwa Anda telah kehabisan ruang disk. Untuk memperbaiki kesalahan ini, ikuti panduan di bawah ini tentang Cara memperluas ukuran Hard Disk Virtual WSL 2 Anda.

Cara memeriksa ruang disk yang tersedia

Periksa jumlah ruang disk yang tersedia di VHD untuk distribusi Linux yang diinstal dengan WSL 2 dengan menggunakan perintah Linux Df.

Untuk memeriksa ruang disk yang tersedia, buka baris perintah PowerShell dan masukkan perintah ini (ganti <distribution-name> dengan nama distribusi aktual):

wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro

Jika perintah ini tidak berfungsi untuk Anda, silakan tingkatkan ke versi Store WSL menggunakan perintah wsl --update, atau coba wsl df -h /.

Output akan mencakup:

  • Filesystem: Pengidentifikasi untuk sistem file VHD
  • Ukuran: Ukuran total disk (jumlah maksimum ruang yang dialokasikan untuk VHD)
  • digunakan: Jumlah ruang yang saat ini digunakan dalam VHD
  • Tersedia: Jumlah ruang yang tersisa di VHD (Besar yang dialokasikan dikurangi jumlah yang digunakan)
  • Gunakan%: Persentase ruang disk yang tersisa (Ukuran yang Digunakan/Dialokasikan)
  • Dipasang pada: Jalur direktori tempat disk dipasang

Jika Anda melihat bahwa Anda hampir mencapai jumlah ruang disk yang tersedia yang dialokasikan untuk VHD Anda, atau telah menerima kesalahan karena tidak ada ruang disk yang tersisa, lihat bagian berikutnya untuk langkah-langkah tentang cara memperluas jumlah maksimum ruang disk yang dialokasikan ke VHD yang terkait dengan distribusi Linux Anda. Jumlah ruang disk yang dialokasikan untuk VHD Anda oleh WSL akan selalu menunjukkan jumlah maksimum default (1TB dalam versi terbaru WSL), bahkan jika jumlah ruang disk pada perangkat Windows Anda yang sebenarnya kurang dari itu. WSL memasang VHD yang akan memperluas ukuran saat Anda menggunakannya, sehingga distribusi Linux Anda melihat bahwa itu dapat tumbuh ke ukuran maksimum 1TB yang dialokasikan. 

Cara memperluas ukuran Hard Disk Virtual WSL 2 Anda

Untuk memperluas ukuran VHD untuk distribusi Linux di luar jumlah maksimum ruang disk yang dialokasikan 1TB default, Anda dapat menggunakan perintah wsl --manage atau mengikuti langkah-langkah manual di bawah ini. (Batas maksimum default rilis WSL sebelumnya mungkin diatur ke 512GB atau 256GB).

Perluas ukuran VHD menggunakan wsl --manage

Perintah wsl --manage hanya tersedia untuk rilis WSL 2.5 dan yang lebih tinggi.

Untuk mengubah ukuran ruang yang dialokasikan pada disk virtual Anda:

  1. Hentikan semua instans WSL menggunakan perintah wsl.exe --shutdown

  2. Jalankan wsl --manage <distribution name> --resize <memory string>. String memori yang didukung adalah formulir <Memory Value>B/M/MB/G/GB/T/TB. Nilai desimal saat ini tidak didukung (misalnya 2.5TB).

Output akan terlihat mirip dengan yang berikut ini:

e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
resize2fs 1.46.5 (30-Dec-2021)
The operation completed successfully.

Drive virtual (ext4.vhdx) untuk distribusi Linux ini sekarang telah berhasil diperluas ke ukuran baru.

Ekspansi manual

Untuk memperluas ukuran VHD untuk distribusi Linux menggunakan langkah manual:

  1. Hentikan semua instans WSL menggunakan perintah: wsl.exe --shutdown

  2. Salin jalur direktori ke file ext4.vhdx yang terkait dengan distribusi Linux yang diinstal pada komputer Anda. Untuk bantuan, lihat Cara menemukan file vhdx dan jalur disk untuk distribusi Linux Anda.

  3. Buka Prompt Perintah Windows dengan hak istimewa admin lalu buka penerjemah perintah diskpart dengan memasukkan:

    diskpart
    
  4. Anda akan mendapatkan prompt DISKPART>. Masukkan perintah berikut, ganti <pathToVHD> dengan jalur direktori ke file ext4.vhdx yang terkait dengan distribusi Linux (disalin di langkah #2).

    Select vdisk file="<pathToVHD>"
    
  5. Tampilkan detail yang terkait dengan disk virtual ini, termasuk Ukuran virtual, yang menggambarkan ukuran maksimum saat ini yang dialokasikan untuk VHD.

    detail vdisk
    
  6. Anda perlu mengonversi Ukuran virtual menjadi megabyte. Misalnya, jika Ukuran virtual: 512 GB, ini sama dengan 512000 MB. Nilai baru yang Anda masukkan harus lebih besar dari nilai asli ini. Untuk menggandakan ukuran virtual 512 GB hingga 1024 GB, Anda akan memasukkan nilai dalam MB sebagai: 1024000. Berhati-hatilah untuk tidak memasukkan nilai yang lebih tinggi dari yang Anda inginkan karena proses mengurangi ukuran disk virtual jauh lebih rumit.

  7. Masukkan nilai untuk ukuran maksimum baru yang ingin Anda alokasikan ke distribusi Linux ini menggunakan prompt Perintah Windows DISKPART>.

    expand vdisk maximum=<sizeInMegaBytes>
    
  8. Keluar dari prompt DISKPART>

    exit
    
  9. Luncurkan distribusi Linux ini. (Pastikan berjalan di WSL 2. Anda dapat mengonfirmasi ini menggunakan perintah: wsl.exe -l -v. WSL 1 tidak didukung).

  10. Buat WSL sadar bahwa WSL dapat memperluas ukuran sistem file untuk distribusi ini dengan menjalankan perintah ini dari baris perintah distribusi WSL Anda. Anda mungkin melihat pesan ini sebagai respons terhadap perintah pemasangan pertama: "/dev: tidak ada yang sudah terpasang di /dev." Pesan ini dapat diabaikan dengan aman.

    sudo mount -t devtmpfs none /dev
    mount | grep ext4
    
  11. Salin nama entri ini, yang akan terlihat seperti: /dev/sdX (dengan X yang mewakili karakter lain). Dalam contoh berikut, nilai X adalah b:

   sudo resize2fs /dev/sdb <sizeInMegabytes>M

Dengan menggunakan contoh dari atas, kami mengubah ukuran vhd menjadi 2048000, sehingga perintahnya adalah: sudo resize2fs /dev/sdb 2048000M.

Nota

Anda mungkin perlu menginstal resize2fs. Jika demikian, Anda dapat menggunakan perintah ini untuk menginstalnya: sudo apt install resize2fs.

Output akan terlihat mirip dengan yang berikut ini:

resize2fs 1.44.1 (24-Mar-2021)
Filesystem at /dev/sdb is mounted on /; on-line resizing required
old_desc_blocks = 32, new_desc_blocks = 38
The filesystem on /dev/sdb is now 78643200 (4k) blocks long.

Drive virtual (ext4.vhdx) untuk distribusi Linux ini sekarang telah berhasil diperluas ke ukuran baru.

Penting

Kami menyarankan agar Anda tidak mengubah, memindahkan, atau mengakses file terkait WSL yang terletak di dalam folder AppData Anda menggunakan alat atau editor Windows. Melakukannya dapat menyebabkan distribusi Linux Anda rusak. Jika Anda ingin mengakses file Linux Anda dari Windows, itu dimungkinkan melalui jalur \\wsl$\<distribution-name>\. Buka distribusi WSL Anda dan masukkan explorer.exe . untuk melihat folder tersebut. Untuk mempelajari lebih lanjut, lihat posting blog: Mengakses file Linux dari Windows.

Cara memperbaiki kesalahan pemasangan VHD

Jika Anda mengalami kesalahan terkait dengan "memasang disk distribusi", ini bisa disebabkan oleh penghentian atau pemadaman listrik mendadak dan dapat mengakibatkan VHD distribusi Linux beralih ke mode baca-saja untuk menghindari kehilangan data. Anda dapat memperbaiki dan memulihkan distribusi menggunakan perintah linux e2fsck dengan mengikuti langkah-langkah di bawah ini.

Gunakan perintah lsblk untuk mengidentifikasi nama perangkat blok

Ketika WSL 2 menginstal distribusi Linux, WSL 2 memasang distribusi sebagai Virtual Hard Disk (VHD) dengan sistem filenya sendiri. Linux mengacu pada hard drive ini sebagai "perangkat blokir" dan Anda dapat melihat informasi tentang perangkat tersebut dengan menggunakan perintah lsblk.

Untuk menemukan nama perangkat blok yang saat ini digunakan oleh WSL 2, buka distribusi Anda dan masukkan perintah: lsblk. (Atau buka PowerShell dan masukkan perintah: wsl.exe lsblk.) Output akan terlihat seperti ini:

NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 363.1M  1 disk
sdb    8:16   0     8G  0 disk [SWAP]
sdc    8:32   0   1.5T  0 disk
sdd    8:48   0     1T  0 disk /mnt/wslg/distro

Informasi tentang perangkat blok meliputi:

  • NAME: Nama yang diberikan kepada perangkat akan berupa sd[a-z], yang mengacu pada Disk SCSI dengan penugasan huruf untuk setiap disk yang digunakan. sda selalu merupakan distribusi sistem.
  • MAJ:MIN: Mewakili angka yang digunakan oleh kernel Linux untuk mengidentifikasi perangkat secara internal dengan angka pertama yang mewakili jenis perangkat (8 digunakan untuk Antarmuka Sistem Komputer Kecil/disk SCSI).
  • RM: Beri tahu kami apakah perangkat dapat dilepas (1) atau tidak (0).
  • UKURAN: Ukuran total volume.
  • RO: Mari kita ketahui apakah perangkat bersifat baca-saja (1) atau tidak (0).
  • TYPE: Mengacu pada jenis perangkat (disk dalam hal ini).
  • MOUNTPOINTS: Mengacu pada direktori saat ini pada sistem file tempat perangkat blok ditempatkan (SWAP adalah untuk memori tidak aktif yang telah dikonfigurasi sebelumnya sehingga tidak memiliki titik pemasangan).

Kesalahan fallback baca-saja

Jika WSL mengalami "kesalahan pemasangan sistem" saat membuka distribusi Linux, distribusi dapat diatur sebagai hanya-baca sebagai tindakan pencegahan. Jika itu terjadi, distribusi dapat menampilkan kesalahan berikut selama startup:

An error occurred mounting the distribution disk, it was mounted read-only as a fallback.

Ketika distribusi dimulai sebagai baca-saja, setiap upaya untuk menulis ke sistem file akan gagal dengan kesalahan seperti ini:

$ touch file
touch: cannot touch 'file': Read-only file system

Untuk memperbaiki kesalahan pemasangan disk di WSL, dan memulihkannya kembali ke status yang dapat digunakan/ dapat ditulis lagi, Anda dapat menggunakan perintah wsl.exe --mount untuk memasang ulang disk dengan langkah-langkah berikut:

  1. Matikan semua distribusi WSL dengan membuka PowerShell sebagai administrator (dalam prompt perintah yang ditinggikan) dan masukkan perintah:

    wsl.exe --shutdown
    
  2. Masukkan perintah mount dan ganti <path-to-ext4.vhdx> dengan jalur ke file .vhdx distribusi. Untuk bantuan menemukan file ini, lihat Cara menemukan file VHD dan jalur disk untuk distribusi Linux Anda.

    wsl.exe --mount <path-to-ext4.vhdx> --vhd --bare
    
  3. Gunakan perintah wsl.exe lsblk dari PowerShell untuk mengidentifikasi nama perangkat blok untuk distribusi (sd[a-z]) lalu masukkan perintah berikut untuk memperbaiki disk (mengganti <device> dengan nama perangkat blok yang benar, seperti "sdc"). Perintah e2fsck memeriksa sistem file ext4 (jenis yang digunakan oleh distribusi yang diinstal dengan WSL) untuk kesalahan dan memperbaikinya.

    wsl.exe sudo e2fsck -f /dev/<device>
    

Nota

Jika Anda hanya memiliki satu distribusi Linux yang terinstal, Anda mungkin mengalami kesalahan "file ext sedang digunakan" dan perlu menginstal distribusi tambahan untuk menjalankan wsl.exe lsblk. Anda dapat menguninstall distribusi setelah perbaikan selesai. Selain itu, Anda mungkin perlu menutup Docker Desktop di Windows untuk menghindari kesalahan Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATION saat menjalankan perintah wsl.exe sudo e2fsck -f /dev/sdc.

  1. Setelah perbaikan selesai, lepaskan disk di PowerShell dengan memasukkan:

    wsl.exe --unmount
    

Peringatan

Anda dapat menggunakan perintah: sudo mount -o remount,rw / untuk mengembalikan distribusi baca-saja ke status yang dapat digunakan/dapat ditulis, tetapi semua perubahan akan dalam memori sehingga akan hilang saat distribusi dimulai ulang. Sebaiknya gunakan langkah-langkah yang tercantum di atas untuk memasang dan memperbaiki disk sebagai gantinya.

Cara menemukan file .vhdx dan jalur disk untuk distribusi Linux Anda

Untuk menemukan file .vhdx dan jalur direktori untuk distribusi Linux, buka PowerShell dan gunakan skrip berikut, ganti <distribution-name> dengan nama distribusi aktual:

(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"

Hasilnya akan menampilkan jalur yang terlihat seperti %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx. Misalnya:

C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

Ini adalah jalur ke file ext4.vhdx yang terkait dengan distribusi Linux yang Anda cantumkan.