WSL icon indicating copy to clipboard operation
WSL copied to clipboard

WSL 2 Loses Files and Images Without Warning

Open TW4177 opened this issue 2 years ago • 22 comments

This ticket re-ups issue #4974 that was closed with no resolution to the acute, unrecoverable data loss episodes reported by multiple users including myself.

The dissembling by @bpulliam in the original ticket is unacceptable. 4974 is a significant locus of user feedback on these problems, and should remain open and active. Microsoft's inaction ruins the risk proposition of using an otherwise powerful technology. At least some of the failure cases could be fixed with simple, compatible, user-visible logic changes.

TW4177 avatar Mar 22 '23 17:03 TW4177

Did user run any command which led to that data loss? Or is the data automatically deleted by operating system?

Biswa96 avatar Mar 22 '23 17:03 Biswa96

Did user run any command which led to that data loss? Or is the data automatically deleted by operating system?

Please read the predecessor ticket for history. It has multiple reports of data summarily deleted as a side effect of apparently unrelated activity. The wsl --unregister command is extremely dangerous as it will delete whole WSL 2 images unrecoverably in one command with no option to confirm, or to archive the data.

TW4177 avatar Mar 22 '23 18:03 TW4177

The request would be similar as this https://github.com/microsoft/WSL/issues/8992

Users who run --unregister are expected to know what --unregister does. Changing the behavior to prompt for confirmation would break a lot of automation so it wouldn't be an option anyway.

Biswa96 avatar Mar 22 '23 19:03 Biswa96

I previously described options for --unregister (such as archiving, not deleting by default, with appropriate messaging; separate option to delete archived images) that would both preserve data and compatible behavior in current automation.

The point remains that data under WSL 2 sometimes disappears without notice or explicit action. I mentioned wsl --unregister running as a side effect in my scenario as one possible explanation. Its effects match the de-registration of the VM and removal of the image I observed.

TW4177 avatar Mar 22 '23 20:03 TW4177

such as archiving, not deleting by default, with appropriate messaging; separate option to delete archived images

That's a good idea. Though there are options to backup the ext4.vhdx file and re-register it in WSL2. Adding any archiving feature may be same as automatic backup by OS. Let see what WSL devs think.

Biswa96 avatar Mar 22 '23 20:03 Biswa96

Backup is a best practice. In an enterprise, it's out of date to place that responsibility on the end user, yet several do. Home-rolled backup schemes tend to have flaws. Also, the large size of image files (think 80GB for a professional workload), makes manual backup tedious and easy to forget. Cloud storage for VMs run locally isn't there yet.

This is a case where a little added safety to a core command can prevent a lot of damage. Microsoft usually goes out of its way in its UX to ensure positive user intent for operations that risk data. wsl --unregister should follow the same practice.

TW4177 avatar Mar 22 '23 20:03 TW4177

I share your frustration. We've identified an issue in the app model that somehow decides for some reason decides to "reset" application state on OS upgrade. We're engaged with the owning team to try to identify the reason for this.

benhillis avatar Mar 24 '23 03:03 benhillis

@benhillis, it's good to read acknowledgement of a need for action on these issues. Thank you for your post. If you can suggest any use cases we can try to diagnose problems (on expendable data!), please do!

Would we look for any fixes first in a Windows Insider build?

TW4177 avatar Mar 24 '23 17:03 TW4177

@TW4177 - the team that owns the app migration code really needs a repro. If it's possible to come up with reproducible steps, that would be awesome although I imagine it will be difficult since it has to do with a build-to-build upgrade.

benhillis avatar Mar 24 '23 19:03 benhillis

@benhillis I would direct them to the discussions in #4974; there are several somewhat well-described scenarios. I demo'd the behavior of wsl --unregister in that ticket; it and any added safety hardening are repro-able at will. My VM loss occurred after switching the physical machine and my login account to a new AD domain.

TW4177 avatar Mar 24 '23 22:03 TW4177

