btrfs
Balance-tree FS
Better FS
butter FS
2007年由Oracle開源,到目前位置,仍然是技術預覽版(Technical Preview),
btrfs其開發目的就是取代ext系列文件系統,成爲下一代Linux的標準文件系統,
在linux上運行的btrfs,遵循GPL開源協定;2014年8月,穩定版推出,
btrfs特性;
1.可擴展性
extent是最小管理邏輯單元,每個extent是由一組連續的block組成
ext文件系統inode數量是一定的,btrfs的inode數量是動態可調整的
2.多物理卷支持;
btrfs可以跨越多個物理設備,動態的增加或減少設備來達到擴容或縮容的目的,
而且,從技術角度來講,btrfs還支持RAID-0,RAID-1,RAID-5,RAID-10等
還支持在線添加,刪除,及修改設備
3.寫時複製更新機制(CoW,copy on write)
所謂的CoW,就是每次寫磁盤數據的時候,先將當前塊的數據複製到一個新塊中,然後在新塊中進行數據更新寫入,當新塊寫入完成後,只需要將原來指向舊塊的指針指向新塊即可
4.雙重分校驗機制————數據及元數據都有校驗碼;checksum
5.支持子卷;
6.支持快照卷;
對父卷做快照
對子卷做快照
對快照卷做快照
7.透明壓縮,隱形壓縮;
mkfs.btrfs
選項;
-L|--label <label>;爲即將創建的btrfs文件系統指定卷標
-d|--data <data-profile>;可以選擇的類型有,raid0, raid1, raid5, raid6, raid10 or single.
-m|--metadata <metadataprofile>;可以選擇的類型有,raid0, raid1, raid5, raid6, raid10, single or dup.
-O|--features <feature1>[,<feature2>...];指定btrfs文件系統的特性,如果想要查看哪些特性,可以使用命令;mkfs.btrfs -O list-all
可以用支持btrfs文件系統的mount命令中使用下列方式開啓透明壓縮功能;
mount -o compress={lzo|zlib}DEVIE MOUNT_POINT
btrfs
btrfs -control a btrfs filesystem
btrfs <command> [<args>]
btrfs filesystem show
查看btrfs文件系統的詳細屬性
btrfs filesystem df MOUNT_POINT
查看文件系統的掛載和使用情況
例;btrfs filesystem df /mnt/btrfs/
在線修改文件系統大小
btrfs filesystem resize {+|-}SIZE[kKmMgGtTpPeE] MOUNT_POINT
例子;
縮減15G
btrfs filesystem resize -15G /mnt/btrfs
增加5G
btrfs filesystem resize +5G /mnt/btrfs
btrfs filesystem resize max /mnt/btrfs
向btrfs文件系統中添加或刪除設備
btrfs device
btrfs device
btrfs device add [options] <device> [<device>...] <path>
向文件系統中添加一個新設備
btrfs device delete <device> [<device>...] <path>
從文件系統中刪除一個設備
平衡數據:
btrfs balance start [options] <path>
開啓跨設備的chunk的數據平衡
-mconvert={radi0|raid1|raid5|radi10|raid6|single|dup}
改變元數據的數據平衡佈局方式
例:btrfs balance start -mconvert=raid5 /mnt/btrfs/
-dconvert={radi0|raid1|raid5|radi10|raid6|single}
改變數據的數據平衡佈局方式
例:btrfs balance start -dconvert=raid6 /mnt/btrfs/
btrfs balance pause <path>
暫停數據平衡
btrfs balance cancel <path>
取消正在進行的或已經暫停的數據平衡
btrfs balance resume <path>
恢復被打斷的數據平衡
btrfs balance status [-v] <path>
顯示正在進行的或已經暫停的數據平衡的狀態信息
子卷管理:
btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>
創建子卷
例:btrfs subvolume create /mnt/btrfs/mysub1/
btrfs subvolume delete [options] <subvolume> [<subvolume>...]
刪除子卷
例:btrfs subvolume delete /mnt/btrfs/mysub1/
btrfs subvolume show <subvol-path>
顯示子卷的信息
例:btrfs subvolume show /mnt/btrfs/mysub1/
子卷類似於ext文件系統中的將其他分區掛載到根目錄下的某個空閒子目錄的操作;
快照:
btrfs subvolume snapshot [-r] [-i <qgroupid>] <source> <dest>|[<dest>/]<name>
創建指定子卷的快照卷
例:btrfs subvolume snapshot /mnt/btrfs/mysub1/ /mnt/btrfs/snap_mysub1
將btrfs和ext系列進行轉換:
btrfs-convert
btrfs-convert - convert from ext2/3/4 filesystem to btrfs or rollback
btrfs-convert [options] <device>
將文件系統從ext轉換爲btrfs:
~]# btrfs-convert /dev/sdb1
注意:/dev/sdb1分區,應該事先格式化爲ext系列文件系統;
將文件系統從btrfs回滾到ext
~]# btrfs-convert -r /dev/sdb1
磁盤配額;
文件服務器,共享存儲空間,讓用戶能夠隨時存儲數據;
FTP
SMB;
網盤;
磁盤配額主要是針對於這類文件服務器進行用戶的磁盤空間使用限制而提出的;
磁盤配額的設定對象;
1.能夠實施讀寫操作的塊設備;
2.要有正確的文件系統;
磁盤配額限制哪些人的訪問行爲
1.用戶
爲指定的用戶來限制磁盤使用量
磁盤空間(塊) 一個block的限制,代表1KB存儲空間
inode
2.組
限制指定組中所有成員的磁盤使用量的總和;
磁盤配額的類型;
1.soft limit;軟限制
當用戶的磁盤使用量達到軟配額限制,將會啓動寬限期倒計時;在倒計時歸0之前,用戶可以正常使用剩餘的配額量,但一旦倒計時歸0,用戶將不能繼續使用磁盤空間,除非將數據進行清理,低於軟限制,而後可以繼續使用磁盤空間;
2.hard limit;硬限制
用戶能夠使用的磁盤空間的真正上限;
一般來講,軟限制要比硬限制的數值小一些
在linux中默認的寬限期爲7天(可以修改)
需要一個用於記錄用戶和組的磁盤使用量和配額數量的數據文件;
aquota.user
aquota.group
如果想要讓分區或卷能夠支持磁盤配額的設定,需要單獨的掛載選項;
usrquota,grpquota
1.~]# mount -o usrquota,grpquota DEVICE MOUNT_POINT
2. /etc/fstab
DEVICE MOUNT_POINT FSTYPE defaults,usrquota,grpquota 0 0
quotacheck
quotacheck - scan a filesystem for disk usage, create, check and repair quota
files
選項;
-v, --verbose;顯示詳細信息
-u, --user;創建檢測和修復用戶配額文件
-g, --group;創建檢測和修復組配額文件
-c, --create-files;經過檢測,如果沒有用戶配額文件和或組配額文件,就按照用戶給定的選項來進行文件的創建
-a, --all;所有的在/etc/fstab文件中包含了與配額有關的掛載選項的設備上,是否有對應選項的配額文件;
用於編寫配額內容的命令;
edquota
-u, --user;編寫用戶配額,默認的功能
-g, --group;編寫組配額,默認的功能(不推薦使用)
-t, --edit-period;設置超出軟限制的寬限期,默認7天,可以選擇以秒,分鐘,小時,天等時間單位;
使配額功能生效;
quotaon(開啓),quotaoff(關閉)
quotaon, quotaoff - turn filesystem quotas on and off
quotao|quotaoff /dev/sdb1
查看配額的使用情況
quota
quota - display disk usage and limits
repquota(只有root才能使用)
repquota - summarize quotas for a filesystem
注意;root不受磁盤限制
linux的程序包管理
程序:指令+數據
程序;算法+數據+結構
應用程序的存在形式;
1.源代碼;包含了整個應用程序的編程語言的所有代碼的文本文件
2.二進制;將源代碼經過一系列的轉換操作之後得到的可以直接執行的文件
使用源代碼安裝應用程序
. 預處理(預處理器) ---> 編譯(編譯器) ---> 彙編(彙編器) ---> 鏈接(鏈接器) ---> 可以直接執行的二進制程序文件
POSIX;POS,portable Operating system,可移植操作系統
API;Application program interface,應用編程接口
ABI;Application binary interface,應用二進制接口
lunix-like;ELF
Windows;exe msi
庫級別的兼容,庫級別的虛擬化;
cywin,在Windows系統中模擬linux的共享庫
WinE,在linux系統中模擬Windows的庫
應用級編程語言;
JAVA python per1 ruby PHP GO
系統級編程語言;
C C++
源代碼編譯,需要有編譯開發環境支持
C/C++;
編譯開發環境,預處理器嗎,編譯器,頭文件,庫文件
JAVA/Python;
編譯開發環境,預處理器,編譯器,庫文件
通常情況下;源代碼文件是多個,這些文件之間存在這一定的關聯關係,我們稱這種關聯關係爲依賴關係;
autoconf
automake
軟件項目構建工具;
C/C++;make
JAVA;maven
python;buildout
Redhet