Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku opisano sposób zarządzania miejscem na dysku używanym przez dystrybucje systemu Linux zainstalowane przy użyciu programu WSL 2, w tym:
- Jak sprawdzić dostępną ilość miejsca na dysku VHD
- Jak rozszerzyć rozmiar dysku VHD
- Jak naprawić dysk VHD, jeśli wystąpi błąd
- Jak zlokalizować plik vhdx i ścieżkę dysku dla wszystkich zainstalowanych dystrybucji systemu Linux
Podsystem Windows dla systemu Linux (WSL 2) używa platformy wirtualizacji do instalowania dystrybucji systemu Linux wraz z hostem systemu operacyjnego Windows, tworząc wirtualny dysk twardy (VHD) do przechowywania plików dla każdej instalowanej dystrybucji systemu Linux. Te dyski VHD używają typu systemu plików ext4 i są reprezentowane na dysku twardym systemu Windows jako plik ext4.vhdx.
Program WSL 2 automatycznie zmienia rozmiar tych plików VHD zgodnie z potrzebami przechowywania. Domyślnie każdy plik VHD używany przez WSL 2 jest początkowo przydzielany maksymalną ilość miejsca na dysku o pojemności 1 TB (przed wersji WSL 0.58.0 ta wartość domyślna została ustawiona na maksymalną 512 GB i maksymalną 256 GB przed tym).
Jeśli miejsce do magazynowania wymagane przez pliki systemu Linux przekracza ten maksymalny rozmiar, zostaną wyświetlone błędy informujące, że zabrakło miejsca na dysku. Aby rozwiązać ten błąd, postępuj zgodnie z poniższymi wskazówkami dotyczącymi Jak rozszerzyć rozmiar wirtualnego dysku twardego WSL 2.
Jak sprawdzić dostępne miejsce na dysku
Sprawdź ilość miejsca na dysku dostępnego w dysku VHD dla dystrybucji systemu Linux zainstalowanej z programem WSL 2 przy użyciu polecenia Df systemu Linux.
Aby sprawdzić dostępne miejsce na dysku, otwórz wiersz polecenia programu PowerShell i wprowadź to polecenie (zastępując <distribution-name> rzeczywistą nazwą dystrybucji):
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
Jeśli to polecenie nie działa, przeprowadź uaktualnienie do wersji Store programu WSL przy użyciu polecenia wsl --update lub spróbuj wykonać wsl df -h /.
Dane wyjściowe będą obejmować:
- system plików: identyfikator systemu plików VHD
- rozmiar: całkowity rozmiar dysku (maksymalna ilość miejsca przydzielonego do dysku VHD)
- Używane: ilość miejsca aktualnie używanego w wirtualnym dysku VHD
- Dostępność: ilość wolnego miejsca na dysku VHD (przydzielony rozmiar minus wykorzystana ilość)
- Użyj%: procent pozostałego miejsca na dysku (używany/ przydzielony rozmiar)
- zamontowane na: ścieżka katalogu, w której jest zamontowany dysk
Jeśli widzisz, że zbliżasz się do dostępnej ilości miejsca na dysku przydzielonego do dysku VHD lub wystąpił błąd z powodu braku miejsca na dysku, zobacz następną sekcję, aby uzyskać instrukcje dotyczące rozszerzania maksymalnej ilości miejsca na dysku przydzielonego do dysku VHD skojarzonego z dystrybucją systemu Linux. Ilość miejsca na dysku przydzielonego do dysku VHD przez WSL zawsze będzie pokazywać domyślną maksymalną ilość (1 TB w najnowszej wersji WSL), nawet jeśli ilość miejsca na dysku na rzeczywistym urządzeniu z systemem Windows jest mniejsza. WSL instaluje dysk VHD, który będzie rozszerzać rozmiar podczas jego używania, więc dystrybucja systemu Linux widzi, że może rosnąć do przydzielonego maksymalnego rozmiaru 1 TB.
Jak rozszerzyć rozmiar wirtualnego dysku twardego WSL 2
Aby rozszerzyć rozmiar dysku VHD dla dystrybucji systemu Linux poza domyślną maksymalną 1 TB przydzielonej ilości miejsca na dysku, możesz użyć polecenia wsl --manage lub wykonać poniższe kroki ręczne. (Maksymalna wartość domyślna wcześniejszych wersji WSL może być ustawiona na 512 GB lub 256 GB).
Rozszerzanie rozmiaru dysku VHD przy użyciu wsl --manage
Polecenie wsl --manage jest dostępne tylko dla wersji WSL 2.5 i nowszych.
Aby zmienić rozmiar przydzielonego miejsca na dysku wirtualnym:
Zakończ wszystkie instancje WSL przy użyciu polecenia
wsl.exe --shutdownUruchom
wsl --manage <distribution name> --resize <memory string>. Obsługiwane ciągi pamięci mają postać<Memory Value>B/M/MB/G/GB/T/TB. Wartości dziesiętne są obecnie nieobsługiwane (np.2.5TB).
Dane wyjściowe powinny wyglądać podobnie do następujących:
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.
Dysk wirtualny (ext4.vhdx) dla tej dystrybucji systemu Linux został pomyślnie rozszerzony do nowego rozmiaru.
Rozszerzanie ręczne
Aby rozszerzyć rozmiar dysku VHD dla dystrybucji systemu Linux, wykonaj ręczne kroki:
Zakończ wszystkie wystąpienia programu WSL przy użyciu polecenia:
wsl.exe --shutdownSkopiuj ścieżkę katalogu do pliku ext4.vhdx skojarzonego z dystrybucją systemu Linux zainstalowaną na maszynie. Aby uzyskać pomoc, zobacz Jak zlokalizować plik vhdx i ścieżkę dysku dla dystrybucji systemu Linux.
Otwórz wiersz polecenia systemu Windows z uprawnieniami administratora, a następnie otwórz interpreter poleceń diskpart, wprowadzając następujące polecenie:
diskpartTeraz zobaczysz monit
DISKPART>. Wprowadź następujące polecenie, zastępując<pathToVHD>ścieżką katalogu do plikuext4.vhdxskojarzonego z dystrybucją systemu Linux (skopiowaną w kroku 2).Select vdisk file="<pathToVHD>"Wyświetl szczegóły związane z tym dyskiem wirtualnym, w tym Rozmiar wirtualny, który oznacza obecny maksymalny rozmiar przydzielony dla dysku VHD.
detail vdiskNależy przekonwertować Rozmiar wirtualny na megabajty. Na przykład jeśli Rozmiar wirtualny: 512 GB, jest to równe 512000 MB. Wprowadzona nowa wartość musi być większa niż ta oryginalna wartość. Aby podwoić rozmiar wirtualny 512 GB do 1024 GB, należy wprowadzić wartość w MB jako: 1024000. Należy zachować ostrożność, aby nie wprowadzać wartości wyższej niż w rzeczywistości, ponieważ proces zmniejszenia rozmiaru dysku wirtualnego jest znacznie bardziej skomplikowany.
Wprowadź wartość nowego maksymalnego rozmiaru, który chcesz przydzielić do tej dystrybucji systemu Linux, używając wiersza polecenia systemu Windows
DISKPART>:expand vdisk maximum=<sizeInMegaBytes>Zamknij monit
DISKPART>:exitUruchom tę dystrybucję systemu Linux. (Upewnij się, że jest uruchomiona w programie WSL 2. Możesz to potwierdzić za pomocą polecenia :
wsl.exe -l -v. Program WSL 1 nie jest obsługiwany).Upewnij się, że program WSL może rozszerzyć rozmiar systemu plików dla tej dystrybucji, uruchamiając te polecenia z poziomu wiersza polecenia dystrybucji WSL. Ten komunikat może zostać wyświetlony w odpowiedzi na pierwsze polecenie montowania: "/dev: żaden już zamontowany na /dev". Ten komunikat można bezpiecznie zignorować.
sudo mount -t devtmpfs none /dev mount | grep ext4Skopiuj nazwę tego wpisu, który będzie wyglądać następująco:
/dev/sdX(z znakiem X reprezentującym dowolny inny znak). W poniższym przykładzie wartość X jest b:sudo resize2fs /dev/sdb <sizeInMegabytes>MKorzystając z przykładu z powyższego, zmieniliśmy rozmiar wirtualnego dysku twardego na 2048000, więc polecenie to:
sudo resize2fs /dev/sdb 2048000M.Notatka
Może być konieczne zainstalowanie resize2fs. Jeśli tak, możesz użyć tego polecenia, aby go zainstalować:
sudo apt install resize2fs.Dane wyjściowe będą wyglądać podobnie do następujących:
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.
Dysk wirtualny (ext4.vhdx) dla tej dystrybucji systemu Linux został pomyślnie rozszerzony do nowego rozmiaru.
Ważny
Zalecamy, aby nie modyfikować, przenosić ani uzyskiwać dostępu do plików pokrewnych WSL znajdujących się w folderze AppData przy użyciu narzędzi lub edytorów systemu Windows. Może to spowodować uszkodzenie dystrybucji systemu Linux. Jeśli chcesz uzyskać dostęp do plików systemu Linux z systemu Windows, jest to możliwe za pośrednictwem ścieżki \\wsl$\<distribution-name>\. Otwórz dystrybucję WSL i wprowadź explorer.exe ., aby wyświetlić ten folder. Aby dowiedzieć się więcej, zobacz wpis w blogu: Uzyskiwanie dostępu do plików systemu Linux z systemu Windows.
Jak naprawić błąd montowania wirtualnego dysku twardego
Jeśli wystąpi błąd związany z "montowaniem dysku dystrybucji", może to być spowodowane nagłym zamknięciem systemu lub awarią zasilania i może skutkować przełączeniem wirtualnego dysku twardego dystrybucji systemu Linux na tryb tylko do odczytu, aby uniknąć utraty danych. Dystrybucję można naprawić i przywrócić przy użyciu polecenia e2fsck Linux, wykonując poniższe kroki.
Użyj polecenia lsblk, aby zidentyfikować nazwę urządzenia blokowego
Gdy program WSL 2 instaluje dystrybucję systemu Linux, instaluje dystrybucję jako wirtualny dysk twardy (VHD) przy użyciu własnego systemu plików. System Linux odnosi się do tych dysków twardych jako "zablokowanych urządzeń" i można wyświetlić informacje o nich za pomocą polecenia lsblk.
Aby znaleźć nazwy urządzeń blokowych aktualnie używanych przez program WSL 2, otwórz dystrybucję i wprowadź polecenie: lsblk. (Lub otwórz program PowerShell i wprowadź polecenie: wsl.exe lsblk.) Dane wyjściowe będą wyglądać mniej więcej tak:
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
Informacje o urządzeniu blokowym obejmują:
-
NAME: nazwa przypisana do urządzenia będzie sd[a-z], odwołując się do dysku SCSI z oznaczeniem litery dla każdego używanego dysku.
sdajest zawsze dystrybucją systemu. - MAJ:MIN: reprezentuje liczby używane przez jądro systemu Linux do wewnętrznego identyfikowania urządzeń z pierwszą liczbą reprezentującą typ urządzenia (8 jest używany dla małych dysków interfejsu systemu komputerowego/dysków SCSI).
- RM: Daj nam znać, czy urządzenie jest wymienne (1) czy nie (0).
- ROZMIAR: całkowity rozmiar woluminu.
- RO: Daj nam znać, czy urządzenie jest tylko do odczytu (1), czy nie (0).
- TYPE: odnosi się do typu urządzenia (w tym przypadku dysku).
- PUNKTY MONTAŻU: Odwołuje się do bieżącego katalogu w systemie plików, w którym znajduje się urządzenie blokowe (SWAP dotyczy wstępnie skonfigurowanej nieaktywnej pamięci, więc nie ma punktu montażu).
Błąd przełączenia na tryb tylko do odczytu
Jeśli podczas otwierania dystrybucji systemu Linux wystąpi błąd "montowania", dystrybucja może być ustawiona jako tylko do odczytu jako rozwiązanie zapasowe. W takim przypadku dystrybucja może wyświetlać następujący błąd podczas uruchamiania:
An error occurred mounting the distribution disk, it was mounted read-only as a fallback.
Gdy dystrybucja jest uruchamiana jako tylko do odczytu, wszelkie próby zapisu w systemie plików kończą się niepowodzeniem z powodu błędu w następujący sposób:
$ touch file
touch: cannot touch 'file': Read-only file system
Aby naprawić błąd instalacji dysku w programie WSL i przywrócić go z powrotem do stanu do użytku/zapisu, możesz użyć polecenia wsl.exe --mount, aby ponownie zainstalować dysk, wykonując następujące kroki:
Zamknij wszystkie dystrybucje WSL, otwierając program PowerShell jako administrator (w wierszu polecenia z podwyższonym poziomem uprawnień) i wprowadzając polecenie:
wsl.exe --shutdownWprowadź polecenie mount i zastąp
<path-to-ext4.vhdx>ścieżką do pliku .vhdx dystrybucji. Aby uzyskać pomoc dotyczącą lokalizowania tego pliku, zobacz Jak zlokalizować plik VHD i ścieżkę dysku dla swojej dystrybucji Linuksa.wsl.exe --mount <path-to-ext4.vhdx> --vhd --bareUżyj polecenia
wsl.exe lsblkz programu PowerShell, aby zidentyfikować nazwę urządzenia blokowego dla dystrybucji (sd[a-z]), a następnie wprowadź następujące polecenie, aby naprawić dysk (zastępując<device>poprawną nazwą urządzenia blokowego, na przykład "sdc"). Poleceniee2fscksprawdza systemy plików ext4 (typ używany przez dystrybucje zainstalowane z usługą WSL) pod kątem błędów i odpowiednio je naprawia.wsl.exe sudo e2fsck -f /dev/<device>Notatka
Jeśli masz zainstalowaną tylko jedną dystrybucję systemu Linux, może wystąpić błąd "ext file in use" (Plik ext in use) i będzie musiał zainstalować dodatkową dystrybucję, aby uruchomić
wsl.exe lsblk. Po zakończeniu naprawy można odinstalować dystrybucję. Ponadto może być konieczne zamknięcie programu Docker Desktop w systemie Windows, aby uniknąć błęduWsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATIONpodczas uruchamiania poleceniawsl.exe sudo e2fsck -f /dev/sdc.Po zakończeniu naprawy odinstaluj dysk w programie PowerShell, wprowadzając następujące polecenie:
wsl.exe --unmount
Ostrzeżenie
Możesz użyć polecenia: sudo mount -o remount,rw /, aby zwrócić dystrybucję tylko do odczytu do stanu użytecznego/zapisywalnego, ale wszystkie zmiany zostaną utracone po ponownym uruchomieniu dystrybucji. Zalecamy użycie opisanych powyżej kroków w celu zainstalowania i naprawy dysku.
Jak zlokalizować plik vhdx i ścieżkę dysku dla dystrybucji systemu Linux
Aby zlokalizować plik .vhdx i ścieżkę katalogu dla dystrybucji systemu Linux, otwórz PowerShell i użyj następującego skryptu, zastępując <distribution-name> rzeczywistą nazwą dystrybucji:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
Wynik wyświetli ścieżkę podobną do %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx. Na przykład:
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Jest to ścieżka do pliku ext4.vhdx skojarzonego z wymienioną dystrybucją systemu Linux.
Windows Subsystem for Linux