btrfs 使用方法
http://blog.chinaunix.net/uid-9185047-id-445141.html
上一篇介绍完btrfs文件系统 现在来说一下简单的使用
创建文件系统
mkfs.btrfs 命令建立一个 btrfs 格式的文件系统。可以用如下命令在设备 sda5 上建立一个 btrfs 文件系统,并将其挂载到 /btrfsdisk 目录下:
#mkfs.btrfs /dev/sda5#mkdir /btrfsdisk#mount – t btrfs /dev/sda5 /btrfsdisk
这样一个 Btrfs 就在设备 sda5 上建立好了。值得一提的是在这种缺省情况下,即使只有一个设备,Btrfs 也会对 metadata 进行冗余保护。如果有多个设备,那么您可以在创建文件系统的时候进行 RAID 设置。详细信息请参见后续的介绍。
这里介绍其他几个 mkfs.btrfs 的参数。
Nodesize 和 leafsize 用来设定 btrfs 内部 BTree 节点的大小,缺省为一个 page 大小。但用户也可以使用更大的节点,以便增加 fanout,减小树的高度,当然这只适合非常大的文件系统。
Alloc-start 参数用来指定文件系统在磁盘设备上的起始地址。这使得用户可以方便的预留磁盘前面的一些特殊空间。
Byte-count 参数设定文件系统的大小,用户可以只使用设备的一部分空间,当空间不足时再增加文件系统大小。
修改文件系统的大小
当文件系统建立好之后,您可以修改文件系统的大小。 /dev/sda5 挂载到了 /btrfsdisk 下,大小为 800M 。假如您希望只使用其中的 500M,则需要减小当前文件系统的大小,这可以通过如下命令实现:
#dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 101086 19000 76867 20% /boot/dev/sda5 811248 32 811216 1% /btrfsdisk#btrfsctl – r -300M /btrfsdisk#dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 101086 19000 76867 20% /boot/dev/sda5 504148 32 504106 1% /btrfsdisk
同样的,您可以使用 btrfsctl 命令增加文件系统的大小。
创建 Snapshot
下面的例子中,创建快照 snap1 时系统存在 2 个文件。创建快照之后,对 test1 的内容进行修改。再回到 snap1,打开 test1 文件,可以看到 test1 的内容依旧是之前的内容。
#ls /btrfsdisktest1 test2#vi test1This is a test#btrfsctl – s snap1 /btrfsdisk#vi test1Test1 is modified#cd /btrfsdisk/snap1#cat test1This is a test
可以从上面的例子看到,快照 snap1 保存的内容不会被后续的写操作所改变。
创建 subvolume
使用 btrfs 命令,用户可以方便的建立 subvolume 。假设 /btrfsdisk 已经挂载到了 btrfs 文件系统,则用户可以在这个文件系统内创建新的 subvolume 。比如建立一个 /sub1 的 subvolume,并将 sub1 挂载到 /mnt/test 下:
#mkdir /mnt/test#btrfsctl – S sub1 /btrfsdisk#mount – t btrfs – o subvol=sub1 /dev/sda5 /mnt/test
Subvolme 可以方便管理员在文件系统上创建不同用途的子文件系统,并对其进行一些特殊的配置,比如有些目录下的文件关注节约磁盘空间,因此需要打开压缩,或者配置不同的 RAID 策略等。目前 btrfs 尚处于开发阶段,创建的 subvolme 和 snapshot 还无法删除。此外针对 subvolume 的磁盘 quota 功能也未能实现。但随着 btrfs 的不断成熟,这些功能必然将会进一步完善。
创建 RAID
mkfs 的时候,可以指定多个设备,并配置 RAID 。下面的命令演示了如何使用 mkfs.btrfs 配置 RAID1 。 Sda6 和 sda7 可以配置为 RAID1,即 mirror 。用户可以选择将数据配置为 RAID1,也可以选择将元数据配置为 RAID1 。
将数据配置为 RAID1,可以使用 mkfs.btrfs 的 -d 参数。如下所示:
#mkfs.btrfs – d raid1 /dev/sda6 /dev/sda7#mount – t btrfs /dev/sda6 /btrfsdisk
添加新设备
当设备的空间快被使用完的时候,用户可以使用 btrfs-vol 命令为文件系统添加新的磁盘设备,从而增加存储空间。下面的命令向 /btrfsdisk 文件系统增加一个设备 /sda8
#btrfs-vol – a /dev/sda8 /btrfsdisk
在最新的Debian下变成了btrfs device add 了。
SSD 支持
用户可以使用 mount 参数打开 btrfs 针对 SSD 的优化。命令如下:
#mount – t btrfs – o SSD /dev/sda5 /btrfsdisk
开启压缩功能
用户可以使用 mount 参数打开压缩功能。命令如下:
#mount – t btrfs – o compress /dev/sda5 /btrfsdisk
同步文件系统
为了提高效率,btrfs 的 IO 操作由一些内核线程异步处理。这使得用户对文件的操作并不会立即反应到磁盘上。您可以做一个实验,在 btrfs 上创建一个文件后,稍等 5 到 10 秒将系统电源切断,再次重启后,新建的文件并没有出现。
对于多数应用这并不是问题,但有些时候用户希望 IO 操作立即执行,此时就需要对文件系统进行同步。下面的 btrfs 命令用来同步文件系统:
#btrfsctl – c /btrfsdisk
Debug 功能
Btrfs 提供了一定的 debug 功能,对于想了解 Btrfs 内部实现原理的读者,debug 将是您最喜欢的工具。这里简单介绍一下 debug 功能的命令使用。
下面的命令将设备 sda5 上的 btrfs 文件系统中的元数据打印到屏幕上。
#btrfs-debug-tree /dev/sda5
btrfs 使用方法相关推荐
- 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群
作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...
- Java面试题大全2021版
一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化
优化挂载参数 在 Linux 中挂载 SSD 上的 btrfs,可以采用各种参数进行优化: # UUID=/btrfs defaults,ssd,discard,noatime,compress=lz ...
- 新一代 Linux 文件系统 btrfs 简介
btrfs 的特性和使用 Btrfs 被称为是下一代 Linux 文件系统.近年来 ext2/3 遇到越来越多的扩展性问题,在期待 ext4 的同时,人们发现了 btrfs,据说它采用了很多先进的文件 ...
- Linux 中 7 个判断文件系统类型的方法
文件通过文件系统在磁盘及分区上命名.存储.检索以及更新,文件系统是在磁盘上组织文件的方式. 文件系统分为两个部分:用户数据和元数据(文件名.创建时间.修改时间.大小以及目录层次结构中的位置等). 在本 ...
- 资料收集新一代 Linux 文件系统 btrfs 简介
来自: http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext ...
- linux5.9安装教程,Linux内核5.9的最重要功能及安装方法
原标题:Linux内核5.9的最重要功能及安装方法 Linux内核5.9带来了吸引数据中心管理员的诸多性能提升.本文作者着重介绍了改进之处,并介绍了如何安装主线内核. 与5.8一样,Linux内核5. ...
- linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法
文件通过文件系统在磁盘及分区上命名.存储.检索以及更新,文件系统是在磁盘上组织文件的方式. 文件系统分为两个部分:用户数据和元数据(文件名.创建时间.修改时间.大小以及目录层次结构中的位置等). 在本 ...
- 大数据环境下的存储系统构建:挑战、方法和趋势
大数据环境下的存储系统构建:挑战.方法和趋势 陈游旻, 李飞, 舒继武 清华大学计算机科学与技术系,北京 100084 摘要:互联网规模的迅速扩展促使全球数据总量呈现爆炸式的增长.物联网.电子商务等新 ...
最新文章
- POJ-1041 John's trip
- IOS7原生API进行二维码条形码的扫描
- java jersey使用总结_jersey使用指南
- Django+JWT实现Token认证
- java学习笔记十三
- Kubernetes与Docker基本概念与常用命令对照
- 使用 jQuery Mobile 与 HTML5 开发 Web App (十五) —— jQuery Mobile 与响应式
- BEIT:基于图像重建进行预训练!微软提出BEIT,Top-1准确率达86.3%!代码已开源!...
- 同质异质网络——(F(fraud) A(Analytics) UDPSNT(Wylie_2015))
- Html5 JumpStart学习笔记2:CSS Selectors and Style Properties
- 2017web前端实习生面试总结 - 360奇舞团 京东商户物流
- jdbc连接带密码的access数据库
- 银行登录页面html代码,银行管理系统(带界面)
- 软件架构师的12项修炼[2]——关系技能修炼(2)——领导力、政治
- 禁止使用搜狗浏览器打开QQ邮箱,更换成其他邮箱
- 10个优秀的Golang开源库类,武装生产力
- 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)
- 抓包 把笔记本改造成无线路由器 —— 手机抓包牛刀小试
- Unity3D空战游戏模板 Air Warfare Pro
- 如何解决用户出差,脱域的问题
热门文章
- STM32F103学习笔记(1)——stlink和miniusb下载两种方式
- python人机对战小游戏
- eclipse集成php插件
- qiuzitao深度学习之PyTorch实战(六)
- sofa协议服务器,撸了几天的sofa-tracer之后,我悟了
- 朱其罡:推进主流芯片代码进主干,完善OpenHarmony芯片生态支撑
- 易语言从c盘开始搜索文件,易语言全盘查找指定文件并返回地址
- [译] 如何在六个月或更短的时间内成为 DevOps 工程师,第一部分 :基础
- Python生成Code128C条形码实现——轻松打造高效标识码!
- HT7017应用笔记