Both my colleague and I had our WSL2 volume deleted entirely immediately upon switching from logging in to Windows/AD using the classic DOMAIN\username format to using UPNs, i.e. [email protected]. The AD user account was the same for both username formats.

This change to the username format was something that had been requested by our central IT.

ashleyghooper avatar Apr 03 '23 22:04 ashleyghooper

I beg the developers to please let the users know that wsl --unregister <distro-name> deletes the entire distro. Currently no warnings are displayed.

Last week I was readding an issue on how fix a GUI issue #8525 at 1am, and honestly executing wsl commands without reading the context deeply as it was late. I know that was my mistake, but I never imagined that one of those would delete my entire distribution with all my work without even a warning. ... I had my Ph.D. dissertation there 🥲.

jgarzagu avatar Apr 07 '23 07:04 jgarzagu

I lost all my user account of Ubuntu 20. Only user is wslg. Happened 2nd time, after a restart. This is nuts. It's a VPN-controlled machine, so I'm not sure what updates were in the background but I suspect it's unrelated to that.

Edit: after a restart, it mysteriously reappeared. ¯_(ツ)_/¯

sarimarton avatar Apr 12 '23 02:04 sarimarton

I just encountered this issue today, here is everything I know regarding my case:

  • I use Windows 10 Home Edition, version 22H2, OS build 19045.2965, Windows Feature Experience Pack 1000.19041.1000.0
  • I have two local Windows sessions, a Private one and a Work one
  • Both the Private and Work session had a Ubuntu-18.04 running on WSL 1
Private           | Work
------------------------------------
Ubuntu-18.04/WSL1 | Ubuntu-18.04/WSL1
  • Because I needed to use Docker for a project I tried multiple times to upgrade the Work session's Ubuntu-18.04 to WSL 2, each time to no avail (the upgrade process froze for multiple hours) but also without any side effect on my data. I never tried to do anything with the Personal session's Ubuntu-18.04 until recently
  • Last month (April, 25th) I gave up with upgrading my Work session's Ubuntu-18.04 and installed a Ubuntu-22.04 running on WSL 2 in parallel. There was no issue setting it up and everything worked as intended
Private           | Work
------------------------------------
Ubuntu-18.04/WSL1 | Ubuntu-18.04/WSL1
                  | Ubuntu-22.04/WSL2
  • Last week (May, 13th) I needed a newer version of Ubuntu in my Private session so I tried the upgrade process and this time it worked, getting my private Ubuntu-18.04 running on WSL 1 to a Ubuntu-22.04 running on WSL 2. As the files for those are stored in AppData I was not worried about accidentally ruining anything on my Work session
Private           | Work
------------------------------------
Ubuntu-22.04/WSL2 | Ubuntu-18.04/WSL1
                  | Ubuntu-22.04/WSL2
  • This morning (May, 15th), I boot up my Work session's Ubuntu-22.04 only to be greeted with the new account setup prompts, as if everything I did on it since last month never happened
Private           | Work
------------------------------------
Ubuntu-22.04/WSL2 | Ubuntu-18.04/WSL1 <= this one is unaffected
                  | Ubuntu-22.04/WSL2 <= this one got wiped out/reset

image

  • When looking at the WSL files for this installation they are all marked as being created at either the time I opened my Work session or the time I opened Ubuntu-22.04 for the first time on that day image

Fortunately I did not lose any important data but this is still setting me back a few weeks in terms of setup and local dev environment; not to mention the trust I lost in WSL as a tool.

Delca avatar May 15 '23 03:05 Delca

Does this issue happen with Ubuntu distributions only?

I tried the upgrade process and this time it worked

How did you update - from Windows Store or with apt upgrade command?

Biswa96 avatar May 15 '23 03:05 Biswa96

Does this issue happen with Ubuntu distributions only?

I only ever used Ubuntu on WSL, and seem to remember a lot of people who had this issue did too. Whether there is a link or Ubuntu is just over-represented for WSL users in general is something I do not know.

How did you update - from Windows Store or with apt upgrade command?

