菜鸟学Linux 第092篇笔记 iscsi, gfs2, clvm

简介:

菜鸟学Linux 第092篇笔记 iscsi, gfs2, clvm




内容总览

iSCSI 概述

安装服务端scsi-target-utiles

安装客户端 iscsi-initiator-utils

配置iscsi基于用户密码认证

配置的iscsi所共享的硬盘使用集群文件系统gfs2

集群逻辑卷 lvm2-cluster







SCSI and iSCSI (small computer system interface)

lun (logical unit number)逻辑设备


iSCSI 

用来实现将scsi设备基于网络传送到其它客户端,并且映射到客户端为硬件设备,此种方式

和nfs有高大区别,它可以实现挂载共享的磁盘,分区等操作


存储区域网络

共享数据(基于块)

使SCSI的传输距离变长


三种iscsi innitiator

iscsi hba卡  可以实力完成数据封装,CPU利用率相对较低

iscsi toe卡  以软件方式动作的scsi指令,CPU利用率相对适中

iscsi 驱动程序 (软件方式实现,CPU利用率相对较高)


使用tcp 3260端口


iscsi会话



服务端

iSCSI Target: scsi-target-utils

3260

客户端认证方式:

1. 基于IP

2. 基于用户,chap


客户端

ISCSI Intiator: iscsi-initiator-utils

open-iscsi




安装服务端scsi-target-utiles (即提供iscsi硬盘的提供端)


1.安装和启动

# yum install scsi-target-utils

# rpm -ql scsi-target-utils

# service tgtd start

# netstat -tunlp

# chkconfig tgtd on


2.配置命令

tgtadm模式化的命令

常用模式: target, logicalunit, account

target --op

new, delete, show, bind, unbind, update


logicalunit --op

new, delete


account --op

new, delete, bind, unbind


选项简写

--lld, -L

--tid, -t

--lun, -l

--backing-store <path>, -b

--initiator-address <address>, -I

--targetname <targetname>, -T


targetname:

iqn.yyyy-mm.<reversed domain name>[:identifier]

iqn.2017-01.com.mysky:tstore.disk1


3.建立target

首先给服务器新安装一块硬盘不需要格式化(推荐)


创建target

# tgtadm --lld iscsi --mode target --op new --targetname 

iqn.2017-01.com.mysky:teststore.disk1 --tid 1 (一条命令)


# tgtadm --lld iscsi --mode target --op show


将target添加逻辑磁盘

# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 

--backing-store /dev/sdb (一条命令)


# tgtadm --lld iscsi --mode target --op show


绑定target使用范围

# tgtadm --lld iscsi --mode target --op bind --tid 1 

--initiator-address 192.168.11.0/24 (一条命令)





安装客户端 iscsi-initiator-utils


1. 客户端安装iscsi-initiator-utils

# yum -y install iscsi-initiator-utils

# rpm -ql iscsi-initiator-utils


2. 配置


配置initiatorName 

# echo "InitiatorName=`iscsi-iname -p iqn.2017-01.com.mysk`" > 

/etc/iscsi/initiatorname.iscsi  (一条命令)


# cat /etc/iscsi/initiatorname.iscsi


# service iscsi start

iscsiadm模式化命令

-m {discovery|node|session|iface}

discovery 发现某服务器是否有target输出,以及输出了哪些target

node 管理跟某target的关联关系

session 会话管理

iface 接口管理


发现某个服务器上的target

iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] 

[ -I iface -t type -p ip:port [ -l ] ]

-d 0-8

-I 

-t type: SendTaget(st), SLP, iSNS

-p IP:port

iscsiadm -m discovery -d 2 -t st -p 192.168.11.200


查询完成后会保留记录在此文件夹下

# ls /var/lib/iscsi/send_targets/


连接到上边所发现的target

iscsiadm  -m node [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] 

[ [ -o operation ]  [ -n name ]  [-v value ] [ -p ip:port ] ] (一条命令)

-l loin

-u logout


    iscsiadm -m node -T iqn.2017-01.com.mysky:teststore.disk1 -p 192.168.11.200 -l



    此时使用fdisk -l查看磁盘,即可看到多了一块硬盘,

     可以对该硬盘进行分区,格式化,挂载等操作


    (此时,共享存储服务已经建立完成)


注意的是,如果多台客户端同时连接此台iscsi设置时,如果未使用集群文件系统的话,多台客户端

如果同时读写此台设备的同一个文件时,可能会出现文件系统崩溃






配置iscsi基于用户密码认证


iscsi-initiator-utils:

不支持discovery认证

如果例如基于用户的认证,必须首先开放基于IP的认证

直接使用tgtadm所配置的参数无法保存,因为是其工作在内核中,如果重启服务器,或重新启动

此服务后,tgtadm所配置的参数会被删除

如要保存,则需要修改/etc/tgt/targets.conf文件,此文件在启动时会被tgt-admin命令读取



1. 服务器端配置(永久生效)

# vim /etc/tgt/targets.conf

添加如下内容

<target iqn.2017-01.com.mysky:disk1>

        <backing-store /dev/sdb1>

                vender_id mysky

                lun 3

        </backing-store>

        incominguser iscsiuser iscsipw

        initiator-address 192.168.11.0/24

