1. 程式人生 > >Linux 學習之路(十一):壓縮歸檔以及RAID

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