zoukankan      html  css  js  c++  java
  • Linux系统SCSI磁盘扫描机制解析及命令实例

    介绍
    Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备进行重新配置的方式,并附加命令实例。

    更多信息
    Linux系统提供多重机制以重新扫描SCSI总线并重认系统中加入的SCSI设备。在2.4内核方案中,由于动态LUN扫描机制不具备一致性,往往需要中断I/O。
    2.6内核里,LUN扫描有了显著改进并添加了动态LUN扫描机制。Linux目前缺乏像drvconfig或ioscan那样允许动态SCSI通道重配的命令。
    Linux主机对磁盘设备进行重新配置的方式包括:

    # 重启系统
    # 卸载并重新加载HBA驱动模块
    # Echo /proc下的SCSI设备列表
    # 通过/sys下的属性设置运行SCSI扫描
    # 通过HBA厂商脚本运行SCSI扫描

    系统重启
    重启主机是检测新添加磁盘设备的可靠方式。在所有I/O停止之后方可重启主机,同时静态或以模块方式连接磁盘驱动。系统初始化时会扫描PCI总线,因此挂载其上的SCSI host adapter会被扫描到,并生成一个PCI device。之后扫描软件会为该PCI device加载相应的驱动程序。加载SCSI host驱动时,其探测函数会初始化SCSI host,注册中断处理函数,最后调用scsi_scan_host函数扫描scsi host adapter所管理的所有scsi总线。

    重新加载HBA驱动
    通常情况下,HBA驱动在系统中以模块形式加载。从而允许模块被卸载并重新加载,在该过程中SCSI扫描函数得以调用。通常,在卸载HBA驱动之前,SCSI设备的所有I/O都应该停止,卸载文件系统,多路径服务应用也需停止。如果有代理或HBA应用帮助模块,也应当中止。
    命令示例:
    例如,rac节点上某台服务器执行fdisk –l命令看不到共享磁盘,可尝试执行如下命令:

    # modprobe -r lpfc(卸载驱动)
    # modprobe lpfc(加载驱动)

    /proc下SCSI扫描
    2.4内核中,/proc文件系统提供了可用SCSI设备的列表。如果系统中SCSI设备重新配置,那么所有这些改变通过echo /proc接口反映到SCSI设备中。添加一个设备,主机,channel,target ID,以及磁盘设备的LUN编号会被添加到/proc/scsi/,需指定scsi编号。
    命令示例:

    # echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi
    0:主机ID
    1:channel ID
    2:target ID
    3:LUN编号

    该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。如果没有找到相应文件,需为/dev路径下新增磁盘设备创建设备文件名。
    如果要删除一个磁盘设备,使用适当的主机,channel,target ID及LUN编号运行如下格式命令:

    # echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi
    0:主机ID
    1:channel ID
    2:target ID
    3:LUN编号

    /sys下SCSI扫描
    2.6内核中,HBA驱动将SCAN功能导出至/sys目录下,可用来重新扫描该接口下的SCSI磁盘设备。命令如下:

    # cd /sys/class/scsi_host/host4/
    # ls -al scan
    # echo '- - -' > scan
    '- - -' 代表channel,target和LUN编号。以上命令会导致hba4下所有channel,target以及可见LUN被扫描。

    RHEL5 或SUSE10:

    echo '- - -' > /sys/class/scsi_host/host0/scan
    /sys/class/scsi_host/ 下面有几个host 就扫描几次

    RHEL4 或SUSE9:

    echo 1 >> /sys/class/scsi_host/host0/issue_lip 
    同样是/sys/class/scsi_host/ 下面有几个host 就执行几次
    echo '- - -' >> /sys/class/scsi_host/host0/scan

    在现有PowerPath环境中增加LUN:
    1.确保存储端已配置好LUN并输出给Linux 主机
    2.通过powermt命令获得HBA 卡列表,并扫描列表中所有的HBA

    echo '- - -' > /sys/class/scsi_host/host#/scan
    例如, 如果powermt 显示列出HBA 4 和5, 使用如下命令开始扫描:
    echo '- - -' > /sys/class/scsi_host/host4/scan
    echo '- - -' > /sys/class/scsi_host/host5/scan

    3.运行powermt config 配置新认到的磁盘,生成虚拟设备
    4.用powermt display 检查新认到的LUN 及设备路径

    在现有PowerPath环境中动态删除 LUN
    注意,必须严格遵守操作次序,如果次序有误可能会造成主机OS panic。
    1.在将要删除的设备上停止所有的I/O。
    2.通过以下命令确定虚拟设备对应的原始SCSI设备:

    powermt display dev=emcpower<id>

    3.删除虚拟设备

    powermt remove dev=emcpower<id>

    4.回收虚拟设备号以备后用

    powermt release

    如果此命令失败,已删除的虚拟设备仍会存在于/dev 和/sys/block 下,并且在以后动态添加新LUN时可能会引发问题。
    5.对每个原始SCSI 设备执行以下命令:

    echo 1 > /sys/block/sd<id>/device/delete

    此命令使PowerPath 停止这些原始sd 设备上的I/O 并且将其从/dev 和/sys/block下移除。如此命令执行不成功,在以后动态添加新LUN时可能会引发问题。
    6.在存储阵列中删除对应的LUN,执行powermt display 验证设备已被删除。

    通过HBA厂商脚本进行SCSI扫描
    QLogic
    利用QLogic FC HBA LUN Scan Utility 脚本即可无需重启动系统而识别新添加的LUN。也无需对QLogic FC driver 的重新加载。
    命令示例:
    通过以下命令重新扫描所有HBA:

    # ./ql-dynamic-tgt-lun-disc.sh
    # ./ql-dynamic-tgt-lun-disc.sh -s
    # ./ql-dynamic-tgt-lun-disc.sh –scan

    重新扫描并删除丢失的LUN,使用以下两个命令其中任何一个:

    # ./ql-dynamic-tgt-lun-disc.sh -s -r
    # ./ql-dynamic-tgt-lun-disc.sh --scan –refresh

    Emulex
    使用 Emulex LUN Scan Utility 脚本可以动态扫描新添加的LUN。
    命令示例:

    # gunzip lun_scan.sh.gz
    # chmod a+x lun_scan
    扫描所有lpfc HBA:
    # lun_scan all
    扫描scsi主机编号2的lpfc HBA:
    # lun_scan 2
    之后确认OS 识别到新设备:
    # fdisk -l
    如果系统中有PowerPath ,还需要运行:
    # powermt config

    参考
    EMC Host Connectivity Guide for Linux
    应用于
    Linux主机Kernel 2.4、2.6版本
    RHEL, SUSE

    本文转载自:https://www.cnblogs.com/cqubityj/p/4241282.html

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/Wang-Hongwei/p/13385954.html
Copyright © 2011-2022 走看看