mysql iscsi_iscsi共享存储的简单配置和应用

1、环境介绍

SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议。从根本上说,iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法,ISCSI使用以太网协议传送SCSI命令、响应和数据。ISCSI可以用我们已经熟悉和每天都在使用的以太网来构建IP存储局域网。通过这种方法,ISCSI克服了直接连接存储的局限性,使我们可以跨不同服务器共享存储资源,并可以在不停机状态下扩充存储容量。

所需软件与软件结构

CentOS 将 tgt 的软件名称定义为 scsi-target-utils ,因此你得要使用 yum 去安装他才行。至于用来作为 initiator 的软件则是使用 linux-iscsi 的项目,该项目所提供的软件名称则为 iscsi-initiator-utils 。所以,总的来说,你需要的软件有:

scsi-target-utils:用来将 Linux 系统仿真成为 iSCSI target 的功能;

iscsi-initiator-utils:挂载来自 target 的磁盘到 Linux 本机上。

那么 scsi-target-utils 主要提供哪些档案呢?基本上有底下几个比较重要需要注意的:

/etc/tgt/targets.conf:主要配置文件,设定要分享的磁盘格式与哪几颗;

/usr/sbin/tgt-admin:在线查询、删除 target 等功能的设定工具;

/usr/sbin/tgt-setup-lun:建立 target 以及设定分享的磁盘与可使用的

客户端等工具软件。

/usr/sbin/tgtadm:手动直接管理的管理员工具 (可使用配置文件取代);

/usr/sbin/tgtd:主要提供 iSCSI target 服务的主程序;

/usr/sbin/tgtimg:建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);

这次的实验结构

21b852077b48a2309bf3100f3f5f56fa.png

(sdx1、sdy1是物理的磁盘通过lun连接到target虚拟的共享块,在客户端挂载这个块。这里我们添加一块硬盘sdb,创建sdb1(400m)和sdb2(500m))

2、server端配置

添加一块磁盘后

复查一下

[root@100 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 60G 0 disk

├─sda1 8:1 0 500M 0 part /boot

└─sda2 8:2 0 59.5G 0 part

├─rhel-swap 253:0 0 2G 0 lvm [SWAP]

├─rhel-root 253:1 0 38.6G 0 lvm /

└─rhel-home 253:2 0 18.9G 0 lvm /home

sdb 8:16 0 10G 0 disk

├─sdb1 8:17 0 400M 0 part

└─sdb2 8:18 0 500M 0 part

sr0 11:0 1 3.6G 0 rom /dvd

安装target并加入开机自启动

yum install -y target*

systemctl start target

systemctl enable target

配置target的ctl将sdb1和sdb2共享出去

(一)、block关联磁盘

[root@100 ~]# targetcli

targetcli shell version 2.1.fb37

Copyright 2011-2013 by Datera, Inc and others.

For help on commands, type 'help'.

/> /backstores/block create block1 /dev/sdb

/dev/sdb /dev/sdb1 /dev/sdb2

...................................dev

/> /backstores/block create block1 /dev/sdb1

Created block storage object block1 using /dev/sdb1.

/> /backstores/block create block2 /dev/sdb2

Created block storage object block2 using /dev/sdb2.

/> ls

o- / ..................................................................... [...]

o- backstores .......................................................... [...]

| o- block .............................................. [Storage Objects: 2]

| | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]#新建的block

| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]#新建的block

| o- fileio ............................................. [Storage Objects: 0]

| o- pscsi .............................................. [Storage Objects: 0]

| o- ramdisk ............................................ [Storage Objects: 0]

o- iscsi ........................................................ [Targets: 0]

o- loopback ..................................................... [Targets: 0]

/>

(二)、创建target

/> /iscsi create iqn.2018-10.20.com:disk

Created target iqn.2018-10.20.com:disk.

Created TPG 1.

Global pref auto_add_default_portal=true

Created default portal listening on all IPs (0.0.0.0), port 3260.

/> ls

o- / ..................................................................... [...]

o- backstores .......................................................... [...]

| o- block .............................................. [Storage Objects: 2]

| | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]

| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]

| o- fileio ............................................. [Storage Objects: 0]

