搭建iscsi存储系统

2023-10-26

内容:
•常见硬盘介绍
•NAS和SAN服务器概述
•实战:配置IP SAN服务器
•实战:IP SAN服务器日常操作

存储设备:阵列柜
在这里插入图片描述
在这里插入图片描述
SAS: 容量小, 300G, 600G, 900G, 价格贵。
SATA:容量大,500G, 750G, 1T, 2T, 3T, 4T 不支持热插拔,价格低。
假SAS盘:容量大, 支持热插拔,价格低, SAS接口的sata盘 , 速度慢 。
在这里插入图片描述
SAS接口和SATA接口区分
在这里插入图片描述
SAS接口:
在这里插入图片描述
硬盘托架: 方便热插拔:
在这里插入图片描述
扩展:以西部数据为例,了解一下普通SATA盘。
在这里插入图片描述

关于存储方式

1.直连式存储: 我们普通PC机就是直连存储,使用跳线和主板总线相连
优点:1. 使用方便
2. 直接识别为一个块设备。然后,制作分区、文件系统、挂载访问
缺点:1. 消耗本服务器的资源I/O、CPU

2.非直连式存储:NAS网络附属存储和SAN存储区域网络
网络性能很重要1000mbps、10000mbps (万兆网卡,10G)、100G网卡
以太网/光纤网 依赖网络, 网卡, 网线, ==> 网络

以太网/光纤网 一般用于服务器,高端计算机网络项目 (HBA卡)
在这里插入图片描述
在这里插入图片描述

NAS网络存储:

NAS(Network Attached Storage),NAS服务器是连接在网络上,具备资料存储功能的服务器,一种专用数据存储服务器。网络附属存储基于标准网络协议(Tcp/IP)实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。部分NAS系统还可以支持FTP, HTTP, SQL SQLSERVER等等功能,比如说现在NAS品牌 群晖!

国内: 群晖Synology, 希捷, 西部数码, 威联通
国际: Netapp, OUO, Dell, EMC

专业开源NAS系统: freeNAS, nas4free, OpenMediaValut, [H群晖]
美国八大金刚: Cisco, IBM, Google, 高通, Intel, Apple, 甲骨文, Microsoft

去IOE计划: IBM[小型机],Oracle[DB],EMC[存储]

NAS优点:1. I/O消耗由前端服务器转移到后端存储设备上
2. 扩展方便
NAS缺点:1. 以前网络会成为瓶颈, 但是现在使用10G光纤卡,就可以解决这个问题。

NAS常见的技术:NFS和CIFS
NAS采用了NFS技术实现类Unix系统之前存储共享。使用CIFS实现Windows与类Unix系统之前数据共享。samba 服务器就是使用CIFS计术。

SAN存储:

存储区域网络(Storage Area Network and SAN Protocols,简写SAN,即存储区域网络,是一种高速网络,提供在计算机与存储系统之间的数据传输。存储设备是指一台或多台用以存储计算机数据的磁盘设备,通常指磁盘阵列。

SAN存储,采用网状通道(Fibre Channel ,简称FC)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。
SAN由于其基础是一个专用网络,因此扩展性很强,不管是在一个SAN系统中增加一定的存储空间还是增加几台使用存储空间的服务器都非常方便。

SAN的存储类型:
IPSAN: 不同的网络上, 使用TCP/IP协议的iscsi协议封装构件的存储区域网络
FSCAN: 利用光纤线, 通过高速FC交换机构件的存储区域网络,。(scsi协议)

NAS与SAN的区别在两方面:
第一,从网络架构来说,本质区别在于:
NAS,直接使用TCP/IP传输数据。SAN使用SCSI或iSCSI协议传输数据。
第二,从文件读写实现方法上来说,本质区别在于:

NAS采用了NFS和 CIFS技术实现文件共享。说明NAS是基于操作系统的“文件级”读写操作。
SAN中计算机和存储间的接口是底层的块协议,它按照协议头的“块地址+偏移地址”来定位。共享的存储和前端的操作系统类型没有关系,任何服务器操作系统,都可以正常识别。

SAN存储架构图:
在这里插入图片描述
配置成功后: 存储设备被前端server直接识别为块设备,即硬盘。

IP SAN 拓扑图:
在这里插入图片描述

实战: 配置一个IP SAN 存储服务器

IP-SAN的运行模式:C/S模式,工作端口3260
服务端:服务名-targeet XueGod63.cn(目标)
客户端:服务名-initator XueGod62.cn XueGod64.cn(发起人).

安装target

63 Desktop]# yum install -y scsi-target-utils

主配置文件:

63 ~]# ls  /etc/tgt/targets.conf

启动服务:

