Linux系统SCSI磁盘管理全攻略(一)

介绍

本系列文章系统、全面地介绍了Linux 的SCSI设备管理机制和整套操作命令。包括以下六大主题:Linux SCSI子系统概述

Linux主机LUN识别

动态SAN网络重配

LUN发现步骤

Linux设备命名

SCSI磁盘限制

本文作为系列第一篇,解答了用户的常见问题,如:怎样确认驱模块是否被加载?怎样查看SCSI子系统已发现并识别的设备?如何验证内核已正确识别出LUN的编号,用户在从fabric中添加或删除磁盘时,有哪些方法让主机重新识别?

更多信息

Linux SCSI子系统概述:

Linux SCSI子系统包括三层:

上层由特定的设备类型驱动所组成,如磁盘驱动、磁带驱动和CD-ROM驱动,最靠近用户空间。

下层包括诸如QLogic和Emulex HBA这类驱动,最靠近硬件。

中间层是SCSI核心代码,连接上层和下层。

按照内核版本的区别,驱动可编译进内核或以模块的形式加载到内核。sd是SCSI磁盘驱动,或块驱动,作为模块时命名为scsi_mod。

通常,在大多数版本中这些驱动都编译为模块,并在启动时作为初始化内存磁盘镜像文件(initrid image)的一部分被加载。如果当前没有在启动时加载,而启动过程中要求加载时,那么就需要重新编译一个包含该驱动的初始化内存磁盘镜像文件。在2.4版本内核中,需要修改/etc/modules.conf文件来完成;2.6版本内核中,不仅需要修改/etc/modules.conf文件,还要执行mkinitrd命令来对改动进行更新。

要确认驱动是否编译为模块及当前是否被加载,只需查看lsmod命令输出中的sd_mod 和 scsi_mod。以下为示例输出:

# lsmod | grep sd

sd_mod                 13440 296

scsi_mod              104068   6  [qla2300 st sr_mod sg ncr53c8xx sd_mod]

注意:如果SCSI中间层驱动编译为模块,则scsi_mod必须先于上层和下层驱动加载。

Linux主机LUN识别:

Linux 2.4内核版本中,系统在加载主机适配层驱动时通过扫描SCSI总线时识别。SCSI子系统已发现并识别的设备在/proc/scsi/scsi文件中列出。比较好的方法是使用cat命令列出/proc/scsi/scsi的输出,来验证内核已正确识别出LUN ID。命令输出示例如下:

# cat proc/scsi/scsi

# cat /proc/scsi/scsi | less

Attached devices:

Host: scsi1 Channel: 00 Id: 00 Lun: 00

Vendor: IBM-PSG  Model: DDYS-T36950M  M  Rev: S96E

Type:   Direct-Access                    ANSI SCSI revision: 03

Host: scsi1 Channel: 00 Id: 08 Lun: 00

Vendor: IBM      Model: YGLv3 S2         Rev: 0

Type:   Processor                        ANSI SCSI revision: 02

Host: scsi4 Channel: 00 Id: 00 Lun: 00

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 01

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 02

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 03

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 04

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 05

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 06

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

Host: scsi4 Channel: 00 Id: 00 Lun: 07

Vendor: IBM      Model: 1750500          Rev: 5.17

Type:   Direct-Access                    ANSI SCSI revision: 05

注意,/proc/scsi/scsi 列出的磁盘设备不是动态的,因此不受网络状态变更的影响。

从Linux2.6内核版本开始,/proc文件系统迁移至改进后的/sys文件系统。/sys文件系统中加入对动态变更的支持,如添加和删除LUN,而无需重新加载主机适配器驱动或重启主机。通常,可通过/sys/class/scsi_host/hostN目录下的内容来查看哪些SCSI设备已被主机识别。N是主机适配器ID号。用户空间有一个lsscsi工具, 使用/sys中的信息来显示所有识别设备的汇总清单。(lsscsi命令仅在SLES中支持)

动态SAN网络重配:

