拾光

拾光

首页
分类
网络数通Linux资源分享记录
动态
关于
登录 →
拾光

拾光

首页 分类
网络数通Linux资源分享记录
动态 关于
登录
  1. 首页
  2. btrfs学习笔记-之特性

btrfs学习笔记-之特性

0
  • 发布于 2025-05-10
  • 2 次阅读
后山看日出
后山看日出

特性:容错 修复 易于管理

btrfs特性-在线磁盘碎片整理

碎片的部分,整理成连续的状态,更好的完成读写操作

写时复制,造成新数据的链接丢失,耗费时间,需要更多的时间,空间。碎片整理,对数据库操作,快照可能弊大于利

具体操作

# 手动磁盘碎片整理。-r 递归。 -v 显示详细进程
btrfs filesystem defragment -r -v /home  

# 自动磁盘碎片整理 autodefrag. 如果有数据库 快照虚拟机用不自动磁盘随便整理会好一点noautodefrag

UUID=84db5ce9-a295-485a-bd62-d086f3ff8042  /home        btrfs  noautodefrag,defaults,subvol=/@/home         0  0

btrfs特性-扩容和收缩特性

对btrfs文件系统进行收缩操作的时候,首先是对btrfs文件系统进行收缩(btrfs filesystem resize -15G /test),稳妥起见我们收缩的空间最好比我们实际收缩的空间多一点,然后使用分区工具对分区重新resize实际的分区大小之后,在将设备挂载到这个目录下。然后将btrfs扩容到最大就可以了。

扩容操作,先卸载设备,resize分区,挂载上去,再扩容就可以了。

# 查看挂载在 /test 目录的 Btrfs 文件系统的空间使用情况. 假如:100G
btrfs filesystem usage /test 

# 将 Btrfs 文件系统挂载在 /test 目录下的存储空间减少 15GB
btrfs filesystem resize -15G /test 

# 卸载掉/test 挂载的/dev/sda1
 umount /test 

# 分区软件对分区进行收缩
  # 对/dev/sda1进行resize到  需要收缩的空间90G
cfdisk /dev/sda 

# 再把btrfs挂载到这个分区
mount /dev/sda1 /test 

# 最后再把btrfs文件系统扩展到最大 即所在分区的所有空间
btrfs filesystem resize max /test 

# 查看 这时btrfs文件系统为90G
df -h 
btrfs filesystem usage /test 

btrfs特性-在线添加和删除块设备(及负载均衡)

  • 对整块盘的在线添加和删除

# 首先对整盘格式化为btrfs文件系统
mkfs.btrfs /dev/vdb
# 挂载
mount /dev/vdb /test 

# 然后直接把vdc添加到/test  这样就自动对vdc进行格式化为btrfs并与v的吧合并挂载到/test
btrfs device add /dev/vdc /test 

# 对挂载到/test上的 两块硬盘进行负载均衡
btrfs balance start /test 

# 查看
# 注意下边两个命令似乎只能看到
lsblk 
df -h
 btrfs filesystem show

# 删除/test 的vdc

btrfs device remove /dev/vdc /test 

# 这里的fstab格式要注意
UUID=f7947115-8244-4ecd-af86-87ce80c6fb3a  /test	btrfs  defaults                 0  0





btrfs特性-离线文件系统检测

  • 离线状态下的文件系统的修复还有检查,检查用到了check 还有 scrub 这两个命令。

    • scrub 只能是在线检查,如果要修复还是要离线,所以鸡肋

  • 你情愿去修复他还不如用快照来搞定。

# 离线的检测还有修复 注意要离线
btrfs check --repair /dev/vdd


# 这个命令只能在线检查检测
btrfs scrub start /test
btrfs scrub status /test

btrfs特性-文件系统级磁盘阵列

# 查看当前btrfs文件系统的特性 mkfs.btrfs --help
mkfs.btrfs -O list-all

# 创建磁盘阵列-L 名字  -d 数据的raid.  -m 源数据 磁盘的前几个扇区 -f 强制  后边跟块设备
mkfs.btrfs -L date -d raid10 -m raid10 -f /dev/vdb /dev/vdc

# 挂载直接挂载第一个块设备就行
mount /dev/vdb

# 或者直接查询uuid挂载到fstab
btrfs filesystem show
btrfs device scan 

vim /etc/fstab
UUID=f7947115-8244-4ecd-af86-87ce80c6fb3a  /test	btrfs  defaults                 0  0
  • 如果阵列的一块硬盘坏了,如何替换

#  可以看到 /dev/sdb1 被清空,btrfs分区中的device 1已经丢失,
lsblk -f 
btrfs filesystem show 


# 先使用 mount -o degraded 指令,从仍然可用的btrfs分区部分挂载目录,降级状态使用。
mount -o degraded /dev/sdc1 /data 


# 接下来要做的就是使用 btrfs replace 替换损坏的硬盘,我准备好了一个全新的分区用于替换,注意这里的1代表的是前面损坏missing的device id(千万不要搞错了):

btrfs replace start 1 /dev/sdb1 /data 

# 重新负载均衡
btrfs balance start /data

目录
Copyright © 2024 拾光笔记 All Rights Reserved. Powered by 10light.

ddd