97 lines
No EOL
5.3 KiB
Markdown
97 lines
No EOL
5.3 KiB
Markdown
Ок — если хочешь “пересоздать заново и забыть старое”, то план такой: **сначала вынести `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) |