-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #10973 from rhatdan/quota
Support size options on builtin volumes
- Loading branch information
Showing
7 changed files
with
114 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,7 +17,7 @@ driver options can be set using the **--opt** flag. | |
|
||
#### **--driver**=*driver* | ||
|
||
Specify the volume driver name (default **local**). Setting this to a value other than **local** Podman will attempt to create the volume using a volume plugin with the given name. Such plugins must be defined in the **volume_plugins** section of the **containers.conf**(5) configuration file. | ||
Specify the volume driver name (default **local**). Setting this to a value other than **local** Podman attempts to create the volume using a volume plugin with the given name. Such plugins must be defined in the **volume_plugins** section of the **containers.conf**(5) configuration file. | ||
|
||
#### **--help** | ||
|
||
|
@@ -34,10 +34,14 @@ For the default driver, **local**, this allows a volume to be configured to moun | |
For the `local` driver the following options are supported: `type`, `device`, and `o`. | ||
The `type` option sets the type of the filesystem to be mounted, and is equivalent to the `-t` flag to **mount(8)**. | ||
The `device` option sets the device to be mounted, and is equivalent to the `device` argument to **mount(8)**. | ||
The `o` option sets options for the mount, and is equivalent to the `-o` flag to **mount(8)** with two exceptions. | ||
The `o` option supports `uid` and `gid` options to set the UID and GID of the created volume that are not normally supported by **mount(8)**. | ||
Using volume options with the **local** driver requires root privileges. | ||
When not using the **local** driver, the given options will be passed directly to the volume plugin. In this case, supported options will be dictated by the plugin in question, not Podman. | ||
|
||
The `o` option sets options for the mount, and is equivalent to the `-o` flag to **mount(8)** with these exceptions: | ||
|
||
- The `o` option supports `uid` and `gid` options to set the UID and GID of the created volume that are not normally supported by **mount(8)**. | ||
- The `o` option supports the `size` option to set the maximum size of the created volume and the `inodes` option to set the maximum number of inodes for the volume. Currently these flags are only supported on "xfs" file system mounted with the `prjquota` flag described in the **xfs_quota(8)** man page. | ||
- Using volume options other then the UID/GID options with the **local** driver requires root privileges. | ||
|
||
When not using the **local** driver, the given options are passed directly to the volume plugin. In this case, supported options are dictated by the plugin in question, not Podman. | ||
|
||
## EXAMPLES | ||
|
||
|
@@ -53,8 +57,36 @@ $ podman volume create --label foo=bar myvol | |
# podman volume create --opt device=tmpfs --opt type=tmpfs --opt o=uid=1000,gid=1000 testvol | ||
``` | ||
|
||
## QUOTAS | ||
|
||
podman volume create uses `XFS project quota controls` for controlling the size and the number of inodes of builtin volumes. The directory used to store the volumes must be an`XFS` file system and be mounted with the `pquota` option. | ||
|
||
Example /etc/fstab entry: | ||
``` | ||
/dev/podman/podman-var /var xfs defaults,x-systemd.device-timeout=0,pquota 1 2 | ||
``` | ||
|
||
Podman generates project ids for each builtin volume, but these project ids need to be unique for the XFS file system. These project ids by default are generated randomly, with a potential for overlap with other quotas on the same file | ||
system. | ||
|
||
The xfs_quota tool can be used to assign a project id to the storage driver directory, e.g.: | ||
|
||
``` | ||
echo 100000:/var/lib/containers/storage/overlay >> /etc/projects | ||
echo 200000:/var/lib/containers/storage/volumes >> /etc/projects | ||
echo storage:100000 >> /etc/projid | ||
echo volumes:200000 >> /etc/projid | ||
xfs_quota -x -c 'project -s storage volumes' /<xfs mount point> | ||
``` | ||
|
||
In the example above we are configuring the overlay storage driver for newly | ||
created containers as well as volumes to use project ids with a **start offset**. | ||
All containers will be assigned larger project ids (e.g. >= 100000). | ||
All volume assigned project ids larger project ids starting with 200000. | ||
This prevents xfs_quota management conflicts with containers/storage. | ||
|
||
## SEE ALSO | ||
**podman-volume**(1), **mount**(8), **containers.conf**(5) | ||
**podman-volume**(1), **mount**(8), **containers.conf**(5), **xfs_quota**(8), `xfs_quota(8)`, `projects(5)`, `projid(5)` | ||
|
||
## HISTORY | ||
January 2020, updated with information on volume plugins by Matthew Heon <[email protected]> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters