Linux 學習之路(十一):壓縮歸檔以及RAID
壓縮、解壓縮命令
壓縮格式:gz,bz2,xz,zip,Z
壓縮演算法不同,壓縮比(壓縮後的大小-壓縮前的大小/壓縮前的大小)可能也會不同。
compress:FILENAME.Z
uncompress
只能壓縮檔案,預設會刪除原檔案保留壓縮後文件:
gzip: .gz
gzip /PATH/TO/SOMEFILE
-d:表示解壓縮
-#:1-9,指定壓縮比,預設是6
gunzip:
gunzip /PATH/TO/SOMEFILE.gz:解壓完成後會刪除原檔案
zcat /PATH/TO/SOMEFILE.gz:不解壓的情況,檢視文字檔案內容
比gzip有著更大壓縮比的壓縮工具,使用格式近似
bzip2: .bz2
bzip2 /PATH/TO/SOMEFILE
-d
-#:1-9,預設是6
-k:壓縮時保留原檔案
bunzip2 /PATH/TO/SOMEFILE.bz2
bzcat
xz: .xz
xz /PATH/TO/SOMEFILE
-d
-#:1-9,預設是6
-k:壓縮時保留原檔案
unxz
xzdec
xzcat
xz,bz2,gz
zip:
zip FILENAME.zip FILE1 FILE2 …:壓縮後不刪除原檔案
unzip FILENAME.zip
archive:歸檔,歸檔本身並不意味著壓縮
tar:歸檔工具
-c:建立歸檔檔案
-f FILE.tar:操作的歸檔檔案
-x:展開歸檔檔案
--xattrs:歸檔時,保留檔案的擴充套件屬性資訊
-t:不展開歸檔,直接檢視歸檔了哪些檔案
-zcf:歸檔並呼叫gzip壓縮
-zxf:呼叫gzip解壓縮並展開歸檔
-jcf、-jxf:bzip2
-Jcf、-Jxf:xz
歸檔所有以test開頭的檔案
tar -cf test.tar test*.txt
展開歸檔檔案
tar -xf test.tar
cpio:歸檔工具
練習:寫一個指令碼
從鍵盤讓使用者輸入幾個檔案,指令碼能夠將此幾個檔案歸檔壓縮成一個檔案。
read:
#!/bin/bash
echo -n "Input two integers:"
read A B
echo "$A plus $B is: $[$A+$B]"
[[email protected] ~]# cd jiaoben
[[email protected] jiaoben]# ./plus.sh
Input two integers:3 5
3 plus 5 is: 8
#myar.sh
#!/bin/bash
read -p "Three files: " FILE1 FILE2 FILE3
read -p "Destination: " DEST
tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3
#shell
[[email protected] jiaoben]# ./myar.sh
Three files: test/test1.txt test/test2.txt test/test3.txt
Destination: test/myartest
[[email protected] jiaoben]# ls test -ln
總用量 4
-rw-r--r--. 1 0 0 140 10月 25 16:20 myartest.tar.bz2
-rw-r--r--. 1 0 0 0 10月 25 16:18 test1.txt
-rw-r--r--. 1 0 0 0 10月 25 16:18 test2.txt
-rw-r--r--. 1 0 0 0 10月 25 16:18 test3.txt
[[email protected] jiaoben]# ls test -lh
總用量 4.0K
-rw-r--r--. 1 root root 140 10月 25 16:20 myartest.tar.bz2
-rw-r--r--. 1 root root 0 10月 25 16:18 test1.txt
-rw-r--r--. 1 root root 0 10月 25 16:18 test2.txt
-rw-r--r--. 1 root root 0 10月 25 16:18 test3.txt
[[email protected] jiaoben]# tar -tf myartest.tar.bz2
tar: myartest.tar.bz2:無法 open: 沒有那個檔案或目錄
tar: Error is not recoverable: exiting now
[[email protected] jiaoben]# tar -tf test/myartest.tar.bz2
test/test1.txt
test/test2.txt
test/test3.txt
#!/bin/bash
read -p "Three files: " FILE1 FILE2 FILE3
read -p "Destination: " DEST
read -p "Compress[gzip|bzip2|xz]:" COMP
case $COMP in
gzip)
tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3 ;;
bzip2)
tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3 ;;
xz)
tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3
xz ${DEST}.tar ;;
*)
echo "Unknoen."
exit 9 ;;
while迴圈:適用於迴圈次數未知的場景,要滿足退出條件
語法:
while CONDITION; do
statement
…
done
計算100以內所有正整數的和
顯式指定顏色:
[[email protected] jiaoben]# echo -e "\033[33mHello\033[0m,world."
Hello,world.
RAID: 獨立硬碟冗餘陣列
級別:僅代表磁碟組織方式不同,沒有上下之分
0:條帶
效能提升:讀,寫
冗餘能力(容錯能力):無
空間利用率ns
至少2塊盤
1:映象
效能表現:寫效能下降,讀效能提升
冗餘能力(容錯能力):無
空間利用率:1/2
5 校驗盤
效能表現:讀,寫提升
冗餘能力:有
空間利用率:(n-1)/n
至少需要3塊
50
效能表現:讀、寫提升
冗餘能力:有
空間利用率:(n-2)/n
至少需要6塊
01:
效能表現:讀、寫提升
冗餘能力:有
空間利用率:1/2
至少需要4塊
10:
效能表現:讀、寫提升
冗餘能力:有
空間利用率:1/2
至少需要4塊
RAID 1+0 應用比較廣泛
磁碟空間利用率是50%
速度
可用性
映象,mirror技術保證資料的可用性
校驗碼機制 RAID4
JBOD:簡單的把一個盤
效能表現:無提升
冗餘能力:無
空間利用率:100%
至少需要兩塊
RAID:
硬體RAID
在BIOS介面配置
軟體RAID
在核心內部模擬了RAID,md(multi disk)模組。
mdadm:將任何塊裝置做成RAID。不同磁碟上的分割槽。
模式化的命令:
建立模式 -C
專用選項:-l:級別 -n:裝置個數 -a(yes|no):自動為其建立裝置檔案 -c:CHUNK大小,2^n,預設為64k
管理模式 --add,–del,–remove
監控模式 -F
增長模式 -G
裝配模式 -A
t #調整分割槽
fd
通知核心重讀:
partprobe /sev/sda
cat /proc/partitions
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
cat /proc/mdstat#當前裝置下啟用的裝置
#格式化raid
mke2fs -j /dev/md0
mdadm -D /dev/md1
#移除損壞盤
mdadm /dev/md1 -r /dev/sda8
watch:週期性地執行指定命令,並以全屏方式顯示結果。
-n #:指定週期長度,單位為秒,預設為2
格式: watch -n # ‘COMMAND’
將當前RAID資訊儲存至配置檔案,以便以後進行裝配
mdadm -D --scan > /etc/madam.conf
RAID5只要有冗餘都支援空閒盤
條帶:chunk/block的倍數
DM:Device Mapper邏輯裝置
LVM 多路徑
snapshot快照:訪問檔案的另一條路徑
儲存發生了改變的資料,主要作用是實現資料備份
PV物理卷
VG卷組
vgcreate,vgremove(覆蓋裡面的源資料),vgextend,vgreduce,vgs,vgdisplay,vgscan
LV邏輯卷
lvcreate,lvremove,lvextend,lvreduce,lvs,lvdisplay
fdisk /dev/sda
10G,VG
n:7G+3G
t
L
8e
檢視p
partprobe /dev/sda
cat /proc/partitions
fdisk命令只支援建立15個分割槽
pvcreate /dev/sda{10,11}
pvs檢視當前系統PV
詳細資訊pvdisplay
pvscan掃描當前pv
vgs
vgcreate myvg /dev/sda{10,11}
vgcreate VG_NAME /PATH/TO/PV
-s #:PE大小,預設為4MB
vgremove myng
vgcreate -s 8M myvg/dev/sda{10,11}
vgdisplay myvg
檢視VG當中有多少個pv
pvs
pvmove /dev/sda11 移除pv上的資料
縮減vg大小:vgreduce(直接拿掉一個pv)
vgextend 把一個物理卷加入到此擴展卷組
vgextend myvg /dev/sda12
lvcreate -n LV_NAME -L #G VG_NAME
lvcreate -L 50M -n testlv myvg
lvdisplay /dev/myvg/testlv
mke2fs -j /dev/myvg/testlv
mount /dev/myvg/testlv/mnt
ls /mnt
ls /dev/mapper/
lvremove /dev/mapper/myvg-testlv
一、擴充套件邏輯卷
lvextend
-L [+]#
ext2擴充套件邏輯邊界resize2fs
二、縮減邏輯卷
注意:1.不能線上縮減,得先解除安裝;
2.確保縮減後的空間大小依然能儲存原有的所有資料;
3.在縮減之前應該先強行檢查檔案,以確保檔案系統處於一致性狀態
df -lh
umount
e2fsck -f
resize2fs /PATH/TO/LV 5G
lvreduce -L [-] # /PATH/TO/LV
三、快照卷
1、生命週期為整個資料時長:在這段時長內,資料的增長量不能超出快照卷大小
2、快照卷應該是隻讀的
3、跟原卷在同一卷組內
lvcreate
-s
-p r|w
lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV
lvcreate -L 50M -n testlv-snap -s -p r /dev/myvg/testlv
lvs
mount /dev/myvg/testlv-snap