I did not use the Windows Store at any point. To upgrade my Private system, I did an apt update, apt upgrade then a do-release-upgrade cycle twice, to go from Ubuntu 18 to 20 then 20 to 22.

Delca avatar May 16 '23 02:05 Delca

Users are still not warned that wsl --unregister will destroy everything in the distro. This is very dangerous and high risk.

jacobus avatar Aug 30 '23 19:08 jacobus

Posting here to register my complaint. I've posted my story in #4974 too. At least half a dozen times now, WSL2 spontaneously resets to factory default settings and content. This is absolutely not acceptable. It seems to happen mostly (if not exclusively) when I switch from WFH to working in the office, and sign into the domain there.

I've never used wsl --unregister and use apt exclusively for updating stuff.

mrbellek avatar Oct 03 '23 09:10 mrbellek

Adding to the choir, I guess. At this point I can't retrace all my steps perfectly, but it started with trying to update through wsl --update, which did not work ("A specified logon session does not exist. It may already have been terminated.") After managing to get a kernel update in place, it seems like the entire ext4.vhdx got wiped and reset ("An error occurred mounting one of your file systems.") Could be user error on my part, for sure, but nothing through this process gave me any indication that this would be dangerous.

After testing some proposed solutions of remounting or resetting WSL2, I've resigned to set up my dev env from scratch again.

henriksonnergard avatar Feb 02 '24 10:02 henriksonnergard

I'm having a serious problem with missing project folders. Here's a record of hopefully fixing it though without opening a new issue.

A project code folder under ~/Projects/ was missing after I updated Windows and tried to edit the code with VScode again.

Your Windows build number: Microsoft Windows [Version 10.0.19045.5131] Update Record: November 12, 2024—KB5046613 (OS Builds 19044.5131 and 19045.5131) and November 12, 2024-KB5046542 Cumulative Update for .NET Framework 3.5, 4.8, and 4.8.1 for Windows 10 Version 22H2

What you're doing and what's happening: I used the distro ubuntu 18.04 in WSL for a week straight and cloned a project from github, using the VScode remote plugin to connect to WSL. on 11/14/24 I closed all files, VScode, and used sudo shutdown now to shut down ubuntu. and then did a windows system update. Restarted WSL and tried to open VScode in the project folder,I found that I could not find the cloned project under ~/Projects/.

What's wrong / what should be happening instead: It doesn't clear whether some unwarned action deleted the project folder, or whether ubuntu's virtual hard disk didn't save it in time so that it's still the version before the project was cloned.

Strace of the failing command, if applicable:

For WSL launch issues, please [collect detailed logs]:

Unlike most of the issues with #4974 , the Ubuntu distribution doesn't reinstall automatically. But similar to #4974 , I lost an entire project folder that I had recently cloned from Github.

liloongjia avatar Nov 15 '24 10:11 liloongjia

thanks for posting this issue, I fully agree with the request! I ran into some (partially recoverable) data loss after trying to solve https://github.com/microsoft/WSL/issues/12679 by mistakenly calling the unregister command.

I would have expected that this was the MS way:

This is a case where a little added safety to a core command can prevent a lot of damage. Microsoft usually goes out of its way in its UX to ensure positive user intent for operations that risk data. wsl --unregister should follow the same practice. https://github.com/microsoft/WSL/issues/9830#issuecomment-1480240856

Where is the "Are you sure", "OK" or "Cancel" UX for this command? Can they not add another flag to force it for automations?

I have been using WSL without problems for some years but I may be better off by migrating my workstation altogether.

MyPyDavid avatar Apr 14 '25 10:04 MyPyDavid

Same, I've lost all of my workspace projects folders and also all docker images which has been installed on wsl 2 are gone.

Even that .ssh is gone but oh-my-zsh is there.

I think after update it got recovered from last snapshot of ext4 which has been done by windows itself. (i didn't call any snapshot)

I never had any issue like as this with my Win 10, but Win 11 bro it's definitely something else.

adevneverdies avatar May 12 '25 08:05 adevneverdies