使用 Btrfs 安装 Arch Linux 小记

2022-04-18

在向 186526 询问 Arch Linux 备份方案时,贴心的向我推荐了 Btrfs ,并跟我说滚挂了就滚回去(,加上因为某些问题实在闲的无聊,想着备份数据后重装

请查看更新版本: ArchLinux安装及Snapper和btrfs-grub的使用

Btrfs:现代 Linux 文件系统

先来介绍一下 Btrfs (NTRFS

Btrfs

引自 WikipediaBtrfs 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 协议授权,同时也欢迎任何人的贡献。

特性

对我来说快照和透明压缩这两个特性挺好用的(还有针对ssd的特殊优化)

万一滚挂了用快照恢复,透明压缩也能减少磁盘写入量

系统安装

系统安装就按正常走,把分区按btrfs即可

分区

这一部分就是重点了hhh

我的分区结构如下:

建立分区

使用cfdisk /dev/nvme0n1分区

 1# fdisk -l /dev/nvme0n1 
 2
 3Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
 4Disk model: YMTC PC005 512GB                        
 5Units: sectors of 1 * 512 = 512 bytes
 6Sector size (logical/physical): 512 bytes / 512 bytes
 7I/O size (minimum/optimal): 512 bytes / 512 bytes
 8Disklabel type: gpt
 9Disk identifier: A6EFB39C-17BC-4113-A296-28013437DA0A
10
11Device             Start       End   Sectors  Size Type
12/dev/nvme0n1p1      2048   2099199   2097152    1G EFI System
13/dev/nvme0n1p2   2099200 538970111 536870912  256G Linux filesystem
14/dev/nvme0n1p3 538970112 555747327  16777216    8G Linux swap

格式化分区

EFI :

1mkfs.fat -F32 /dev/nvme0n1p1

Btrfs :

1mkfs.btrfs -f -m single -L Arch /dev/nvme0n1p2

Swap :

1mkswap /dev/nvme0n1p3

建立Btrfs子卷

其中 @cache,@log不使用写时复制

1.先将 Btrfs 分区挂载到 /mnt 下:

1mount -t btrfs -o compress=lzo /dev/nvme0n1p2 /mnt

2.规划完成之后开始创建子卷:

 1btrfs subvol create /mnt/@
 2btrfs subvol create /mnt/@home
 3btrfs subvol create /mnt/@cache
 4btrfs subvol create /mnt/@docker
 5btrfs subvol create /mnt/@log
 6btrfs subvol create /mnt/@tmp
 7# 使用 chattr 忽略无需写时复制的目录
 8chattr +C /mnt/@cache
 9chattr +C /mnt/@log
10# 取消挂载
11umount /mnt

挂载分区及Btrfs子卷

首先按先后顺序挂载 Btrfs 子卷

1mount -o noatime,nodiratime,ssd,compress=lzo,subvol=@ /dev/nvme0n1p2 /mnt
2mkdir -p /mnt/{boot/efi,home,var/{log,lib/docker,cache}}
3mount -o noatime,nodiratime,ssd,compress=lzo,subvol=@home /dev/nvme0n1p2 /mnt/home
4mount -o noatime,nodiratime,ssd,compress=lzo,subvol=@log /dev/nvme0n1p2 /mnt/var/log
5mount -o noatime,nodiratime,ssd,compress=lzo,subvol=@docker /dev/nvme0n1p2 /mnt/var/lib/docker
6mount -o noatime,nodiratime,ssd,compress=lzo,subvol=@cache /dev/nvme0n1p2 /mnt/var/cache

挂载 EFI 分区:

1mount /dev/nvme0n1p1 /mnt/boot/efi

挂载 SWAP:

1swapon /dev/nvme0n1p3

快照

我在用openSUSE的时候系统默认的是sanpper,本来想着arch也一样用来着,但我太笨了,还是用timeshift算了qwq

通过以下命令安装 Timeshift:

1yay -S timeshift timeshift-autosnap grub-btrfs

然后,打开Timeshift,选btrfs一路点点点完事

参考

  1. 使用 btrfs 文件系統安裝 archlinux | 寒风凛冽
  2. Snapper - ArchWiki
  3. Btrfs:认识、从Ext4迁移与快照方案 | KAAAsS's blog

嗯,成功写了一遍arch安装过程(逃