输出blkid
显示了我的 BTRFS 卷上名为 UUID_SUB 的帖子。这意味着什么?我在哪里可以找到更多信息?
/dev/sdc: LABEL="example" UUID="e7c116be-e3ba-4097-857b-12a1f4e9f753" UUID_SUB="b263e0c0-1714-48f1-8706-f97dec03b355" BLOCK_SIZE="4096" TYPE="btrfs"
输出blkid
显示了我的 BTRFS 卷上名为 UUID_SUB 的帖子。这意味着什么?我在哪里可以找到更多信息?
/dev/sdc: LABEL="example" UUID="e7c116be-e3ba-4097-857b-12a1f4e9f753" UUID_SUB="b263e0c0-1714-48f1-8706-f97dec03b355" BLOCK_SIZE="4096" TYPE="btrfs"
我使用以下命令创建了 BTRFS 交换文件:
$ btrfs filesystem mkswapfile -s 8G SwapFile
但是,交换仅使用 1GB 的交换文件,如以下命令序列所示:
$ du -csh SwapFile ; free
8.0G SwapFile
8.0G total
total used free shared buff/cache available
Mem: 12148108 5915736 1232604 743948 6132596 6232372
Swap: 1048572 35576 1012996
是否有一些配额或类似选项可以用来强制 Linux 交换机制使用我创建的所有 BTRFS 交换文件?
我正在虚拟机中使用 BTRFS。
我按照本指南确保我的/home/.snapshot
文件夹是它自己的子卷。一切似乎都正常,我可以拍摄快照、列出快照undochanges
等。
脚步:
细节:
我将现有快照发送到不同的子卷(设备)
sudo btrfs subvolume list -t /mnt_device3
ID gen top level path
-- --- --------- ----
256 9 5 @backup
sudo mkdir /backup/1
sudo btrfs send /home/.snapshots/1/snapshot | sudo btrfs receive /backup/1
sudo btrfs subvolume list -t /backup
ID gen top level path
-- --- --------- ----
256 17 5 @backup
258 18 256 1/snapshot
然后我使用 snapper 删除快照:
sudo snapper -c home delete 1
sudo snapper -c home list
# | Type | Pre # | Date | User | Cleanup | Description | Userdata
---+--------+-------+-----------------------------+------+---------+--------------------------------------------------+---------
0 | single | | | root | | current |
2 | single | | Tue 04 Jul 2023 03:20:01 PM | root | | testing send/receive after test.txt |
然后我再次使用发送/接收将快照放回去
sudo mkdir /home/.snapshots/1
sudo btrfs send /backup/1/snapshot | sudo btrfs receive /home/.snapshots/1
ls /home/.snapshots
total 0
drwxr-xr-x 1 root root 6 Jul 4 16:30 .
drwxr-xr-x 1 root root 32 Jun 29 11:36 ..
drwxr-xr-x 1 root root 16 Jul 4 16:11 1
drwxr-xr-x 1 root root 32 Jul 4 15:20 2
#an excerpt of sudo btrfs subvolume list /home
ID 311 gen 1147 top level 272 path 2/snapshot
ID 313 gen 1214 top level 272 path 1/snapshot
但 snapper 无法识别快照 1
sudo snapper -c home list
# | Type | Pre # | Date | User | Cleanup | Description | Userdata
---+--------+-------+-----------------------------+------+---------+--------------------------------------------------+---------
0 | single | | | root | | current |
2 | single | | Tue 04 Jul 2023 03:20:01 PM | root | | testing send/receive after test.txt |
所以我真的不能再使用 snapper 对快照 1 做任何事情了。
有没有办法让 snapper 识别导入的快照?
几年前,我使用这个优秀的指南https://www.youtube.com/watch?v=co5V2YmFVEE使用 LUKS 加密我的 Thinkpad 磁盘,并使用 BTRFS 作为我的文件系统。
当时我的 SSD 只有 256GB,现在我已经更新到 1TB,并使用 Clonezilla 将我的驱动器克隆到新的 SSD。唯一的问题仍然是 - 如何安全地扩展我的 LUKS 加密分区和其下的 BTRFS 系统(带有 2 个子卷 - root 和 home)?
我的/etc/fstab
# /dev/nvme0n1p1
UUID=6E39-1234 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/mapper/cryptroot
UUID=d7cf34c3-8fb4-4cbb-b04b-96e8121e11d9 / btrfs rw,noatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@ 0 0
# /dev/mapper/cryptroot
UUID=d7cf34c3-8fb4-4cbb-b04b-96e8121e11d9 /home btrfs rw,noatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/@home 0 0
我删除了 4TB 磁盘上的所有文件/dev/sdb1
。这是通过rsync --delete
命令完成的。
在停止之前,rsync 写入了大约 10GB 的数据。
当然磁盘上没有快照。
文件btrfs
系统已挂载到该/home/user/Downloads
文件夹。
所以我想知道是否有办法恢复数据。
到目前为止(卸载磁盘后)我已经尝试过:
btrfs restore -i /dev/sdb1 /mnt/RESTORE/
其中只恢复了 10GB 的新文件。
./btrfs.sh /dev/sdb1 /home/user/Downloads/* /mnt/RESTORE/
结果 :
[...]
Trying root 3001138823168... (1096/1103)
Trying root 853360640... (1097/1103)
Trying root 50626560... (1098/1103)
Trying root 31309824... (1099/1103)
Trying root 31129600... (1100/1103)
Trying root 30900224... (1101/1103)
Trying root 30818304... (1102/1103)
Trying root 30408704... (1103/1103)
Didn't find 'home/user/D*/*
btrfs restore -t 3001556484096 /dev/sdb1 /mnt/RESTORE/
:parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
Ignoring transid failure
ERROR: root [1 0] level 0 does not match 1
Couldn't read tree root
Could not open root, trying backup super
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
Ignoring transid failure
ERROR: root [1 0] level 0 does not match 1
Couldn't read tree root
Could not open root, trying backup super
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
Ignoring transid failure
ERROR: root [1 0] level 0 does not match 1
Couldn't read tree root
Could not open root, trying backup super
btrfs-find-root -a /dev/sdb1
输出 :Superblock thinks the generation is 96918
Superblock thinks the level is 1
[...]
Well block 3001381945344(gen: 94646 level: 0) seems good, but generation/level doesn't match, want gen: 96918 level: 1
Well block 3001359089664(gen: 94635 level: 0) seems good, but generation/level doesn't match, want gen: 96918 level: 1
Well block 853360640(gen: 94238 level: 0) seems good, but generation/level doesn't match, want gen: 96918 level: 1
btrfs rescue super-recover -v /dev/sdb1
输出 :All Devices:
Device: id = 1, name = /dev/sdb1
Before Recovering:
[All good supers]:
device name = /dev/sdb1
superblock bytenr = 65536
device name = /dev/sdb1
superblock bytenr = 67108864
device name = /dev/sdb1
superblock bytenr = 274877906944
[All bad supers]:
All supers are valid, no need to recover
所以任何帮助将不胜感激:)
更新 1:
不幸的是,我只能恢复少数损坏的文件。这是我在btrfs-undelete 脚本之后所做的。
/tmp/ID
文件中:btrfs-find-root -a /dev/sdb1 2>&1 | grep ^Well | sed -r -e 's/Well block ([0-9]+).*/\1/' | sort -rn > /tmp/ID
for i in $(cat /tmp/ID) ; do mkdir /mnt/RESTORE/"$i"; btrfs restore -o -iv -t "$i" /dev/sdb1 /mnt/RESTORE/"$i" 2>&1; done
我想现在唯一的办法就是找一个文件恢复软件...
我已经设置了一个 BTRFS Raid1,我在 2 周前重新平衡了它。现在 btrfs df 说...
root@slackware:~# btrfs filesystem df /mnt
Data, RAID1: total=4.14TiB, used=4.08TiB
System, RAID1: total=32.00MiB, used=608.00KiB
Metadata, RAID1: total=6.00GiB, used=5.20GiB
GlobalReserve, single: total=512.00MiB, used=0.00B
我的问题是..假设我丢失了一个高清,我会丢失数据吗?如何查看 btrfs raid1 上的数据分布?我必须使用 usage 和 musage=50 重新平衡它以获得完美的副本?
btrfs subvolume create ./nocow
chattr +C nocow
但是,我找不到显示 ./nocow 的 C 属性的方法。lsattr
显示空结果。这可能是因为它只适用于文件/目录。我试过btrfs property
了但是到目前为止还没有办法显示子卷的属性。如果我在 Then 中创建一个文件,./nocow
我就可以看到它。但是我想列出一个空的子卷的属性而不在其中创建任何文件。
.thunderbird 中的邮箱文件是否视为数据库文件(重复随机写入)?如果我将 .thunderbird 留在普通的 BTRFS 分区上,碎片会有多严重?我希望人们可以在这件事上分享他们的经验。
我将 BTRFS 用于我的根分区并使用 Snapper 管理其快照。我决定创建子卷/var/tmp
,因为这些子卷会不断更改其数据/var/cache
,/var/log
这对于计划快照来说不是一个好主意。这样,他们就没有得救。
但是,我注意到其中的文件/tmp
也包含在快照中,这不是我想要的。我在那里安装了一个 tmpfs 文件系统,但它还是被保存了。我最终为它创建了一个子卷。
我注意到了/sys
,/run
并且/proc
没有被保存(这是一件好事)。他们做了什么来实现这一目标?我可以这样做/tmp
吗?什么东西没有保存在 btrfs 快照中?当然,除了其他子卷。