| o- pscsi .............................................. [Storage Objects: 0]

| o- ramdisk ............................................ [Storage Objects: 0]

o- iscsi ........................................................ [Targets: 1] #这里是创建tartet的目录

| o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]

| o- tpg1 ........................................... [no-gen-acls, no-auth]

| o- acls ...................................................... [ACLs: 0]

| o- luns ...................................................... [LUNs: 0]

| o- portals ................................................ [Portals: 1]

| o- 0.0.0.0:3260 ................................................. [OK]

o- loopback ..................................................... [Targets: 0]

(三)、创建lun关联block和target

/> ls

o- / ..................................................................... [...]

o- backstores .......................................................... [...]

| o- block .............................................. [Storage Objects: 2]

| | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]

| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]

| o- fileio ............................................. [Storage Objects: 0]

| o- pscsi .............................................. [Storage Objects: 0]

| o- ramdisk ............................................ [Storage Objects: 0]

o- iscsi ........................................................ [Targets: 1]

| o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]

| o- tpg1 ........................................... [no-gen-acls, no-auth]

| o- acls ...................................................... [ACLs: 0]

| o- luns ...................................................... [LUNs: 0]

| o- portals ................................................ [Portals: 1]

| o- 0.0.0.0:3260 ................................................. [OK]

o- loopback ..................................................... [Targets: 0]

/> iscsi/iqn.2018-10.20.com:disk/tpg1/acls create iqn.2018-10.20.com:xx

Created Node ACL for iqn.2018-10.20.com:xx

/> ls

o- / ..................................................................... [...]

o- backstores .......................................................... [...]

| o- block .............................................. [Storage Objects: 2]

| | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]

| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]

| o- fileio ............................................. [Storage Objects: 0]

| o- pscsi .............................................. [Storage Objects: 0]

| o- ramdisk ............................................ [Storage Objects: 0]

o- iscsi ........................................................ [Targets: 1]

| o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]

| o- tpg1 ........................................... [no-gen-acls, no-auth]

| o- acls ...................................................... [ACLs: 1]

| | o- iqn.2018-10.20.com:xx ............................ [Mapped LUNs: 0]

| o- luns ...................................................... [LUNs: 0]

| o- portals ................................................ [Portals: 1]

| o- 0.0.0.0:3260 ................................................. [OK]

o- loopback ..................................................... [Targets: 0]

/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /

/backstores/block/block1 /lib/ /sbin/

/backstores/block/block2 /lib64/ /srv/

/bin/ /media/ /sys/

/boot/ /mnt/ /tmp/

/dev/ /opt/ /usr/

/dvd/ /proc/ /var/

/etc/ /root/

/home/ /run/

..................................................storage_object

/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block

/backstores/block/block1 /backstores/block/block2

..................................................storage_object

/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block1

Created LUN 0.

Created LUN 0->0 mapping in node ACL iqn.2018-10.20.com:xx

/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block2

Created LUN 1.

Created LUN 1->1 mapping in node ACL iqn.2018-10.20.com:xx

/> ls

o- / ..................................................................... [...]

o- backstores .......................................................... [...]

| o- block .............................................. [Storage Objects: 2]

| | o- block1 .................... [/dev/sdb1 (400.0MiB) write-thru activated]

| | o- block2 .................... [/dev/sdb2 (500.0MiB) write-thru activated]

| o- fileio ............................................. [Storage Objects: 0]

| o- pscsi .............................................. [Storage Objects: 0]

| o- ramdisk ............................................ [Storage Objects: 0]

o- iscsi ........................................................ [Targets: 1]

| o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]

| o- tpg1 ........................................... [no-gen-acls, no-auth]

| o- acls ...................................................... [ACLs: 1] #添加了一条认证

| | o- iqn.2018-10.20.com:xx ............................ [Mapped LUNs: 2]

| | o- mapped_lun0 ............................ [lun0 block/block1 (rw)] #关联lun

| | o- mapped_lun1 ............................ [lun1 block/block2 (rw)] #关联lun

| o- luns ...................................................... [LUNs: 2]

| | o- lun0 ................................... [block/block1 (/dev/sdb1)]

| | o- lun1 ................................... [block/block2 (/dev/sdb2)]

