![[filesystem][archlinux][disk encryption][btrfs] btrfs [filesystem][archlinux][disk encryption][btrfs] btrfs](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700)
fork from here http://www.cnblogs.com/hugetong/p/6914248.html
boot分区,MBR加密:https://wiki.archlinux.org/index.php/Dm-crypt/Specialties#Securing_the_unencrypted_boot_partition
首先,我选择在LUKS上创建btrfs。查看上述文档的btrfs章节。
1. btrfs不支持swap file,必须使用swap分区 https://wiki.archlinux.org/index.php/Btrfs#Swap_file
2. 不建议在裸盘直接使用btrfs文件系统。https://wiki.archlinux.org/index.php/Btrfs#Partitionless_Btrfs_disk
3. btrfs带压缩会提高性能表现。https://wiki.archlinux.org/index.php/Btrfs#Compression
4. 新概念 subvolumes。 https://wiki.archlinux.org/index.php/Btrfs#Subvolumes
这个更详细,讲的更清楚,上边那个讲的很不清楚。。。:https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Subvolumes
btrfs文档:https://wiki.archlinux.org/index.php/Btrfs (跟上边那一堆,明明都是一个。。。)
多个磁盘的情况下可以组成一个pool,Btrfs支持 RAID0,1, 10, 5, 6。https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices
5. 不要使用btrfs 的 RAID5, RAID6模式。
6. 常用命令们
https://btrfs.wiki.kernel.org/index.php/Getting_started#Basic_Filesystem_Commands
7. 最大容量 70% ??
Be aware that for that size, it will report full when reaching about 75%.
-----------------------------------------------------------
1. 初始化一个 btrfs 文件系统
root@archiso ~ # mkfs.btrfs -L vd_root -f /dev/mapper/vd_root :(
btrfs-progs v4.10.2
See http://btrfs.wiki.kernel.org for more information. Label: vd_root
UUID: ba0b8b0b--455b-90f6-422f61d59df1
Node size:
Sector size:
Filesystem size: .00GiB
Block group profiles:
Data: single .00MiB
Metadata: DUP .00GiB
System: DUP .00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices:
Devices:
ID SIZE PATH
.00GiB /dev/mapper/vd_root root@archiso ~ #
2. 创建一个 subvolume
root@archiso ~ # btrfs subvolume create mnt/real_root
Create subvolume 'mnt/real_root'
3. 创建快照(很显然从命令来看,快照也是一个subvolume )
root@archiso ~ # btrfs subvolume snapshot mnt/real_root mnt/snapshot_of_real_root
Create a snapshot of 'mnt/real_root' in 'mnt/snapshot_of_real_root'
4. 设置default
root@archiso ~ # btrfs subvolume set-default mnt
root@archiso ~ # btrfs subvolume get-default mnt
ID gen top level path real_root
5. 删除快照或subvolume
root@archiso ~ # btrfs subvolume list /root/mnt
ID gen top level path real_root
ID gen top level path snapshot_of_real_root
ID gen top level path snapshot/snapshot_of_real_root_2
root@archiso ~ # btrfs subvolume create mnt/test
Create subvolume 'mnt/test'
root@archiso ~ # btrfs subvolume list /root/mnt
ID gen top level path real_root
ID gen top level path snapshot_of_real_root
ID gen top level path snapshot/snapshot_of_real_root_2
ID gen top level path test
root@archiso ~ # btrfs subvolume delete mnt/test
Delete subvolume (no-commit): '/root/mnt/test'
root@archiso ~ # btrfs subvolume list /root/mnt
ID gen top level path real_root
ID gen top level path snapshot_of_real_root
ID gen top level path snapshot/snapshot_of_real_root_2
root@archiso ~ #
6. 根据文档里的描述, 选用Flat方式创建subvolume
https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Flat
root@archiso ~ # find mnt
mnt
mnt/real_root
mnt/real_root/root
mnt/real_root/home
mnt/snapshot
root@archiso ~ # btrfs subvolume get-default mnt
ID gen top level path real_root
root@archiso ~ # btrfs subvolume list mnt
ID gen top level path real_root
ID gen top level path real_root/root
ID gen top level path real_root/home
root@archiso ~ #
7. 挂载指定的 subvolume
root@archiso ~ # btrfs subvolume list mnt
ID gen top level path top
ID gen top level path top/root
ID gen top level path top/home
root@archiso ~ # mount -o subvol=top/root /dev/mapper/crypt_root mnt