This commit is contained in:
Rorik Star Platinum 2025-12-28 19:00:03 +03:00
parent 48f640b55d
commit 440a2fa01f
28 changed files with 1849 additions and 96 deletions

View file

@ -0,0 +1,97 @@
Ок — если хочешь “пересоздать заново и забыть старое”, то план такой: **сначала вынести `home/qemu`**, потом **размонтировать**, сделать **mkfs.btrfs -f с новым label**, заново создать subvolы и обновить NixOS-конфиг под новый label+пути. `mkfs.btrfs -f` реально **уничтожит** старую ФС и всё на ней.[1]
## 1) Скопировать данные в безопасное место
Команда, которую ты написал, ок **если ты реально находишься в `/mnt/gentoo-root`** (как в примере), и `~/temp` существует:
```bash
mkdir -p ~/temp
cp -a /mnt/gentoo-root/home/qemu ~/temp/
```
Рекомендую `cp -a` вместо `cp -r`, чтобы сохранить права/времена/симлинки.
Проверь, что копия на месте: `ls -la ~/temp/qemu`.
## 2) Размонтировать старые точки
Нужно отмонтировать все subvol-ы с этого диска (иначе `mkfs` не даст, или ты рискуешь).
В NixOS:
```bash
sudo umount /mnt/gentoo-root/images
sudo umount /mnt/gentoo-root/distfiles
sudo umount /mnt/gentoo-root/home
sudo umount /mnt/gentoo-root
```
Если где-то “busy”, покажет кто держит: `sudo lsof +f -- /mnt/gentoo-root` (или `fuser -mv`).
## 3) Пересоздать btrfs с новым label
Теперь форматируем раздел (у тебя это `/dev/nvme0n1p2` по `lsblk`), и задаём новый label, например `nvme-950`. Опция `-L/--label` задаёт label файловой системы.[1]
```bash
sudo mkfs.btrfs -f -L nvme-950 /dev/nvme0n1p2
```
## 4) Создать subvolы заново (правильно — на top-level id=5)
Чтобы создать subvol на “корне” btrfs, монтируем top-level (`subvolid=5`), создаём subvol, и размонтируем.[2][3]
```bash
sudo mkdir -p /mnt/tmp_nvme950
sudo mount -o subvolid=5 /dev/disk/by-label/nvme-950 /mnt/tmp_nvme950
sudo btrfs subvolume create /mnt/tmp_nvme950/@
sudo btrfs subvolume create /mnt/tmp_nvme950/@home
sudo btrfs subvolume create /mnt/tmp_nvme950/@distfiles
sudo btrfs subvolume create /mnt/tmp_nvme950/@images
sudo umount /mnt/tmp_nvme950
```
## 5) Обновить NixOS-конфиг
Теперь можно:
- переименовать mountpointы на `/mnt/nvme-950/...`
- и device сменить на `/dev/disk/by-label/nvme-950`
То есть в твоём файле:
- все `"/mnt/gentoo-root"``"/mnt/nvme-950"`
- все `by-label/gentoo_root``by-label/nvme-950`
- в `tmpfiles.rules` тоже заменить пути.
После этого:
```bash
sudo nixos-rebuild switch
```
## 6) Вернуть qemu обратно
Когда новый диск смонтировался:
```bash
sudo mkdir -p /mnt/nvme-950/home
sudo cp -a ~/temp/qemu /mnt/nvme-950/home/
sudo chown -R wave:users /mnt/nvme-950/home/qemu
```
Если это btrfs и ты хочешь отключить CoW для qcow2 (как раньше делал), делай `chattr +C` на каталог **до** создания/копирования новых qcow2. (На уже существующие файлы это не всегда помогает.)
***
Перед тем как форматировать: подтверди, что правильный раздел — это **точно** `/dev/nvme0n1p2` (953.9G диск → 952.9G partition), а не второй NVMe на 1.8T. Самый надёжный чек: `ls -l /dev/disk/by-id/ | rg nvme0n1p2` и/или `blkid /dev/nvme0n1p2`.
[1](https://man7.org/linux/man-pages/man8/mkfs.btrfs.8.html)
[2](https://discussion.fedoraproject.org/t/btrfs-subvol-created-but-does-not-need-mounting/127943/4)
[3](https://forum.endeavouros.com/t/want-to-create-btrfs-top-level-5-subvolume-in-an-already-installed-system/43712)
[4](https://www.reddit.com/r/linuxquestions/comments/oj64ti/how_to_change_filesystem_label_using_commandline/)
[5](https://www.cheat-sheets.org/project/tldr/command/mkfs.btrfs/os/linux/)
[6](https://btrfs.readthedocs.io/en/latest/Administration.html)
[7](https://gitlab.denx.de/denx/eldk/-/blob/4ebd9bbbeb0dd52a5f346266129eeae9b3c5941a/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0011-Add-the-btrfs-filesystem-label-command.patch)
[8](https://www.reddit.com/r/NixOS/comments/1lhkffb/creating_a_new_btrfs_subvolume_on_existingrunning/)
[9](https://man.archlinux.org/man/mkfs.btrfs.8.en)
[10](https://github.com/nix-community/disko/blob/master/example/btrfs-subvolumes.nix)
[11](https://www.mankier.com/8/mkfs.btrfs)
[12](https://fedoramagazine.org/working-with-btrfs-subvolumes/)
[13](https://wiki.nixos.org/wiki/Btrfs)
[14](https://man7.org/linux/man-pages/man8/btrfs-property.8.html)
[15](https://bbs.archlinux.org/viewtopic.php?id=276843)
[16](https://mt-caret.github.io/blog/posts/2020-06-29-optin-state.html)
[17](https://man.archlinux.org/man/btrfs.8.en)
[18](https://btrfs.readthedocs.io/en/latest/btrfs-subvolume.html)
[19](https://discourse.nixos.org/t/persistent-btrfs-subvolume-mounting/30021)
[20](https://forum.mxlinux.org/viewtopic.php?t=79038)