Btrfs: Difference between revisions
| imported>Sirphobos  changed/expanded snapshot section | imported>Sirphobos  added short scrubbing section | ||
| Line 78: | Line 78: | ||
| swapDevices = [ { device = "/swap/swapfile"; } ]; | swapDevices = [ { device = "/swap/swapfile"; } ]; | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| === Scrubbing === | |||
| Btrfs filesystem by default keeps checksums for all files, and this allows to check if contents of the file has not changed due to hardware malfunctions and other external effects. | |||
| Scrubbing - is the process of checking file consistency (for this it may use checksums and/or duplicated copies of data, from raid for example). Scrubbing may be done "online", meaning you don't need to unmount a subvolume to scrub it. | |||
| You can enable automatic scrubbing with | |||
| <syntaxhighlight lang="nix"> | |||
| services.btrfs.autoScrub.enable = true; | |||
| </syntaxhighlight> | |||
| Automatic scrubbing by default is performed once a month, but you can change that with | |||
| <syntaxhighlight lang="nix"> | |||
| services.btrfs.autoScrub.interval = "weekly"; | |||
| </syntaxhighlight> | |||
| <code>interval</code> syntax is defined by [https://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events systemd.timer's Calendar Events] | |||
| By default autoscrub will scrub all detected btrfs mount points, howeven in case of mounted nested subvolumes (like in example above <code>/nix</code> and <code>/home</code> are nested subvolumes under <code>/</code>) you only need to scrub the top-most one. So an example configuration may look like this: | |||
| <syntaxhighlight lang="nix"> | |||
| services.btrfs.autoScrub = { | |||
|   enable = true; | |||
|   interval = "monthly"; | |||
|   fileSystems = [ "/" ]; | |||
| }; | |||
| </syntaxhighlight> | |||
| The result of periodic auto scrub will be save to system journal, however you can also always check the status of the last scrub with | |||
| <syntaxhighlight lang="bash"> | |||
| btrfs scrub status / | |||
| </syntaxhighlight> | |||
| You can also start a scrubbing in background manually | |||
| <syntaxhighlight lang="bash"> | |||
| btrfs scrub start / | |||
| </syntaxhighlight> | |||
| You can check the status of the ongoing scrubbing process with the same <code>status</code> command from above | |||
| == Usage == | == Usage == | ||