Btrfs文件系統的管理

BTRFS文件系統

核心特性

  • 支持將多個底層物理設備組合成同一個設備使用,即多物理卷支持。btrfs可由多個底層物理卷組成:支持RAID,以連擊“添加”、“移除”、“修改”

  • 寫時復制,在修改文件時,先將文件復制一份,然后在新文件上進行修改,最后將文件名的指針指向新文件,所以原文件還是存在的。

  • 數據及元數據校驗碼:checksum

  • 子卷:在一個卷上創建子卷,每一個卷都可單獨使用。

  • 快照:獨特之處在于它支持快照的快照。

  • 透明壓縮:在存放文件是會自動壓縮,在查看文件是會自動解壓縮,但缺點是會消耗更多的CPU的時鐘周期

btrfs的命令的特點是將多個命令結合到一個命令用短選項實現。

文件系統創建

只有在centos7中才能使用mkfs.btrfs命令來創建

-L ’LABEL' : 指明卷標
-b:指明數據是如何跨設備存放。single,raid0,1,5,6,10
-m:指明元數據是如何跨設備存放.single,raid0,1,5,6,10
#所以我們可以知道btrfs自身就支持RAID。

注意:在一塊磁盤上組合不同分區除了將多個分區組合成一個大分區并無什么其余的意義,所以建議使用不同的磁盤做btrfs。

[root@localhost ~]# mkfs.btrfs -L mydata /dev/sdb /dev/sdc
# -L :指明卷標為mydata
btrfs-progs v3.19.1
See http://btrfs.wiki.kernel.org for more information.

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
Turning ON incompat feature 'skinny-metadata': reduced-size metadata extent refs
adding device /dev/sdc id 2
fs created label mydata on /dev/sdb
    nodesize 16384 leafsize 16384 sectorsize 4096 size 40.00GiB
[root@localhost ~]# btrfs filesystem show
Label: 'centos'  uuid: 6a9ca299-dcff-4702-9af7-c2af565bd318
    Total devices 1 FS bytes used 4.06GiB
    devid    1 size 38.00GiB used 6.04GiB path /dev/sda1

Label: 'mydata'  uuid: 6fbf4564-23cd-467e-b8e8-6b6e93567987
    Total devices 2 FS bytes used 112.00KiB
    devid    1 size 20.00GiB used 2.03GiB path /dev/sdb
    devid    2 size 20.00GiB used 2.01GiB path /dev/sdc

btrfs-progs v3.19.1

屬性查看:

[root@localhost ~]# btrfs filesystem show /dev/sdb
#查看指定文件系統的屬信息
[root@localhost ~]# btrfs filesystem show --all-devices
#查看所有文件系統的信息
[root@localhost ~]# btrfs filesystem show --mounted
#查看以掛載的文件系統的信息

查看卷標:

[root@localhost ~]# btrfs filesystem label /dev/sdb

掛載文件系統:

[root@localhost ~]# mount -t btrfs /dev/sdb /mydata
[root@localhost ~]# mount -o compress=lzo /dev/sdb /mydata/
#使用壓縮算法存放文件

調整文件系統大小

[root@localhost ~]# btrfs filesystem resize max /mydata/
#將文件系統大小調整至最大,也可使用+#G指明增加多大空間,但增加的孔家不能查過最大空間大小

[root@localhost ~]# btrfs filesystem resize -17G /mydata/
Resize '/mydata/' of '-17G'
[root@localhost ~]# btrfs filesystem resize -18G /mydata/
Resize '/mydata/' of '-18G'
ERROR: unable to resize '/mydata/' - No space left on device

[root@localhost ~]# btrfs filesystem show /mydata   
Total devices 2 FS bytes used 904.00KiB
devid    1 size 3.00GiB used 2.02GiB path /dev/sdb
devid    2 size 20.00GiB used 2.01GiB path /dev/sdc

#在這里我們可以看到在20G磁盤空間的情況下我們最多減小17G的空間大小,并且是作用在一個磁盤上。所以在此猜測,在每一塊磁盤上都以一段空間存放其固有的信息。

添加磁盤

[root@localhost ~]# btrfs device add /dev/sdd /mydata
[root@localhost ~]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         60G   18M   56G   1% /mydata
#此時文件系統大小以增大了20G

均衡文件系統

[root@localhost ~]# btrfs balance start /mydata/
Done, had to relocate 5 out of 5 chunks
#將文件均衡進新增加的磁盤中

改變元數據級別的組織形式: [root@localhost ~]# btrfs balance start -mconvert=raid5 /mydata Done, had to relocate 2 out of 3 chunks #注意:要有足夠磁盤數量。

