hyperion/10-linux/90-stories/как я переименовывал кривой label.md
2025-12-28 19:00:03 +03:00

97 lines
No EOL
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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