| o- portals ................................................ [Portals: 1]

| o- 0.0.0.0:3260 ................................................. [OK]

o- loopback ..................................................... [Targets: 0]

/> exit

Global pref auto_save_on_exit=true

Last 10 configs saved in /etc/target/backup.

Configuration saved to /etc/target/saveconfig.json

至此服务器端就配置完了,详细的配置可以到/etc/target/saveconfig.json修改

3、client端配置

(一)、安装iscsi*

软件包 iscsi-initiator-utils-6.2.0.873-29.el7.x86_64

软件包 iscsi-initiator-utils-iscsiuio-6.2.0.873-29.el7.x86_64

[root@200 ~]# yum install -y iscsi*

(二)、加入开机自启

[root@200 ~]# systemctl restart iscsid.service

[root@200 ~]# systemctl enable iscsid.service

(三)、做一个发现的操作,发现服务器共享的target名字是什么

[root@200 ~]# iscsiadm -m discovery -t st -p 192.168.137.100

192.168.137.100:3260,1 iqn.2018-10.20.com:disk

m模式mode-discovery, discoverydb.

t类型type must be sendtargets (or abbreviated as st), slp, isns or fw. Currently only sendtargets, fw, and iSNS is supported, see the DISCOVERY TYPES section.

p是IP:port

(四)、查看发现的条目

[root@200 ~]# iscsiadm -m discovery -p 192.168.137.100

# BEGIN RECORD 6.2.0.873-28

discovery.startup = manual

discovery.type = sendtargets #-t st

discovery.sendtargets.address = 192.168.137.100 #target服务端

discovery.sendtargets.port = 3260 #端口

discovery.sendtargets.auth.authmethod = None #认证没有

discovery.sendtargets.auth.username =

discovery.sendtargets.auth.password =

discovery.sendtargets.auth.username_in =

discovery.sendtargets.auth.password_in =

discovery.sendtargets.timeo.login_timeout = 15 #登录超时时间

discovery.sendtargets.use_discoveryd = No #没有使用这个发现

discovery.sendtargets.discoveryd_poll_inval = 30

discovery.sendtargets.reopen_max = 5

discovery.sendtargets.timeo.auth_timeout = 45

discovery.sendtargets.timeo.active_timeout = 30

discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768

# END RECORD

(五)、修改客户端的acl并登录

[root@200 ~]# iscsiadm -m node -T iqn.2018-10.20.com:disk -p 192.168.137.100 -l

Logging in to [iface: default, target: iqn.2018-10.20.com:disk, portal: 192.168.137.100,3260] (multiple)

Login to [iface: default, target: iqn.2018-10.20.com:disk, portal: 192.168.137.100,3260] successful.

[root@200 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 60G 0 disk

├─sda1 8:1 0 500M 0 part /boot

└─sda2 8:2 0 59.5G 0 part

├─rhel-swap 253:0 0 2G 0 lvm [SWAP]

├─rhel-root 253:1 0 38.6G 0 lvm /

└─rhel-home 253:2 0 18.9G 0 lvm /home

sdb 8:16 0 400M 0 disk

sdc 8:32 0 500M 0 disk

sr0 11:0 1 3.6G 0 rom /dvd

[root@200 ~]# cat /etc/iscsi/initiatorname.iscsi

#InitiatorName=iqn.1994-05.com.redhat:949f18f9ce84

InitiatorName=iqn.2018-10.20.com:xx ##刚才设置的acl条目

注:这个自动加载过来的磁盘重启之后是自动加载过来的

4、客户端挂载iscsi的盘

格式化sdb和sdc

[root@200 ~]# mkfs.xfs /dev/sdb

meta-data=/dev/sdb isize=256 agcount=8, agsize=12800 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0 finobt=0

data = bsize=4096 blocks=102400, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

log =internal log bsize=4096 blocks=853, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

[root@200 ~]# mkfs.xfs /dev/sdc

meta-data=/dev/sdc isize=256 agcount=8, agsize=16000 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0 finobt=0

data = bsize=4096 blocks=128000, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

log =internal log bsize=4096 blocks=853, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

创建挂载点并挂载

[root@200 ~]# mkdir /sdb

[root@200 ~]# mkdir /sdc

注:如果需要实时同步的话需要使用gfs集群文件系统

[root@200 ~]# cat /etc/fstab |tail -n 4

/dev/mapper/rhel-swap swap swap defaults 0 0

/dev/cdrom /dvd iso9660 defaults 0 0

/dev/sdb /sdb xfs _netdev 0 0 #添加的条目

/dev/sdc /sdc xfs _netdev 0 0 #添加的条目

[root@200 ~]# # mount -a

[root@200 ~]# mount |tail -n 4

gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)

