btrfs管理及应用
一. 简介
btrfs有着强大的功能,它支持在多个及各种物理设备(包括RAID)上创建一个文件系统,并支持动态扩展或减小,支持快照功能,甚至快照的快照,支持子卷功能。
二. 如何使用btrfs文件系统?
我的准备材料:3块20G的硬盘
1
2
3
4
5
|
[root@localhost ~] # ls -l /dev | grep "\<[sh]d"
......
brw-rw----. 1 root disk 8, 16 Dec 6 10:33 sdb
brw-rw----. 1 root disk 8, 32 Dec 6 10:33 sdc
brw-rw----. 1 root disk 8, 48 Dec 6 10:33 sdd
|
btrfs命令简介:
btrfs本身是个文件系统名称,同时又是一个命令名,它是一个大的命令,其中有分成一些小命令,我们可以通过man btrfs看到, 常用的有:
1
2
3
4
5
6
7
8
9
10
11
12
|
subvolume <--子卷管理命令,可以 man btrfs-subvolume查看器详细信息;
Create /delete/list/manage btrfs subvolume.
See btrfs-subvolume(8) for details.
filesystem <--用来管理btrfs文件系统,可以 man btrfs-filesystem查看详细信息;
Manage a btrfs filesystem, including label setting /sync and so on.
See btrfs-filesystem(8) for details.
balance <--用来均衡各物理卷直接的数据量, man btrfs-balance;
Balance btrfs filesystem chunks across single or several devices.
See btrfs-balance(8) for details.
device <--管理物理设备的命令, man btrfs-device;
Manage devices managed by btrfs, including add /delete/scan and so on.
See btrfs-device(8) for details.
|
废话少说,先创建一个btrfs文件系统看看再说吧;创建btrfs文件应使用mkfs.btrfs命令;
1
2
3
4
5
6
7
8
|
[root@localhost ~] # mkfs.btrfs -L T_BTRFS /dev/sdb /dev/sdc /dev/sdd
Btrfs v3.16.2
See http: //btrfs .wiki.kernel.org for more information.
Turning ON incompat feature 'extref' : increased hardlink limit per file to 65536
adding device /dev/sdc id 2
adding device /dev/sdd id 3
fs created label T_BTRFS on /dev/sdb
nodesize 16384 leafsize 16384 sectorsize 4096 size 60.00GiB
|
注: -L 后指定的是文件系统的LABEL
查看btrfs的信息:
下面两条命令效果相同,所以“–all-devices”省去比较好
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@localhost ~] # btrfs filesystem show
Label: 'T_BTRFS' uuid: c99895c8-5b14-4276-80c7-ecf1c96f25c1
Total devices 3 FS bytes used 112.00KiB
devid 1 size 20.00GiB used 2.02GiB path /dev/sdb
devid 2 size 20.00GiB used 1.01GiB path /dev/sdc
devid 3 size 20.00GiB used 2.01GiB path /dev/sdd
Btrfs v3.16.2
[root@localhost ~] # btrfs filesystem show --all-devices
# show是个“btrfs filesystem”命令下的一个小命令,其实还有其他小命令,可以自行man查看;
Label: 'T_BTRFS' uuid: c99895c8-5b14-4276-80c7-ecf1c96f25c1
Total devices 3 FS bytes used 112.00KiB
devid 1 size 20.00GiB used 2.02GiB path /dev/sdb
devid 2 size 20.00GiB used 1.01GiB path /dev/sdc
devid 3 size 20.00GiB used 2.01GiB path /dev/sdd
Btrfs v3.16.2
|
可见T_BTRFS也有自己的UUID,我们可以通过查看任意一个装置的信息来查询T_BTRFS的UUID:
1
2
3
4
5
6
|
[root@localhost ~] # blkid /dev/sdd
/dev/sdd : LABEL= "T_BTRFS" UUID= "c99895c8-5b14-4276-80c7-ecf1c96f25c1" UUID_SUB="b73a6dfa-e5b8-4621
-b92e-9c8301b71da6 " TYPE=" btrfs"
[root@localhost ~] # blkid /dev/sdc
/dev/sdc : LABEL= "T_BTRFS" UUID= "c99895c8-5b14-4276-80c7-ecf1c96f25c1" UUID_SUB="1e96c869-f99d-461c
-8792-23bc0faa5ac4 " TYPE=" btrfs"
|
可见btrfs的任何一个底层设备都能作为btrfs文件系统的一个入口。
挂载文件系统有两种方式,一种是使用btrfs文件系统的LABEL,另一种是使用文件系统的任何一个底层设备:
1
2
3
|
[root@localhost ~] # mount /dev/sdc /mnt/TEST_BTRFS/
[root@localhost ~] # umount /mnt/TEST_BTRFS/
[root@localhost ~] # mount -L "T_BTRFS" /mnt/TEST_BTRFS/
|
此后的很多操作时需要一个挂载点(此处是/mnt/TEST_BTRFS/)作为一个参数传递到命令中去的,所以创建好btrfs文件系统后,挂载很有必要;
从T_BTRFS中移除一个设备:
使用的是btrfs device命令下的detect命令,其需要要移除的设备号及挂载点作为参数;
1
2
3
4
5
6
7
|
[root@localhost ~] # btrfs device delete /dev/sdd /mnt/TEST_BTRFS/
[root@localhost ~] # btrfs filesystem show
Label: 'T_BTRFS' uuid: c99895c8-5b14-4276-80c7-ecf1c96f25c1
Total devices 2 FS bytes used 192.00KiB
devid 1 size 20.00GiB used 308.00MiB path /dev/sdb
devid 2 size 20.00GiB used 288.00MiB path /dev/sdc
Btrfs v3.16.2
|
可见/dev/sdd已从T_BTRFS中移除;
同上,只是使用了add命令;
1
2
3
4
5
6
7
8
|
[root@localhost ~] # btrfs device add /dev/sdd /mnt/TEST_BTRFS/
[root@localhost ~] # btrfs filesystem show
Label: 'T_BTRFS' uuid: c99895c8-5b14-4276-80c7-ecf1c96f25c1
Total devices 3 FS bytes used 192.00KiB
devid 1 size 20.00GiB used 308.00MiB path /dev/sdb
devid 2 size 20.00GiB used 288.00MiB path /dev/sdc
devid 3 size 20.00GiB used 0.00 path /dev/sdd
Btrfs v3.16.2
|
在btrfs下的各设备间均衡数据的命令:
在各设备间均衡数据需要用到btrfs balance命令,其下有start,pause,cancel,resume,status小命令;
start命令用于开始操作,它的下面又有一些OPTION,比较有用的有:
1
2
3
4
5
|
-d[<filters>]
act on data chunks. See FILTERS section for details about <filters>.
-m[<filters>]
act on metadata chunks. See FILTERS section for details about <filters>.
<filters>见 man btrfs-balance说明;
|
这两个OPTION看用于修改btrfs文件系统的RAID级别;
pause,暂停,因为在设备间均衡数据比较消耗资源,消耗时间,所以有必要在合适的时候暂停操作;
cancel,取消;
resume,恢复操作;
status,查看均衡操作执行的状态;
先来看看start命令吧:
1
2
|
[root@localhost ~] # btrfs balance start /mnt/TEST_BTRFS/ <--注意传递给start的参数是挂载点
Done, had to relocate 5 out of 5 chunk
|
修改RAID级别:
1
2
|
[root@localhost ~] # btrfs balance start -mconvert=raid5 -dconvert=raid5 /mnt/TEST_BTRFS/
Done, had to relocate 3 out of 3 chunks
|
-mconvert=raid5,修改元数据的存储方式为raid5
-dconvert=raid5,修改数据的存储方式为raid5
注意大小写及参数。
创建子卷:
1
2
|
[root@localhost ~] # btrfs subvolume create /mnt/TEST_BTRFS/logs
Create subvolume '/mnt/TEST_BTRFS/logs'
|
创建子卷就好比在父卷下创建一个目录;
查看子卷信息:
1
2
|
[root@localhost ~] # btrfs subvolume list /mnt/TEST_BTRFS/
ID 263 gen 64 top level 5 path logs
|
263为subvolid,挂载时有用;
挂载子卷:
若想使用子卷,须umount父卷,因为要么挂载子卷要么挂载父卷,只能选其一;
1
2
|
[root@localhost ~] # umount /mnt/TEST_BTRFS/
[root@localhost ~] # mount -o subvol=logs /dev/sdc /mnt/logs/
|
注意:挂载子卷须使用mount的-o选项的subvol,且参数是btrfs的任意底层设备和挂载目录名;
也可以使用subvolid:
1
|
[root@localhost ~] # mount -o subvolid=263 /dev/sdc /mnt/logs/
|
若在子卷中写入数据,当把子卷卸载,把父卷挂载之后,也可以通过“父卷/子卷目录”的方式访问原来存于子卷中的数据:
1
2
3
4
5
6
7
8
|
[root@localhost ~] # cp /etc/fstab /mnt/logs/
[root@localhost ~] # ls /mnt/logs/
fstab
[root@localhost ~] # umount /mnt/logs/
[root@localhost ~] # mount -L "T_BTRFS" /mnt/TEST_BTRFS/
[root@localhost ~] # ls -l /mnt/TEST_BTRFS/logs/
total 4
-rw-r--r--. 1 root root 747 Dec 6 12:19 fstab
|
使用快照:
快照相当于创建子卷,但是它是另一个子卷的副本;
快照使用的命令是:
btrfs subvoloume snapshot /PATH/OT/SOURCE /PATH/TO/DEST
可以指定-r选项,是其只读;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
[root@localhost ~] # btrfs subvolume snapshot /mnt/TEST_BTRFS/logs /mnt/TEST_BTRFS/logs_bak
COMMENTS: 创建快照;
Create a snapshot of '/mnt/TEST_BTRFS/logs' in '/mnt/TEST_BTRFS/logs_bak'
[root@localhost ~] # btrfs subvolume list /mnt/TEST_BTRFS/
ID 263 gen 68 top level 5 path logs COMMENTS: 查看所有子卷,快照属于子卷的一类;
ID 264 gen 68 top level 5 path logs_bak
[root@localhost ~] # mkdir /mnt/logs_bak
[root@localhost ~] # umount /mnt/TEST_BTRFS/
[root@localhost ~] # mount -o subvol=logs /dev/sdc /mnt/logs COMMENTS: 使用子卷名挂载;
[root@localhost ~] # mount -o subvolid=264 /dev/sdc /mnt/logs_bak/ COMMENTS:使用子卷ID挂载;
[root@localhost ~] # ls -l /mnt/logs
total 4
-rw-r--r--. 1 root root 747 Dec 6 12:19 fstab
[root@localhost ~] # ls -l /mnt/logs_bak/ COMMENTS: 快照中存在同样的文件;
total 4
-rw-r--r--. 1 root root 747 Dec 6 12:19 fstab
[root@localhost ~] # vim /mnt/logs/fstab
[root@localhost ~] # cat /mnt/logs/fstab
#
# /etc/fstab
# Created by anaconda on Sat Dec 5 19:08:23 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=5a0ee49d-e4de-49c9-9ea2-ea67aad90822 / ext4 defaults 1 1
UUID=3ca1f6c5-90d7-4b6e-bdf1-6417bf043869 /boot ext4 defaults 1 2
UUID=edfb83c3-b202-462c-a2b6-6721fefceee1 /home ext4 defaults 1 2
/dev/mapper/centos-usr /usr ext4 defaults 1 2
/dev/mapper/centos-var /var ext4 defaults 1 2
UUID=b188dad5-83fa-4edb-b044-3887fa66b838 swap swap defaults 0 0
NEW LINE HOW ARE YOU? <-- COMMENTS:修改原文件,添加新行;
[root@localhost ~] # cat /mnt/logs_bak/fstab
#
# /etc/fstab
# Created by anaconda on Sat Dec 5 19:08:23 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=5a0ee49d-e4de-49c9-9ea2-ea67aad90822 / ext4 defaults 1 1
UUID=3ca1f6c5-90d7-4b6e-bdf1-6417bf043869 /boot ext4 defaults 1 2
UUID=edfb83c3-b202-462c-a2b6-6721fefceee1 /home ext4 defaults 1 2
/dev/mapper/centos-usr /usr ext4 defaults 1 2
/dev/mapper/centos-var /var ext4 defaults 1 2
UUID=b188dad5-83fa-4edb-b044-3887fa66b838 swap swap defaults 0 0
COMMENTS: 快照中的文件没有变化。
|
我们还能在一般的文件系统和btrfs文件系统之间转换:
btrfs-convert /dev/sdd1 COMMENTS: 一般文件系统转换成btrfs文件系统;
btrfs-convert -r /dev/sdd1 COMMENTS:btrfs文件系统转换回一般文件系统。
btrfs更详细的用法请man吧^_^。
btrfs管理及应用相关推荐
- 新一代 Linux 文件系统 btrfs 简介
btrfs 的特性和使用 Btrfs 被称为是下一代 Linux 文件系统.近年来 ext2/3 遇到越来越多的扩展性问题,在期待 ext4 的同时,人们发现了 btrfs,据说它采用了很多先进的文件 ...
- 资料收集新一代 Linux 文件系统 btrfs 简介
来自: http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext ...
- 新一代 Linux 文件系统 btrfs 简介-btrfs 的特性和使用
Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统.近年来 ext2/3 暴露出了一些扩 ...
- btrfs的介绍与使用
源文献:http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pcon 简单看了一下这篇文章,对其中一些机制的实现还 ...
- 用好了下一代文件系统 Btrfs 这些新特性,从此数据安全乐无忧!
对于大部分文件系统来说,在磁盘上创建好文件系统,然后再挂载到系统中去就完事了.但对于 Btrfs 来说,除了在格式化和挂载的时候指定不同的参数外,还支持很多其他的功能.比如:管理多块硬盘.支持 LVM ...
- 文件系统系列专题之 Btrfs
一.Btrfs概述 Btrfs(B-tree 文件系统,通常念成 Butter FS,Better FS或B-tree FS),一种支持写入时复制(COW)的文件系统,运行在 Linux 操作系统上. ...
- btrfs 基础知识
Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统.近年来 ext2/3 暴露出了一些扩 ...
- Linux Btrfs 文件系统
1.Btrfs文件系统简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用ext2/3,ext文件系统以其卓越的稳定性成为了事实上的Linux标准文件系统.近年来ext2/3暴露出了一些扩展 ...
- Linux文件系统概览
一.历史与ext4文件系统 MINIX文件系统 MINIX系统的文件系统 1987年发布(印刷版),教学目的 最多能处理 14 个字符的文件名,并且只能处理 64MB 的存储空间 ext文件系统 19 ...
- Finding Crash-Consistency Bugs with Bounded Black-Box Crash Testing
文章目录 Abstract 介绍 3 学习崩溃一致性错误 4 B3有界黑盒崩溃测试 4.1 概述 4.2 B3中使用的边界 4.3 细粒度的正确性检查 4.4 限制 5 CrashMonkey and ...
最新文章
- Hadoop2.6.0伪分布环境搭建
- 盘点 | 近期活动信息都在这里啦~
- 公司 表名规则 TN基础表 TR关系表 TL定义表
- 数据结构——排序算法(含动态图片)
- 构建Windows Server 2008虚拟实验室
- 【Unity3D基础】让物体动起来②--UGUI鼠标点击逐帧移动
- TotoiseSVN的上手教程
- python刷题技巧_【python刷题】分治法
- mysql第二章_第二章 初识MySQL
- 【OpenCV】OpenCV实战从入门到精通之 -- 显示创建Mat对象的七种方法
- 《R语言机器学习:实用案例分析》——1.2节R的数据结构
- java 执行 cd_java执行cd命令
- SSM-水果商城-pom.xml-学习-3
- 飞客蠕虫专杀工具_案例-飞客蠕虫攻击
- 大物期末复习(知识点公式总结+错题分析)
- 去掉 win7 “测试模式 windows7 内部版本7601” 字样
- c语言编译是繁体字,cconv实现简体/繁体转换
- Gauntlet风险评级上线: DeFi杠杆率多高?会不会崩盘?
- 注意啦,还没有支持64位系统的App开发者,务必在12月底前完成这件事
- python开发要学哪些内容_Python开发工程师需要学习哪些内容?