1、配置iSCSI服務node
目標:vim
本案例要求先搭建好一臺iSCSI服務器,並將整個磁盤共享給客戶端:bash
而後客戶機掛載iSCSI服務器共享的磁盤:服務器
方案:網絡
使用2臺RHEL6虛擬機,其中一臺做爲iSCSI服務器(192.168.4.5)、另一臺做爲測試用的Linux客戶機(192.168.4.205),以下圖所示。app
在RHEL6系統中,默認經過scsi-target-utils軟件包提供iSCSI服務,所以須要在服務端安裝scsi-target-utils包並配置對應的服務,iSCSI服務主要配置選項以下表所示。tcp
客戶端掛載iSCSI服務器:ide
步驟:工具
實現此案例須要按照以下步驟進行。測試
步驟一:安裝iSCSI服務器軟件
1)使用yum安裝scsi-target-utils軟件包
[root@svr5 ~]# yum -y install scsi-target-utils .. .. [root@svr5 ~]# rpm -q scsi-target-utils scsi-target-utils-1.0.24-10.el6.x86_64
2)啓用target服務,並設爲開機自動運行
[root@svr5 ~]# service tgtd start ; chkconfig tgtd on Starting SCSI target daemon: [ OK ]
tgtd服務默認經過TCP 3260端口監聽客戶端請求:
[root@svr5 ~]# netstat -anptu | grep tgtd tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2737/tgtd
步驟二:建立邏輯卷
1)爲新建磁盤/dev/sdb建立分區
[root@svr5 ~]# parted /dev/sdb mklabel gpt [root@svr5 ~]# parted /dev/sdb mkpart primary 1 1000 [root@svr5 ~]# parted /dev/sdb mkpart primary 1000 2000
2)建立邏輯卷
[root@svr5 ~]# pvcreate /dev/sdb{1,2} [root@svr5 ~]# vgcreate myvg /dev/sdb{1,2} [root@svr5 ~]# lvcreate -n iscsi1 –L 800M myvg [root@svr5 ~]# lvcreate -n iscsi2 –L 800M myvg [root@svr5 ~]# lvscan
步驟三:經過命令行配置iSCSI服務
1)建立target
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \ > target --tid 1 -T iqn.2015-04.com.tarena.www:iscsi1
2)爲target導入本地磁盤
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \ >logicalunit --tid 1 --lun 1 -b /dev/myvg/iscsi1
3)配置ACL
[root@svr5 ~]# tgtadm --lld iscsi --op bind --mode \ > target --tid 1 -I 192.168.4.0/24
4)將以上三條命令加入開機啓動文件
[root@svr5 ~]# vim /etc/rc.local .. .. tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2015-04.com.tarena.www:iscsi1 tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/myvg/iscsi1 tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.4.0/24
步驟四:經過配置文件實現iSCSI服務
1)修改配置文件
[root@svr5 ~]# vim /etc/tgt/targets.conf <target iqn.2015-04.com.tarena.www:iscsi2 > # List of files to export as LUNs backing-store /dev/myvg/iscsi2 //定義存儲設備 initiator-address 192.168.4.0/24 //定義ACL </target>
2)重啓計算機,驗證服務是否開機有效
[root@svr5 ~]# reboot
步驟五:客戶端訪問
1)客戶端安裝軟件
[root@pc205 ~]# yum -y install iscsi-initiator-utils
2)客戶端探測服務器共享
[root@pc205 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.5:3260
3)客戶端掛載iSCSI共享
[root@pc205 ~]# iscsiadm -m node -T \ >iqn.2015-04.com.tarena.www:iscsi1 \ >-p 192.168.4.5:3260 –l [root@pc205 ~]# iscsiadm -m node -T \ >iqn.2015-04.com.tarena.www:iscsi2 \ >-p 192.168.4.5:3260 –l
4)分區、格式化、掛載
[root@pc205 ~]# fdisk –cul //查看掛載的iSCSI共享盤 [root@pc205 ~]# parted /dev/sdb mklabel gpt [root@pc205 ~]# parted /dev/sdb mkpart primary 1 800 [root@pc205 ~]# parted /dev/sdc mklabel gpt [root@pc205 ~]# parted /dev/sdc mkpart primary 1 800 [root@pc205 ~]# mount /dev/sdb1 /mnt
2、編寫udev規則
目標:
編寫udev規則,實現如下目標:
方案:
對於Linux kernel 2.6及更新的操做系統版本udev是系統的設備管理器,udev會分析sysfs的數據,並根據本身的udev規則,實現以下功能:
udev默認規則存放在/etc/udev/rules.d目錄下,經過修改次目錄下的規則實現設備的命名、屬性、連接文件等。
Udev規則文件,常見指令操做符以下表所示。
udev經常使用替代變量:
步驟:
步驟一:編寫udev規則
1)查看設備屬性
[root@svr5 ~]# udevadm monitor –property
[root@svr5 ~]# udevadm info --query=path –name=/dev/sdb
[root@svr5 ~]# udevadm info --query=property --path=/block/sdb
2)編寫udev規則文件
[root@svr5 ~]# vim /etc/udev/rules.d/70-usb.rules
SUBSYSTEM=="block",ENV{DEVTYPE}="disk",KERNEL=="sdb",ENV{ID_VENDOR}=="TOSHIBA",SYMLINK="udisk",RUN+="/usr/bin/wall udisk plugged in"
SUBSYSTEM=="block",ACTION=="add",KERNEL=="sdb[0-9]",ENV{ID_VENDOR_ID}=="0930",ENV{DEVTYPE}=="partition",NAME="udisk%n"
步驟二:添加設備測試結果
點擊VMware「虛擬機「菜單,在」可移動設備「菜單下,找到本身的U盤設備,點擊」鏈接「與」斷開「,測試本身的udev規則是否成功。
3、配置並訪問NFS共享
目標:
利用NFS機制發佈2個共享目錄,要求以下:
從客戶機訪問NFS共享:
方案:
使用2臺RHEL6虛擬機,其中一臺做爲NFS共享服務器(192.168.4.5)、另一臺做爲測試用的Linux客戶機(192.168.4.205),以下圖所示。
NFS共享的配置文件:/etc/exports 。
配置記錄格式:文件夾路徑 客戶地址1(控制參數.. ..) 客戶地址2(.. ..) 。
步驟:
步驟一:配置NFS服務器,發佈指定的共享
1)確認服務端程序、準備共享目錄
軟件包nfs-utils用來提供NFS共享服務及相關工具,而軟件包rpcbind用來提供RPC協議的支持,這兩個包在RHEL6系統中通常都是默認安裝的:
[root@svr5 ~]# rpm -q nfs-utils rpcbind
nfs-utils-1.2.3-39.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
根據本例的要求,須要做爲NFS共享發佈的有/root、/usr/src這兩個目錄:
[root@svr5 ~]# ls -ld /root /usr/src/
dr-xr-x---. 35 root root 4096 1月 15 18:52 /root
drwxrwxr-x+ 4 root root 4096 1月 15 17:35 /usr/src/
2)修改/etc/exports文件,添加共享目錄設置
默認狀況下,來自NFS客戶端的root用戶會被降權,若要保留其root權限,注意應添加no_root_squash控制參數;另外,限制只讀的參數爲ro、可讀可寫爲rw,相關配置操做以下所示:
[root@svr5 ~]# vim /etc/exports
/root 192.168.4.205(rw,no_root_squash)
/usr/src 192.168.4.0/24(ro)
3)啓動NFS共享相關服務,確認共享列表
依次啓動rpcbiind、nfs服務:
[root@svr5 ~]# service rpcbind restart ; chkconfig rpcbind on
中止 rpcbind: [肯定]
正在啓動 rpcbind: [肯定]
[root@svr5 ~]# service nfs restart ; chkconfig nfs on
.. ..
啓動 NFS 服務: [肯定]
關掉 NFS 配額: [肯定]
啓動 NFS mountd: [肯定]
啓動 NFS 守護進程: [肯定]
正在啓動 RPC idmapd: [肯定]
使用showmount命令查看本機發布的NFS共享列表:
[root@svr5 ~]# showmount -e localhost
Export list for localhost:
/usr/src 192.168.4.0/24
/root 192.168.4.205
步驟二:從客戶機訪問NFS共享
1)啓用NFS共享支持服務
客戶機訪問NFS共享也須要rpcbind服務的支持,需確保此服務已開啓:
[root@pc205 ~]# service rpcbind restart ; chkconfig rpcbind on
中止 rpcbind: [肯定]
正在啓動 rpcbind: [肯定]
2)查看服務器提供的NFS共享列表
[root@pc205 ~]# showmount -e 192.168.4.5
Export list for 192.168.4.5:
/usr/src 192.168.4.0/24
/root 192.168.4.205
3)從客戶機192.168.4.205訪問兩個NFS共享,並驗證權限
將遠程的NFS共享/root掛載到本地的/root5文件夾,並驗證可讀可寫:
[root@pc205 ~]# mkdir /root5 //創建掛載點
[root@pc205 ~]# mount 192.168.4.5:/root /root5 //掛載NFS共享目錄
[root@pc205 ~]# df -hT /root5 //確認掛載結果
Filesystem Type Size Used Avail Use% Mounted on
192.168.4.5:/root nfs 50G 15G 33G 31% /root5
[root@pc205 ~]# cd /root5 //切換到掛載點
[root@pc205 root5]# echo "NFS Write Test" > pc205.txt //測試寫入文件
[root@pc205 root5]# cat pc205.txt //測試查看文件
NFS Write Test
將遠程的NFS共享/usr/src掛載到本地的/mnt/nfsdir,並驗證只讀:
[root@pc205 ~]# mkdir /mnt/nfsdir //創建掛載點
[root@pc205 ~]# mount 192.168.4.5:/usr/src /mnt/nfsdir/ //掛載NFS共享目錄
[root@pc205 ~]# df -hT /mnt/nfsdir/ //確認掛載結果
Filesystem Type Size Used Avail Use% Mounted on
192.168.4.5:/usr/src nfs 50G 15G 33G 31% /mnt/nfsdir
[root@pc205 ~]# cd /mnt/nfsdir/ //切換到掛載點
[root@pc205 nfsdir]# ls //讀取目錄列表
debug install.log kernels test.txt
[root@pc205 nfsdir]# echo "Write Test." > pc205.txt //嘗試寫入文件失敗
-bash: pc205.txt: 只讀文件系統
!!!! 若是從未受權的客戶機訪問NFS共享,將會被拒絕。好比從NFS服務器本機嘗試訪問本身發佈的/root共享(只容許192.168.4.205訪問),結果以下所示:
[root@svr5 ~]# mkdir /root5
[root@svr5 ~]# mount 192.168.4.5:/root /root5
mount.nfs: access denied by server while mounting 192.168.4.5:/root
4)爲NFS共享/usr/src添加觸發掛載
要求的觸發掛載點爲/misc/nfsdir,其中/misc爲autofs服務默認監控的文件夾,只需修改/etc/auto.misc文件,添加nfsdir的掛載設置便可:
[root@pc205 ~]# vim /etc/auto.misc
.. ..
nfsdir -fstype=nfs,ro 192.168.4.5:/usr/src
確保重載autofs服務:
[root@pc205 ~]# service autofs restart ; chkconfig autofs on
中止 automount: [肯定]
正在啓動 automount: [肯定]
而後ls檢查預期的掛載點,應該顯示遠程NFS共享/usr/src目錄的內容,表示針對此NFS共享的觸發掛載設置成功:
[root@pc205 ~]# ls /misc/nfsdir //查看以觸發掛載操做
debug install.log kernels test.txt
[root@pc205 ~]# df -hT /misc/nfsdir/ //確認觸發結果
Filesystem Type Size Used Avail Use% Mounted on
192.168.4.5:/usr/src nfs 50G 15G 33G 31% /misc/nfsdir
4、部署Multipath多路徑環境
目標:
經過Multipath,實現如下目標:
方案:
配置2臺虛擬機,每臺虛擬機均爲三塊網卡:
步驟:
步驟一:存儲節點上添加額外的磁盤
使用VMware軟件新建(或修改)虛擬機,爲虛擬機額外添加一塊硬盤。
步驟二:存儲節點上安裝並配置共享存儲
1)安裝target軟件
打開命令行終端,執行如下命令:
[root@storage ~]# vim /etc/tgt/targets.conf
添加如下內容:
<target iqn.2016-05.cn.tedu.storage>
backing-store /dev/sdb1
initiator-address 192.168.1.10
initiator-address 192.168.2.10
</target>
2)啓動服務並查看結果
[root@storage ~]# service tgtd start
[root@storage ~]# chkconfig tgtd on
[root@storage ~]# tgt-admin -s
Target 1: iqn.2016-05.cn.tedu.storage
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 2147 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb1
Backing store flags:
Account information:
ACL information:
192.168.1.10
192.168.2.10
注意以上的輸出,正確的結果必須有LUN1,它記錄的是共享磁盤信息。下面的ACL指的是該共享存儲容許哪些應用服務器使用。
步驟三:在應用服務器上安裝並配置iSCSI客戶端
1)安裝客戶端軟件
[root@srv0 yum.repos.d]# yum list | grep iscsi
iscsi-initiator-utils.x86_64 6.2.0.873-14.el6 Server
[root@srv0 yum.repos.d]# yum install -y iscsi-initiator-utils
2)發現存儲服務器的共享磁盤
由於有兩條鏈路均可以鏈接到共享存儲,因此須要在兩條鏈路上都發現它。
[root@srv0 桌面]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.20 --discover
正在啓動 iscsid: [肯定]
192.168.1.20:3260,1 iqn.2016-05.cn.tedu.storage
[root@srv0 桌面]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.20 --discover
192.168.2.20:3260,1 iqn.2016-05.cn.tedu.storage
[root@srv0 桌面]#
3)登錄共享存儲
只須要將iscsi服務重啓就能夠自動登錄。在login以前,只能看到本地的存儲,登錄以後,將會多出兩塊新的硬盤。
[root@srv0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 199.5G 0 part
├─VolGroup-lv_root (dm-0) 253:0 0 50G 0 lvm /
├─VolGroup-lv_swap (dm-1) 253:1 0 3.9G 0 lvm [SWAP]
└─VolGroup-lv_home (dm-2) 253:2 0 145.6G 0 lvm /home
sr0 11:0 1 3.6G 0 rom /media/cdrom
[root@srv0 ~]# service iscsi restart
中止 iscsi: [肯定]
正在啓動 iscsi: [肯定]
[root@srv0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 199.5G 0 part
├─VolGroup-lv_root (dm-0) 253:0 0 50G 0 lvm /
├─VolGroup-lv_swap (dm-1) 253:1 0 3.9G 0 lvm [SWAP]
└─VolGroup-lv_home (dm-2) 253:2 0 145.6G 0 lvm /home
sr0 11:0 1 3.6G 0 rom /media/cdrom
sdb 8:16 0 2G 0 disk
sdc 8:32 0 2G 0 disk
[root@srv0 ~]#
4)設置開機自啓動
iscsi用於自動login遠程存儲,iscsid是守護進程。
[root@srv0 ~]# chkconfig iscsid on
[root@srv0 ~]# chkconfig iscsi on
步驟四:配置Multipath多路徑
1)安裝多路徑軟件包
[root@srv0 ~]# yum list | grep multipath
device-mapper-multipath.x86_64 0.4.9-87.el6 Server
device-mapper-multipath-libs.i686 0.4.9-87.el6 Server
device-mapper-multipath-libs.x86_64 0.4.9-87.el6 Server
[root@srv0 ~]# yum install -y device-mapper-multipath
2)生成配置文件
[root@srv0 ~]# mpathconf --user_friendly_names n
此處的選項是不使用系統默認的命名方法,共享存儲在生產環境下頗有多是多臺應用服務器共同使用。若是使用系統默認命名方法,每臺應用服務器爲共享存儲起的名字不必定相同,這將給管理員帶來很大的使用上的不便。關閉系統默認命名方法,共享存儲的名字由管理員手工指定。
3)獲取wwid
登錄共享存儲後,系統多了兩塊硬盤,這兩塊硬盤其實是同一個存儲設備。應用服務器使用哪一個均可以,可是若是使用sdb時,sdb對應的鏈路出現故障,它不會自動切換到sdc。
爲了可以實現系統自動選擇使用哪條鏈路,須要將這兩塊磁盤綁定爲一個名稱。經過磁盤的wwid來斷定哪些磁盤是相同的。
取得一塊磁盤wwid的方法以下:
[root@srv0 ~]# scsi_id --whitelisted --device=/dev/sdb
1IET 00010001
[root@srv0 ~]#
4)修改配置文件
首先聲明獲取wwid的方法:
[root@srv0 ~]# vim /etc/multipath.conf
defaults {
user_friendly_names no
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
}
而後在文件的最後加入多路徑聲明,若是哪一個存儲設備的wwid和第(3)步獲取的wwid同樣,那麼,爲其取一個別名,叫mpatha。
multipaths {
multipath {
wwid "1IET 00010001"
alias mpatha
}
}
步驟五:啓用Multipath多路徑,並測試
1)啓動Multipath,並設置爲開機啓動
[root@srv0 ~]# service multipathd start
正在啓動守護進程multipathd: [肯定]
[root@srv0 ~]# chkconfig multipathd on
2)檢查多路徑設備文件
若是多路長設置成功,那麼將在/dev/mapper下面生成名爲mpatha的設備文件:
[root@srv0 ~]# ls /dev/mapper/
control mpatha VolGroup-lv_home VolGroup-lv_root VolGroup-lv_swap
3)對多路徑設備文件執行分區、格式化、掛載操做
[root@srv0 ~]# fdisk -cu /dev/mapper/mpatha
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x205c887e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #建立分區
Command action
e extended
p primary partition (1-4)
p #分區類型爲主分區
Partition number (1-4): 1 #分區編號爲1
First sector (2048-4194303, default 2048): #起始扇區回車
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): #回車
Using default value 4194303
Command (m for help): w #保存並退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
新的分區名稱應該是/dev/mapper/mpathap1,若是該文件不存在,則執行如下命令進行配置的從新載入:
[root@srv0 ~]# partprobe ; multipath -rr
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (設備或資源忙). As a result, it may not reflect all of your changes until after reboot.
Warning: 沒法以讀寫方式打開 /dev/sr0 (只讀文件系統)。/dev/sr0 已按照只讀方式打開。
Warning: 沒法以讀寫方式打開 /dev/sr0 (只讀文件系統)。/dev/sr0 已按照只讀方式打開。
Warning: 沒法以讀寫方式打開 /dev/sr0 (只讀文件系統)。/dev/sr0 已按照只讀方式打開。
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sr0 (無效的參數). As a result, it may not reflect all of your changes until after reboot.
reload: mpatha (1IET 00010001) undef IET,VIRTUAL-DISK
size=2.0G features='0' hwhandler='0' wp=undef
|-+- policy='round-robin 0' prio=1 status=undef
| `- 34:0:0:1 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=undef
`- 33:0:0:1 sdc 8:32 active ready running
[root@srv0 ~]# ls /dev/mapper/ #再次查看,將會看到新的分區
control mpatha mpathap1 VolGroup-lv_home VolGroup-lv_root VolGroup-lv_swap
[root@srv0 ~]#
建立目錄並掛載:
[root@srv0 ~]# mkfs.ext4 /dev/mapper/mpathap1 [root@srv0 ~]# mkdir /data [root@srv0 ~]# mount /dev/mapper/mpathap1 /data/ [root@srv0 ~]# df -h /data/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/mpathap1 2.0G 3.0M 1.9G 1% /data