8、btrfs文件系统、压缩工具

2023-05-16

btrfs文件系统

​ Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW;
​ ext3/ext4, xfs
​ 核心特性:
​ 多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”、“移除”,“修改”;
​ 写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新;
​ 数据及元数据校验码:checksum
​ 子卷:sub_volume
​ 快照:支持快照的快照;
​ 透明压缩:
​ 文件系统创建:
​ mkfs.btrfs
​ -L ‘LABEL’
​ -d <type>: raid0, raid1, raid5, raid6, raid10, single // 数据是如何跨设备存放
​ -m <profile>: raid0, raid1, raid5, raid6, raid10, single, dup // 元数据是如何跨设备存放
​ -O <feature>
​ -O list-all: 列出支持的所有 feature;
​ 属性查看:
​ btrfs filesystem show
​ 挂载文件系统:
​ mount -t btrfs /dev/sdb MOUNT_POINT
​ 透明压缩机制:
​ mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
​ 子命令:filesystem, device, balance, subvolume

相关命令演示:

1、创建btrfs文件系统
[root@localhost ~]# mkfs.btrfs -L mydata /dev/sdc /dev/sdd  将sdc和sdd两块硬盘添加
btrfs-progs v4.9.1
See http://btrfs.wiki.kernel.org for more information.

Label:              mydata
UUID:               0dd940fb-accf-49be-b07f-df11f03dd16f
Node size:          16384
Sector size:        4096
Filesystem size:    10.00GiB
Block group profiles:
  Data:             RAID0             1.00GiB
  Metadata:         RAID1             1.00GiB
  System:           RAID1             8.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  2
Devices:
   ID        SIZE  PATH
    1     5.00GiB  /dev/sdc
    2     5.00GiB  /dev/sdd
[root@localhost ~]# btrfs filesystem show        显示创建成功的btrfs相关信息
Label: 'mydata'  uuid: 0dd940fb-accf-49be-b07f-df11f03dd16f
	Total devices 2 FS bytes used 112.00KiB
	devid    1 size 5.00GiB used 1.51GiB path /dev/sdc
	devid    2 size 5.00GiB used 1.51GiB path /dev/sdd
	
2、挂载
[root@localhost btrfs1]# mount -t btrfs /dev/sdc /mnt/btrfs1/   挂载时只需要挂载sdc或sdd中的一个即可

3、透明压缩功能
[root@localhost ~]# umount /dev/sdc /mnt/btrfs1     需要先卸载
[root@localhost ~]# mount -o compress=lzo /dev/sdc /mnt/btrfs1/ 这时在次存放数据时会先被压缩然后在存放,但当用户查看时,没有什么变化

4、重置 btrfs 的大小,在线联机调整大小,逻辑大小
[root@localhost ~]# btrfs filesystem resize -500M /mnt/btrfs1
Resize '/mnt/btrfs1' of '-500M'
[root@localhost ~]# btrfs filesystem resize max /mnt/btrfs1     直接调整到最大
Resize '/mnt/btrfs1' of 'max'

5、增加 btrfs 的物理大小
[root@localhost ~]# btrfs device add /dev/sde /mnt/btrfs1/

6、平衡存储的数据
[root@localhost ~]# btrfs balance start /mnt/btrfs1/
WARNING:

	Full balance without filters requested. This operation is very
	intense and takes potentially very long. It is recommended to
	use the balance filters to narrow down the balanced data.
	Use 'btrfs balance start --full-balance' option to skip this
	warning. The operation will start in 10 seconds.
	Use Ctrl-C to stop it.
10 9 8 7 6 5 4 3 2 1
Starting balance without any filters.
Done, had to relocate 3 out of 3 chunks
// balance 还有pause、resume等子命令

7、对于 btrfs 来说,在拆除硬盘时会先将数据移到其他设备上,然后在执行
[root@localhost ~]# btrfs device delete /dev/sdc /mnt/btrfs1/

8、修改数据或元数据的级别
[root@localhost ~]# btrfs balance start -mconvert=raid5 /mnt/btrfs1/   # 修改元数据为raid-5,默认为raid-1
Done, had to relocate 2 out of 3 chunks
[root@localhost ~]# btrfs filesystem df /mnt/btrfs1/   # 查看系统本身的信息
Data, RAID0: total=1.00GiB, used=332.00KiB
System, RAID5: total=64.00MiB, used=16.00KiB
Metadata, RAID5: total=256.00MiB, used=112.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B
[root@localhost ~]# btrfs balance start -dconvert=raid5 /mnt/btrfs1/ # 修改数据为raid-5级别
Done, had to relocate 1 out of 3 chunks

