1. 程式人生 > >btrfs及壓縮工具

btrfs及壓縮工具

btrfs raid subvolum

btrfs及壓縮工具

part1.btrfs文件系統介紹

Btrfs(B-tree 文件系統,通常念成 Butter FS,Better FS或B-tree FS),一種支持寫入時復制(COW)的文件系統,運行在 Linux 操作系統上,采用 GPL 授權。Oracle 於 2007 年對外宣布這項計劃,並發布源代碼,2014 年 8 月發布穩定版。目標是取代 Linux 當時主流的 ext3 文件系統,擺脫 ext3 的一些限制,特別是單文件大小,文件系統總大小和文件校驗,並加入 ext3 不支持的一些功能,比如可寫快照(writable snapshots)、快照的快照(snapshots of snapshots)、內建磁盤陣列(RAID),以及子卷(subvolumes)。Btrfs 也宣稱專註於容錯、修復及易於管理。

可以這樣理解,btrfs文件系統本來是打算替換掉ext3,4文件系統的,但是它本身是由oracle研發的,所以呢,redhat不樂意,就引用了unix開源給linux的xfs文件系統,來抗衡oralce對linux的侵入。

核心特性:

多物理卷支持,可以同時將sda,sdb等硬盤格式化為文件系統,支持raid,以及聯機“添加”“移除”“修改”;

寫時復制更新機制(CoW):復制、更新及替換指針,而非“就地”更新;數據及元數校驗碼checksum,子卷:sub_volume;快照:支持快照的快照,透明壓縮。

文件系統的創建

mkfs.btrfs

-L 'LABEL' 指明文件系統的LABEL

-d <type>:raid0 raid1 raid5,raid10 single 指定文件系統的級別

-m <profile>raid0 raid1 raid5,raid10 single dup

-O <feature> 格式化時就需要指明的特性

-O list-all 列出支持的所有feature

屬性查看

btrfs filesystem show

btrfs --help可以查看btrfs的幫助

掛載文件系統

mount -t btrfs /dev/sdb MOUNT_POINT

指定任何一個設備即可,再指明掛載點

透明壓縮機制

mount -o compress -{lzo|zlib} DEVICE MOUNT_POINT

查看btrfs諸多選項

[root@ad1 ~]# mkfs.btrfs -O list-all


查看btrfs的幫助

[root@ad1 ~]# man btrfs-filesystem


part2.創建btrfs文件系統

創建btrfs文件系統,指明卷標為mydata,使用db,dc,dd三塊磁盤

[root@ad1 ~]# mkfs.btrfs -L mydata /dev/sdb /dev/sdc /dev/sdd


顯示B-Tree文件系統

屬性查看

[root@ad1 ~]# btrfs filesystem show /dev/sdb


blkid device 也可以用來查看設備的詳細信息的

[root@ad1 ~]# blkid /dev/sdb /dev/sdc /dev/sdd


創建目錄並掛載

[root@ad1 ~]# mkdir /mydata
[root@ad1 ~]# mount -t btrfs /dev/sdb /mydata
[root@ad1 ~]# mount
/dev/sdb on /mydata type btrfs (rw,relatime,seclabel,space_cache,subvolid=5,subvol=/)


將數據壓縮之後進行存放,這種行為對用戶來講是透明的,所以用戶無法感知

[root@ad1 ~]# mount -o compress=lzo /dev/sdb /mydata


將文件系統減少並查看

[root@ad1 ~]# btrfs filesystem resize -10G  /mydata
[root@ad1 ~]# btrfs filesystem df /mydata


給文件系統擴展一個設備,並查看

[root@ad1 ~]# btrfs device add /dev/sde /mydata
[root@ad1 ~]# btrfs filesystem show /mydata


如何將原先盤的數據均衡到新加設備上

開始數據均衡

[root@ad1 ~]# btrfs balance start  /mydata


移除sde硬盤,並查看

[root@ad1 ~]# btrfs device  delete /dev/sde /mydata
[root@ad1 ~]# btrfs filesystem show /mydata


修改數據的raid級別

[root@ad1 ~]# btrfs balance start -mconvert=raid5 /mydata


part3.btrfs文件系統還支持子卷

創建子卷

[root@ad1 mydata]# btrfs subvolume create /mydata/logs
[root@ad1 mydata]# btrfs subvolume create /mydata/cache


查看子卷

[root@ad1 mydata]# btrfs subvolume list /mydata
ID 264 gen 66 top level 5 path logs
ID 265 gen 67 top level 5 path cache


掛載卷時,如果掛載的是頂級卷,那麽所有的卷都會自動掛載

[root@ad1 ~]# umount /mydata                       ##卸載文件系統
[root@ad1 ~]# mount -o subvol=logs /dev/sdb /mnt   ##掛載子卷


顯示某個子卷文件系統的詳細信息

[root@ad1 ~]# btrfs subvolume show /mnt
/mnt
        Name:                   logs
        UUID:                   1fe8d9d3-0033-0941-a14a-18036ea187fe
        Parent UUID:            -
        Received UUID:          -
        Creation time:          2018-02-27 20:17:19 -0500
        Subvolume ID:           264
        Generation:             66
        Gen at creation:        66
        Parent ID:              5
        Top level ID:           5
        Flags:                  -
        Snapshot(s):


拷貝文件到/mnt下,然後卸載子卷,掛載btrfs文件系統至/mydata,查看數據是否存在

[root@ad1 ~]# cp /var/log/messages  /mnt
[root@ad1 ~]# umount /mnt
[root@ad1 ~]# mount /dev/sdb /mydata
[root@ad1 ~]# ls /mydata/logs
messages


可以看到,btrfs文件系統中存在了此數據

我們還可以使用卷ID的形式掛載子卷

[root@ad1 ~]# mount /dev/sdb /mydata
[root@ad1 ~]# btrfs subvolume list /mydata
ID 264 gen 69 top level 5 path logs
ID 265 gen 67 top level 5 path cache
[root@ad1 ~]# mount -o subvolid=265 /dev/sdb /mnt   ##卷ID形式掛載子卷
[root@ad1 ~]# cd /mnt


子卷的刪除,並查看

[root@ad1 ~]# btrfs subvolume delete /mydata/logs
Delete subvolume (no-commit): '/mydata/logs'
[root@ad1 ~]#  btrfs subvolume list /mydata
ID 265 gen 67 top level 5 path cache



btrfs及壓縮工具