蚊章汇 - iSCSI
type: channel
link: https://linuxcn.bwsl.wang/tag/iSCSI/
items: 如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
items: 设置iSCSI的发起程序（客户端）（三）
items: 在 iSCSI Target 服务器中使用LVM创建和设置LUN（二）
items: 使用iSCSI Target创建集中式安全存储（一）
items: 零基础：邪恶带你3步快速掌握iSCSI搭建

如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
type: item
date: 2020-11-14T08:16:21+08:00
description: 当 Linux 系统连接到 SAN（存储区域网络）后，你需要重新扫描 iSCSI 服务以发现新的 LUN。要做到这一点，你必须向存储团队提供 Linux 主机的 WWN 号和所需的 LUN 大小。这篇文章将帮助你查找 Linux 主机的 WWN 号。当存储团队将 LUN 与给定的 Linux 主机进行了映射，他们将为你提供新的 LUN 详细信息。LUN 在存储术语中被称为 LUN 的串行十六进制。你需要扫描 SCSI 主机来寻找存储团队分配的新 LUN。这可以通过两种方式进行，扫描每个 scsi 主机设备或运行 rescan-scsi-bus.sh 脚本来检测新磁盘。扫描后可以在 /dev/disk/by-id 目录下找到它们。# ll /dev/disk/by-id total 0 lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684b -> ../../sdah lrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684c -> ../../sdw . . lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684d -> ../../sdjk lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684e -> ../../sdaa lrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684f -> ../../sdh 另外，如果你已经用 multipath 配置了它们，那么可以用 multipath 命令找到。`multipath 主要是配置到 Oracle 数据库服务器中，以提高性能。# multipath -ll 60a98000486e542d4f5a2f47694d684b dm-37 NETAPP,LUN C-Mode size=512G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw |-+- policy='round-robin 0' prio=50 status=active | |- 1:0:4:18 sdoe 128:416 active ready running | |- 0:0:4:18 sdpq 131:256 active ready running | |- 0:0:5:18 sdsr 135:496 active ready running | `- 1:0:5:18 sdsq 135:480 active ready running `-+- policy='round-robin 0' prio=10 status=enabled |- 1:0:1:18 sdfw 131:32 active ready running |- 1:0:0:18 sdci 69:96 active ready running |- 0:0:1:18 sdbz 68:208 active ready running |- 0:0:0:18 sds 65:32 active ready running |- 1:0:3:18 sdmd 69:336 active ready running |- 1:0:2:18 sdjj 8:464 active ready running |- 0:0:3:34 sdjt 65:368 active ready running `- 0:0:2:34 sdgi 131:224 active ready running 这个过程适用于基于 Red Hat 6.x、7.x 和 8.x（RHEL - Red Hat Enterprise Linux）的系统，如 CentOS 和 Oracle Linux。方法 1：如何使用 /sys 类文件在 Linux 上扫描新的 LUN 和 SCSI 磁盘sysfs 文件系统是一个伪文件系统，它为内核数据结构提供了一个接口。sysfs 下的文件提供了关于设备、内核模块、文件系统和其他内核组件的信息。sysfs 文件系统通常被挂载在 /sys。通常，它是由系统自动挂载的。你可以使用 echo 命令来扫描每个 SCSI 主机设备，如下所示：# echo "- - -" > /sys/class/sc…