拆除硬盤:btrfs可聯機拆除磁盤,它會自動在拆除是現將要拆除的磁盤中的文件轉移至其他磁盤中,所以不會損壞數據。

[root@localhost ~]# btrfs device delete /dev/sdd /mydata
[root@localhost ~]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         40G   18M   40G   1% /mydata
#此時文件系統已經減小了20G了。

創建子卷:

[root@localhost ~]# btrfs subvolume create /mydata/logs
Create subvolume '/mydata/logs'
[root@localhost ~]# btrfs subvolume list /mydata/
ID 263 gen 86 top level 5 path logs

掛載父卷時,子卷會自動掛載。現在如果只想掛載一個子卷。

[root@localhost ~]# mount -o subvol=logs /dev/sdc /mnt
#這是根據子卷名來掛載子卷。  我們亦可以基于子卷ID來掛載子卷。
[root@localhost ~]# btrfs subvolume list /mydata
ID 263 gen 91 top level 5 path logs
#獲取子卷ID為263
[root@localhost ~]# mount -o subvolid=263 /dev/sdc /mnt
#利用子卷ID來掛載子卷。

刪除子卷

[root@localhost ~]# btrfs subvolume delete /mydata/logs

創建子卷的快照:

子卷的快照必須要與子卷在同一父卷中。

[root@localhost ~]# btrfs subvolume snapshot /mydata/logs /mydata/logs_snopshot

對文件系統內的單個文件做快照:

[root@localhost mydata]# cp --reflink grub2.cfg grub2.cfg.2

實現btrfs和ext4文件系統之間的轉換

[root@localhost ~]# btrfs-convert /dev/sdd1
#將ext4文件系統轉換成btrfs文件系統
[root@localhost ~]# btrfs-convert -r /dev/sdd1
#將btrfs文件系統轉換成ext4文件系統

原創文章,作者:21期-揚州-藍,如若轉載,請注明出處:http://www.www58058.com/24281

(0)
21期-揚州-藍21期-揚州-藍
上一篇 2016-07-16
下一篇 2016-07-16

相關推薦

  • 獲取linux命令幫助的方法

    1.help command 適用于內建命令。 2.command -hlep 適用于外部命令。 3.info command 適用于外部命令。 4.man command 適用外部命令和內建命令。     man幫助命令分章節             centos7:man 1…

    Linux干貨 2017-08-19
  • sed–?用于篩選和轉換文本的流編輯器

    sed?用于篩選和轉換文本的流編輯器命令格式:sed [OPTION] {script} file選項 ? ? ? -n, –quiet, –silent 抑制模式空間的自動打印?? echo -e “abc\ndef” | sed ‘p’ #輸出 abc # abc # def # d…

    Linux干貨 2017-08-15
  • Redis基于Sentinel哨兵高可用方案

    下載最新redis版本,當前最新版本為  2.8.19  2014-12-30 安裝redis 首頁地址:http://redis.io/ 最新穩定版下載地址: http://download.redis.io/releases/redis-2.8.19.tar.gz # tar -xvf redis-2.8.19.tar.gz # cd…

    2015-03-03
  • 做有高薪有逼格的運維工程師,不會Linux是沒有前途的!

    作為互聯網的幕后英雄,運維工程師長期隱匿在大眾認知范圍之外,關于運維的討論仍舊是一片無人涉足的荒漠。在某知名行業研究調查結果中,非互聯網從業者對于運維相關問題的回復有三個高頻詞匯是:不知道、沒聽過、網管。當調查人員告訴他們科幻電影中展示黑客高超技巧時的命令行界面正是大多數運維工程師每日工作環境時,他們發出極其一致的驚嘆。 相對于普羅大眾的一無所知,技術圈對運…

    2017-09-08
  • 軟件包管理

    軟件包管理 在linux中有人多的軟件使用,比如我們使用的ifconfig,fdisk,btrfs文件系統等。可能這些軟件在你原有的linux系統中并不存在,那么我們如何去使用這些工具呢。我們知道windows在需要軟件的時候需要安裝,當然對于linux系統一樣需要安裝。在linux下常用的安裝工具我們使用的是rpm程序包(當然我們這邊是針對CentOS而言…

    Linux干貨 2016-08-19
  • Linux啟動和內核管理

    Linux啟動和內核管理   CentOS 5和6的啟動流程服務管理Grub管理自制Linux啟動排錯編譯安裝內核   Linux組成Linux: kernel+rootfskernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能rootfs:程序和glibc庫:函數集合, function, 調用接口(頭文件負責描述)…

    Linux干貨 2017-09-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-16 22:43

    寫的很好,排版也很漂亮,加油

欧美性久久久久