63 ~]# /etc/init.d/tgtd start
63 ~]# netstat -antup | grep 3260

新建存储分区: sda4 大小5G

63 ~]# fdisk /dev/sda    #划分出sda4分区
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b8b35
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1301    10240000   83  Linux
/dev/sda3            1301        1428     1024000   82  Linux swap / Solaris

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Selected partition 4
First cylinder (1428-2610, default 1428): 
Using default value 1428
Last cylinder, +cylinders or +size{K,M,G} (1428-2610, default 2610): +5G

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

63 ~]#reboot  或者   partx -a /dev/sda  #使分区生效,多执行几次即可

配置sda4共享

修改配置文件

63 ~]# vim /etc/tgt/targets.conf       #写入以下内容
下面这段内容是参考模板
 75 #<target iqn.2008-09.com.example:server.target4>
 76 #    direct-store /dev/sdb      # Becomes LUN 1
 77 #    direct-store /dev/sdc      # Becomes LUN 2
 78 #    direct-store /dev/sdd      # Becomes LUN 3
 79 #    write-cache off
 80 #    vendor_id MyCompany Inc.
 81 #</target>

在上面模版后面新增内容为:

<target iqn.2018-01.cn.xuegod.www:target_san1>
         backing-store  /dev/sda4
         initiator-address 192.168.1.64
         vendor_id  xuegod
         product_id   target1
</target>

注释:
default-driver iscsi #此配置文件默认全部注释,使用iscsi驱动

启动服务

63 Desktop]# systemctl restart tgtd 
63 Desktop]# netstat  -antup | grep 3260或者tgt-admin –show查看状态
Target 1: iqn.2015-01.cn.xuegod.www:target_san1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 5372 MB, Block size: 512
            Online: Yes
            Removable media: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sda4
            Backing store flags: 
    Account information:
    ACL information: #允许哪些客户端可以访问
        192.168.1.64

配置客户端: 64

安装包:

64 ~]# yum install -y iscsi-initiator-utils

启动客户端服务:

64 ~]# systemctl start iscsid #直接启动没有任何反应, 这里首先要发现target存储,再启动客户端服务,才有效
64 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.63:3260
Starting iscsid:                                           [  OK  ]
192.168.1.63:3260,1 iqn.2018-01.cn.xuegod.www:target_san1
64 ~]#  /etc/init.d/iscsid status
iscsid (pid  2607) is running...

target存储服务器信息在客户端存储的位置:

64 ~]# yum install -y tree	#安装tree命令,用于查询树
64~]# tree /var/lib/iscsi/	#发现target后,会在此目录先生成树结构
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
│   └── iqn.2015-01.cn.xuegod.www:target_san1
│       └── 192.168.1.63,3260,1
│           └── default
├── send_targets
│   └── 192.168.1.63,3260
│       ├── iqn.2015-01.cn.xuegod.www:target_san1,192.168.1.63,3260,1,default -> /var/lib/iscsi/nodes/iqn.2015-01.cn.xuegod.www:target_san1/192.168.1.63,3260,1
│       └── st_config
├── slp
└── static

客户端服务启动关系

先启动iscsid,再启动iscsi,iscsi是根据/var/lib/iscsi/中发现的信息,识别设备

64 ~]#systemctl start iscsid  #先启动iscsid
64 ~]# systemctl start iscsi   # 根据/var/lib/iscsi/  中发现的信息,识别设备
Stopping iscsi:                                            [  OK  ]
Starting iscsi:                                            [  OK  ]

关闭:

64 ~]# systemctl stop iscsi 
64 ~]# systemctl stop iscsid 

开机自动启动:

64 ~]# chkconfig  iscsi on
64 ~]# chkconfig  iscsid on

查看发现到新硬盘:

64 ~]# ll /dev/sdb
brw-rw---- 1 root disk 8, 16 Jul 30 19:11 /dev/sdb

卸载,挂载存储设备

卸载

64 ~]#  iscsiadm -m node -T iqn.2018-01.cn.xuegod.www:target_san1 -u
Logging out of session [sid: 1, target: iqn.2015-01.cn.xuegod.www:target_san1, portal: 192.168.1.63,3260]
Logout of [sid: 1, target: iqn.2015-01.cn.xuegod.www:target_san1, portal: 192.168.1.63,3260] successful.
64 ~]# ls /dev/sdb  #查看设备不存在
ls: cannot access /dev/sdb: No such file or directory

登录存储存储设备

64 ~]# iscsiadm -m node -T iqn.2018-01.cn.xuegod.www:target_san1 -l
Logging in to [iface: default, target: iqn.2018-01.cn.xuegod.www:target_san1, portal: 192.168.1.63,3260] (multiple)
Login to [iface: default, target: iqn.2018-01.cn.xuegod.www:target_san1, portal: 192.168.1.63,3260] successful.
64 ~]# ls /dev/sdb   
/dev/sdb

