linux掛載EMC存儲基本思路,常用命令及故障處理


------本博文素材取自於網絡,加入了自己的操作經驗,文中的軟件需要和對應的EMC設備匹配,不能全部照搬本文!具體軟件、設備型號可到EMC官方查詢!

對運行中的存儲操作是需要謹慎的!本博文僅作參考,如果您按照此博文操作出現故障,與本博主無關,一切后果自負!------


一、linux掛載EMC存儲基本思路(redhat\centos):
掛載存儲有兩種方式:光纖模式(hub卡)和iscsi (以太網)。兩者大體思路是一樣的。

1、在linux應用服務器上安裝hub卡,連接光纖到光纖交換機上;

2、在linux應用服務器安裝hub卡驅動程序,並查看本機hub的wwpn/wwnn號;
   也可以登陸到光纖交換機上,查看對應的HBA卡接入到光交的端口,端口會顯示wwpn號【通過switchshow查詢】;
    查看wwpn號: cat /sys/class/fc_host/host*/port_name
    查看wwnn號: cat /sys/class/fc_host/host*/node_name
    
3、在linux應用服務器上需要安裝Agent,安裝后重起,EMC陣列才能發現主機;
    A、將Agent光盤放入服務器光驅,或通過U盤、FTP上傳均可
    B、打開光盤或U盤所在目錄,找到所在文件
    C、通過命令行或雙擊完成安裝
       a. rpm –ivh NaviHostAgent-Linux-64-x86-en_US-6.29.5.0.66-1.x86_64.rpm
       b. 確認安裝完成;
          
4、在存儲上連接linux應用服務器、並划出lun,選擇存儲大小;
    A、登陸emc
    B、先確認存儲是否能夠正確識別的主機,在存儲上右鍵選擇“connectivity status”.
    C、在connectivity status 界面查看是否已經正確識別主機HBA卡的WWN
    D、對新識別的HBA卡進行注冊,點擊“Group Edit”,彈出Group Edit Initators界面,從Available 里面選擇新的HBA卡,移至Selected筐內,輸入正確的主機名和IP地址,確定
    E、回到Connectivity Status 檢查所有HBA卡已經注冊並且 處於logged in狀態。
    F、創建新LUN,在需要創建LUN的Raid Group上右鍵,選擇 Bind LUN。
    G、創建LUN的時候,確認幾個主要參數 RAID Group for new LUN、LUN Size 、Default Owner。
    H、創建Storage Group,在Storage Groups上右鍵,選擇New Storage Group
    I、在新創建的Storage Group上右鍵選擇 屬性,給主機分配相對應空間。
    J、在屬性的 LUNs頁面,選擇可用的新LUN,分配至Selected LUNs
    K、在Hosts頁面選擇需要空間的主機,分配至Hosts be Connected筐內,點擊OK確認所有配置。
    L、然后分對lun 進行trespass,這樣主機才能聯機此磁盤。
    
5、在應用服務器上安裝多路徑軟件,不同的存儲,多路徑軟件不同;
    A、 將PowerPath光盤放入服務器光驅,或通過U盤、FTP上傳均可
    B、 安裝方式,同Agent相同,無需軟件任何信息
    C、 安裝命令rpm –ivh EMCpower.LINUX-5.3.1.00.00-111.rhel5.x86_64.rpm
    D、 輸入PowerPath License
        a、 在命令行下輸入:emcpreg –install   (emcpreg -add + SN 碼)
(如果在安裝 PowerPath的過程中沒有注冊 PowerPath 軟件,且隨后運行了 powermt config 命令 或重新啟動了主機,則負載平衡和故障切換策略將設置為基本故障切換。
 如果出現這種情況,您必須使用 emcpreg -install 命令注冊 PowerPath,然后根據需要運行powermt set policy 命令重置該策略.)
        b、 按提示輸入序列號即可
    E、 重啟服務器。
    F、 命令:powermt display dev=all 以查看軟件是否正確安裝。
    