/dev/sdb on /sdb type xfs (rw,relatime,seclabel,attr2,inode64,noquota,_netdev)

/dev/sdc on /sdc type xfs (rw,relatime,seclabel,attr2,inode64,noquota,_netdev)

[root@200 ~]#

5、总结

(一)、增加iscsi存储

(1)发现iscsi存储:iscsiadm

-m discovery -t st -p ISCSI_IP

(2)查看iscsi发现记录:iscsiadm

-m node

(3)登录iscsi存储:iscsiadm

-m node -T LUN_NAME -p ISCSI_IP -l

(4)开机自动:

iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op

update -n node.startup -v

automatic

(二)、删除iscsi存储

(1)登出iscsi存储

iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u

(2)对出iscsi所有登录

iscsiadm -m node --logoutall=all

(3)删除iscsi发现记录:iscsiadm

-m node -o delete -T LUN_NAME -p ISCSI_IP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

request mysql 接口_TP5接口开发

开启debug调试模式(正式上线建议关闭)config.php// 应用调试模式app_debug > true,设置输出类型index.phpnamespace app\index\controller;class Index{public function index(){$data [name > steven, age > 24];return json([code > 0, msg > 操作成功, data…

django和mysql写注册_Django电商项目---完成注册页面和用户登录

完成基本的创建项目、用户注册、登录、注销功能创建Django项目,创建df_user的App创建静态文件夹static(跟manage.py保持在同一级别下)复制静态文件(css images js)到static路径下修改settings.py文件修改templates路径修改数据库新添加静态文件加载路径Pycharm连接mysql数据库…

命令行进入指定目录_VIM学习笔记 操作目录(Manipulate Directory)

在目录间移动使用以下命令,可以显示当前所在的目录::pwd使用以下命令,在Linux下可以进入HOME目录,而在Windows下则显示当前所在目录::cd使用以下命令,可以进入指定的目录::cd D:tepm使用以下命令…

mysql cluster双机_GitHub - sophys/mysqlha: 博客“Mysql-cluster数据库集群双机HA研究”测试代码...

mysqlha本代码是基于博客Mysql-cluster数据库集群双机HA研究所写的。测试采用的是32位环境,linux环境为debian,如果是其他系列只需修改部分指令即可。mysql-cluster版本位:mysql-cluster-gpl-7.2.7-linux2.6-i686.tar.gz,可自行去…

mysql gtid基础_MySQL 基础知识梳理学习(四)----GTID

在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制。GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高。1.GTID的优点(1)基于GTID搭建主从复制根据简单。(2)可以确保每…

k8s pod MySQL环境变量_Kubernetes 配置Pod和容器(一)定义容器环境变量

此页展示了如何给运行在Kubernetes Pod中的容器定义环境变量。开始之前必须有一个Kubernets集群,和一个能和集群沟通的kubectl命令行工具。如果你还没有集群,你可以用Minikube建立一个集群。给容器定义环境变量当你建立了一个Pod,你可以给你运行在Pod中的…

koa2 mysql 中间件_Koa2第二篇:中间件

第一篇介绍了生成器目录设计。xyzcoding:Koa2第一篇:详解生成器​zhuanlan.zhihu.com接下来学习Koa2的中间件。Koa2本身只能算一个极简的HTTP服务器,自身不内置中间件,但是提供中间件内核。中间件是Koa2的核心,因此需要…

mysql命令行如何建库_MySQL心得2--命令行方式建库和表

1.创建使用create database或create schema命令可以创建数据库。create database 库名create database if not exists 库名(创建库并检验创建的库是否存在,不存在则建,存在就不建了)MySQL不允许两个数据库使用相同的名字,使用ifnot exists从句…