9、子卷管理
[root@localhost ~]# btrfs subvolume create /mnt/btrfs1/logs
Create subvolume '/mnt/btrfs1/logs'
[root@localhost ~]# btrfs subvolume list /mnt/btrfs1/
ID 265 gen 93 top level 5 path logs
[root@localhost ~]# umount /mnt/btrfs1              # 卸载父卷
[root@localhost ~]# mount -o subvol=logs /dev/sdc /mnt       # 挂载子卷,也可使用子卷ID号挂载
[root@localhost ~]# ls /mnt
[root@localhost ~]# btrfs subvolume show /mnt   # 查看子卷的详细信息
/mnt
	Name: 			logs
	UUID: 			36540370-0cb8-e44c-a3f6-9fbc169211a7
	Parent UUID: 		-
	Received UUID: 		-
	Creation time: 		2021-09-10 16:49:08 +0800
	Subvolume ID: 		265
	Generation: 		94
	Gen at creation: 	93
	Parent ID: 		5
	Top level ID: 		5
	Flags: 			-
	Snapshot(s):
[root@localhost ~]# umount /mnt   # 卸载子卷挂载
[root@localhost ~]# mount /dev/sdc /mnt/btrfs1
[root@localhost ~]# btrfs subvolume delete /mnt/btrfs1/logs/  # 删除子卷
Delete subvolume (no-commit): '/mnt/btrfs1/logs'
注:单独挂载某一个子卷时,需要先卸载父卷,只能够访问子卷上的内容,无法访问父卷;当父卷挂载时,子卷会自动挂载到父卷下

10、子卷创建快照
[root@localhost ~]# cp /etc/grub2.cfg /mnt/btrfs1/logs/
[root@localhost ~]# btrfs subvolume snapshot /mnt/btrfs1/logs/ /mnt/btrfs1/logs_snap  # 快照卷与子卷需要在同一个卷组中
Create a snapshot of '/mnt/btrfs1/logs/' in '/mnt/btrfs1/logs_snap'
[root@localhost ~]# btrfs subvolume list /mnt/btrfs1/
ID 266 gen 100 top level 5 path logs
ID 267 gen 100 top level 5 path logs_snap
[root@localhost ~]# btrfs subvolume delete /mnt/btrfs1/logs_snap/ # 删除快照
Delete subvolume (no-commit): '/mnt/btrfs1/logs_snap'
[root@localhost logs]# cp --reflink grub2.cfg grub2.cfg_snapshot # 只对单个文件做快照
[root@localhost logs]# ls
grub2.cfg  grub2.cfg_snapshot

11、将ext4文件系统转换成btrfs(sdb2为准备好的ext4设备)
[root@localhost ~]# fsck -f /dev/sdb2       # 强制检测
fsck,来自 util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/sdb2: 11/65536 files (0.0% non-contiguous), 12955/262144 blocks
[root@localhost ~]# btrfs-convert /dev/sdb2      # 文件系统转换
create btrfs filesystem:
	blocksize: 4096
	nodesize:  16384
	features:  extref, skinny-metadata (default)
creating ext2 image file
creating btrfs metadatacopy inodes [o] [         1/        11]
conversion complete[root@localhost ~]# btrfs filesystem show    # 查看结果
Label: 'mydata'  uuid: 0dd940fb-accf-49be-b07f-df11f03dd16f
	Total devices 3 FS bytes used 620.00KiB
	devid    2 size 5.00GiB used 928.00MiB path /dev/sdd
	devid    3 size 5.00GiB used 928.00MiB path /dev/sde
	devid    4 size 5.00GiB used 928.00MiB path /dev/sdc

Label: none  uuid: 09a9260d-3062-4212-93c3-16f6f7be651a
	Total devices 1 FS bytes used 50.25MiB
	devid    1 size 1.00GiB used 227.00MiB path /dev/sdb2
[root@localhost ~]# mount /dev/sdb2 /mnt/sdb2      # 挂载设备
[root@localhost ~]# umount /mnt/sdb2
[root@localhost ~]# btrfs-convert -r /dev/sdb2     # 回转

压缩工具

压缩、解压缩及归档工具
compress/uncompress: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar, cpio

1、gzip/gunzip
gzip [OPTION]… FILE …
-d: 解压缩,相当于gunzip
-c: 将结果输出至标准输出;
-#:1-9,指定压缩比;
zcat:不显式展开的前提下查看文本文件内容;
实例:

[root@localhost tmp]# cp /var/log/messages /tmp
[root@localhost tmp]# ll -h
total 336K
-rw-------. 1 root root 336K Sep 11 09:11 messages
[root@localhost tmp]# gzip messages          # 执行压缩
[root@localhost tmp]# ll -h
total 52K
-rw-------. 1 root root 49K Sep 11 09:11 messages.gz
[root@localhost tmp]# gunzip messages.gz    # 执行解压缩
[root@localhost tmp]# zcat messages.gz  # 直接查看解压后的内容
[root@localhost tmp]# gzip -c messages > messages.gz # 压缩后保留源文件
[root@localhost tmp]# ls
messages  messages.gz

2、bzip2/bunzip2/bzcat
bzip2 [OPTION]… FILE …
-k: keep, 保留原文件;
-d:解压缩
-#:1-9,压缩比,默认为6;
bzcat:不显式展开的前提下查看文本文件内容;
实例:

[root@localhost tmp]# bzip2  messages 
[root@localhost tmp]# ls
messages.bz2
[root@localhost tmp]# bzip2 -k messages 
[root@localhost tmp]# ls
messages  messages.bz2

3、xz/unxz/xzcat
xz [OPTION]… FILE …
-k: keep, 保留原文件
-d:解压缩
-#:1-9,压缩比,默认为6
xzcat: 不显式展开的前提下查看文本文件内容

4、tar
tar [OPTION]…
(1) 创建归档
tar -c -f /PATH/TO/SOMEFILE.tar FILE…
tar -cf /PATH/TO/SOMEFILE.tar FILE…
(2) 查看归档文件中的文件列表
tar -t -f /PATH/TO/SOMEFILE.tar
(3) 展开归档
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR
结合压缩工具实现:归档并压缩
-j: bzip2, -z: gzip, -J: xz

实例:

[root@localhost tmp]# tar -cf pam.d.tar pam.d/   # 归档
[root@localhost tmp]# ls
messages  messages.bz2  messages.xz  pam.d  pam.d.tar
[root@localhost tmp]# tar -xf pam.d.tar -C test/    # 展开归档至指定目录
[root@localhost tmp]# ls test/
pam.d
[root@localhost tmp]# tar -zcf pam.d.tar.gz pam.d   # 归档并压缩
[root@localhost tmp]# ls
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8、btrfs文件系统、压缩工具 的相关文章