6、在應用服務器將磁盤格式化,按需求掛載到相應的目錄;
    
    rmmod lpfc  #刪除lpfc模塊
    fdisk -l
    modprobe lpfc  #重新加載lpfc模塊
    fdisk -l       #查看發現的EMC磁盤,命名格式為emcpowerx
    
    A、 分區方式使用EMC磁盤:
        a. 通過fdisk  /dev/emcpowerx命令添加分區
        (1、 創建分區:依次輸入命令n創建分區;p主分區;1第一個分區w保存。
        (2、 刪除分區:輸入命令d刪除分區w保存。
        b. mkfs.ext3 /dev/emcpowera1
        c. mount /dev/emcpowera1 /tempdir
    B、 若通過vg來管理
        a. 通過fdisk /dev/emcpowerx命令添加分區,但選擇分區類型時,建議選LVM
        b. pvcreate /dev/emcpowera1
        c. vgcreate –s 128M newvg /dev/emcpowera1
        d. lvcreate -L 100G -n lv01 newvg
        e. mkfs.ext3  /dev/newvg/lv01
        f. mount /dev/newvg/lv01  /tempdir
        g. vgdisplay
        h. lvdisplay
    C、 若需要修改磁盤名稱,請通過以下命令:
        a. emcpadm –renamepesudo –s 源磁盤名 –t 目標磁盤名

7、在/etc/fstab 設置自動啟動掛載;
    A、vi /etc/fstab
       #在最后一行加入:
       /dev/newvg/lv01       /tempdir     ext3    defaults      0     0
    B、在/etc/rc.d/rc.local加入 :
       /sbin/vgsan
       /sbin/vgchange -a y

二、Linux主機上查看emc掛載
1、查看是否有emc存儲掛載

[root@xxx ~]# powermt display dev=all
Pseudo name=emcpowera
VPLEX ID=xxxxxx
Logical device ID=xxxxxxxx
.....
如果能看到以上emcpowera,能說明有emc存儲掛載在本機上,如果掛載多塊,也會按照emcpowera,b.c,d排序下去,能看到所有存儲信息。


2、查看各掛載存儲盤大小情況

[root@xxx ~]# fdisk -l |grep emcpower
Disk /dev/emcpowera:5000 MB, 5000709120 bytes
Disk /dev/emcpowerb: 500 GB, 500045094400 bytes
Disk /dev/emcpowerc: 500 GB, 500045094400bytes
.....
注意:emc統計的MB,GB是按照除以1000來換算的,如果需要換算准確的存儲大小,可以使用后面的bytes除以1024來換算。

三、Linux主機上掛載常見故障(來源於:http://blog.sina.com.cn/s/blog_627aacdb01015hm5.html)
本文歸納總結了Linux/Unix系統幾個常見的SCSI故障如:主機HBA無法發現LUN,路徑顯示錯誤,同一個LUN顯示重復的LUN ID,故障切換問題,重新掃描磁盤問題等,並列出相關解決方法。

問題1:如何通過iSCSI在Linux動態發現新LUNs?

平台:Red Hat Linux, SuSE Linux

問題描述:無法動態發現新磁盤設備

根本原因

iSCSI驅動可在Ethernet上動態發現目標存儲系統,然而,它無法動態發現存儲系統上的LUN。Linux操作系統的SCSI中間層負責發現LUN。因此,通過Fibre Channel,用戶必須重新掃描SCSI總線以發現新添加LUN,用戶可通過重啟服務器或重新加載iSCSI模塊實現上述操作。

解決方法

root權限使用以下命令在 RHEL 3, RHEL4, SLES 8, SLES 9, Asianux 1.0, and Asianux 2.0上重新加載iSCSI驅動:

# /etc/init.d/iscsi restart

在RHEL5和SLES 10上作為root使用以下命令:

RHEL5:

# /etc/init.d/iscsid restart

SLES 10:

# /etc/init.d/open-iscsi restart

# /sbin/iscsiadm -m session –R

 

問題2:Linux是否需要LUN 0

平台:Linux

問題描述

1. /proc/scsi/scsi每條路徑只包含一個DGC LUN Z。

2. /proc/scsi/qla2?00/[0-9] 顯示除了LUN 0以外的所有LUN,星號標記顯示沒有 SCSI注冊。

3. Emulex HBA 已在 FA注冊 但/proc/scsi/scsi中沒有device entry。

     根本原因

     Linux 2.4.x內核對LUN 0使用SCSI INQUIRY命令以確定系統連接到何種類型的磁盤設備。如果沒有LUN 0,QLogic和Emulex驅動將會返回錯誤而不是發INQUIRY命令給磁盤設備,因此,Linux系統將無法自動掃描磁盤設備。須手動激活LUN。

     解決方法

     可通過以下方法解決此問題:

     1. 映射一個Gatekeeper給LUN 0。Linux 2.4受到最大SCSI磁盤設備數量的限制,因此可能需要手動指定HLU。

     2. 手動掃描LUN。用戶須小心規划掃描時間。

     3. 為Linux SCSI驅動打補丁(不推薦)。

     詳情請見Primus Solution emc115253。

 

問題3Linux主機Emulex HBA無法看見磁盤設備

平台:Linux Kernel 2.4

問題描述

1. 主機在存儲端注冊並登記后無法看到任何磁盤設備。

2. 所有lpfc驅動實例文件(例如:/proc/scsi/lpfc/*)無法看見存儲WWN。

解決方法

按照以下步驟進行操作:

1. 通過如下命令檢查哪些模塊依賴於lpfc:

lsmod | grep lpfc
lpfc       243664   0  [lpfcdfc]

命令輸出地黑體部分是正在使用lpfc的模塊。在lpfcdfc被刪除之前,lpfc將無法刪除。

2. 使用rmmod命令刪除相關模塊,命令格式如下:

rmmod lpfcdfc

當該命令執行成功,通過lsmod命令驗證該模塊已被刪除。

3. 使用以下命令刪除lpfc模塊:

rmmod lpfc

4. 使用以下命令重新加載lpfc模塊:

modprobe lpfc

5. 模塊成功加載之后,將會初始化PLOGI及存儲端口信息,將會在驅動實例文件中看到。

同時也會自動掃描磁盤設備,如果沒有,運行命令echo '- - -' > /proc/scsi/scsi掃描磁盤設備。

 

 

問題4"powermt display dev=all "Device(s) not found""

平台:HP-UX, IBM AIX, Red Hat Linux, UNIX

軟件:PowerPath 5.0

問題描述:使用命令powermt display dev=all無法查看新加SCSI磁盤設備

解決方法:在emcgrab日志"powermt display options"文件檢查PowerPath陣列狀態是否設置為“managed”,或在主機運行命令powermt display options。

如果指定陣列設置為“unmanaged”,則輸入以下命令:

powermt manage class="symm" (or class="clariion", etc.)

powermt display dev=all

powermt save。

 

問題5Linux主機在proc/scsi/scsi中發現重復LUN ID

平台:Red Hat Linux 5.3

產品:Symmetirx DMX-4, VMAX系列

問題描述

一個磁盤設備呈現給2個HBA,每個HBA上通過2個不同LUN ID顯示2個實例。主機應當在各HBA上看到相同的實例(LUN 16而非16和17),而不是兩個不同的LUN ID。

Host: scsi5 Channel: 00 Id: 02 Lun: 16

Vendor: EMC Model: SYMMETRIX Rev: 5772

Type: Direct-Access ANSI SCSI revision: 02

Host: scsi5 Channel: 00 Id: 02 Lun: 17

Vendor: EMC Model: SYMMETRIX Rev: 5772

Type: Direct-Access ANSI SCSI revision: 02

 

Host: scsi3 Channel: 00 Id: 02 Lun: 16

Vendor: EMC Model: SYMMETRIX Rev: 5772

Type: Direct-Access ANSI SCSI revision: 02

Host: scsi3 Channel: 00 Id: 02 Lun: 17

Vendor: EMC Model: SYMMETRIX Rev: 5772

Type: Direct-Access ANSI SCSI revision: 02

解決方法

查看是否SPC 2和SCSI 3標記缺失。重新添加標記會解決此問題,主機必須重啟以使更改生效。在HBA級別設置標記,例如:symmask -sid 308 -dir 8C -p 0 -wwn 10000000c99338ca set hba_flags on SPC2,SC3 –enable。

當磁盤設備設置了SPC 2和SCSI 3之后,proc/scsi/scsi將會返回正確地LUN ID。

 

 

問題6Linux操作系統能否不重新加載Linux驅動而重新掃描磁盤設備?

平台:Red Hat Linux,SuSE Linux Enterprise Server(SLES),QLogic,

問題描述:新LUN添加到存儲陣列之后,無法通過操作系統的QLogic HBA驅動看到該設備。重啟或重新加載驅動會造成生產中斷。

解決方法

按照以下步驟,強制驅動重新掃描目標設備,允許添加新磁盤設備。該步驟觸發驅動初始化LUN發現進程。掃描順序:首先驅動層(qla2300/qla2200等),之后Linux SCSI中間層(即OS掃描)。

1.    1. 通過命令行強制掃描,輸入以下命令:

     # echo "scsi-qlascan" > /proc/scsi/<driver_name>/<adapter_ID>

      <driver_name>是qla2100, qla2200, qla2300 (2.4內核驅動)或qla2xxx(2.6內核驅動)<adapter_ID>是HBA實例編號。

2.    2. 執行步驟1之后,通過以下命令強制SCSI中間層執行掃描並為新加磁盤設備添加device table entry。

     # echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi

     "0 1 2 3"是“主機 通道 LUN”。

 

問題7Red Hat Linux收到SCSI錯誤返回值0x20000

平台:Red Hat Enterprise Linux 4 U2及以上版本,QLogic,PowerPath

問題描述

1.    1. Red Hat Linux收到SCSI錯誤返回值0x20000。

2.    2. kernel: SCSI error : <1 0 7 206> return code = 0x20000
kernel: end_request: I/O error, dev sdik, sector 4069594

     根本原因

     當一個端口被禁止,拔出,或重置光纖通道交換機通常會導致一個RSCN(Registered State Change Notification)事件,所有仍連接在交換機上的HBA都會看到該RSCN事件。在沒有預警的情況下,多路徑軟件(PowerPath, DMP, MPIO)將會無法判斷。

     注意:返回值0x20000表示DID_BUS_BUSY。並非所有0x20000錯誤都是由RSCN事件引起。Fabric或陣列故障也可能導致該錯誤。用戶不應假設RSCN一定是導致該錯誤發生的原因。

     解決方法

     要正確地解釋RSCN事件,須在modprobe.conf文件中添加一個內核選項。須重啟以使更改生效。

1.    1. 編輯/etc/modprobe.conf並添加以下一行內容:

     options qla2xxx ql2xprocessrscn=1

2.    2. 保存文件。

3.    3. 重新編譯initrd。

     mkinitrd -f /boot/initrd-`uname -r`.img `uname -r`

4. 重啟系統以使更改生效。

 

問題8Linux主機在/proc/scsi/scsi中只能看到一條路徑連接存儲

平台:SLES 9,SLES 10,QLogic 8.01.06.01,PowerPath 5.0.1

問題描述

1.    SuSE Linux在/proc/scsi/scsi中只看到一條路徑連接存儲。

2.    PowerPath只顯示一條路徑連接到emcpower設備。

3.    即使配置了4條路徑,/proc/scsi/scsi也只顯示一條路徑連接到磁盤設備

     Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: DGC      Model: RAID 5           Rev: 0324

     Type:   Direct-Access                    ANSI SCSI revision: 04

     powermt display dev=all displays only one path to the emcpower device:

     Pseudo name=emcpowera
CLARiiON ID=CK200072300649 [SG_LINUXTST01]
Logical device ID=60060160128C1D00D8D768A3915BDC11 [fiscuat2 DATA]
state=alive; policy=BasicFailover; priority=0; queued-IOs=0
Owner: default=SP B, current=SP B
==============================================================================
---------------- Host ---------------   - Stor -   -- I/O Path -  -- Stats ---
###  HW Path                I/O Paths    Interf.   Mode    State  Q-IOs Errors
==============================================================================
   0 qla2xxx                   sda       SP B0     active  alive      0      0

根本原因

如果用戶阻止PowerPath顯示交換機上連接HBA0的端口,路徑將會故障切換。PowerPath顯示LUN並沒有被另一個HBA通過另一個SP訪問。(LUN將會trespass)。信息顯示如下:

Jan 29 16:01:07 linuxtst01 kernel: qla2400 0000:08:00.0: LOOP DOWN detected (2).
Jan 29 16:01:18 linuxtst01 kernel: qla2x00: FAILOVER device 0 from 5006016039a028a8 -> 5006016839a028a8 - LUN 00, reason=0x2
Jan 29 16:01:18 linuxtst01 kernel: qla2x00: FROM HBA 0 to HBA 0
Jan 29 16:01:19 linuxtst01 cmafcad[6362]: Host controller 129 status change.Status is now Loop Degraded.
Jan 29 16:01:21 linuxtst01 kernel: qla2x00: FAILOVER device 0 from 5006016839a028a8 -> 5006016a39a028a8 - LUN 00, reason=0x2
Jan 29 16:01:21 linuxtst01 kernel: qla2x00: FROM HBA 0 to HBA 0
Jan 29 16:01:23 linuxtst01 kernel: qla2400 0000:08:00.0: Scheduling rescan for new luns...
Jan 29 16:01:23 linuxtst01 kernel: qla2400 0000:08:00.1: Scheduling rescan for new luns...
Jan 29 16:01:24 linuxtst01 kernel: qla2x00: FAILOVER device 0 from 5006016a39a028a8 -> 5006016939a028a8 - LUN 00, reason=0x2
Jan 29 16:01:24 linuxtst01 kernel: qla2x00: FROM HBA 0 to HBA 1

很明顯PowerPath沒有進行故障切換,但QLogic本機的故障切換被激活了。

檢查/etc/modprobe.conf (RHEL主機) 或/etc/modprob.conf.local (SuSE 主機)的ql2xfailover參數。

解決方法

更改ql2xfailover參數值為0以禁止本機故障切換。在/etc/modprobe.conf中添加options qla2xxx ql2xfailover=0 ConfigRequired=0,重新編譯initrd並重啟。重啟之后,確認"cat /sys/module/qla2xxx/parameters/ql2xfailover"返回0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM