LINUX.ORG.RU

Btrfs: почему при восстановлении из дампа создается подраздел

 


0

1
$ findmnt /
TARGET SOURCE             FSTYPE OPTIONS
/      /dev/nvme0n1p5[/@] btrfs  rw,noatime,compress=lzo,ssd,space_cache,subvolid=257,subvol=/@

# df неправильно показывает размер btrfs подразделов
$ df -h /                              
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p5   71G   14G   57G  19% /

$ btrfs filesystem df -h / 
Data, single: total=15.01GiB, used=12.42GiB
System, single: total=4.00MiB, used=16.00KiB
Metadata, single: total=1.01GiB, used=772.20MiB
GlobalReserve, single: total=44.47MiB, used=0.00B

$ lsblk                             
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    1  14.5G  0 disk 
sdb           8:16   1  14.5G  0 disk 
└─sdb1        8:17   1  14.5G  0 part /run/media/sergey/ARCH_201907
nvme0n1     259:0    0 232.9G  0 disk 
├─nvme0n1p1 259:1    0   499M  0 part 
├─nvme0n1p2 259:2    0    99M  0 part /boot/efi
├─nvme0n1p3 259:3    0    16M  0 part 
├─nvme0n1p4 259:4    0   160G  0 part /mnt/c
├─nvme0n1p5 259:5    0  70.3G  0 part /home
└─nvme0n1p6 259:6    0     2G  0 part [SWAP]

$ sudo btrfs sub li -a /
ID 257 gen 3460 top level 5 path <FS_TREE>/@
ID 258 gen 3466 top level 5 path <FS_TREE>/@home
ID 281 gen 3466 top level 5 path <FS_TREE>/@var

$ sudo systemctl restart snapper-timeline.timer
# Через 5 минут после рестарта snapper сделал снапшоты

# Затираем флешку
$ sudo dd if=/dev/zero of=/dev/sdb bs=1M count=512 status=progress && sync
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 31.7763 s, 16.9 MB/s

# Создаем на ней фаловую систему ext4
$ sudo mkfs.btrfs -f -L storage /dev/sda
btrfs-progs v5.1.1 
See http://btrfs.wiki.kernel.org for more information.

Label:              storage
UUID:               1b4ec9c9-ae69-4c0c-a651-29370a4a9cbf
Node size:          16384
Sector size:        4096
Filesystem size:    14.45GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             256.00MiB
  System:           DUP               8.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1    14.45GiB  /dev/sda

$ sudo fdisk /dev/sdb << EOF
g
n
1


w
EOF

$ sudo mkfs.ext4 -L 'ADATA-16GB' /dev/sdb1

# С полными правами на чтение и запись
$ sudo mount -o rw,users,umask=000 /dev/sdb1 /mnt/usb1
$ mkdir /mnt/usb1/backup
$ sudo btrfs send /.snapshots/1/snapshot | gzip > /mnt/usb1/backup/root_`date '+%F'`.gz
$ sudo btrfs send /home/.snapshots/1/snapshot | gzip > /mnt/usb1/backup/home_`date '+%F'`.gz
$ sudo btrfs send /var/.snapshots/1/snapshot | gzip > /mnt/usb1/backup/var_`date '+%F'`.gz

# Проверка

# Извлечем образ
$ zcat /mnt/usb1/backup/root_`date "+%F'`.gz > /tmp/root.img

# Создадим тестовый подраздел
$ sudo btrfs sub create /@backup

# Монтируем его
sudo mkdir /mnt/backup

# Тут следует обратить внимание на собаку!
$ sudo btrfs sub li -a /              
ID 257 gen 4382 top level 5 path <FS_TREE>/@
ID 258 gen 4393 top level 5 path <FS_TREE>/@home
ID 281 gen 4393 top level 5 path <FS_TREE>/@var
ID 327 gen 3847 top level 257 path @/.snapshots
ID 328 gen 3847 top level 258 path <FS_TREE>/@home/.snapshots
ID 329 gen 3847 top level 281 path <FS_TREE>/@var/.snapshots
ID 330 gen 3844 top level 328 path <FS_TREE>/@home/.snapshots/1/snapshot
ID 331 gen 3844 top level 327 path <FS_TREE>/@/.snapshots/1/snapshot
ID 332 gen 3845 top level 329 path <FS_TREE>/@var/.snapshots/1/snapshot
ID 339 gen 4382 top level 257 path @/@backup

# subvol=@/backup будет выдавать ошибки монтирования
$ sudo mount -o noatime,compress=lzo,space_cache,subvol=@/@backup /dev/nvme0n1p5 /mnt/backup
$ sudo btrfs receive -f /tmp/root.img /mnt/backup

# Почему появился еще один подраздел?
$ sudo btrfs sub list -a /                       
...
ID 340 gen 4413 top level 257 path @/@backup
ID 341 gen 4424 top level 340 path <FS_TREE>/@/@backup/snapshot

# Тут вроде все нормально
$ ls /mnt/backup/snapshot 
 bin    dev   home   lib64        mnt   proc   run    srv  'System Volume Information'   usr
 boot   etc   lib    lost+found   opt   root   sbin   sys   tmp                          var
 
$ sudo umount /mnt/backup                        
$ sudo rmdir /mnt/backup
$ rm /tmp/root.img

# Так чтоли?
$ mv /@backup/snapshot /@home

# А потом удаляем?
# А так нельзя: /@/@backup/snapshot
$ sudo btrfs sub del /@backup/snapshot

# Это интересно: данные после восстановления занимают меньше места

Можно ли отнего избавиться? Или так и должно быть? Или я что-то делаю не так? Снапшоты делаются snapper’ом.

★★

Последнее исправление: tz4678 (всего исправлений: 1)

восстановление из дампа

Из какого дампа? btrfs send? Да, так и должно быть – btrfs send делает дамп подтома, btrfs receive восстанавливает подтом из дампа.

Код в спойлере не читал, какой-то поток сознания.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.