儲存系列1-openfiler開源儲存管理平臺實踐
(一)openfiler介紹
Openfiler能把標準x86/64架構的系統變為一個更強大的NAS、SAN儲存和IP儲存閘道器,為管理員提供一個強大的管理平臺,並能應付未來的儲存需求。openfiler可以安裝在x86/64架構的工業標準伺服器上,否定了昂貴的專有儲存系統的需求。只需10分鐘即可把系統部署到戴爾、惠普、IBM等標準配置伺服器上,伺服器就變為一個功能強大的儲存網路了。
此外,與其它儲存方案不同的是,openfiler的管理是通過一個強大的、直觀的基於web的圖形使用者介面。通過這個介面,管理員可以執行諸如建立卷、網路共享磁碟分配和管理RAID等工作。
(1.1)豐富的協議支援
openfiler支援多種檔案界別和塊級別的資料儲存輸出協議,幾乎 涵蓋現有全部的網路儲存服務.
塊級別的協議:
- iSCSI
- 光纖通道(FC)
檔案級別的協議:
- NFS
- CIFS
- HTTP/DAV
- FTP
- rsync
(1.2)強大的管理功能
現在的儲存解決方案都存在管理能力不足的缺點,openfiler提供了直觀且易操作的基於web的圖形操作介面(GUI),openfiler中所有網路功能和儲存方面的設定均通過這個管理介面來完成。管理介面分為網路、物理卷、使用者和組的認證/授權、系統配置和狀態資訊等。
(二)openfiler安裝
安裝文件見:http://www.openfiler.org.cn/index.php/document/6-openfiler-install 。
(三)openfiler配置
安裝安裝之後,登入openfiler伺服器,會提示Web網頁的管理地址,直接訪問Web網頁即可。網頁的預設初始賬號密碼為:openfiler/password。
(3.1)openfiler新增儲存磁碟
STEP1:在openfiler伺服器中新增一塊磁碟,用作共享磁碟
STEP2:在openfiler的Web管理介面可以看到新新增的磁碟
STEP3:點選磁碟名,將磁碟建立為物理卷或者軟RAID磁碟陣列(RAID需要多塊磁碟),這裡建立為物理卷
STEP4:使用物理卷建立卷組(Volume Group)
STEP5:使用卷組建立邏輯卷
(3.2)網路訪問配置
由於iscsi和檔案系統(xfs,ext3等)都是走網路協議,其它機器想要訪問openfiler上的儲存,還需要開通網路訪問許可權。
STEP1:開啟Web的system頁面;
STEP2:在Network Access Configuration部分新增可以訪問openfiler的網段,型別設定為share
(四)使用openfiler對外提供儲存
(4.1)使用openfiler對外提供塊儲存(類似SAN儲存)
使用openfiler對外提供塊儲存,可以使用iSCSI協議,也可以使用Fibre Channel協議,這裡使用基於IP的iSCSI協議。
STEP1:首先開啟openfiler伺服器的iSCSI Target服務
STEP2:建立基於塊的lv,建立方法見上面:openfiler新增儲存磁碟。需要注意最後選擇塊型別
STEP3:新增iSCSI Target
選擇新增Target IQN,target IQN是儲存客戶端訪問儲存的連線資訊
STEP4:選擇對應的lv,開啟LUN Mapping
STEP5:開啟Network ACL
以上操作均在openfiler的WEB介面完成,接下來在客戶機上配置iSCSI。
STEP6:客戶端機器上安裝iscsi initiator
yum install -y iscsi-initiator-utils*
檢視安裝
[root@mysql8 ~]# rpm -qa|grep iscsi iscsi-initiator-utils-iscsiuio-6.2.0.874-17.el7.x86_64 iscsi-initiator-utils-6.2.0.874-17.el7.x86_64 iscsi-initiator-utils-devel-6.2.0.874-17.el7.x86_64
STEP7:iscsi initiator通過iscsiadm來管理,我們檢視提供服務的iscsi target機器上有哪些target,因為iscsi上有2塊網絡卡,所以存在2個路徑:
[root@mysql8 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.10.100 192.168.10.100:3260,1 iqn.2006-01.com.openfiler:tsn.44b5a4673d71 192.168.20.100:3260,1 iqn.2006-01.com.openfiler:tsn.44b5a4673d71
STEP8:使用iscsiadm登入到iscsi-target,登陸成功後,iscsi-target下面的磁碟也就共享過來了(有時需要重啟iscsi initiator機器)。
[root@mysql8 ~]# iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.44b5a4673d71 –portal 192.168.10.100:3260 --login
我們在儲存端只設置了4塊磁碟,但是在客戶端缺出現了8塊磁碟,這是因為openfiler有2塊網絡卡,使用2個IP登入iSCSI-Target,所以產生了重複資訊。要檢視各個IP訪問到的儲存資訊,可以使用如下命令:
1 [root@testserver ~]# iscsiadm -m session -P 3 2 iSCSI Transport Class version 2.0-870 3 version 6.2.0.874-17 4 Target: iqn.2006-01.com.openfiler:tsn.44b5a4673d71 (non-flash) 5 Current Portal: 192.168.10.100:3260,1 6 Persistent Portal: 192.168.10.100:3260,1 7 ********** 8 Interface: 9 ********** 10 Iface Name: default 11 Iface Transport: tcp 12 Iface Initiatorname: iqn.1994-05.com.redhat:6e1c3397973 13 Iface IPaddress: 192.168.10.10 14 Iface HWaddress: <empty> 15 Iface Netdev: <empty> 16 SID: 1 17 iSCSI Connection State: LOGGED IN 18 iSCSI Session State: LOGGED_IN 19 Internal iscsid Session State: NO CHANGE 20 ********* 21 Timeouts: 22 ********* 23 Recovery Timeout: 120 24 Target Reset Timeout: 30 25 LUN Reset Timeout: 30 26 Abort Timeout: 15 27 ***** 28 CHAP: 29 ***** 30 username: <empty> 31 password: ******** 32 username_in: <empty> 33 password_in: ******** 34 ************************ 35 Negotiated iSCSI params: 36 ************************ 37 HeaderDigest: None 38 DataDigest: None 39 MaxRecvDataSegmentLength: 262144 40 MaxXmitDataSegmentLength: 131072 41 FirstBurstLength: 262144 42 MaxBurstLength: 262144 43 ImmediateData: No 44 InitialR2T: Yes 45 MaxOutstandingR2T: 1 46 ************************ 47 Attached SCSI devices: 48 ************************ 49 Host Number: 3 State: running 50 scsi3 Channel 00 Id 0 Lun: 0 51 Attached scsi disk sdc State: running 52 scsi3 Channel 00 Id 0 Lun: 1 53 Attached scsi disk sde State: running 54 scsi3 Channel 00 Id 0 Lun: 2 55 Attached scsi disk sdg State: running 56 scsi3 Channel 00 Id 0 Lun: 3 57 Attached scsi disk sdh State: running 58 59 =========================================手動分割線========================================== 60 61 Current Portal: 192.168.20.100:3260,1 62 Persistent Portal: 192.168.20.100:3260,1 63 ********** 64 Interface: 65 ********** 66 Iface Name: default 67 Iface Transport: tcp 68 Iface Initiatorname: iqn.1994-05.com.redhat:6e1c3397973 69 Iface IPaddress: 192.168.20.20 70 Iface HWaddress: <empty> 71 Iface Netdev: <empty> 72 SID: 2 73 iSCSI Connection State: LOGGED IN 74 iSCSI Session State: LOGGED_IN 75 Internal iscsid Session State: NO CHANGE 76 ********* 77 Timeouts: 78 ********* 79 Recovery Timeout: 120 80 Target Reset Timeout: 30 81 LUN Reset Timeout: 30 82 Abort Timeout: 15 83 ***** 84 CHAP: 85 ***** 86 username: <empty> 87 password: ******** 88 username_in: <empty> 89 password_in: ******** 90 ************************ 91 Negotiated iSCSI params: 92 ************************ 93 HeaderDigest: None 94 DataDigest: None 95 MaxRecvDataSegmentLength: 262144 96 MaxXmitDataSegmentLength: 131072 97 FirstBurstLength: 262144 98 MaxBurstLength: 262144 99 ImmediateData: No 100 InitialR2T: Yes 101 MaxOutstandingR2T: 1 102 ************************ 103 Attached SCSI devices: 104 ************************ 105 Host Number: 4 State: running 106 scsi4 Channel 00 Id 0 Lun: 0 107 Attached scsi disk sdb State: running 108 scsi4 Channel 00 Id 0 Lun: 1 109 Attached scsi disk sdd State: running 110 scsi4 Channel 00 Id 0 Lun: 2 111 Attached scsi disk sdf State: running 112 scsi4 Channel 00 Id 0 Lun: 3 113 Attached scsi disk sdi State: runningView Code
STEP9:為了不去重複識別磁碟,需要在iSCSI initiator伺服器上安裝多路徑軟體
# 安裝多路徑軟體 yum install -y device-mapper* # 將多路徑軟體新增至核心模組中 modprobe dm-multipath modprobe dm-round-robin # 檢查核心新增情況 [root@mysql8 ~]# lsmod |grep multipath dm_multipath 27427 6 dm_round_robin,dm_service_time dm_mod 123303 23 dm_round_robin,dm_multipath,dm_log,dm_mirror,dm_service_time # 設定開機自啟動 systemctl enable multipathd.service # 檢查開機自啟動 [root@mysql8 ~]# systemctl list-unit-files|grep multipath multipathd.service enabled
啟動多路徑軟體multipathd
# 建立多路徑引數配置檔案 /sbin/mpathconf --enable # 啟動多路徑軟體multipathd systemctl start multipathd.service
檢視多路徑磁碟,一共有四個磁碟,名字分別為mpatha、mpathb、mpathc、mpathd
[root@testserver ~]# multipath -ll mpathd (14f504e46494c45527539434a6e4e2d497862592d786f7845) dm-6 OPNFILER,VIRTUAL-DISK size=15G features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 3:0:0:3 sdh 8:112 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 4:0:0:3 sdi 8:128 active ready running mpathc (14f504e46494c4552756250474a432d776575552d4f6d6f43) dm-5 OPNFILER,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 3:0:0:2 sdg 8:96 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 4:0:0:2 sdf 8:80 active ready running mpathb (14f504e46494c45527341486541542d50624e502d4b357963) dm-4 OPNFILER,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 3:0:0:1 sde 8:64 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 4:0:0:1 sdd 8:48 active ready running mpatha (14f504e46494c4552355359507a782d674f55302d32446331) dm-3 OPNFILER,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 3:0:0:0 sdc 8:32 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 4:0:0:0 sdb 8:16 active ready running
到這裡,我們就可以使用從openfiler掛載過來的磁碟了。
NOTE:
iSCSI(Internet Small Computer System Interface)。iSCSI技術由IBM公司研究開發,是一個供硬體裝置使用的、可以在IP協議的上層執行的SCSI指令集,這種指令集合可以實現在IP網路上執行SCSI協議,使其能夠在諸如高速千兆乙太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI介面與乙太網絡(Ethernet)技術結合,使伺服器可與使用IP網路的儲存裝置互相交換資料。iSCSI是一種基於 TCP/IP 的協議,用來建立和管理 IP儲存裝置、主機和客戶機等之間的相互連線,並建立儲存區域網路(SAN)。
- iSCSI target:就是儲存裝置端,存放磁碟或RAID的裝置,目前也能夠將Linux主機模擬成iSCSI target了!目的在提供其他主機使用的『磁碟』;
- iSCSI initiator:就是能夠使用target的使用者端,通常是伺服器。也就是說,想要連線到iSCSI target的伺服器,也必須要安裝iSCSI initiator的相關功能後才能夠使用iSCSI target提供的磁碟。
關於磁碟多路徑,本文並沒有深入介紹如何配置。如果想要了解,可以檢視redhat官方文件(中文的哦! ):https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/dm_multipath/index 。
(4.2)使用openfiler對外提供檔案系統儲存(NAS儲存)
首先我們需要了解一下什麼是網路附加儲存(NAS),這一段摘自redhat官方文件:
網路附加儲存 (NAS) 是一個檔案級儲存架構,使用一個或多個配備專用磁碟的伺服器來儲存資料,並與連線網路的大量客戶端共享這些資料。
NAS 裝置會將資料當作檔案。雖然從技術層面來看它們都能完成一般的伺服器任務,但是 NAS 裝置執行的軟體可以保護資料並處理各種許可權。所以,NAS 裝置不需要功能完善的作業系統。大多數 NAS 都包含針對資料儲存和資料顯示進行過精調的嵌入式輕量級作業系統。為了顯示這些檔案,NAS 裝置會使用基於檔案的標準協議,如網路檔案系統 (NFS)、伺服器訊息塊 (SMB)、通用網際網路檔案系統 (CIFS) 和/或 Apple 檔案傳輸協議 (AFP),分別與 Linux®、UNIX、Microsoft Windows 和 Apple 裝置進行通訊。
簡單而言,NAS儲存是一個基於網路的該項儲存,使用不同作業系統( Linux、UNIX、Windows 和 Apple )的使用者可以通過不同的網路協議連線到同一個NAS檔案系統上,實現共享訪問。
openfiler可以當做一臺NAS伺服器,從而給其它使用者共享儲存,接下來將一步一步建立NAS共享儲存。
STEP1:在openfiler的WEB介面的Services中開啟CIFS Server和NFS Server服務。
STEP2:在shares中點選“create new filesystem volumn”
STEP3:選擇卷組,建立邏輯卷
STEP4:建立邏輯卷之後即可在“shares”看到剛哥建立的邏輯卷
右鍵,建立資料夾
STEP5:共享訪問控制模式選擇public guest access
STEP6:訪問協議,將NFS和CIFS設定為讀寫(RW)即可
STEP7:在客戶端機器上掛載磁碟
# 建立掛載路徑 [root@testserver ~]# mkdir /data02 # 掛載 [root@testserver ~]# mount -t nfs 192.168.10.100:/mnt/vg_test/lv_test02/data02 /data02
掛載之後,就可以看見了。
為了重啟機器後自動掛載,在fstab檔案中新增資訊
[root@testserver ~]# vim /etc/fstab # 新增如下掛載命令 192.168.10.100:/mnt/vg_test/lv_test02/data02 /data02 nfs defaults 0 0
【