什麼是RAIDbash
RAID:Redundant Arrays of Inexpensive Disksapp
即:廉價磁盤冗餘陣列ide
Redundant Arrays of Independent Disks工具
獨立磁盤冗餘陣列性能
1988年由加利福尼亞大學伯克利分校(University of California-Berkeley)提出的「A Case for Redundant Arrays of Inexpensive Disks」。spa
旨在將多個相對廉價的IDE接口的磁盤合成一個「陣列」來提供更好的IO性能、實現磁盤冗餘,或者二者都提供。操作系統
RAIDcomponent
提升IO能力:視頻
磁盤並行讀寫接口
提升耐用性;
磁盤冗餘來實現
級別:多塊磁盤組織在一塊兒的工做方式有所不一樣
RAID實現的方式:
外接式磁盤陣列:經過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
安裝OS前在BIOS裏配置
Software RAID:
RAID級別
RAID-0:條帶卷,strip
RAID-1: 鏡像卷,mirror
RAID-2
..
RAID-5
RAID-6
RAID-10
RAID-01
RAID-0:
讀、寫性能提高;
可用空間:N*min(S1,S2,...)
無容錯能力
最少磁盤數:2, 2
RAID-1:
讀性能提高、寫性能略有降低;
可用空間:1*min(S1,S2)
有冗餘能力
最少磁盤數:2, 2+
RAID-4:
多塊數據盤異或運算值,存於專用校驗盤
壞了一塊硬盤仍然能夠繼續工做的模式稱爲降級模式
校驗盤壓力最大,很容易造成性能瓶頸;
RAID-5:
讀、寫性能提高
可用空間:(N-1)*min(S1,S2,...)
有容錯能力:容許最多1塊磁盤損壞
最少磁盤數:3, 3+
RAID-6:
讀、寫性能提高
可用空間:(N-2)*min(S1,S2,...)
有容錯能力:容許最多2塊磁盤損壞
最少磁盤數:4, 4+
RAID混合類型級別
RAID-10:
讀、寫性能提高
可用空間:N*min(S1,S2,...)/2
有容錯能力:每組鏡像最多隻能壞一塊
最少磁盤數:4, 4+
RAID-0一、RAID-50
RAID7:能夠理解爲一個獨立存儲計算機,自身帶有操做系統和管理工具,能夠獨立運行,理論上性能最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:將多塊磁盤的空間合併一個大的連續空間使用
可用空間:sum(S1,S2,...)
經常使用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
實現方式:
硬件實現方式
軟件實現方式
CentOS 6上的軟件RAID的實現:
結合內核中的md(multi devices)模塊實現;
mdadm:模式化工具
命令的語法格式:
mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10,...
模式:
建立模式:-C
裝配模式:-A
監控模式:-F
管理模式:-f, -r, -a
<raiddevice>:/dev/md#
<component-devices>:任意塊設備,注意若是是分區的話,其分區類型要改成fd
-C:建立模式
-n #:使用#個塊設備來建立此RAID
-l #:指明要建立的RAID的級別
-a {yes|no}:自動建立目標RAID設備的設備文件
-c CHUNK_SIZE:指明塊大小, 默認值爲512K
-x #:指明空閒盤的個數
例如:建立一個10GB可用空間的RAID5
混雜模式
顯示RAID的詳細信息
-D
mdadm -D /dev/md#
中止md設備:
mdadm -S /dev/md0
管理模式:
-f:爲指定的磁盤或分區添加損壞標記
-a:添加磁盤或分區到md設備中
-r:從md設備中移除磁盤或分區
裝配模式:Assemble
-A
用於將中止的RAID設備從新裝配使之可以正常工做。
在裝配RAID設備的時候,須要依賴/etc/mdadm.conf文件進行
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
watch命令:
-n #:刷新時間間隔,單位爲秒,默認爲1秒;
watch -n # 'COMMAND'
LVM2
Logical Volume Manager,邏輯卷管理器,Version 2
IBM
使用純軟件的方式組織一個或多個底層的塊設備,將它們從新定義爲一個邏輯塊設備的解決方案;
利用內核中的dm模塊實現;
dm:device mapper,設備映射表
dm模塊能夠將一個或多個底層塊設備組織成一個邏輯塊設備;
用戶空間中的相應命令來向dm模塊發出系統調用,就能夠完成後邏輯塊設備的管理;
邏輯塊設備統一存放在/dev/dm-#
使用DM機制實現LVM管理的步驟:
1.建立並表示物理卷,PV
注意:若是用來建立物理卷的設備是普通分區,必定要將分區的ID修改成8e;
2.基於PV建立卷組,邏輯塊設備,建立的卷組的同時指定PE的大小;
注意:一旦PE大小被指定,就不容許更改;
3.在已經建立的卷組中建立邏輯卷
4.在邏輯卷中建立文件系統(高級格式化)
5.掛載
物理卷的管理操做:
pvcreate:建立物理卷
pvdisplay:顯示物理卷的詳細信息
pvs:顯示物理卷的簡單信息
pvremove:刪除物理卷
pvmove:將某個物理卷中的全部的PE移動到其餘物理卷中;
卷組的管理操做:
vgcreate:建立卷組
-s #{kKmMgG}:指定PE的大小,若是省略該選項,默認的PE爲4M;
vgremove:刪除卷組
vgextend:擴展卷組容量,將新的pv添加到卷組中
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce:縮減卷組容量,將pv從卷組中移除;在作此操做以前,應該先使用pvmove,保證被移除的pv上沒有被佔用的PE;
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgdisplay:顯示卷組的詳細信息
vgs:顯示卷組的簡短信息
邏輯卷的管理操做:
lvcreate:建立邏輯卷
-L LV_SIZE(#{kK|mM|gG}):指定邏輯卷的大小,不能超過卷組的容量;
-l #%{FREE|VG|ORIGIN|PVS}:指定邏輯卷佔用對應存儲單元的百分比;
-n LV_NAME:指定邏輯卷的名稱
-i #:在建立邏輯卷的時候,以條帶的方式建立,並指明這個邏輯捲上有#個條帶
-I #:在建立邏輯卷的時候,以條帶的方式建立,並指明CHUNK的大小;
lvremove:移除邏輯卷
lvdisplay:顯示邏輯卷的詳細信息
lvs:顯示邏輯卷的簡短信息
lvchange:修改LV的狀態
-ay:激活邏輯卷
-an:停用邏輯卷
lvextend:擴展邏輯卷的空間,
注意:必定要先擴展邏輯卷的物理邊界,再擴展邏輯卷的邏輯邊界;
使用ext系列文件系統的時候,resize2fs命令擴展邏輯邊界;
擴大邏輯卷的物理邊界:
lvextend -L [+]SIZE /PATH/TO/LVM
若是SIZE有+:表示在原有邏輯卷容量的基礎上,增長SIZE空間
若是SIZE無+:表示將邏輯卷的容量擴大到SIZE空間
擴大邏輯卷的邏輯邊界:
e2fsck /PATH/TO/LVM
resize2fs [-f] /PATH/TO/LVM
lvreduce:縮減邏輯卷的空間
注意:先縮減邏輯卷的邏輯邊界,再縮減邏輯卷的物理邊界;
使用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
爲了更方便的使用邏輯卷,爲/dev/dm-#設備建立了兩個符號連接文件:
/dev/mapper/VG_NAME-LV_NAME --> ../dm-#
/dev/VG_NAME/LV_NAME --> ../dm-#
邏輯卷的快照:
快照,自己也是一種邏輯卷;目標邏輯卷的另一個訪問路徑;
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
對於須要備份或者複製的現有數據集臨時拷貝以及其它操做來講,快照是最合適的選擇。
快照只有在它們和原來的邏輯卷不一樣時纔會消耗空間。
在生成快照時會分配給它必定的空間,但只有在原來的邏輯卷或者快照有所改變纔會使用這些空間
當原來的邏輯卷中有所改變時,會將舊的數據複製到快照中。
快照中只含有原來的邏輯卷中更改的數據或者自生成快照後的快照中更改的數據
也可使用lvextend擴展快照卷。
快照就是將當時的系統信息記錄下來,就好像照相通常,若未來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。
因爲快照區與本來的LV共用不少PE的區塊,所以快照去與被快照的LV必需要要在同一個VG上!系統恢復的時候的文件數量不能高於快照區的實際容量。
快照邏輯卷
lvcreate -L SNAPSHOT_SIZE -s -p r -n SNAPSHOT_NAME /PATH/TO/ORIGIN_LVM
-L SIZE:指定快照邏輯卷的大小
-s:建立一個快照邏輯卷
-p r:建立處理的邏輯卷是隻讀權限
-n SNAPSHOT_NAME:指定快照邏輯卷的名稱
壓縮:
Linux系統中常有的壓縮和解壓縮工具:
壓縮:以時間換空間的一種操做;
壓縮的原理:標記和替換
壓縮比:壓縮以前與壓縮以後的文件的大小的比值;
純文本文件壓縮比較大
視頻、圖像等文件壓縮比小
可以實現壓縮功能的工具:
compress/uncompress:.Z擴展名
gzip/gunzip:.gz擴展名
bzip2/bunzip2:.bz2擴展名
xz/unxz:.xz擴展名,目前壓縮比最高的工具
zip/unzip:.zip擴展名
gzip:
gzip, gunzip, zcat - compress or expand files
-d:解壓縮
-#:以指定的壓縮比進行壓縮,1-9,9爲最高級;默認6
-c:將壓縮結果輸出到標準輸出,不會對原文件進行壓縮;
gzip -c /PATH/TO/FILE > /PATH/TO/COMPRESS_FILE.gz
bzip2:
bzip2, bunzip2 - a block-sorting file compressor, v1.0.4
bzcat - decompresses files to stdout
-d:解壓縮
-#:指定壓縮比進行壓縮,1-9,默認爲6
-k:保留原文件不刪除,建立新的壓縮文件;
xz:
xz, unxz, xzcat - Compress or decompress .xz files
-d:解壓縮
-#:指定壓縮比進行壓縮,1-9,默認爲6
-k:保留原文件不刪除,建立新的壓縮文件;
tar:歸檔程序
tar——tape archive:磁帶檔案
tar [OPTION...] [FILE]...
主選項:
-c:建立檔案文件
-x:釋放檔案文件的內容
-t:查看檔案文件中包含的文件
-u/-r:向檔案文件中添加新的文件
輔助選項:
-f:指定檔案的文件的路徑
-C:在釋放檔案文件中的內容時,指定釋放的路徑;
-z:在建立檔案文件時,調用gzip進行壓縮
-j:在建立檔案文件時,調用bzip2進行壓縮
-J:在建立檔案文件時,調用xz進行壓縮(可能不支持)
--exclude:在釋放檔案文件時,排除某個文件;
-k:在釋放檔案文件時,不會覆蓋同名文件;
cpio
寫一個腳本:給腳本傳遞幾個文件,選擇壓縮方式進行壓縮;
#!/bin/bash
#
read -p "Please input some files:" file
select I in gzip bzip2 xz ; do
case $I in
gzip)
gzip file
;;
bzip2)
bzip2 file
;;
xz)
xz file
;;
*)
echo "Input again some files:"
;;
esac
done
#!/bin/bash
#
filedest=/usr/bin/file
read -p "Please input some files:" file1 file2 file3 file4
select I in gzip bzip2 xz ; do
case $I in
gzip)
tar -czf ${filedest}.tar.gz file1 file2 file3 file4
;;
bzip2)
tar -cjf ${filedest}.tar.bz2 file1 file2 file3 file4
;;
xz)
tar -cJf ${filedest}.tar.xz file1 file2 file3 file4
;;
*)
echo "Input again some files:"
;;
esac
done