zoukankan      html  css  js  c++  java
  • 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,则需要减小当前文件系统的大小,这可以通过如下命令实现:

    #df
     Filesystem   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
     #df
     Filesystem  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 /btrfsdisk
     test1 test2
     #vi test1
     This is a test
     #btrfsctl – s snap1 /btrfsdisk
     #vi test1
     Test1 is modified
     #cd /btrfsdisk/snap1
     #cat test1
     This 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

    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
  • 相关阅读:
    [Effective Java读书笔记] 第二章 创建和销毁对象(1~7)
    [Guava官方文档翻译] 5. Guava的Object公共方法 (Common Object Utilities Explained)
    [Guava官方文档翻译] 4. 使用Guava Ordering排序 (Ordering Explained)
    iOS正则表达式
    ios UIKit动力
    iOS8 UISearchViewController搜索功能讲解
    APP被苹果APPStore拒绝的各种原因
    iOS tableViewCell plane格式下,接近section边缘不显示分割线却被复用解决办法
    企业证书APP发布流程
    iOS越狱包
  • 原文地址:https://www.cnblogs.com/sysk/p/5230348.html
Copyright © 2011-2022 走看看