一、LVS和btrfs
btrfs自己就支援動态擴充,是以不必建立lvm
1.LVS
pv-->vg--->lv
PE:由PE指定,劃分為lv後,變為LE
LV中的PE叫做LE
快照卷的大小:取決于快照要存活多長時間
dd:複制
2.Btrfs (B-tree,Butter FS,Better FS),GPL //oracle 2007年後開始研發,最主要的特性:支援寫時複制
//BTREE穩定性不夠,支援快照,可以對快照進行快照
//可以對單個檔案進行快照
//主要是用來取代ext3,4,Centos上出現了另外一種方案,xfs
//xfs以前是unix上使用的,後期開源了,支援
//ext檔案系統的反删除功能不是特别好
//可以實作組織多個硬碟為一個
核心特性:
1.支援将多個實體裝置組織成一個裝置來使用,多實體卷支援,支援raid。以聯機“添加”,“移除”,“修改“
2.寫時複制更新機制(coW)
//對檔案進行修改的時候,複制一份,對附件進行操作,完成後,把檔案名的指針指向附件,原有資料還在,便于恢複
//複制更新,及替換指針,而非就地更新源檔案
3.資料和中繼資料校驗機制;//是否修複,以及自動修複,保證資料的安全性
4.子卷:sub_volume,每個子卷可以單獨使用和挂載
5.快照:子卷的一個副本而已,非完全複制,基于coW機制,
支援快照的快照:類似于增量的快照
6.透明壓縮,存儲的資料自動壓縮,在使用的時候,自動解壓縮
但是會消耗更多的cpu時鐘周期 //用時間換取空間
二、使用
btrfs//現在大多的指令都使用,很多子指令,和主指令結合使用
//例如lvcreate,lvdisplay 等
btrfs-convert :将ext動态轉換為btrfs,也能降級為ext
btrfsck :自動檢測
btrfs --help //幫助
1.mkfs.btrfs
-L 卷标
-m {raid0,1,5,6,10,single}中繼資料如何存放
//中繼資料是如何跨多裝置存放的
-d data資料是如何跨多裝置存放的
//raid0,1,5,6,10,single
-O 指定特性,在格式化時啟用的特性
mkfs.btrfs -O list-all //檢視所有特性
-U 指定uuid
//可以使用多塊硬碟直接組織成btrfs檔案系統
關閉虛拟機,添加3塊硬碟,都是20G,sdb,c,d
mkfs.btrfs -L mydata /dev/sdb /dev/sdc
btrfs filesystem show //
blkid /dev/sd{b,c} //UUID是一樣的,但是UUID_SUB子卷UUID是不一樣的
man btrfs //btrfs有很多子指令,
btrfs filesystem show --all-device
btrfs filesystem show --mounted
2.btrfs filesystem :
df //檢視空間挂載空間使用情況,-k,m,g,h
show --mounted/--all-devices
sync //同步到磁盤
defragment //碎片整理,為...整理碎片
resize //調整代銷
label //指定或者顯示卷标
btrfs filesystem label /dev/sdb
//建立btrfs之後,就可以直接挂載
//mount -t btrfs /dev/sdb /test ,可以不指定fs,隻需要指定其中一個成員即可
//umount /dev/sdb
2.1 resize
btrfs filesystem resize -10G /mydata/ //直接減小,聯機進行,已經挂載,df 檢視
btrfs filesystem resize +5G /mydata
btrfs filesystem df -h /mydata //檢視
btrfs filesystem resize max /mydata/ //使用所有可用空間
3.透明壓縮機制
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
mount -o compress=lzo /dev/sdb /mydata
4.btrfs device
add //自動執行擴充,此前的資料不會存儲到新加的硬碟
btrfs device add /dev/sdd /mydata
delete //拆除一個屋裡裝置,線上執行,他可以自動移動資料,然後拆除
//btrfs device delete /dev/sdd /mydata
ready 轉為備用狀态
scan
stats IO統計資料
usage
5.balance //實作均衡操作,均衡資料在多塊硬碟上
cancel //取消
pause //暫停
start
status
resume 重新開始,pause之後
btrfs balance status /mydata
btrfs balance start /mydata
//修改meta data和data的級别,也是在balance中修改
start
-d 修改data chunks
-m 修改medata chunks
-s 修改system chunks
convert {raid0,1,5,6,single}
btrfs balance start -dconvert=raid5 /mydata
//裝置如果不夠的話,raid級别是不支援的,兩塊硬碟是不能做raid5的
三、建立子卷
man btrfs-subvolume
create
//隻需要指定名字即可,其實就是在父卷上建立一個子卷目錄名而已
//btrfs subvolume create /mydata/logs
btrfs subvolume create /mydata/catch //建立2個子卷
// btrfs subvolume list /mydata/ 檢視子卷
//挂載的話,假如挂載了頂級卷,他的所有的卷都會自動挂載,也可以指定挂載單個子卷
//mount -o subvol=logs /dev/sdb /mydata/ 隻挂載子卷
cp /var/log/messages /mydata //複制檔案到子目錄
btrfs subvolume show /mydata/ //檢視子卷詳細資訊
解除安裝logs子卷,然後挂載父卷
ls /mydata/messages 可以檢視
btrfs subvolume delete /mydata/logs //删除子卷
delete
list
snapshot //子卷的快照必須與子卷在同一個父卷中
btrfs subvolume snapshot /mydata/catch /mydata/catch_snapshot
//修改/mydata/catchs/messages原有的檔案的資料,校驗快照是否起作用
//檢視/mydata/catchs_snapshot 中的檔案沒有發生改變
btrfs subvolume delete /mydata/catch_snapshot/
get-default
set-default
list
show //檢視子卷相信資訊
btrfs subvolume list /mydata/ 檢視subvolid ,
四、對檔案進行快照
cp --reflink grub2.cfg grub2.cfg_snapshot //另外一個地方最好在目前卷上的一個目錄上
是因為寫時複制機制導緻的
五、轉換ext為btrfs
btrfs balance start -dconvert=single /mydata
btrfs balance start -mconvert=raid1 /mydata
btrfs device delete /dev/sdd /mydata //拆除sdd
//sdd建立一個分區,5G,mkfs.ext4
//mount /dev/sdd1 /mnt
//cp /etc/fstab /mnt/
轉換格式:
umount /mnt
fsck /dev/sdd1 -f //強制檢測,為了安全起見
btrfs-convert /dev/sdd1
btrfs-convert -r /dev/sdd1 復原
umount /mnt
blkid /dev/sdd1 //檢視類型
六、ext&xfs&btrfs對比
ext3,ext4,xfs和btrfs檔案系統性能對比
Btrfs檔案系統的趨勢:https://www.chiphell.com/thread-1431457-1-1.html
raid:level
能夠保證,硬體損壞時,業務不會終止
建議以後做存儲,放在有容錯級别的raid上
LVM:volume //多個實體裝置組織成一個邏輯裝置
需要核心中的驅動子產品支援
|_______lv______|__lv2__|.....|
|_________________vg__________|
|disk1 | disk2, | .... |
//假如底層硬體裝置損壞,會影響上層的資料
snapshot:主要是為了讓備份操作更流暢
因為直接進行複制的話,很有可能資料會不一緻//在複制的時候,也在發生改變
//在複制的過程中,是不允許file的最近一次修改的時間戳不一緻的
btrfs:了解即可
本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/1950137,如需轉載請自行聯系原作者