python 少儿趣味编程下载_PYTHON少儿趣味编程

章认识Python11.1编程语言和Python11.1.1程序设计和编程语言11.1.2Python简介21.2Python的安装41.2.1Windows下的Python安装41.2.2MAC下的Python安装81.3个程序HelloWorld111.4开发工具IDLE121.4.1IDLE简介121.4.2用IDLE编写程序121.4.3IDLE的其他功能161.5小结18第2章变量、数…

rs485数据线接反_终于有人把RS485通讯的正确接线方式讲明白了,网友:这下好办了...

RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS485使得廉价本地网络以及多支路通信链路的配置成为可能。那么RS485通讯的正确…

骑马与砍杀python代码_GitHub - yunwei1237/scottish-fold: 一个关于骑马与砍杀的剧本制作工具...

scottish-fold一个关于骑马与砍杀的剧本简单快速的制作工具前言​在很久以前的时候,也就是刚开始玩骑砍的时候就想着能够制作一个自己的剧本,用于书写自己想要的故事。当我怀着远大的梦想去这么做的时候才发现,原来制作剧本没有自己想象的那么…

java tomcat 监控_java程序监控tomcat实现项目宕机自动重启并发送邮件提醒

最近由于老项目频繁挂掉,由于项目经过多批人之手,短时间难以定位问题,所以只好写一个监控程序。 时间比较紧半天时间,而且水平有限大神勿喷,有好的方法还请赐教。 1、问题描述:分两种情况1.1、tomcat 彻底挂…

java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...

内部类(Inner Class)和静态内部类(Static Nested Class)的区别:定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展&#x…

java写便签_如何编写一个便签程序(用Java语言编写)

如何编写一个便签程序(用Java语言编写)热度:336 发布时间:2011-02-18 11:44:16如何编写一个便签程序(用Java语言编写)因为以前没有好好学习Java,都搞忘了,请大家原谅,也请你们指导一下,怎么编写这个程序&…

java 生成log4j_Java log4j配置每天生成一个日志文件 - 永恒ぃ☆心 的日志 - 网易博客...

一、配置属性文件log4j.propertieslog4j.rootLoggerINFO,stdout,Rlog4j.appender.stdoutorg.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layoutorg.apache.log4j.PatternLayout# Pattern to output the callers file name and line number.log4j.appender.stdout.layo…

java 子进程输出流_具有输入/输出流的Java进程

首先,我建议更换这条线路。Process process Runtime.getRuntime ().exec ("/bin/bash");带着线条ProcessBuilder builder new ProcessBuilder("/bin/bash");builder.redirectErrorStream(true);Process process builder.start();ProcessBuil…

java中if 运算符_[Java]Java基本语法结构(运算符,流程控制语句,if语句)

1:运算符(掌握)(1)算术运算符A:,-,*,/,%,,--B:的用法a:加法b:正号c:字符串连接符C:/和%的区别数据做除法操作的时候,/取得是商,%取得是余数D:和--的用法a:他们的作用是自增或者自减b:使用**单独使用放在操作数据的前面和后面效果一样。a或者a效果一样。*…

java 变量取值范围_JAVA中的变量及取值范围

字节是二进制数据的单位。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。变量:变量的数据类型;变量名变量值数据类型基本型数值型(整数)布尔型浮点型…

java object强制类型转换_scala object 转Class Scala强制类型转换

asInstanceOf[T]将对象类型强制转换为T类型。还是由于泛型存在类型擦除的原因,1.asInstanceOf[String]在运行时会抛出ClassCastException异常,而List(1).asInstanceOf[List[String]]将不会。packageresti.webimportorg.springframework.beans.factory.annotation.Au…

java毛玻璃_模糊效果(毛玻璃效果)

模糊效果(毛玻璃效果)效果演示:1. 使用iOS自带的 UIImageImageEffects 文件文件中有这么几个方法:- (UIImage *)applyLightEffect;- (UIImage *)applyExtraLightEffect;- (UIImage *)applyDarkEffect;- (UIImage *)applyTintEffectWithColor:(UIColor *)…