summary refs log tree commit diff
path: root/nixos/doc/manual/administration/store-corruption.section.md
diff options
context:
space:
mode:
authorBobby Rong <rjl931189261@126.com>2021-07-02 10:48:31 +0800
committerBobby Rong <rjl931189261@126.com>2021-07-02 10:48:31 +0800
commit4df0b9903d391b7531e06ca859c46f261335bdc1 (patch)
tree21d65cbb4ee6739f2de19473e545d232e5364882 /nixos/doc/manual/administration/store-corruption.section.md
parent99493b61ea5dc657a3febc6291bc83802005ad89 (diff)
downloadnixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.tar
nixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.tar.gz
nixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.tar.bz2
nixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.tar.lz
nixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.tar.xz
nixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.tar.zst
nixpkgs-4df0b9903d391b7531e06ca859c46f261335bdc1.zip
nixos: nixos/doc/manual/administration/store-corruption.xml to CommonMark
Diffstat (limited to 'nixos/doc/manual/administration/store-corruption.section.md')
-rw-r--r--nixos/doc/manual/administration/store-corruption.section.md28
1 files changed, 28 insertions, 0 deletions
diff --git a/nixos/doc/manual/administration/store-corruption.section.md b/nixos/doc/manual/administration/store-corruption.section.md
new file mode 100644
index 00000000000..bd8a5772b37
--- /dev/null
+++ b/nixos/doc/manual/administration/store-corruption.section.md
@@ -0,0 +1,28 @@
+# Nix Store Corruption {#sec-nix-store-corruption}
+
+After a system crash, it's possible for files in the Nix store to become
+corrupted. (For instance, the Ext4 file system has the tendency to
+replace un-synced files with zero bytes.) NixOS tries hard to prevent
+this from happening: it performs a `sync` before switching to a new
+configuration, and Nix's database is fully transactional. If corruption
+still occurs, you may be able to fix it automatically.
+
+If the corruption is in a path in the closure of the NixOS system
+configuration, you can fix it by doing
+
+```ShellSession
+# nixos-rebuild switch --repair
+```
+
+This will cause Nix to check every path in the closure, and if its
+cryptographic hash differs from the hash recorded in Nix's database, the
+path is rebuilt or redownloaded.
+
+You can also scan the entire Nix store for corrupt paths:
+
+```ShellSession
+# nix-store --verify --check-contents --repair
+```
+
+Any corrupt paths will be redownloaded if they're available in a binary
+cache; otherwise, they cannot be repaired.