用户在网络中添加或删除磁盘时,需要对其重新识别。可使用以下四种方法之一让Linux主机重新识别这些变更:重启主机

卸载并重新加载主机适配器驱动

通过echo /sys文件系统(仅适用于2.6内核版本)重新扫描总线

通过echo /proc或/sys文件系统手动添加和删除SCSI磁盘

重启主机或卸载并加载主机适配器驱动

由于设备是通过扫描SCSI总线被发现的,通常重新扫描SCSI总线来发现SAN网络变更是最简便的方法。由重新加载主机适配器驱动或重启系统来触发总线扫描。

卸载主机适配器驱动或重启系统之前,用户必须:停止I/O

卸载所有文件系统

如果使用了SDD,在重新加载主机适配器驱动前,用sdd stop命令卸载SDD驱动。在主机适配器驱动重新加载之后,用sdd start命令重新加载SDD。

当主机适配器驱动作为模块植入时,可通过重新加载主机适配器驱动来解决。而无论主机适配器驱动编入内核还是作为模块,都可以重启系统来解决该问题。

通过echo /sys文件系统重新扫描总线(仅适用于Linux2.6内核版本)

对于Linux2.6内核版本,可通过/sys接口重新扫描总线,而无需重新加载主机适配器驱动或重启系统。以下命令可扫描所有通道、target、LUN和主机。

echo “- - -” > /sys/class/scsi_host/hostH/scan

手动添加和删除SCSI磁盘

用户可通过以下命令手动添加和删除SCSI磁盘。

注意:以下命令示例中,H, B, T, L代表设备的主机,总线,target,和LUN ID。

可通过以下命令删除或对SCSI磁盘取消配置:

echo "scsi remove-single-device H B T L" > /proc/scsi/scsi

如果驱动无法被卸载并重新加载,并且用户知道新设备的主机,总线,target和LUN ID,那么可以使用以下命令通过/proc/scsi/scsi文件添加来实现:

echo "scsi add-single-device H B T L" > /proc/scsi/scsi

对于2.6内核版本,设备同样可通过/sys文件系统来添加和删除。使用以下命令删除磁盘并使系统重认此更新:

echo “1” > /sys/class/scsi_host/hostH/device/H:B:T:L/delete

或使用如下命令:

echo “1” > /sys/class/scsi_host/hostH/device/targetH:B:T/H:B:T:L/delete

使用以下命令在内核中重新注册磁盘:

echo “B T L” > /sys/class/scsi_host/hostH/scan

注意:Linux内核不在/dev目录中为网络设备指定固定名称。设备文件名在扫描总线时按照发现顺序指定,例如,一个LUN名为/dev/sda,在驱动重新加载后,这个LUN名称可能更改为/dev/sdce。网络重认可能导致主机,总线,target和LUN ID值的偏移,因此通过/proc/scsi/scsi文件添加特定磁盘是不可靠的。

参考

应用于

Linux操作系统

