btrfs-progs: docs: how to use swapfile from fstab
This was asked on reddit, how to automatically mount a swapfile from fstab. As this is not completely obvious, document it with an example. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c266dd462b
commit
47fdb7f5da
|
@ -657,33 +657,35 @@ SWAPFILE SUPPORT
|
||||||
The swapfile is supported since kernel 5.0. Use `swapon`(8) to activate the
|
The swapfile is supported since kernel 5.0. Use `swapon`(8) to activate the
|
||||||
swapfile. There are some limitations of the implementation in btrfs and linux
|
swapfile. There are some limitations of the implementation in btrfs and linux
|
||||||
swap subsystem:
|
swap subsystem:
|
||||||
|
|
||||||
* filesystem - must be only single device
|
* filesystem - must be only single device
|
||||||
* filesystem - must have only 'single' data profile
|
* filesystem - must have only 'single' data profile
|
||||||
* swapfile - the containing subvolume cannot be snapshotted
|
* swapfile - the containing subvolume cannot be snapshotted
|
||||||
* swapfile - must be preallocated
|
* swapfile - must be preallocated
|
||||||
* swapfile - must be nodatacow (ie. also nodatasum)
|
* swapfile - must be nodatacow (ie. also nodatasum)
|
||||||
* swapfile - must not be compressed
|
* swapfile - must not be compressed
|
||||||
|
|
||||||
The limitations come namely from the COW-based design and mapping layer of
|
The limitations come namely from the COW-based design and mapping layer of
|
||||||
blocks that allows the advanced features like relocation and multi-device
|
blocks that allows the advanced features like relocation and multi-device
|
||||||
filesystems. However, the swap subsystem expects simpler mapping and no
|
filesystems. However, the swap subsystem expects simpler mapping and no
|
||||||
background changes of the file blocks once they've been attached to swap.
|
background changes of the file blocks once they've been attached to swap.
|
||||||
|
|
||||||
With active swapfiles, the following whole-filesystem operations will skip
|
With active swapfiles, the following whole-filesystem operations will skip
|
||||||
swapfile extents or may fail:
|
swapfile extents or may fail:
|
||||||
|
|
||||||
* balance - block groups with swapfile extents are skipped and reported, the rest will be processed normally
|
* balance - block groups with swapfile extents are skipped and reported, the rest will be processed normally
|
||||||
* resize grow - unaffected
|
* resize grow - unaffected
|
||||||
* resize shrink - works as long as the extents are outside of the shrunk range
|
* resize shrink - works as long as the extents are outside of the shrunk range
|
||||||
* device add - a new device does not interfere with existing swapfile and this operation will work, though no new swapfile can be activated afterwards
|
* device add - a new device does not interfere with existing swapfile and this operation will work, though no new swapfile can be activated afterwards
|
||||||
* device delete - if the device has been added as above, it can be also deleted
|
* device delete - if the device has been added as above, it can be also deleted
|
||||||
* device replace - ditto
|
* device replace - ditto
|
||||||
|
|
||||||
When there are no active swapfiles and a whole-filesystem exclusive operation
|
When there are no active swapfiles and a whole-filesystem exclusive operation
|
||||||
is running (ie. balance, device delete, shrink), the swapfiles cannot be
|
is running (ie. balance, device delete, shrink), the swapfiles cannot be
|
||||||
temporarily activated. The operation must finish first.
|
temporarily activated. The operation must finish first.
|
||||||
|
|
||||||
|
To create and activate a swapfile run the following commands:
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
# truncate -s 0 swapfile
|
# truncate -s 0 swapfile
|
||||||
# chattr +C swapfile
|
# chattr +C swapfile
|
||||||
|
@ -693,6 +695,28 @@ temporarily activated. The operation must finish first.
|
||||||
# swapon swapfile
|
# swapon swapfile
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
Please note that the UUID returned by the 'mkswap' utility identifies the swap
|
||||||
|
"filesystem" and because it's stored in a file, it's not generally visible and
|
||||||
|
usable as an identifier unlike if it was on a block device.
|
||||||
|
|
||||||
|
The file will appear in '/proc/swaps':
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
# cat /proc/swaps
|
||||||
|
Filename Type Size Used Priority
|
||||||
|
/path/swapfile file 2097152 0 -2
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The swapfile can be created as one-time operation or, once properly created,
|
||||||
|
activated on each boot by the 'swapon -a' command (usually started by the
|
||||||
|
service manager). Add the following entry to '/etc/fstab', assuming the
|
||||||
|
filesystem that provides the '/path' has been already mounted at this point.
|
||||||
|
Additional mount options relevant for the swapfile can be set too (like
|
||||||
|
priority, not the btrfs mount options).
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
/path/swapfile none swap defaults 0 0
|
||||||
|
--------------------
|
||||||
|
|
||||||
CHECKSUM ALGORITHMS
|
CHECKSUM ALGORITHMS
|
||||||
-------------------
|
-------------------
|
||||||
|
|
Loading…
Reference in New Issue