</target>


重新启动tgtd服务使其配置生效

# service tgtd restart  (注意客户端的连接必须全部断开)




2. 清除此前的iscsi连接(在客户端上)

# iscsiadm -m node -T iqn.2017-01.com.mysky:disk1 -p 192.168.11.200 -u

# iscsiadm -m node -T iqn.2017-01.com.mysky:disk1 -p 192.168.11.200 -o delete

# fdisk -l


修改/etc/iscsi/iscsid.conf文件

# vim /etc/iscsi/iscsid.conf

启用如下三项并修改其密码和用户的和服务器端保持一致(我这里是显示已经修改好的)

node.session.auth.authmethod = CHAP

node.session.auth.username = iscsiuser

node.session.auth.password = iscsipw

添加完成后重启scsi服务

# service iscsi restart

(完成基于用户密码认证)





将刚刚配置的iscsi所共享的硬盘使用集群文件系统

可以使用集群文件系统锁

可以实现集群的文件系统共享

可以实现一个节点上传一个文件,其它节点立即便可显示该文件


准备工作

要想使用集群文件系统所有iscsi客户端必须得有集群文件系统组件

cman rgmanager

并已经配置好集群节点可以互相通信fence addnode


1. 安装gfs2-utils

# yum install gfs2-utils


先为硬盘创建分区,并使用partprobe通知内核更新



2. 格式化文件系统为gfs2

# mkfs.gfs2 -j 2 -p lock_dlm -t clsgfs:mysqlstore /dev/sdb1

# mount /dev/sdb1 /mnt

(注意此文件系统不会显示lost+found文件)


添加journal

# gfs2_jadd -j 3 /dev/sdb1

-j后所跟的数表示要再添加几个journal


其它节点直接挂载即可



mkfs.gfs2

-j # 指定日志区域的个数,有几个就可以被几个节点所挂载

-J #MB 指定日志区域的大小,默认为128MB

-p {lock_dlm|lock_nolock} (当集群文件系统被一个节点使用时,就不需要使用分布锁)

-t <name> 锁表的名称, 格式为clustername:locktablename

clustername为当前节点所在的集群的名称

locktablename要在当前集群中唯一




安装集群逻辑卷 lvm2-cluster

与lvm类似,只是这是一个集群的逻辑卷

配置集群ha cman rgmanager gfs2-utils lvm2-cluster

同步时间

修改hosts文件


clvm 共享存储做成lvm

借用ha机制

/etc/lvm/lvm.conf

locking_type = 3

clvm




1.安装lvm2-cluster

在每个节点安装lvm2-cluster

# yum -y install lvm2-cluster


或者在跳板机执行安装lvm2-cluster

# alias ha='for I in {1..3}; do'

# ha ssh node$I 'yum -y install lvm2-cluster'; done


2. 配置clvm

跳板机执行

# ha ssh node$I 'lvmconf --enable-cluster'; done

# ha ssh node$I 'service clvmd start'; done

# ha ssh node$I 'chkconfig clvm on; chkconfig cman on; chkconfig rgmanager on'; done


3. 创建lvm逻辑卷

和使用本地磁盘创建逻辑卷相同,只是所对应的磁盘为iscsi

pvcreate /dev/sdb

vgcreate clustervg /dev/sdb

lvcreate -L 10G -n clusterlv clustervg


4. 为clvm逻辑卷创建gfs2文件系统

# mkfs.gfs2 -j 2 -p local_dlm -t tcluster:locktab1 /dev/clustervg/clusterlv


5. 挂载clvm

# mkdir /mydata

# mount -t gfs2 /dev/clustervg/clusterlv /mydata


查看gfs文件系统

# gfs2_tool df /mydata


# gfs2_tool gettune <mountpoint> 查看lvm可调参数

# gfs2_tool settune <mountpoint> <parameter> <value> 修改具体的某个参数

# gfs2_tool journals <mountpoint> 查看磁盘日志信息


6. 扩展clvm

先扩展clvm和lvm扩展相同,最后通知扩展使用如下命令

# gfs2_grow /dev/clustervg/clusterlv 扩展clvm


(完结)




总结

centOS 6.5 已经淘汰了 ccs_tool此工具 而是使用ccs

WARNING

       All  ccs_tool  editing  capabilities  are  now obsoleted and unsup-

       ported.  Please see also ccs package and documentation for  a  more

       complete implementation of cluster.conf CLI editor.

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1895001如需转载请自行联系原作者

Winthcloud
相关文章
|
14天前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
59 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
9天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
43 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
64 2
linux笔记 diff及patch的制作与使用
|
3月前
|
存储 监控 网络协议
在Linux中,如何配置iSCSI目标?
在Linux中,如何配置iSCSI目标?
|
3月前
|
存储 监控 网络协议
在Linux中,如何配置和管理iSCSI目标和发起器?
在Linux中,如何配置和管理iSCSI目标和发起器?
|
3月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
3月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
3月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
3月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
3月前
|
存储 运维 安全
Linux中,如何配置iSCSI存储?
Linux中,如何配置iSCSI存储?