在向 186526 询问 Arch Linux 备份方案时,贴心的向我推荐了 Btrfs ,并跟我说滚挂了就滚回去(,加上因为疫情问题实在闲的无聊,想着备份数据后重装
Btrfs:现代 Linux 文件系统
先来介绍一下 Btrfs (NTRFS
Btrfs
引自 Wikipedia/ Btrfs Wiki:
Btrfs 是一种新型的写时复制(CoW)Linux 文件系统,已经并入内核主线。你可以读作 Better File System、B-tree File System、Butter File System 等等,都是正确的。Btrfs 在设计实现高级功能的同时,着重于容错、修复以及易于管理。它由 Oracle、Red Hat、Fujitsu、Intel、SUSE、STRATO 等企业和开发者共同开发。Btrfs 以 GNU GPL 协议授权,同时也欢迎任何人的贡献。
特性
-
写时复制(CoW)
-
子卷(Subvolume)
-
快照(Snapshot)
-
透明压缩
-
软 RAID
-
…
对我来说快照和透明压缩这两个特性挺好用的(还有针对ssd的特殊优化)
万一滚挂了用快照恢复,透明压缩也能减少磁盘写入量
系统安装
系统安装就按正常走,把分区按btrfs即可
分区
这一部分就是重点了hhh
我的分区结构如下:
-
/dev/nvme0n1p1
/boot/efi
1G ,EFI 分区 -
/dev/nvme0n1p2
/
256G,根目录的Btrfs
分区 -
/dev/nvme0n1p3
Swap
8G,用来休眠
建立分区
使用cfdisk /dev/nvme0n1
分区
1 | # fdisk -l /dev/nvme0n1 |
格式化分区
EFI :
1 | mkfs.fat -F32 /dev/nvme0n1p1 |
Btrfs :
1 | mkfs.btrfs -f -m single -L Arch /dev/nvme0n1p2 |
Swap :
1 | mkswap /dev/nvme0n1p3 |
建立Btrfs子卷
@
:对应/
@home
:对应/home
@cache
:对应/var/cache
@docker
:对应/var/lib/docker
@log
:对应/var/log
其中 @cache,@log
不使用写时复制
1.先将 Btrfs
分区挂载到 /mnt
下:
1 | mount -t btrfs -o compress=lzo /dev/nvme0n1p2 /mnt |
2.规划完成之后开始创建子卷:
1 | btrfs subvol create /mnt/@ |
挂载分区及Btrfs子卷
首先按先后顺序挂载 Btrfs 子卷
1 | mount -o noatime,nodiratime,ssd,compress=lzo,subvol=@ /dev/nvme0n1p2 /mnt |
挂载 EFI 分区:
1 | mount /dev/nvme0n1p1 /mnt/boot/efi |
挂载 SWAP:
1 | swapon /dev/nvme0n1p3 |
快照
我在用openSUSE的时候系统默认的是sanpper,本来想着arch也一样用来着,但我太笨了,还是用timeshift算了qwq
通过以下命令安装 Timeshift:
1 | yay -S timeshift timeshift-autosnap grub-btrfs |
然后,打开Timeshift,选btrfs一路点点点完事
参考
嗯,成功写了一遍arch安装过程(逃