1、RAID磁盤陣列
在Linux系統中做RAID,磁盤陣列的設備可以是一塊磁盤中的三個以上的分區,也可以是三塊或以上的磁盤。本文主要以幾塊磁盤爲例,來實現在RAID5。
實驗說明:
在VMware中進行,系統中有一塊磁盤sda,新添加6塊SCSI磁盤,分別爲sdb,sdc,sdd,sde,sdf,sdg,其中4塊作爲磁盤陣列的設備,1塊作爲預備(spare)磁盤,還有1塊留作備用(用於擴展RAID)。
實驗步驟:
1.先查看一下系統中磁盤設備:fdisk -l
顯示結果略
2.接下來開始創建RAID了,主要會應用到mdadm命令,使用此命令需要先安裝RHEL6安裝光盤中自帶的mdadm包,如果沒有安裝,先進行安裝。
[root@svr ~]# mdadm --create --auto=yes/dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-f]
參數說明:
--create //表示要創建raid
--auto=yes /dev/md0 //新建立的軟件磁盤陣列設備爲md0,md序號可以爲0-9
--level=5 //磁盤陣列的等級,這裏表示創建是的raid5
--raid-devices //添加作爲磁盤陣列用的磁盤的塊數
--spare-devices //添加作爲預備(spare)磁盤的塊數
/dev/sd[b-f] //磁盤陣列所使用的設備,還可寫成/dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
另外這條命令也可以簡寫:
mdadm -C /dev/md0 -l5 -n4 -x1 /dev/sd[b-f]
3.查看RAID是否成功創建及是否正常運行,有兩種方法(當磁盤容量越大時,磁盤陣列構建的時間越長,所以可能需要等待很長時間才能看到以下信息):
執行mdadm --detail/dev/md0 命令查看RAID的詳細信息:圖略
查看/proc/mdstat文件,可以比較簡單明瞭的查看RAID創建和運行的情況:
S代表預備(spare)磁盤,4個U代表正常,出現_表示不正常
確認新建的RAID設備
執行 mdadm -Q /dev/md0 //-Q用來查詢設備信息。
4.格式化並且掛載和使用創建的RAID:
[root@svr ~]# mkfs.ext4 /dev/md0
[root@svr ~]# mkdir /raid5
[root@svr ~]# mount /dev/md0 /mnt/raid5/查看一下掛載的情況(已經掛載上):略
來查看一下新掛的RAID是否可以使用
5.設置開機自動啓動RAID以及自動掛載:
先建立/etc/mdadm.conf這個配置文件:
[root@svr ~]#mdadm --detail /dev/md0 |grep UUID > /etc/mdadm.conf
上面建立的這個文件需要作小小的修改:
[root@svr ~]# vi/etc/mdadm.conf
ARRAY/dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805
然後再修改/etc/fstab文件,設置開機自動掛載:
[root@svr ~]# vi/etc/fstab
/dev/md0 /mnt/raid5 ext4 defaults 00
重啓一下系統,就可以檢查開機自動掛載有沒有設置成功了!
擴容raid磁盤陣列:
顯示磁盤陣列的組成情況,4個塊設備組成,:
# cat /proc/mdstat
把/dev/sdg增加進陣列/dev/md0:
# mdadm --add /dev/md0 /dev/sdg
把raid5陣列/dev/md0修改爲5個塊設備:
# mdadm --grow/dev/md0 -n5
再顯示一下磁盤陣列的組成情況,現在/dev/md1是6個塊設備組成,完成擴容,還需要7.7分鐘。
# cat /proc/mdstat
等待擴容完成.....
執行下列命令:
驗證:
6.模擬RAID5中一塊磁盤損壞,檢驗spare磁盤的功能(raid5中允許一塊磁盤損壞,我們所設置的那1塊spare磁盤會立即替代損壞的磁盤,進行RAID的重建,保障數據的安全):
[root@svr ~]#mdadm --manage /dev/md0 --fail /dev/sdd
//使用此命令設置磁盤sdd成爲出錯的狀態
來查看一下:mdadm --detail /dev/md0
可以查看cat /proc/mdstat文件查看RAID5的重建過程
再來看一下重建完後的結果
/mnt/raid5還可以正常使用
7.將出錯的磁盤刪除並加入新的磁盤:
先刪除損壞的磁盤sdd:
[root@svr raid5]#mdadm --manage /dev/md0 --remove/dev/sdd //將損壞的磁盤sdd從RAID中刪除
再添加一塊新的磁盤作爲spare磁盤:
[root@svr raid5]#mdadm --manage /dev/md0 --add /dev/sdg //添加新的磁盤sdg
OK,再來查看一下:
執行以下命令
mdadm --detail /dev/md0查看結果
8關閉軟件RAID的方法:
當你不再需要已經設置的RAID的時候,可以用以下方法關閉RAID:
1)卸載/dev/md0,並且刪除或註釋掉/etc/fstab文件中的配置:
[root@svr ~]#umount /dev/md0
[root@svr ~]# vi /etc/fstab
#/dev/md0 /mnt/raid5 ext4 defaults 00
2)註釋掉或刪除/etc/mdadm.conf中的設置:
[root@svr ~]# vi /etc/mdadm.conf
#ARRAY /dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805
3)停止raid設備
# mdadm --stop/dev/md0
4)刪除raid中的所有磁盤
這時候raid中的磁盤就刪除了,重啓後也不會產生md127了.
RAID0和RAID1實同於RAID5
RAID0:並行讀寫數據
RAID1:鏡像磁盤陣列
2、在rhel6系統中搭建ISCSI存儲服務器
隨着企業中數據信息的不斷增長,尤其當成百上千TB的數據需要備份、恢復,以及面臨着擴容、災難恢復等需求時,DAS(直接附加存儲,就是通過與計算機主板的I/O接口,如IDE、SCSI相連接由本機操作系統負責讀寫及管理)方式使得數據的管理與維護日益困難。正因爲如此,網絡存儲技術應運而生,其最常見的就是NAS和SAN
SAN(storage area network,存儲區域網絡)
SAN是通過光纖交換機、光纖路由器等設備將磁盤陣列、磁帶機或獨立的ISCSI設備與服務器連接,構成一個高速存儲子網,存儲的數據以數據塊的形式通過ISCSI協議進行傳輸,從而優於普通的IP包傳輸。
NAS(network p_w_upload storage,網絡附加存儲)
NAS存儲設備相當於一臺獨立的服務器,設備本身帶有操作系統,也擁有網絡接口,因此不依賴於其他服務器,在NAS設備中爲客戶機分配存儲空間時,通常採用共享文件夾的方式進行發佈,存儲的數據以文件的形式進行傳輸,採用CIFS或者NFS等協議
iscsi(iscsi= internet Small Computer System Interface )是由IEETF開發的網絡存儲標準,目的是爲了用IP協議將存儲設備連接在一起。通過在IP網上傳送SCSI命令和數據,ISCSI推動了數據在網際之間的傳遞,同時也促進了數據的遠距離管理。由於其出色的數據傳輸能力,ISCSI協議被認爲是促進存儲區域網(SAN)市場快速發展的關鍵因素之一。因爲IP網絡的廣泛應用, ISCSI能夠在LAN、WAN甚至internet上進行數據傳送,使得數據的存儲不再受地域的限制。
ISCSI技術的核心是在TCP/IP網絡上傳輸SCSI協議,是指用TCP/IP報文、和ISCSI報文封裝SCSI報文,使得SCSI命令和數據可以在普通以太網絡上進行傳輸,如下圖:
iSCSI協議定義了在 TCP/IP 網絡發送、接收 block(數據塊)級的存儲數據的規則和方法。發送端將SCSI命令和數據封裝到 TCP/IP 包中再通過網絡轉發,接收端收到 TCP/IP 包之後,將其還原爲SCSI命令和數據並執行,完成之後將返回的SCSI命令和數據再封裝到 TCP/IP包中再傳送回發送端。而整個過程在用戶看來,使用遠端的存儲設備就像訪問本地的 SCSI設備一樣簡單。
在RHEL6中搭建ISCSI存儲服務器:
ISCSI服務器通常也稱爲Target端,負責定義存儲對象、分配邏輯空間LUN(Logical Unit,邏輯單元)。在RHEL6服務器中需要安裝scsi-target-utils軟件包,對應的系統服務爲tgtd,命令行管理工具爲tgtadm.
下面依次講解配置ISCSI的主要過程:準備存儲設備、創建ISCSI對象、爲客戶機分配存儲空間,客戶機使用ISCSI。
此處所說的存儲設備指將要分配給某一個客戶機使用的設備文件,在RHEL6系統中,硬盤、分區、邏輯卷、軟RAID等都可以用作ISCSI服務的存儲設備,爲了延續磁盤空間的可擴展性,建議以一個邏輯卷爲單位分配給客戶機使用,對於個別有特殊要求的客戶機,也可以將一個軟RAID陣列分配出去。
這裏將Target主機一個邏輯卷作爲iSCSI共享磁盤,共享給一臺linux主機使用。
創建一個邏輯卷,名爲lv00,將來分配給客戶機使用。如下圖所示:
ISCSI服務器配置推薦步驟:
1、在ISCSI存儲服務器上安裝iscsi target軟件包,如下圖所示:
2、iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置項默認全被注示掉了。編輯該文件,實現簡單的ISCSI存儲服務器配置。在文件尾部添加如下內容:
若要將多個存儲設備分配給客戶機可以在targets.conf文件中添加多個
<target ……>
……
</target>
注:Target的命名在同一子網內應該是唯一的,標準命名方式爲:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
iqn:表示“iSCSI Qualified Name”,簡稱iqn。
yyyy-mm:表示年份-月份。這裏是2011-08。
reversed domain name:表示倒過來的域名,這裏是com.example。
identifier:表示識別代碼,這裏是disk
backing-store用於指定存儲設備,一般指非實際的物理磁盤,如LVM卷、某個分區、raid磁盤陣列。
initiator-address 地址 用於將target指派給指定的客戶機使用。
然後啓動tgtd服務,並設置系統啓動時自動啓動,iscsi通信的端口:3260/tcp,以明文傳輸數據
#service tgtd start
#chkconfig tgtd on
若是ISCSI服務器上開啓了防火牆可以將iptables關閉或創建允許規則,如下圖所示:
運行tgtadm--lld iscsi --op show --mode target查看target信息
至此,iscsitarget存儲服務器配置完成,使用iSCSIInitiator就可以連接iscsi target服務器了。
使用tgtadm工具創建ISCSI對象時,主要命令選項如下所述:
-L,--lld:指定驅動類型,如“-L iscsi”表示ISCSI存儲。
-o,--op:指定操作類型,如“-o new”表示創建,“-o delete”表示刪除,“-o show”表示查看信息。
-m,--mode:指定管理目標,如“-m target”表示ISCSI對象。
-t,--tid:指定對象ID號,如“-t 1”表示第一個對象。
-T,--targetname:指定ISCSI對象的名稱。
在RHEL6上iscsi客戶端配置:
1、安裝iscsi發起端軟件:iscsi-initiator-utils和lsscsi軟件包
#service iscsi start
#chkconfig iscsi on
2、查找iscsi服務器上的iscsi目標,即iscsi發現。
執行iscsiadm -m discovery –t st –p iscsi服務器的IP
或
iscsiadm -m discovery -t sendtargets -ptargetIP地址:端口號
若是默認端口3260可以省略不寫。
3、登錄服務器上的iscsi目標,即iscsi註冊
執行iscsiadm-m node -T target名稱-p targetIP地址:端口號 --login
退出iscsi盤陣
執行iscsiadm-m node -T target名稱-p targetIP地址:端口號 --logout
4、查看/dev/disk/by-path目錄中iscsi符號鏈接所指向的位置或fdisk-l查看磁盤情況或檢查iscsi的狀態:service iscsi status或dmesg |tail
此時,可以使用iscsi磁盤,就好像它是本地連接硬盤驅動器。
5、對連接的iscsi磁盤建立LVM並實現自動掛載
未分區前顯示sdb信息如下,執行fdisk-l /dev/sdb查看
在ISCSI客戶機上執行fdisk /dev/sdb創建LVM類型分區並查看/dev/sdb新建分區後的信息
爲了實現磁盤擴容,在客戶機上可以將連接的ISCSI磁盤創建爲LVM。
在建好的邏輯捲上創建文件系統。
創建掛載點目錄並掛載
修改/etc/fstab文件實現自動掛載
執行blkid /dev/vg_data/lv_data獲得邏輯卷lv_data的UUID
修改/etc/fstab文件自動掛載邏輯卷lv_data,如下圖所示:
測試自動掛載:mount –a或重啓系統後執行df –hT查看掛載情況
注意:
1、 使用blkid確定文件系統UUID並使用UUID掛載,而不是/dev/sd*設備名稱。(每次引導時顯示的設備名稱都不同,具體取決於iscsi設備通過網絡進行響應的順序,如果按設備名稱掛載,這會導致使用錯誤的設備)
2、 在/etc/fstab中使用_netdev作爲掛載選項。(這將確保客戶端不會嘗試掛載文件系統,直至啓用聯網,否則,在引導時系統將出錯)
3、 確保iscsi服務在引導時將啓動
#chkconfig iscsi on