存儲系列1-openfiler開源存儲管理平台實踐
- 2020 年 10 月 21 日
- 筆記
- ----710 Linux/UNIX, ----730 虛擬機
(一)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安裝
安裝文檔見://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: running
View 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官方文檔(中文的哦! )://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
【完】