上面的方法看起来比较复杂,命令比较长,简单的通过服务卸载与登陆

卸载方法二:

64 ~]# systemctl stop iscsi
Stopping iscsi:                                            [  OK  ]
64 ~]# ls /dev/sdb
ls: cannot access /dev/sdb: No such file or directory

登录方法二:

64 ~]# systemctl restart iscsi

彻底退出:

64 ~]# systemctl stop iscsi
64 ~]# rm -rf /var/lib/iscsi/*

实例1: 在xuegod64上对识别出来的硬盘,分区格式化,挂载使用。

64 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.63:3260   #发现存储设备
64 ~]# systemctl restart iscsid  #登录存储
64 ~]# systemctl restart iscsi
64 ~]# ls /dev/sdb      #发现sdb
/dev/sdb

分区格式化,挂载使用

64 ~]# fdisk /dev/sdb   #划分一个分区当作本地盘使用即可
64 ~]# ll /dev/sdb*      #查看分区
64 ~]# mkfs.ext4 /dev/sdb1     #格式化分区
64 ~]# mount /dev/sdb1 /opt/	#挂载使用
64 ~]# cp /etc/passwd /opt/		#测试文件写入

例2: 在target服务端,再添加一个存储客户端:
添加如下内容:

63 ~]# vim /etc/tgt/targets.conf
<target iqn.2018-01.cn.xuegod.www:target_san1>
         backing-store  /dev/sda4
         initiator-address 192.168.1.64
         initiator-address 192.168.1.62  #添加一个客户端                 
 vendor_id  xuegod
         product_id   target1
</target>

63 ~]# systemctl restart tgtd
Stopping SCSI target daemon: initiators still connected    [FAILED]
Starting SCSI target daemon:                               [FAILED]

解决:客户端退出一下

64 ~]# umount /opt/   #客户端卸载
64 ~]# systemctl stop  iscsi  #客户端停止服务,做了这两个,再启动服务器端,否则,数据损失丢弃清空的情况发生。

客户端退出后,再测试启动:

63 ~]# /etc/init.d/tgtd restart
Stopping SCSI target daemon:                               [  OK  ]
Starting SCSI target daemon:                               [  OK  ]
63 ~]# tgt-admin –show  #查看情况

测试:64 和62 都挂载上硬盘,数据同步

64 ~]# systemctl start iscsid
64 ~]# systemctl start iscsi 
64 ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1
64 ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1

64 ~]# mount /dev/sdb1 /opt/
64 ~]# cp /etc/passwd /opt/    #复制一些数据

测试:62 是否数据同步

62 ~]# yum –y install iscsi-initiator-utils
62 ~]#  iscsiadm -m discovery -t sendtargets -p 192.168.1.63:3260 
192.168.1.63:3260,1 iqn.2018-01.cn.xuegod.www:target_san1
62 ~]# systemctl restart iscsid
62 ~]# systemctl restart iscsi

有时候环境和你操作的顺序问题,可能无法发现,重启一下SAN Server,然后两台客户端重新sendtargets一下,重新启动服务和挂载.

62 ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1
62 ~]# mount /dev/sdb1 /opt/
62 ~]#ls /opt/      #可以看到数据已经同步过来了
lost+found  passwd

添加新数据测试同步:
62

62 ~]# cp  /etc/hosts   /opt
62 ~]# ls /opt
hosts  lost+found  passwd

64上查看:

64 ~]# ls /opt
lost+found  passwd
# passwd  #只看到passwd 

