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 512GB 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 wsl --update perintah , atau coba wsl df -h /.

Output akan mencakup:

  • Sistem file: 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 dalam VHD (Ukuran yang dialokasikan minus 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, ikuti langkah-langkah di bawah ini. (Untuk rilis WSL sebelumnya yang belum diperbarui, default maks ini dapat diatur ke 512GB atau 256GB).

  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 sekarang akan memiliki DISKPART> permintaan. Masukkan perintah berikut, ganti <pathToVHD> dengan jalur direktori ke file yang ext4.vhdx 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 mewakili ukuran maksimum VHD saat ini dialokasikan:

    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 DISKPART> Windows:

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

    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 dipasang pada /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.

Catatan

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

Output akan terlihat serupa seperti berikut:

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 Anda AppData 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 yang terkait dengan "memasang disk distribusi", ini bisa disebabkan oleh pemadaman mendadak atau pemadaman listrik dan dapat mengakibatkan VHD distribusi Linux dialihkan ke baca-saja untuk menghindari kehilangan data. Anda dapat memperbaiki dan memulihkan distribusi menggunakan e2fsck perintah Linux 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 lsblk perintah .

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:

  • NAMA: Nama yang ditetapkan ke perangkat akan sd[a-z], mengacu pada Disk SCSI dengan penugasan huruf untuk setiap disk yang digunakan. sda selalu 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 berada (SWAP adalah untuk memori tidak aktif yang telah dikonfigurasi sebelumnya sehingga tidak ada titik pemasangan).

Kesalahan fallback baca-saja

Jika WSL mengalami "kesalahan pemasangan" saat membuka distribusi Linux, distribusi dapat diatur sebagai baca-saja sebagai fallback. 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 wsl.exe --mount perintah untuk memasang ulang disk dengan langkah-langkah berikut:

  1. Matikan semua distribusi WSL dengan membuka PowerShell dan masukkan perintah:

    wsl.exe --shutdown
    
  2. Buka PowerShell sebagai administrator (dalam prompt perintah yang ditinggikan) dan masukkan perintah mount, 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. wsl.exe lsblk Gunakan perintah 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"). e2fsck Perintah memeriksa sistem file ext4 (jenis yang digunakan oleh distribusi yang diinstal dengan WSL) untuk kesalahan dan memperbaikinya.

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

Catatan

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 menghapus instalasi distribusi setelah perbaikan selesai.

  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 berada 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. Contohnya:

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

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