随机推荐

  • Debian搭建dns服务器

    1 安装bind以及dns解析工具 apt install y bind9 apt install y dnsutils 2 修改dns配置 nano etc resolv conf 3 将dns指向需要解析的域名 Zone 34 qt c
  • CSP-M1-B咕咕东想吃饭

    目录 1 题意2 解题思路3 样例4 总结5 AC代码 1 题意 考试周共有n天 xff0c 每天需要买ai个生煎 xff0c 只有两种购买方案 xff0c 一是某一天一次性买两个 xff0c 二是今天买一个 xff0c 同时为明天买一个
  • M2补题 T1 HRZ的序列

    目录 1 题意2 样例3 解题思路4 总结5 AC代码 1 题意 相较于咕咕东 xff0c 瑞神是个起早贪黑的好孩子 xff0c 今天早上瑞神起得很早 xff0c 刷B站时看到了一个序列aa xff0c 他对这个序列产生了浓厚的兴趣 他好奇
  • Week12 作业C - 必做题 - 3

    目录 1 题意2 样例3 解题思路4 AC代码 1 题意 东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 每个寝室里面有ai个人 1 lt 61 i lt 61 n 从第i到第j个宿舍一共有sum i j 61 a
  • MFC 第二部分 : 窗口类成员接口

    所有窗口类的基类 xff1a 类 CWnd xff0c 封装了 Windows 窗口句柄 HWND 成员函数 DestroyWindow 可以消毁 Windows 窗口 xff0c 而不需要消毁 CWnd 对象 数据成员 m hWnd 与该
  • java 字符数组使用toString变为乱码的原因(其实不是乱码)

    java 字符数组使用toString变为乱码 xff08 其实是地址 xff09 我在网上搜了一下这个小白容易犯的问题并没有人解答过 因为String字符串可以通过toCharArray xff08 xff09 得到字符数组 xff0c
  • 中国天气网api接口

    一 中国天气网API 中国天气网官方api接口已经停止更新 xff0c 因此许多以前的博客上的api接口已经失效 因为最近布置了一个关于天气预报的作业 xff0c 因此以作记录找到的api 1 1 Json格式的预报 请求方式 xff1a
  • 关于计蒜客普及组的一道救援题(个人认为应该不涉及算法)

    不涉及任何算法的信息学题目 救援 xff0c 见下 xff1a 救生船从大本营出发 xff0c 营救若干屋顶上的人回到大本营 xff0c 屋顶数目以及每个屋顶的坐标和人数都将由输入决定 xff0c 求出所有人都到达大本营并登陆所用的时间 在
  • 全网最全PDF压缩方法by 忘小寒——标题党警告

    全网最全PDF压缩方法by 忘小寒 标题党警告 全网最全PDF压缩方法by 忘小寒压缩方法1压缩方法2个人经验 全网最全PDF压缩方法by 忘小寒 先用方法1 2试一下 xff0c 都试过了还是不行的话请看最后的个人经验 压缩方法1 如何将
  • python安装出现 DLL load failed while importing xxx, warning:retrying (retry等问题

    DLL load failed while importing xxx找不到指定程序 1 xxx所在库的dll文件和C windows System32的dll文件冲突 解决办法 xff1a 将python安装目录 Lib xxx包 全路径
  • BJFU_数据结构习题_243入栈和出栈的基本操作

    欢迎登录北京林业大学OJ系统 http www bjfuacm com 243入栈和出栈的基本操作 描述 输入一个整数序列a1 a2 a3 an 当ai不等于 1时将ai进栈 xff1b 当ai 61 1时 xff0c 输出栈顶元素并将其出
  • 沙盒软件无法使用的解决办法

    span class token number 1 span 卸载 windwos Sandbox span class token number 2 span 重启 span class token number 3 span 打开命令提
  • 网络基础知识OTN/PTN

    PTN xff1a 骨干层 汇聚层 接入层 OTN 核心层 骨干层 国产OTN 华为6800 xff0c 中兴ZXMP M720 xff0c 烽火FONST3000 国产PTN xff1a 华为OptiX PTN3900 1900 烽火Ci
  • 杨辉三角

    输入数据包含多个测试实例 xff0c 每个测试实例的输入只包含一个正整数n xff08 1 lt 61 n lt 61 30 xff09 xff0c 表示将要输出的杨辉三角的层数 对应于每一个输入 xff0c 请输出相应层数的杨辉三角 xf
  • 远程装好anaconda然后环境变量也设置好后为什么还是无法使用conda命令?

    没有用source bashrc重开 xff01 重新登陆自己账户可能是没用的 xff01 首先用vim bashrc检查自己的环境变量有没有成功设置 xff08 没有的话就设置一下 xff0c 但是一般实验室电脑按anaconda默认装并
  • Appimage无法打开的bug

    Appimage无法打开的bug 程序XXX AppImage突然就打不开了 报错 xff1a appimagetool x86 64 AppImage fusermount span class token function mount
  • Mysql分组查询时间最近的一条数据

    需求描述 现有图书馆借书记录表如下 xff1a 需要分组查询每个学生最近一次借书的记录 借书记录表 borrow books record student id xff08 学号 xff09 student name xff08 姓名 xf
  • ubuntu20.04安装Linux原生的微信

    在优麒麟下有Linux原生的微信 xff0c 虽然功能简陋了一些 xff0c 但是有比没有强 xff0c 基本的聊天需求是可以被满足的 ubuntu下是没提供这个的 xff0c 需要去优麒麟的官网 xff0c 找到优麒麟的应用下载 xff0
  • 【arm64 飞腾】银河麒麟/统信UOS/ubuntu20.0.4系统离线安装mysql

    一 安装环境 xff1a 1 亲测银河麒麟 统信UOS ubuntu20系统离线安装mysql5 7成功 2 mysql数据库5 7 arm64 deb 安装版 3 mysql下载地址 xff1a wget下载失败的可以使用作者分享的网盘下
  • 8、btrfs文件系统、压缩工具

    btrfs文件系统 Btrfs B tree Butter FS Better FS GPL Oracle 2007 CoW ext3 ext4 xfs 核心特性 xff1a 多物理卷支持 xff1a btrfs可由多个底层物理卷组成 xf