把主力机换成arch的那两三事

要说这个好 那就好的不得了

首先 要有 btrfs-progs 这个包

其次 要有 btrfs 的文件系统 mkfs.btrfs -L Arch /dev/sdxn

再者 要能访问 mount /dev/sdxn /btrfs

挂载

一种是挂载 分区

这时候可以对 子卷 进行操作

另一种是挂载 子卷

这时候可以堆 子卷 的文件进行操作 虽让上面那种挂载也行

操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 先挂载
mount --mkdir /dev/sdxn /btrfs
cd /btrfs

# 列出子卷列表
btrfs subvolume list .

# 创建子卷
btrfs subvolume create @vm

# 删除子卷
btrfs subvolume delete @vm

# 快照子卷
btrfs subvolume snapshot @vm @vm_bak

# 命令也可以精简
# btrfs sub snap ...
1
2
3
4
mount -t btrfs -o subvol=@vm,noatime,compress=zstd:1 /dev/sdxn /archlinux/vm
mount -t btrfs -o subvol=@home,noatime,compress=lzo /dev/sdxn /archlinux/home
mount -t btrfs -o subvol=@var_cache,noatime,nodatacow /dev/sdxn /archlinux/var/cache
mount -t btrfs -o subvol=@var_log,noatime,nodatacow /dev/sdxn /archlinux/var/log
  • nodatacow 关闭 cow 功能
1
2
3
4
5
# 列出属性
lsattr .

# 对某个文件关闭cow
chattr +C [path]

问题

还在寻找答案中

linux btrf 同一个卷中
有以下三种挂载方式
rw,noatime,compress=zstd:1,subvol=/@
rw,noatime,compress=lzo,subvol=/@home
rw,noatime,nodatacow,subvol=/@opt

把a文件从@移动到@home时候 文件压缩类型变化吗
把b文件从@移动到@opt时候 文件用到了cow了吗
把c文件从@opt移动到了@opt 文件用到cow了吗
把d文件从@opt移动到了@home 文件用到cow了吗
如何判断一个文件是否用到了cow