以下都是举例说明:
A. 使用fdisk命令对/dev/sdb进行分区
B. 先对/dev/sdb5和/dev/sdb6进行格式化, 文件系统为btrfs
C. 使用btrfs filesystem show命令查看所有的btrfs类型的分区
D. 发现磁盘不够, 希望扩展该btfs文件系统的大小, 先使用
mount -o compress=zlib /dev/sdb5 mydata
E. 接着使用btrfs device add /dev/sdb7 mydata, 系统就会自动的
将sdb7格式化为btrfs类型, 并添加到btrfs filesystem show中
F.刚刚添加到btrfs中的设备的使用率为0, 为了平均一下空间, 使用
btrfs balance start -dconvert raid1 -mconvert raid1 -sconvert raid1 /mydata
将数据的使用空间合理分配, 并且将存放元数据的方式改为raid1, 存放数据的方式改为raid1
系统的数据使用raid1的方式进行存储
G. 发现IO操作耗时, 使用btrfs balance pause mydata暂停一下
H. 继续进程balance, 使用btrfs balance resume mydata
I. 发现不需要对存储空间进行均衡了, 使用btrfs balance cancel mydata
J. 查看均衡的状态: btrfs balance status mydata
K. 创建一个子卷, 首先进入父卷(mydata)目录下, 使用btrfs subvolume create test
在目录中就会自动生成一个名为test的目录, 该目录就是我们需要的子卷
L. 在子卷中vim一个main文件
M. 在使用btrfs subvolume create test2再一次创建一个子卷, 目录名为test2
在该目录中创建一个文件main2
N. 想要只挂载该mydata卷的子卷test, 卸载mydata, 使用命令umount mydata
O. 将子卷挂载, 但是需要先知道子卷的名称, 以为已经卸载了mydata, 无法通过访问mydata来查看,
进入到mydata中是没有任何内容的, 使用btrfs subvolume list mydata也无法访问, 因此我们
需要再一次挂载mydata这个父卷来查看指定子卷
使用命令 mount -o compress=zlib /dev/sdb5 mydata
在使用btrfs subvolume list mydata查看其所有的子卷
P. 使用umount mydata卸载父卷, 再使用mount -o subvol=test /dev/sdb5 mydata(其中的mydata目录也可以是别的目录)
或者也可以通过指定子卷的id号来挂载, 使用mount -o subvolid=256 /dev/sdb5 mydata
Q. 进入到test目录中, 发现只有一个main文件
R. 现在希望将test子卷删除, 需要卸载test, 挂载上父卷
S. 进入到父卷中, 使用命令btrfs subvolume delete test即可
U. 现在想要删除/dev/sdb7, 使用btrfs device delete /dev/sdb7 mydata
在删除该设备时, btrfs文件系统会将该设备上的所有的数据到放在其他的设备上
目的就是为了防止数据的丢失, 如果只有一个设备的话, 使用命令会报错
V. 使用btrfs-convert进行文件系统类型的转换
① 先卸载umount mydata
② 使用fsck -f /dev/sdb5进行强制检测
③ 使用btrfs-convert /dev/sdb8将/sdb8设备的文件系统的格式转换为btrfs
④ 如果希望在将/deb/sdb8的文件系统还原, 使用btrfs-convert -r /dev/sdb8即可
⑤ 之后再将该设备挂载即可
注意: 如果LVM卷被格式化成了xfs文件系统, 我们在lvresize了lvm之后, 要想扩展文件系统, 不能使用resize2fs, 而是应该使用xfs_grows