设置iSCSI的发起程序（客户端）（三）
type: item
date: 2015-03-04T23:36:00+08:00
description: iSCSI 发起程序是一种用于同 iSCSI 目标器认证并访问服务器上共享的LUN的客户端。我们可以在本地挂载的硬盘上部署任何操作系统，只需要安装一个包来与目标器验证。初始器客户端设置功能可以处理本地挂载磁盘上的任意文件系统在使用fdisk命令分区后不需要重启系统前置阅读使用iSCSI Target创建集中式安全存储（一）在 iSCSI Target 服务器中使用LVM创建和设置LUN（二）我的客户端设置操作系统 – CentOS 6.5 (Final)iSCSI 目标器 IP – 192.168.0.50使用的端口 : TCP 3260警告：永远不要在LUN还挂载在客户端（发起程序）时停止服务。客户端设置1. 在客户端，我们需要安装包‘iSCSI-initiator-utils’，用下面的命令搜索包。# yum search iscsi 示例输出============================= N/S Matched: iscsi ================================ iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs iscsi-initiator-utils-devel.x86_64 : Development files for iscsi-initiator-utils 2. 找到了包，就用下面的yum命令安装初始化包。# yum install iscsi-initiator-utils.x86_64 3. 安装完毕后，我们需要发现目标器上的共享。客户端的命令有点难记，因此我们使用man找到需要运行的命令列表。# man iscsiadm man iscsiadm4. 按下SHIFT+G 进入man页的底部并且稍微向上滚动找到示例的登录命令。下面的发现命令中，需要用我们的服务器IP地址来替换。# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.0.200 --discover 5. 这里我们从下面的命令输出中找到了iSCSI的限定名（iqn）。192.168.0.200:3260,1 iqn.2014-07.com.tecmint:tgt1 发现服务器6. 要登录就用下面的命令来连接一台LUN到我们本地系统中，这会与服务器验证并允许我们登录LUN。# iscsiadm --mode node --targetname iqn.2014-07.com.tecmint:tgt1 --portal 192.168.0.200:3260 --login 登录到服务器注意：登出使用登录命令并在命令的最后使用logout来替换。# iscsiadm --mode node --targetname iqn.2014-07.com.tecmint:tgt1 --portal 192.168.0.200:3260 --logout 登出服务器7. 登录服务器后，使用下面的命令列出节点的记录行。# iscsiadm --mode node 列出节点8. 显示特定节点的所有数据# iscsiadm --mode node --targetname iqn.2014-07.com.tecmint:tgt1 --portal 192.168.0.200:3260 示例输出# BEGIN RECORD 6.2.0-873.10.el6 node.name = iqn.2014-07.com.tecmint:tgt1 node.tpgt = 1 node.startup = automatic node.leading_login = No iface.hwaddress = <empty> iface.ipaddress = <empty> iface.iscsi_ifacename = default iface.net_ifacename = <empty> iface.transport_name = tcp iface.initiatorname = <empty> iface.bootproto = <empty> iface.subnet_mask = <empty> iface.gateway = <empty> iface.ipv6_autocfg = <empty> iface.linklocal_autocfg = <empty> .... 9. 接着列出使用的磁盘，fdisk会列出所有的登录认证过的磁盘。# fdisk -l /dev/sda 列出磁盘10. 运行fdisk命令来创建一个新的分区# fdisk -cu /dev…

在 iSCSI Target 服务器中使用LVM创建和设置LUN（二）
type: item
date: 2015-03-03T19:04:00+08:00
description: LUN是逻辑单元号，它与iSCSI存储服务器共享。iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序（initiator）。这些来自一个大型存储（SAN：Storage Area Network）的驱动器集合称作LUN。在真实环境中LUN是在LVM中定义的，因为它可以按需扩展。在目标器中使用 LVM 创建 LUN为什么使用LUN？LUN用于存储，SAN存储大多数由LUN的集群来组成存储池，LUN由目标器的几块物理驱动器组成。我们可以使用LUN作为系统物理驱动器来安装操作系统，LUN可以用在集群、虚拟服务器、SAN中。在虚拟服务器中使用LUN的主要用途是作为操作系统的存储。LUN的性能和可靠性根据在创建目标存储服务器时所使用的驱动器决定。前置阅读要了解创建iSCSI 目标器，点击下面的链接。使用iSCSI Target创建集中式安全存储（一）主服务器设置系统信息和网络设置部分与前文的iSCSI 目标器相同 - 我们在相同的服务器上定义LUN。操作系统 – CentOS 6.5 (Final)iSCSI 目标器 IP – 192.168.0.200使用的端口 : TCP 860, 3260配置文件 : /etc/tgt/targets.conf在iSCSI 目标器使用LVM创建LUN首先，用fdisk -l命令找出驱动器的列表，这会列出系统中所有分区的列表。# fdisk -l 上面的命令只会给出基本系统的驱动器信息。为了得到存储设备的信息，使用下面的命令来得到存储设备的列表。# fdisk -l /dev/vda && fdisk -l /dev/sda 列出存储设备注意：这里vda是虚拟机硬盘，因为我使用的是虚拟机来用于演示，/dev/sda 是额外加入的存储。第一步： 创建用于LUN的LVM驱动器我们使用/dev/sda驱动器来创建LVM。# fdisk -l /dev/sda 列出LVM驱动器现在让我们使用如下fdisk命令列出驱动器分区。# fdisk -cu /dev/sda 选项 ‘-c’ 关闭DOS兼容模式。选项 ‘-u’ 用于列出分区表时给出扇区而不是柱面的大小。使用n创建新的分区。Command (m for help): n 使用p创建主分区。Command action e extended p primary partition (1-4) 给我们创建的分区一个分区号。Partition number (1-4): 1 到这里，我们就要设置LVM驱动器了。因此，我们需要使用默认的设置来使用整个驱动器。First sector (2048-37748735, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-37748735, default 37748735): Using default value 37748735 选择分区的类型，这里我们要设置LVM，因此使用8e。使用l列出所有的类型。Command (m for help): t 选择想要改变类型的分区。Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) 在改变完类型之后，通过打印（p）选项来列出分区表。Command (m for help): p Disk /dev/sda: 19.3 GB, 19327352832 bytes 255 heads, 63 sectors/track, 2349 cylinders, total 37748736 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x9fae99c8 Device Boot Start End Blocks Id System /dev/sda1 2048 37748735 18873344 8e Linux LVM 使用w写入设置并退出fdisk工具，重启系统使设置生效。作为参考，我下面附上了截图来给你在创建LVM驱动器时一个明确的指导。创建LVM分区系统重启后，使用fdisk命令列出分区表。# fdisk -l /dev/sda 验证LVM分区第二步： 为LUN创建逻辑卷现在我们使用‘pvcre…

