#11 硬連接與軟鏈接與RAID與LVM2
兩種特殊文件:
設備文件:
mknod
符號鏈接文件:
鏈接:就是訪問一個文件的不同路徑;
硬連接:
數據塊指針指向同一個數據塊的文件;
不能跨文件系統創建硬連接;
目錄文件不能創建硬連接;
每次創建硬連接都會增加indoe的引用計數
符號鏈接(軟鏈接):
用於儲存被鏈接文件的路徑的文件;
可以跨文件系統創建;
也可以對目錄創建;
每次都必粗進行兩組路徑的查找;
ln命令:
ln [option...] src_flie link_file
ln - make links between files
-S, --suffix=SUFFIX:創建符號鏈接,省略該選項,即創建硬連接;
-v, --verbose:顯示鏈接創建的過程;
註意:創建符號鏈接時,如果想要保證該鏈接文件被復制或移動到其他路徑中依然可用,最好鏈接至被鏈接文件的絕對路徑;
版本管理:
apache:
2.2 2.4
將不同版本的軟件分別放置於不同的目錄中,使用符號鏈接,將軟件鏈接到一個統一的路徑:
/usr/local/apache --> /usr/local/apache-2.#
/usr/local/apache-2.2
/usr/local/apache-2.4
RAID:
IDE:
SCSI:
redundant array of inexpensive disks,廉價磁盤冗余陣列
redundant array of independent disks,獨立磁盤冗余陣列
RAID:
提高IO能力:
使多個磁盤實現並行讀寫;
磁盤條帶化,chunk
提高耐用性:
磁盤冗余實現
即使磁盤發生故障或損壞,也不會影響數據;
RAID的實現方式:
硬件實現:
通過硬件RAID控制器或適配器。將所需的磁盤組織成RAID,而後安裝OS;
BIOS程序
軟件模擬實現:
操作系統通過系統調用的方式模擬RAID實現;
RAID的操作級別:
RAID0:
提高IO性能,條帶卷,strip
至少2塊磁盤
沒有存儲空間浪費,要求每個磁盤必須提供相同大小的儲存空間;
RAID1:鏡像卷,mirror
提供高可用性
需要2塊磁盤
先將數據存入主盤,然後再將數據存入從盤;
寫入效率較低,略微提示讀效率
磁盤空間的整體利用率為50%
有冗余容錯的能力
RAID2:
...
RAID4:
至少需要3塊磁盤
用多塊磁盤進行異或運算,得到校驗值,並且使用專門的一塊磁盤存放校驗值;
即使一塊磁盤損壞,也不會丟失數據;
校驗盤IO壓力巨大,很容易形成性能瓶頸;
RAID5:
用多塊磁盤進行循環冗余校驗,將校驗值隨機分配到不同磁盤的條帶中;
讀、寫IO性能均明顯提示,又不會出現性能瓶頸
磁盤利用率=(n-1)/n*100%
冗余容錯,
至少需要3塊磁盤
RAID6:
用多塊磁盤進行兩輪循環冗余校驗,將校驗值隨機分配到兩個不同磁盤的條帶中;
讀、寫IO性能均明顯提示,又不會出現性能瓶頸
最多允許兩塊磁盤出現故障或損壞依然保證數據可用;
代價就是增加了計算校驗值的時間;
RAID混合級別:
RAID01:
先做RAID0,在做RAID1
RAID10:
先做RAID1,在做RAID0
RAID7:
可以理解為一個存儲計算機,自帶操作系統以及相應的管理工具,可以獨立運行;
RAID50:
先做RAID5,在做RAID0
JBOD:
just a bunch of disks,僅僅就是一組磁盤;
將多塊磁盤的儲存空間連接到一起,順序存放數據;
在centos上實現軟RAID:
內核提供一個md的模塊(multi disks,multi devices)
用戶空間需要mdadm的工具,來設置和修改md內核模塊的參數;
mdadm:模式化工具
mdadm [mode] <raiddevice> [option...] <component device>
模式包括:
創建模式:-C
-n #:使用#塊磁盤創建RAID設備
-l #:指示RAID的級別
-a {yes|no}:允許系統或不許系統自動創建md設備文件;
-c CHUNK_SIEZ:指定chunk大小,
-x #:指定在陣列中空閑磁盤的數量
裝配模式: -A
根據/etc/madam.conf指示的raid進行裝配
管理模式:-a,-r,-f
雜項:
-D --scan
顯示raid設備的詳細信息
mdadm -D --scan > /etc/madam.conf
該配置文件用於raid設備的再次裝配
-S:停止raid的設備
dd - convert and copy a file
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添加到卷組中
vgreduce:縮減卷組容量,將pv從卷組中移除;在做此操作之前,應該先使用pvmove,保證被移除的pv上沒有被占用的pe
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命令擴展邏輯邊界;
lvreduce:縮減邏輯卷的空間
註意:先縮減邏輯卷的邏輯邊界,再縮減邏輯卷的物理邊界,
使用ext系列文件系統的時候,resize2fs命令縮減邏輯邊界;
為了更方便的使用邏輯卷,為/dev/dm-#設備創建了兩個符號鏈接文件;
/dev/mapper/VG_NAME-LV_NAME --> ../dm-#
/dev/VG_NAME/LV_NAME --> ../dm-#
邏輯卷的快照:
快照,本身也是一種邏輯卷;目標邏輯卷的另外一個訪問路徑;
lvcreate -s -p r -L 15G -n mylv-snopshot /path/to/dest_lv
#11 硬連接與軟鏈接與RAID與LVM2