Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[sled agent] Creating zones for Propolis Instances leaks datasets #1119

Open
smklein opened this issue May 26, 2022 · 2 comments
Open

[sled agent] Creating zones for Propolis Instances leaks datasets #1119

smklein opened this issue May 26, 2022 · 2 comments
Assignees
Labels
Sled Agent Related to the Per-Sled Configuration and Management
Milestone

Comments

@smklein
Copy link
Collaborator

smklein commented May 26, 2022

Our model of "zone management" for Propolis servers expects that:

  • When an instance is running, we'll create + boot a zone for it
  • When an instance is stopped, all resources allocated for that zone should be freed

As a result of "testing instance creation + stop + delete" in a loop, however, I'm seeing zone datasets be created for each of these services without being destroyed:

# Note: This is after create + stop + delete in a loop. I would only expect at most one dataset to exist at a time!
$ zfs list
...
rpool/zone/oxz_propolis-server_50cbb8a9-a202-448a-84c2-be37866ccbde                               66K   746G    66K  /zone/oxz_propolis-server_50cbb8a9-a202-448a-84c2-be37866ccbde
rpool/zone/oxz_propolis-server_551e3e8e-9f95-4cb0-b782-c705009fceda                              463M   746G   463M  /zone/oxz_propolis-server_551e3e8e-9f95-4cb0-b782-c705009fceda
rpool/zone/oxz_propolis-server_555ca2fb-275d-462d-93b2-df4d41426e42                               71K   746G    71K  /zone/oxz_propolis-server_555ca2fb-275d-462d-93b2-df4d41426e42
rpool/zone/oxz_propolis-server_8e37d3be-1389-4b1d-be71-d028ceedde50                               79K   746G    79K  /zone/oxz_propolis-server_8e37d3be-1389-4b1d-be71-d028ceedde50
rpool/zone/oxz_propolis-server_9eff450f-38c5-46a0-9e49-2b9f489f7cfc                               86K   746G    86K  /zone/oxz_propolis-server_9eff450f-38c5-46a0-9e49-2b9f489f7cfc
rpool/zone/oxz_propolis-server_ea99d0d5-3d45-46b0-8e9b-fe0ff1877ffd                               63K   746G    63K  /zone/oxz_propolis-server_ea99d0d5-3d45-46b0-8e9b-fe0ff1877ffd
rpool/zone/oxz_propolis-server_eafdbfb5-c162-487e-8faa-3e89106fe648                               66K   746G    66K  /zone/oxz_propolis-server_eafdbfb5-c162-487e-8faa-3e89106fe648
@smklein smklein added the Sled Agent Related to the Per-Sled Configuration and Management label May 26, 2022
@smklein
Copy link
Collaborator Author

smklein commented May 26, 2022

If you're feeling brave, the following command deletes all of these:

zfs list -p | cut -d' ' -f1 | grep propolis-server | xargs -I {} pfexec zfs destroy {}

However, ideally, this should be the responsibility of the Sled Agent itself.

@leftwo
Copy link
Contributor

leftwo commented Jun 29, 2022

Crucible appears to suffer the same fate

smklein added a commit that referenced this issue Oct 30, 2022
Major changes:
- Uninstallation now collects all Zpool and Zone based datasets,
prompts the user, and destroys them during the uninstall process.
- Adds a "-f / --force" option to "omicron-package", allowing
callers to skip the new confirmation prompt.
- Adds a "deactivate" command to "omicron-package". This allows
callers to remove Zones and disable services, but does not delete
durable configurations and storage. A caller should be able to
call "deactivate" -> "activate" -> "deactivate" repeatedly without
losing durable state.

Minor changes:
- Updates documentation for omicron-package
- Improves handling of addresses deleted from
  `cleanup_networking_resources`, especially in cases of duplicates
- Rename "filesystem" to "dataset" in functions where it's more
  appropriate to be generic in the context of ZFS.

Fixes #1884

Part of #1119
Part of #1313
smklein added a commit that referenced this issue Nov 1, 2022
* [package] Destroy datasets as a part of uninstallation

Major changes:
- Uninstallation now collects all Zpool and Zone based datasets,
prompts the user, and destroys them during the uninstall process.
- Adds a "-f / --force" option to "omicron-package", allowing
callers to skip the new confirmation prompt.
- Adds a "deactivate" command to "omicron-package". This allows
callers to remove Zones and disable services, but does not delete
durable configurations and storage. A caller should be able to
call "deactivate" -> "activate" -> "deactivate" repeatedly without
losing durable state.

Minor changes:
- Updates documentation for omicron-package
- Improves handling of addresses deleted from
  `cleanup_networking_resources`, especially in cases of duplicates
- Rename "filesystem" to "dataset" in functions where it's more
  appropriate to be generic in the context of ZFS.

Fixes #1884

Part of #1119
Part of #1313

* Fix typo
@smklein smklein self-assigned this Nov 16, 2022
@morlandi7 morlandi7 added this to the MVP milestone Jan 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Sled Agent Related to the Per-Sled Configuration and Management
Projects
None yet
Development

No branches or pull requests

3 participants