没有同步,是因为我们使用的ext4 文件系统,ext4文件系统不支持多个客户端同时使用。 使用GFS文件系统就可以同步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建iscsi存储系统 的相关文章

  • unixODBC (DB2) + PHP + CentOS 的段错误

    经过两天的战斗 我尝试在这里寻求帮助 我正在使用 unixODBC 2 2 11 在 CentOS 5 4 服务器上使用 DB2 iSeries 和 PHP 5 3 我猜是因为 PHP 从 5 1 升级到 5 3 我让 PHP 在某些查询上
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 服务器中E5和I9的区别是什么,如何选择合适的配置

    随着科技的进步 服务器处理器的性能在不断攀升 其中 Intel的E5和I9系列处理器在业界具有广泛的影响力 而当我们在选择服务器的时候会有各种各样的配置让我们眼花缭乱不知道该怎么去选择 下面我跟大家分享一下E5跟I9有什么区别 方便我们在选
  • 如何在Centos上安装特定版本的Docker?

    我尝试在Centos7上安装docker 1 8 2 该文档没有告诉任何有关版本控制的信息 有人可以帮助我吗 我试过 wget qO https get docker com sed s lxc docker lxc docker 1 8
  • 尝试访问使用 CIFS 装载的远程文件夹在断开连接时挂起

    这个问题是一个扩展那个问题 https stackoverflow com questions 17929294 qdir hangs on accessing cifs remote folder when disconnected 再说
  • 与 crond 不同的 ssh 行为

    我已经在这件事上抓狂了好几个小时了 我欢迎任何有关下一步发展的新想法 目标是通过 SSH 登录到自定义应用程序 CLI 然后使用自定义 CLI 命令之一在远端设备上下拉调试 shell 在客户端 我使用 CentOS mini 并运行 ss
  • 未找到 jmap 命令

    我正在尝试使用jmap对我的命令CentOS服务器 但它一直告诉我 即使我安装了 JDK 也找不到该命令 这是命令的输出java version java version 1 7 0 25 OpenJDK Runtime Environme
  • 编译 Lua - 创建 .so 文件?

    我正在 Centos 6 5 上编译 Lua 5 2 3 编译 安装工作正常 但是 我还需要编译另一个程序的开发库 我通常会通过这样做来安装它们 yum install lua devel 问题是安装 Lua 5 1 共享库 而不是 5 2
  • 在 CentOs 上使用 CURL 和 TOR 作为代理

    我想使用 Tor 作为 HTTP 请求的代理curl or wget on a CentOS机器 我使用了这个 How to 并在 stackexchange 和 stackoverflow 上寻找了一些答案 https medium co
  • 在Linux中使用自定义规则在多个端口上运行的SSH服务[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在努力设置一台在多个端口上运行 SSH 服务的服务器 例如端口 22 和 5522 这些端口应该具有一组不同的规则 即 我们为端口 2
  • Python - 什么时候可以使用 os.system() 发出常见的 Linux 命令

    从另一个线程中分离出来 什么时候适合使用 os system 发出 rm rf cd make xterm ls 等命令 考虑到上述命令有模拟版本 make 和 xterm 除外 我假设使用这些内置 python 命令而不是使用 os sy
  • PHP 5.3.8 上的 Mime 类型检测失败并显示 fileinfo

    我在 CentOS 服务器上安装了 PHP 5 3 8 时 无法使用 fileinfo 检测简单 PNG 文件的 mime 类型 问题 基本上 如果我有以下代码 如您所见 该文件是 PNG 图像 文件的头字节已被检查并
  • 如何在 CentOs 中安装 php-xml

    我正在尝试在 CentOs 6 5 上安装 php xml 我输入命令yum install php xml 我收到此错误 Loaded plugins fastestmirror Loading mirror speeds from ca
  • 如何正确处理分块编码请求?

    我有两个网站 一个使用 PHP 的 Lighttpd 第二个使用 Apache 这两个网站都不能正确处理分块传输编码 我从我的手机 J2ME 发送此请求 并且无法将此传输类型更改为任何其他类型 所以我唯一的方法是以其他方式处理分块传输编码请
  • 在centos中设置Docker_Opts

    我需要设置 docker 在运行 amazon linux centos 的主机上侦听 tcp 0 0 0 0 4243 我看到的所有文档都告诉我运行以下命令 echo DOCKER OPTS H tcp 127 0 0 1 4243 gt
  • CentOS 的 init.d celery 脚本?

    我正在编写一个使用 celery 的 Django 应用程序 到目前为止 我一直在 Ubuntu 上运行 但我正在尝试部署到 CentOS Celery 为基于 Debian 的发行版提供了一个很好的 init d 脚本 但它不适用于基于
  • 在perl中串行处理XML数据

    我想知道在我的情况下 哪种 XML 解析器最适合 Perl 我读了很多书并尝试过XML LibXML and XML SAX 第一个使用了太多内存 第二个对我来说似乎没有那么快 即使在关闭纯 Perl 解析器之后 我的需求相当具体 我通过以
  • MariaDB 10 CentOS 7 移动数据目录的问题

    CentOS 7 和 MariaDB 10 的全新 最小 安装 我有一个额外安装的镜像卷 我想将其用于数据目录 当 my cnf mysqld 被注释掉时 启动顺序正常并正常完成 我已经复制了数据 sudo cp R p var lib m
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • Composer 已安装,但获取 /usr/bin/env: php: No such file or directory

    在 CentOS 7 上 我安装了 PHP 7 1 然后我安装了作曲家 cd tmp curl sS https getcomposer org installer php71 gt used php71 instead of php ph

随机推荐