下面介紹的是兩種特殊檔案、RAID、LVM2、邏輯卷的快照等的内容
一、兩種特殊檔案
1、兩種特殊檔案包括裝置檔案、符号連結檔案兩類。
2、特殊檔案的部分概念如下:
裝置檔案:mknod
符号連結檔案:連結内容即為路徑
連結:就是通路一個檔案的不同路徑。
連結分為硬連接配接、軟連結。
硬連接配接:資料塊指針指向同一個資料塊的檔案。
硬連接配接不能跨越檔案系統建立硬連接配接,不能對目錄檔案建立硬連接配接;每次建立連結都會增加inode的引用計數。
符号連結(軟連接配接):用于存儲被連結檔案的路徑檔案。
可以跨檔案系統建立;也可以對目錄進行建立;每次都必須進行兩組路徑的查找。
3、ln指令
ln - make links between files
ln [OPTION]... TARGET... DIRECTORY
-s,--symbolic:建立符号連結,省略該選項,即建立硬連接配接。
-v:顯示連結建立的過程。
注意:建立符号連結時,如果想要保證該連結檔案被複制或移動到其他路徑中依然可以,最好連結至被連結檔案的【絕對路徑】。
例如:ln -s /root/mnt/test file1
執行個體:
可以進行版本管理,例如apache的2.2、2.4互相切換。
将不同的版本的軟體分别放置于不同的目錄中,使用符号連結,将軟體連結的一個統一路徑,具體如下:
/usr/local/apache-2.2
/usr/local/apache-2.4
#切換至2.2
/usr/local/apache --> /usr/local/apache-2.2
再切換至2.4
/usr/local/apache --> /usr/local/apache-2.4
執行個體:比如調用多套腳本:
user1.sh
user2.sh
user3.sh
#切換至user1
user.sh --> user1.sh
#再切換至user2
user.sh --> user2.sh
二、RAID
RAID:Redundant Array of Inexpensive Disks 【廉價磁盤備援陣列】
RAID:Redundant Array of Independent Disks 獨立磁盤備援陣列
1、RAID功能
RAID主要有兩個功能,即提高IO能力、提高耐用性。
(1)、提高IO能力(實作方式):使多個磁盤實作并行讀寫、磁盤條帶化(chunk)。
(2)、提高耐用性(實作方式):磁盤備援實作。磁盤備援中,即使磁盤發生故障或損壞,也不會影響資料。
2、RAID的實作方式:
(1)、硬體實作:a、通過RAID控制器或擴充卡,将所需的磁盤組織成RAID,而後安裝OS。
b、BIOS程式
(2)、軟體模拟實作:作業系統通過系統調用的方式模拟RAID實作。
3、RAID的操作級别
(1)、RAID0
RAID0至少有2塊磁盤;2、2+
RAID0是條帶卷(strip),提高了IO的性能;
RAID沒有備援容錯能力;沒有存儲空間浪費,要求每個磁盤必須提供相同大小的存儲空間。
(2)、RAID1:鏡像卷(mirror)
RAID1需要2塊磁盤。2、2+
2塊磁盤的資料一模一樣,先将資料存入主盤,然後再将資料存入從盤,提高了高可用性;
RAID1寫入效率較低,略微提高了讀效率;
RAID1磁盤的整體使用率為50%;
RAID1有備援容錯能力。
(3)、RAID2
(4)、RAID3(不常用)
(5)、RAID4
RAID4多塊磁盤進行異或運算,得到校驗值,并且使用專門的一塊磁盤存放校驗值;
RAID4即使一塊磁盤損壞,也不會丢失資料;
RAID4校驗盤IO壓力巨大,很容易形成性能瓶頸。
(6)、【RAID5】
RAID5至少需要3塊磁盤;3、3+
RAID5多塊磁盤進行循環備援校驗,将【校驗值随機配置設定到不同磁盤的條帶中】;
RAID5讀、寫IO性能均明顯提升,有不會出現性能瓶頸;
RAID5磁盤使用率為=(n-1)/n*100%;
RAID5有備援容錯能力。
(7)、RAID6
RAID6至少需要4塊磁盤;4、4+
RAID6多塊磁盤進行【兩輪循環備援校驗】,将校驗值随機配置設定到不同磁盤的條帶中;
RAID6讀、寫IO性能均明顯提升,有不會出現性能瓶頸;
RAID6最多運作兩塊磁盤,出現故障或損壞依然保證資料可用;
RAID6的代價就是增加了計算校驗值的時間。
(8)、RAID7
4、RAID混合級别:
(1)、RAID01
先做RAID0,再做RAID1
(2)、RAID10(較好)
先做RAID1,再做RAID0
(3)、RAID50
(4)、RAID7
RAID7可以了解為一個計算機,自帶作業系統以及相應的管理工具,可以獨立運作。
5、IBOD:Just a Bunch Of Disks(僅僅就是一組磁盤)
IBOD功能:就是将多塊磁盤的存儲空間連接配接到一起,合并一個大的連續空間使用,順序存放資料。
可用空間為求和:sum(S1,S2,...)
常用級别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
6、在Centos上實作RAID
(1)、核心提供一個md模闆(multi disks、multi devices)
使用者空間需要mdadm的工具,來設定和修改md核心子產品參數。
(2)、mdadm模式化工具:
(mdadm - manage MD devices aka Linux Software RAID)
mdadm [mode] <raiddevice> [options] <component-devices>
mdadm的模式包括建立模式、裝配模式、管理模式和雜項,具體解釋如下:
建立模式:-C
-n #:使用#塊磁盤建立RAID裝置
-l #:訓示RAID的級别
-a {yes/no}:允許系統或不允許系統建立md裝置檔案
-c CHUNK_SIZE:指定CHUNK的大小(即磁盤條帶化的大小)
-x #:指定在陣列中空閑磁盤的數量
裝配模式:-A
根據/etc/mdadm.conf訓示的RAID進行裝配
管理模式:-a、-r(移除)、-f
雜項;-D --scan 顯示RAID裝置的詳細資訊
例如:mdadm -D --scan > /etc/mdadm.conf 該配置檔案用于RAID裝置的再次裝配
-S:停止RAID的裝置
mdadm部分指令如下:
mdadm -D --scan >> /etc/mdadm.conf
mdadm -S /dev/md2
mdadm -S /dev/md0
mdadm -C -n 2 -l 0 /dev/sdc /dev/sdf
mdadm -A /dev/md2
mdadm /dev/md2 -a /dev/md0
觀察md的狀态指令:cat /proc/mkstat
7、watch指令:
-n #:重新整理時間間隔,機關為秒,預設為1秒;
watch -n # 'COMMAND'
例如:# mdadm -C /dev/md0 -n 4 -l 0 -a yes /dev/sd{b,c,d,e}
# mke2fs -t ext4 /dev/md0
# mkdir /media/md0
# blkid
# mount /dev/md0 /media/md0
# df -hT 檢視挂載資訊:df -h/-hT/-hTP
8、dd指令
dd - convert and copy a file 轉換和拷貝檔案
dd [OPERAND]...
dd OPTION
if=FILE read from FILE instead of stdin
bs=BYTES read and write up to BYTES bytes at a time
count=N copy only N input blocks
測試磁盤的IO速度:(讀的速度比寫的速度快,因為讀不需要作校驗)
例如:# dd if=/dev/zero of=./test bs=1024 count=100,0000
# cd /media/md0/
# dd if=/dev/zero of=./test1 bs=1024 count=1000,0000
# ls -lh
# mdadm -D /dev/md0
# mdadm -r /dev/md0 /dev/sde
# mdadm -f /dev/md0 /dev/sde
# fuser -v /dev/md0
# umont /media/md0
# cat /proc/mdstat
# mdadm -C /dev/md0 -l 1 -n 2 -x 1 /dev/sdb /dev/sdc /dev/sdd
# watch 'cat /proc/mdstat' 重新整理時間間隔
# watch -n 2 'cat /proc/mdstat' 2秒更新一次
# watch -n 1 'cat /proc/mdstat' 1秒更新一次
# mdadm -D --scan /dev/md0
# mdadm -D --scan /dev/md0 > /etc/mdadm.conf
寫一個腳本,模拟Linux登入界面:
(1)、将使用者名和密碼(明文即可)存放于/tmp/userinfo檔案中,格式為username:password;
(2)、運作腳本後提示使用者輸入使用者名和密碼;
(3)、使用者輸入完成後,判斷使用者輸入的是否正确;
a)、如果輸入錯誤的使用者名,直接提示使用者重新輸入正确的使用者名;
b)、如果使用者名正确,密碼錯誤,提示使用者重新輸入密碼,三次連續輸錯,則讓使用者重新輸入使用者名。
#!/bin/bash
#
while : ; do
read -p "login: " GET_USERNAME
if ! grep -q "^\<$GET_USERNAME\>" /tmp/userinfo ; then
continue
fi
COUNT=0
until false ; do
if [ $COUNT -eq 3 ] ; then
break
fi
read -p "password: " GET_PASSWORD
PASSWORD=$(grep "^\<$GET_USERNAME\>" /tmp/userinfo| cut -d: -f2)
if [ "$GET_PASSWORD" != "$PASSWORD" ] ; then
let COUNT++
continue
else
break 2
done
done
echo "login successfully."
三、LVM2
Logical Volume Manager,邏輯卷管理器,Version2
使用純軟體的方式組織一個或多個底層塊裝置,将他們重新定義為一個邏輯塊裝置的解決方案。
1、dm
LVM2利用核心中的dm子產品實作。
dm:device mapper,裝置映射表
dm子產品可以将一個或多個底層塊裝置【組織成一個邏輯塊裝置】;
使用者空間中的相應指令來向dm子產品發出系統調用,就可以完成後邏輯塊裝置的管理;
邏輯塊裝置統一存放在/dev/dm-#中。
2、LVM2的部分簡寫如下:
實體卷:PV(physical volume)
卷組:PG(physical group)多個實體卷組成卷組,指定PE
邏輯卷:LE(logical extent)卷組中建立邏輯卷
實體盤區(PE physical extent)大小必須是2的n次方
3、使用dm機制實作LVM管理的步驟:
(1)、建立并表示實體卷,PV
注意:如果用來建立實體卷的裝置是普通分區,一定要将分區的ID修改為8e;
(2)、基于PV建立卷組,邏輯塊裝置,建立的卷組的同時指定PE的大小;
注意:一旦實體盤區PE大小被指定,就不允許更改;
(3)、在已經建立的【卷組中建立邏輯卷】;
(4)、在【邏輯卷中建立檔案系統】(進階格式化);
(5)、挂載
4、實體卷的管理操作
# pv 實體卷
pvcreate: 建立實體卷
pvdisplay: 顯示實體卷的詳細資訊
pvs: 顯示實體卷的簡單資訊
pvremove: 删除實體卷
pvmove: 将某個實體卷中的【所有的實體盤區PE移動到其他實體卷中】
5、卷組的管理操作
# vg 卷組
vgcreate: 建立卷組
-s #(kKmMgG) 指定PE的大小,如果省略該選項,預設的實體盤區PE為4M
vgremove: 删除卷組
vgextend: 擴充卷組容量,将新的pv添加到卷組中
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce:縮減卷組容量,将實體卷pv從卷組中移除;在做此操作之前,應該先使用pvmove,保證被移除的實體卷pv上沒有被占用的PE;
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgdisplay:顯示卷組的詳細資訊
vgs:顯示卷組的簡短資訊
6、邏輯卷的管理操作
# lv 邏輯卷
lvcreate 建立邏輯卷
-L LV_SIZE(#{kK|mM|gG}):指定邏輯卷的【大小】,不能超過卷組的容量;
-l #%{FREE|VG|ORIGIN|PVS}:指定邏輯卷占用對應存儲單元的【百分比】。其中PVS表示目前實體卷。
-n LV_NAME 指定邏輯卷的名稱
-i # :在建立邏輯卷的時候,以條帶的方式建立,并指明這個邏輯卷上【有#個條帶】
-I # :在建立邏輯卷的時候,以條帶的方式建立,并指明【CHUNK的大小】;
lvremove:移除邏輯卷
lvdisplay:顯示邏輯卷的詳細資訊
lvs:顯示邏輯卷的簡短資訊
lvchange:修改LV的狀态
-ay:激活邏輯卷
-an:停用邏輯卷
lvextend:擴充邏輯卷的空間,一定要【先擴充邏輯卷的實體邊界,再擴充邏輯卷的邏輯邊界】;使用ext系列檔案系統的時候,resize2fs指令擴充邏輯邊界。
lvextend用來擴大邏輯卷的【實體邊界】如下:
例如:lvextend -L [+]SIZE /PATH/TO/LVM
如果SIZE有+:表示在原有邏輯卷容量的基礎上,增加SIZE空間
如果SIZE無+:表示将邏輯卷的容量擴大到SIZE空間
擴大邏輯卷的【邏輯邊界】指令如下:
e2fsck /PATH/TO/LVM
resize2fs [-f] /PATH/TO/LVM
lveduce:縮減邏輯卷的空間
注意:【先縮減邏輯卷的邏輯邊界,再縮減邏輯卷的實體邊界】;使用ext系列檔案系統的時候,resize2fs指令縮減邏輯邊界
lvreduce -L [-]SIZE /PATH/TO/LVM
如果SIZE有-:表示在原有邏輯卷容量的基礎上,削減SIZE空間
如果SIZE無-:表示将邏輯卷的容量直接削減至SIZE空間
例如部分指令如下:
umount /PATH/TO/LVM
e2fsck /PATH/TO/LVM //強制校驗資料一緻性
resize2fs -f /PATH/TO/LVM LV_SiZE //修改邏輯卷的【邏輯邊界】,LV_SIZE為調整後的邏輯卷大小
lvchange -an /PATH/TO/LVM //關閉邏輯卷
lvreduce -L [+]SIZE /PATH/TO/LVM //修改邏輯卷的【實體邊界】,大小要和邏輯邊界保持一緻
lvchange -ay /PATH/TO/LVM //重新激活邏輯卷
mount /PATH/TO/LVM /PATH/TO/LVM_MOUNT_POINT
7、兩個符号連結檔案
為了更友善的使用邏輯卷,為/dev/dm-#裝置建立了兩個符号連結檔案:
/dev/mapper/VG_NAME-LV_NAME --> ../dm-#
/dev/VG_NAME/LV_NAME --> ../dm-#
五、邏輯卷的快照
1、快照
快照本身也是一種邏輯卷;是目标邏輯卷的另外一個通路路徑。快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準确拷貝。
對于需要【備份或者複制的】現有資料的臨時拷貝以及其它操作來說,快照是最合适的選擇。
快照隻有在它們和原來的邏輯卷【不同】時才會消耗空間。
在生成快照時會配置設定給它一定的空間,但隻有在原來的邏輯卷或者快照有所改變才會使用這些空間
當原來的邏輯卷中有所改變時,會将【舊的資料複制到快照中】。
快照中隻含有原來的邏輯卷中更改的資料或者自生成快照後的快照中更改的資料。
也可以使用lvextend擴充快照卷。
2、快照區
快照就是将當時的系統資訊記錄下來,就好像照相一般,若将來有任何資料改動了,則原始資料會被移動到快照區,沒有改動的區域則由快照區和檔案系統共享。
由于快照區與原本的LV共用很多實體盤區PE的區塊,是以【快照區與被快照的LV必須要要在同一個VG上】;系統恢複的時候的檔案數量不能高于快照區的實際容量。
3、快照邏輯卷
lvcreate -L SNAPSHOT_SIZE -s -p r -n SNAPSHOT_NAME /PATH/TO/ORIGIN_LVM
-L SIZE:指定快照邏輯卷的大小
-s:建立一個快照邏輯卷
-p r:建立處理的邏輯卷是隻讀權限
-n SNAPSHOT_NAME:指定快照邏輯卷的名稱
例如建立快照卷:
# lvcreate -s -p r -L 15G -n mylv-snopshot /PATH/TO/DEST_LV
# lvcreate -s -p r -L 15G -n mylv-snopshot /dev/myvg/mylv
4、df指令
df - report file system disk space usage
df [OPTION]... [FILE]...
-h, --human-readble:【機關轉換】
-l, --local:隻顯示本地檔案系統,不顯示網絡檔案系統
-i, --inodes:顯示inode使用狀态
-T, --print-type:顯示【檔案系統類型】
-P, --portability:使用POSIX輸出格式,更【易于閱讀】
5、du指令
du - estimate file space usage
du [OPTION]... [FILE]...
-s, sumary,:顯示整個目錄彙總的檔案大小
-h, human-readble:機關轉換
6、dd指令
convert and copy a file
dd中常見的OPERAND:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=BYTES:block size, 複制單元大小
count=N:複制多少個bs
of=FILE:【寫】到所命名的檔案而不是到标準輸出
if=FILE:從所命名檔案【讀取】而不是從标準輸入
ibs=BYTES:一次讀size個byte
obs=BYTES:一次寫size個byte
skip=BLOCKS:從開頭忽略blocks個ibs大小的塊
seek=BLOCKS:從開頭忽略blocks個obs大小的塊
conv=conversion[,conversion...]:用指定的參數轉換檔案。
轉換參數:
ascii:轉換EBCDIC為ASCII。
ebcdic:轉換ASCII為EBCDIC。
block:把每一行【轉換為長度為cbs的記錄】,不足部分用空格填充。
unblock:使每一行的長度都為cbs,不足部分用空格填充。
lcase:把【大寫字元轉換為小寫字元】。
ucase:把小寫字元轉換為大寫字元。
swab:交換輸入的每對位元組。
noerror:讀取【出錯時】繼續讀取。
notrunc:不截短輸出檔案。
sync:把每個輸入塊填充到ibs個位元組,不足部分用空(NULL)字元補齊
7、磁盤拷貝、備份、破壞指令
(1)、磁盤拷貝
~]# dd if=/dev/sda of=/dev/sdb
(2)、備份MBR:
~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
(3)、破壞MBR中的bootloader:
~]# dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
例如:有二進制檔案fileA,size>2K。現在想從第64個位元組位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個位元組開始的位置,替換128Bytes,請問如何實作?
~]# dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
8、備份:
将本地的/dev/sdx整盤備份到/dev/sdy
~]# dd if=/dev/sdx of=/dev/sdy 将本地的/dev/sdx整盤備份到/dev/sdy
将/dev/sdx全盤資料備份到指定路徑的image檔案
~]# dd if=/dev/sdx of=/path/to/image
備份/dev/sdx全盤資料,并利用gzip工具進行壓縮,儲存到指定路徑
~]# dd if=/dev/sdx | gzip >/path/to/image.gz
9、恢複:
将【備份檔案】恢複到指定盤
~]# dd if=/path/to/image of=/dev/sdx
将【壓縮的備份檔案】恢複到指定盤
~]# gzip -dc /path/to/image.gz | dd of=/dev/sdx
10、拷貝【記憶體資料】到硬碟
将記憶體裡的資料拷貝到root目錄下的mem.bin檔案
~]# dd if=/dev/mem of=/root/mem.bin bs=1024
11、從CD光牒拷貝iso鏡像
拷貝CD光牒資料到root檔案夾下,并儲存為cd.iso檔案
~]# dd if=/dev/cdrom of=/root/cd.iso
12、銷毀磁盤資料
利用【随機的資料填充硬碟】,在某些必要的場合可以用來銷毀資料。執行此操作以後,/dev/sda1将無法挂載,建立和拷貝操作無法執行。
~]# dd if=/dev/urandom of=/dev/sda1
13、得到最恰當的block size
通過【比較】dd指令輸出中所顯示的【指令執行時間】,即可确定系統最佳的block size大小
~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
~]# dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
~]# dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
~]# dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
14、測試硬碟讀寫速度
通過上兩個指令輸出的執行時間,可以計算出測試硬碟的讀/寫速度
~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null
~]# dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
15、修複硬碟
當硬碟較長時間(比如1,2年)放置不使用後,磁盤上會産生【消磁點】。當磁頭讀到這些區域時會遇到困難,并可能導緻I/O錯誤。當這種情況影響到硬碟的第一個扇區時,可能導緻硬碟報廢。
上邊的指令有可能使這些資料起死回生。且這個過程是安全,高效的。
~]# dd if=/dev/sda of=/dev/sda
五、btrfs及相關指令介紹
1、btrfs簡介
btrfs:Balance-Tree FS; Better FS; Butter FS
btrfs其開發目的就是取代ext系列檔案系統,成為下一代Linux的标準檔案系統。
btrfs在2007年由Oracle開源,到目前為止,仍然是技術預覽版(Technical Preview)。在Linux上運作的btrfs,遵循GPL開源協定,2014年8月由Oracle公司推出了一個穩定版。
btrfs的7個特性如下:
(1)、可擴充性
extent(盤區)是btrfs最小的管理邏輯單元,每個extent是由一組連續的block塊組成。
ext檔案系統的inode數量是一定的,btrfs的inode數量是動态可調整的。
(2)、多實體卷支援(多對一)
btrfs可以跨越多個實體裝置,動态的增加或減少裝置來達到擴容或縮容的目的。而且,從技術角度來講,btrfs還支援RAID-0、RAID-1、RAID-5、RAID-10等。btrfs還支援線上添加,删除,及修改裝置。
(3)、寫時複制更新機制(CoW,Copy on write)
所謂的CoW,就是每次寫磁盤資料的時候,先将目前塊的資料複制到一個新塊中,然後在新塊中進行資料更新寫入,當新塊寫入完成後,隻需要将原來指向舊塊的指針指向新塊即可。
(4)、雙重校驗機制——資料及中繼資料都有校驗碼(checksum)
(5)、支援子卷
(6)、快照卷
對父卷做快照
對子卷做快照
對快照卷做快照
(7)、透明壓縮、隐形壓縮
2、mkfs.btrfs指令
mkfs.btrfs - create a btrfs filesystem
選項:-L|--label <name>:為即将建立的btrfs檔案系統指定卷标
-d|--data <type>:為資料存儲指定類型;可以選擇的類型有:raid0, raid1, raid5, raid6, raid10 or single
-m|--metadata <profile>:指定中繼資料的存儲方式;可以選擇的類型有:raid0, raid1, raid5, raid6, raid10, single or dup
-O|--features <feature1>[,<feature2>...]:指定btrfs檔案系統的特性,如果想要檢視哪些特性,可以使用指令:mkfs.btrfs -O list-all(特性)
3、透明壓縮
可以用支援btrfs檔案系統的mount指令中使用下列方式開啟透明壓縮功能:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
4、btrfs指令
(btrfs - control a btrfs filesystem)
格式:btrfs <command> [<args>]
btrfs filesystem show :檢視btrfs檔案系統的詳細屬性
btrfs filesystem df MOUNT_POINT :檢視檔案系統的挂載和使用情況
例如:btrfs filesystem df /mnt/btrfs/
5、btrfs filesystem指令
線上修改檔案系統大小,使用btrfs filesystem指令
btrfs filesystem resize {+|-}SIZE[kKmMgGtTEe] MOUNT_POINT
例如:btrfs filesystem resize -15G /mnt/btrfs/
btrfs filesystem resize +5G /mnt/btrfs/
btrfs filesystem resize max /mnt/btrfs/
6、btrfs device指令
btrfs device指令用來向btrfs檔案系統中添加或删除裝置
格式:btrfs device add [options] <device> [<device>...] <path>
向檔案系統中添加一個新裝置
btrfs device delete <device> [<device>...] <path>
從檔案系統中删除一個裝置
7、平衡資料
(1)、btrfs balance start [options] <path> ;【開啟】跨裝置的chunk的資料平衡
選項:-mconvert
-mconvert={radi0|raid1|raid5|radi10|raid6|single|dup} ;改變中繼資料的資料平衡布局方式
例:btrfs balance start -mconvert=raid5 /mnt/btrfs/
-dconvert
-dconvert={radi0|raid1|raid5|radi10|raid6|single} ;改變資料的資料平衡布局方式
例:btrfs balance start -dconvert=raid6 /mnt/btrfs/
(2)、btrfs balance pause <path>
【暫停】資料平衡
(3)、btrfs balance cancel <path>
【取消】正在進行的或已經暫停的資料平衡
(4)、btrfs balance resume <path>
【恢複】被打斷的資料平衡
(5)、btrfs balance status [-v] <path>
顯示正在進行的或已經暫停的資料平衡的【狀态】資訊
8、子卷管理
(1)、btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>
【建立】子卷
例:btrfs subvolume create /mnt/btrfs/mysub1/
(2)、btrfs subvolume delete [options] <subvolume> [<subvolume>...]
【删除】子卷
例:btrfs subvolume delete /mnt/btrfs/mysub1/
(3)、btrfs subvolume show <subvol-path>
【顯示子卷】的資訊
例:btrfs subvolume show /mnt/btrfs/mysub1/
子卷就類似于ext檔案系統中的将其他分區挂載到根目錄下的某個空閑目錄的操作。
9、快照
(1)、建立指定子卷的快照卷
btrfs subvolume snapshot [-r] [-i <qgroupid>] <source> <dest>|[<dest>/]<name>
例:btrfs subvolume snapshot /mnt/btrfs/mysub1/ /mnt/btrfs/snap_mysub1
(2)、将btrfs和ext系列進行轉換
使用btrfs-convert指令進行btrfs和ext轉換:
格式: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
(3)、子卷管理
本文轉自little_ding 51CTO部落格,原文連結:http://blog.51cto.com/12496428/1923608,如需轉載請自行聯系原作者