使用iSCSI Target创建集中式安全存储（一）
type: item
date: 2015-03-02T22:24:00+08:00
description: iSCSI 是一种块级别的协议，用于通过TCP/IP网络共享原始存储设备，可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种由远程iSCSI服务器（target）提供的远程硬盘。在Linux中安装iSCSI Target我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI服务器称为“Target（目标器）”，它提供服务器上的存储共享。iSCSI客户端称为“Initiator（发起程序）”，它访问目标器共享的存储。市场中有卖的用于大型存储服务如SAN的iSCSI适配器。我们为什么要在大型存储领域中使用iSCSI适配器以太网适配器（NIC）被设计用于在系统、服务器和存储设备如NAS间传输分组数据，它不适合在Internet中传输块级数据。iSCSI Target的功能可以在一台机器上运行几个iSCSI 目标器一台机器可以提供多个iSCSI 目标器用于iSCSI SAN访问一个目标器就是一块存储，并且可以通过网络被发起程序（客户端）访问把这些存储汇聚在一起让它们在网络中可以访问的是iSCSI LUN（逻辑单元号）iSCSI支持在同一个会话中使用多个连接iSCSI发起程序在网络中发现目标接着用LUN验证并登录，这样就可以本地访问远程存储。我们可以在本地挂载的LUN上安装任何操作系统，就像我们安装我们本地的操作系统一样。为什么需要iSCSI？在虚拟化中，我们需要存储拥有高度的冗余性、稳定性，iSCSI以低成本的方式提供了这些特性。与使用光纤通道的SAN比起来，我们可以使用已经存在的设备比如NIC、以太网交换机等建造一个低成本的SAN。现在我开始使用iSCSI 目标器安装并配置安全存储。本篇中，我们遵循下面的步骤：我们需要隔离一个系统来设置iSCSI 目标器和发起程序（客户端）。在大型存储环境中可以添加多个硬盘，但是这里我们除了基本的安装盘之外只使用了一个额外的驱动器。这里我们只使用了2块硬盘，一个用于基本的服务器安装，另外一个用于存储（LUN），这个我们会在这个系列的第二篇描述。主服务器设置操作系统 – CentOS 6.5 (Final)iSCSI 目标器 IP – 192.168.0.200使用的端口 : TCP 860, 3260配置文件 : /etc/tgt/targets.conf安装 iSCSI Target打开终端并使用yum命令来搜索需要在iscsi 目标器上安装的包名。# yum search iscsi 输出示例========================== N/S matched: iscsi ======================= iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs iscsi-initiator-utils-devel.x86_64 : Development files for iscsi-initiator-utils lsscsi.x86_64 : List SCSI devices (or hosts) and associated information scsi-target-utils.x86_64 : The SCSI target daemon and utility programs 你会的到上面的那些结果，选择Target包来安装。# yum install scsi-target-utils -y 安装iSCSI工具列出安装的包里面的内容来了解默认的配置、服务和man页面的位置。# rpm -ql scsi-target-utils.x86_64 列出所有的iSCSI包里面的文件让我们启动iSCSI服务，并检查服务运行的状态，iSCSI的服务名是tgtd。# /etc/init.d/tgtd start # /etc/init.d/tgtd status 启动iSCSI服务现在我们需要配置开机自动启动。# chkconfig tgtd on 现在验证tgtd服务的运行级别是否配置正确。# chkconfig --list tgtd 开机启动iSCSI现在使用tgtadm来列出在我们的服务器上已经配置了哪些target和LUN。# tgtadm --mode target --op show tgtd已经安装并在运行了，但是上面的命令没有输出因为我们还没有在Target服务器上定义LUN。要查看手册，可以运行‘man‘命令。# man tgtadm iSCSI Man 页面如果你的目标器上有iptable的话，那么我们需要为iSCSI添加iptable规则。首先使用netstat命令找出iscsi t…