linux系统scsi硬盘,Linux系统SCSI磁盘管理全攻略(一)相关推荐

  1. [转载]Linux用户管理全攻略(八)

    原文地址:Linux用户管理全攻略(八)作者:ZOL_心蓝蓝 Linux 系统中的超级权限的控制 作者:北南南北 赞助: eTony,pandonny,懒猫, Arch 来自:LinuxSir.Org ...

  2. linux下php-5.4.8.tar.gz编译安装全攻略

    首先安装基础依赖组建,注:这些依赖组建也是LINUX+PHP+MYSQL+APACHE+NGINX+MEMCACHED时必要的系统组件  LANG=C yum -y install gcc gcc-c ...

  3. 对症下药 硬盘坏道检测与修复全攻略(组图)

    所有的电脑都要使用到硬盘,我们日常使用的所有数据都存储在硬盘上.硬盘作为电脑不可缺少的重要部件之一而被大家广泛认识.而短短的几年时间里,硬盘从几十MB发展到现在的几百GB,而TB级别的硬盘也已经出现, ...

  4. 硬盘坏道如何屏蔽?最全攻略都在这了!

    如何使用DiskGenius工具屏蔽硬盘坏道?如果电脑一不小心就会出现坏道等情况,而出现坏道的情况一般是强制拔电源.装了危险软件等造成的,所以当硬盘受伤的时候,当简单的修复不见效时,我们需要了解硬盘坏 ...

  5. win7下安装Linux实现双系统全攻略

    win7下安装Linux实现双系统全攻略 听语音 http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html 分区http://jin ...

  6. wifi软件linux版本,[转载]Wii安装运行可用WIFI的Linux系统全攻略

    Wii运行Linux的优势: 低功耗,Wii玩3D游戏的平均功耗在18W,而运行linux的功耗更低,连续运行50天才耗一度电(甚至不到).如果用Wii来下电驴.如果给wii-linux装上图形界面来 ...

  7. linux开热点软件,在Ubuntu系统的电脑上开启无线热点全攻略,

    在Ubuntu系统的电脑上开启无线热点全攻略, 利用系统自带的网络功能创建热点 请注意:你必须要有一个可以用来创建AP热点的无线网卡.如果你不知道如何确认它的话,在终端(Terminal)里输入iw ...

  8. 红旗linux挂载硬盘命令,红旗Linux分区全攻略(转)

    红旗Linux分区全攻略(转)[@more@] 一. 环境 一个全新的未经处理过的硬盘,一张红旗4.0安装光盘.我们要在这个硬盘上分成两个分区,一个为hda1分区用来安装操作系统,另一个为hda5为扩 ...

  9. python安装失败0x80070570_win7系统固态硬盘装系统出现错误代码0x80070570的解决方法...

    今天和大家分享一下win7系统固态硬盘装系统出现错误代码0x80070570问题的解决方法,在使用win7系统的过程中经常不知道如何去解决win7系统固态硬盘装系统出现错误代码0x80070570的问 ...

最新文章

  1. 开发工具Drawscript
  2. SkipList 跳表
  3. android studio 怎么做屏幕适配?
  4. H5 history.pushState 在微信内修改url后点击用safari打开/复制链接是修改之前的页面...
  5. mysql数据迁移数据一致性检教6_如何在数据库迁移中保证数据一致性?
  6. Linux下VSCode的安装和使用(VScode C/C++配置 CMake的使用)(GCC、GDB)(各类插件 Snippets、Code Runner、Include Autocomplete)
  7. 用Python轻松开发数据库取数下载工具
  8. 访问数据库_Lua 数据库访问
  9. 打造自己的装机U盘(二)
  10. Spring AOP技术(基于AspectJ)的XML开发
  11. python pandas使用pipe管道增强代码可读性
  12. spring与spring mvc
  13. win10服务器网页打不开怎么办,win10系统ie浏览器有些网页打不开怎么回事
  14. 通信工程专业就业怎么样?难不难学?
  15. 3.21 华丽丽的颜色渐变工具 [原创Ps教程]
  16. 删除坑爹甲方软件天珣客户端
  17. idea提示java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: NO)
  18. Google Earth Engine(GEE)——月度降水和ndvi植被覆盖度相关性分析(墨西哥为例)
  19. vue使用threejs加载模型问题整理
  20. 中银泰月薪三千该如何进行理财

热门文章

  1. 浏览器的作用不只是搜索、浏览网页,它还隐藏着这些功能
  2. 多用途互联网邮件扩展--MIME类型简介
  3. Microarchitecture: HyperThreading(超线程)
  4. C语言关键字浅析-enum
  5. java请输入第一个人,Java-每日编程练习题③
  6. python中 math.isfinite返回值为false_Python math.isfinite() 方法
  7. (黑龙江) --2011年度注册测绘师资格考试合格人员名单
  8. Vue2 + ant design vue1.7.8版本 Table组件 手动拖拽、可伸缩列功能
  9. AntV-G6实现微服务拓扑图
  10. 联想小新15用什么C语言程序,长处更长 优点更优 联想小新Air 15 2019首测