零基础：邪恶带你3步快速掌握iSCSI搭建
type: item
date: 2014-09-18T19:54:00+08:00
description: Hello，我是——邪恶君子！今天呢，给大家分享一下Linux上iSCSI的搭建，通过文字+图像的解说，不管你是小白还是菜鸟，都能够让你掌握搭建iSCSI的精华所在！废话不多说，看招：首先呢，给大家说一下本次教程的环境：系统版本：RedHat Enterprise Linux 6.2在搭建iSCSI前呢，先把SELinux禁用；关闭防火墙并清空所有规则。并配置好yum源（直接挂载本地光盘，yum源指向本地就行）。开始搭建首先要安装一个包：scsi-target-utils-1.0.14-4.el6.x86\_64#yum -y install scsi-target-utils在这或许会有人抱怨了，邪恶啊，这么长的名字记不住肿么办？不要怕，没事，邪恶教你一招：直接执行命令#yum -y install scsi-target* 也可以，这下简单多了吧。好了，安装完以后，要启动服务，iSCSI的服务为tgtd，直接启动就行了#service tgtd start #chkconfig tgtd on (设为开机启动)到此，我们安装完毕，简单吧！！！创建iSCSI在创建前呢，你要在你的电脑上先分出一个区用来搭建iSCSI存储。邪恶这次是分出一个5G大小的分区来创建iSCSI，给大家附上我的分区图：大家看到了吧，sda5，大小为5G！其实，在这里简单的提一下，分区的大小你自己随便定，也可以是一个硬盘，都行！接下来呢，就是激动人心的时刻，关键来了哦，邪恶所说的精华就是接下来的内容，看招：执行下面的三条命令：#tgtadm --lld iscsi --mode target --op new --tid 1 -T iqn.mailtest.com.20140916:disk1 #tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sda5 #tgtadm --lld iscsi --mode target --op bind --tid 1 -I ALL给大家简单解释一下命令，建议大家在执行前先执行一下#tgtadm --help看一下命令的帮助文档。第一条命令，只需掌握 --tid后面的参数“1”，这个“1”在这里就是个编号，你也可以设为2，不过建议大家从1开始，习惯嘛！然后就是-T后面的参数，-T后面的参数自己随便写，但记住一点就行，需以iqn开头，然后后面的你想怎么起都行，一般都是"iqn.hostname:diskX"，hostname就是你的主机名，X代表编号。第二条命令，需要记住--tid后面的参数必须要和第一条的一样， --lun后面的参数也是代表编号，和第一条命令的--tid类似，-b后面就跟你要搭建iSCSI的分区就行。第三条命令，更简单，只需注意--tid后面的参数要和第一条、第二条的一样，其实第二条和第三条都是以第一条的为基准的，然后就是-I后面的参数，这里设置为ALL是代表允许所有的IP都可以访问。你也可以设置为个别的IP，具体的可以参考帮助文档。执行完以后，可以执行#tgt-admin -s查看一下自己创建的iSCSI，这里把我自己搭建效果图给大家附上从图上可以看到，刚才自己创建的iSCSI Target及编号，也可以看到自己创建的lun和编号，最下面可以显示出用的哪个分区创建的。到此，搭建完毕，是不是很简单！这在儿，有个要点需记住，那就是开机后，上面3条命令创建的iSCSI会失效，要想开机后还有，那就把上面的3条命令添加到/etc/rc.d/rc.local里面，看图：这样，以后在重启或关机后再开机就可以保证创建的iSCSI失效了！或许到这儿，就会有人问了：“邪恶，你为什么不讲一下理论知识？”。邪恶回答你的很简单：一讲理论就讲的多了，就需要花很大的文字去讲解，而且邪恶也不敢保证理论讲的是否正确。邪恶在此顺便给大家说一下，邪恶的原则是通过自己的实践和自己的心得和体会，尽量的写的精简点，然后分享给大家，让菜鸟和小白都能快速掌握，至于理论知识，百度上一大堆，都解释的很详细，一看就明白！客户端测试接下来，邪恶再给大家讲一下怎么验证自己搭建的iSCSI是否可用，同时也讲一下客户端的操作！看招：首先，客户端需要先安装iscsi-initiator-utils包，执行命令安装：#yum -y install iscsi-initiator-utils如果这两个包的名字也记不住肿么办，没问题，邪恶我再教你一招，直接执行命令：#yum -y install iscsi-init* 安装完毕后，启动相应的服务，并设置为开机启动，命令：#service iscsi start #chkconfig iscsi on #service iscs…