之前mfsclient挂载是通过写入挂载命令到/etc/rc.local中。
为了方便,想写入到/etc/fstab,遂测试了一下,可以实现:
/usr/local/mfs/bin/mfsmount /mnt/mfs fuse mfsmaster=192.168.0.10,mfsport=9421,_netdev 0 0
2014-04-18
发表者 Venus
暂无评论
之前mfsclient挂载是通过写入挂载命令到/etc/rc.local中。
为了方便,想写入到/etc/fstab,遂测试了一下,可以实现:
/usr/local/mfs/bin/mfsmount /mnt/mfs fuse mfsmaster=192.168.0.10,mfsport=9421,_netdev 0 0
2014-04-17
发表者 Venus
暂无评论
原理:
MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,
允许在 1 个群集中运行多个 MySQL 服务器。在 MySQL 5.0 及以上的二进制版本中,
以及与最新的 Linux 版本兼容的 RPM 包中提供了该存储引擎。
MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的 Cluster 。
通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,
由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 由一组计算机构成,
每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序。
管理服务器(MGM节点)负责管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每个节点从管理服务器检索配置数据。
当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster 日志。
目前能够运行 MySQL Cluster 的操作系统有 Linux、Mac OS X 和 Solaris,最新的版本已经支持 Windows 操作系统。
MySQL 群集的数据节点之间的通信是不加密的,并且需要高速的带宽,所以建议把群集建立在一个高速局域网内,不建议跨网段、跨公网的部署这种系统体系。
MySQL 群集分为三种节点:管理节点,数据节点和SQL节点。
管理节点:主要用于管理各个节点,能够通过命令对某个节点进行重启、关闭、启动等操作。也能够监视全部节点的工作状态。
数据节点:主要是对数据的存储,不提供其他的服务。
SQL节点:主要是对外提供SQL功能,类似一台普通的 MySQL Server。
而SQL节点和数据节点可以是同一台机器,也就是说这台机器即是SQL节点也是数据节点。它们只是逻辑关系上的划分,
实际部署时,甚至所有的阶段都可以位于同一台物理机器上,只是配置较复杂些。
配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的区别。
下载mysql cluster 集群版本,这里采用mysql官网编译好的二进制版本,免去编译麻烦:
目前最新版:https://cdn.mysql.com/archives/mysql-cluster-gpl-7.3/mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz
系统环境:
ndb_mgm centos6.5_x64 ip:192.168.0.89
ndbd_1 centos6.5_x64 ip:192.168.0.87
ndbd_2 centos6.5_x64 ip:192.168.0.88
sql_1 centos6.5_x64 ip:192.168.0.85
sql_2 centos6.5_x64 ip:192.168.0.86
配置ndb_mgm管理节点:
[root@localhost ~]# wget -c https://cdn.mysql.com/archives/mysql-cluster-gpl-7.3/mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz [root@localhost ~]# tar zxvf mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz [root@localhost ~]# mv mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64 /usr/local/mysql [root@localhost ~]# useradd -s /sbin/nologin mysql [root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql [root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
编辑管理节点配置文件:
[root@localhost ~]# vi /usr/local/mysql/config.ini
添加:
[NDBD DEFAULT] NoOfReplicas=2 DataDir=/usr/local/mysql/data DataMemory=50M IndexMemory=4M Diskless=0 ODirect=0 RedoBuffer=32M [MGM DEFAULT] PortNumber=1186 DataDir=/usr/local/mysql/data [TCP DEFAULT] SendBufferMemory=32M ReceiveBufferMemory=32M [NDB_MGMD] NodeId=1 HostName=192.168.0.89 ArbitrationRank=1 [NDBD] NodeId=2 HostName=192.168.0.87 [NDBD] NodeId=3 HostName=192.168.0.88 [API] NodeId=4 HostName=192.168.0.85 [API] NodeId=5 HostName=192.168.0.86
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/config.ini #启动管理节点
会看到如下信息:
MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5
2014-04-17 23:07:01 [MgmtSrvr] INFO — The default config directory ‘/usr/local/mysql/mysql-cluster’ does not exist. Trying to create it…
2014-04-17 23:07:01 [MgmtSrvr] INFO — Sucessfully created config directory
[root@localhost ~]# lsof -i:1186
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ndb_mgmd 2269 root 8u IPv4 46678 0t0 TCP *:mysql-cluster (LISTEN)
ndb_mgmd 2269 root 9u IPv4 46679 0t0 TCP localhost:50117->localhost:mysql-cluster (ESTABLISHED)
ndb_mgmd 2269 root 10u IPv4 46684 0t0 TCP localhost:mysql-cluster->localhost:50117 (ESTABLISHED)
占用1186端口。
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgm #通过此命令查看管理节点状态
— NDB Cluster — Management Client —
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.0.87)
id=3 (not connected, accepting connect from 192.168.0.88)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.89 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.0.85)
id=5 (not connected, accepting connect from 192.168.0.86)
ndb_mgm>
管理节点配置完成。
配置ndbd存储节点:
在ndbd_1和ndbd_2都执行下面配置,配置完全一样:
[root@localhost ~]# wget -c https://cdn.mysql.com/archives/mysql-cluster-gpl-7.3/mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz [root@localhost ~]# tar zxvf mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz [root@localhost ~]# mv mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64 /usr/local/mysql [root@localhost ~]# useradd -s /sbin/nologin mysql [root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql [root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
编辑ndbd节点配置文件:
[root@localhost ~]# vi /usr/local/mysql/my.cnf
在最后一行添加两行:
[mysql_cluster]
ndb_connectstring=192.168.0.89
启动ndbd节点:
[root@localhost ~]#/usr/local/mysql/bin/ndbd --initial -c 192.168.0.89 2014-04-17 23:19:15 [ndbd] INFO -- Angel connected to '192.168.0.89:1186' 2014-04-17 23:19:15 [ndbd] INFO -- Angel allocated nodeid: 3 关于--initial参数只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–-initial参数!
配置SQL节点:
在sql_1和sql_2都执行下面配置,配置完全一样:
[root@localhost ~]# wget -c https://cdn.mysql.com/archives/mysql-cluster-gpl-7.3/mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz [root@localhost ~]# tar zxvf mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz [root@localhost ~]# mv mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64 /usr/local/mysql [root@localhost ~]# useradd -s /sbin/nologin mysql [root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql [root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
编辑sql节点配置文件:
[root@localhost ~]# vi /usr/local/mysql/my.cnf
添加红色部分:
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.89
[mysql_cluster]
ndb-connectstring=192.168.0.89
启动mysql:
[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql &
回到ndb管理节点查看状态:
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.87 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *)
id=3 @192.168.0.88 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.89 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 @192.168.0.85 (mysql-5.6.17 ndb-7.3.5)
id=5 @192.168.0.86 (mysql-5.6.17 ndb-7.3.5)
ndbd数据节点和sql节点已经连接。
测试:
在sql_1节点登陆数据库,在test库中创建表,去sql_2节点查看是否有数据。
sql_1:
[root@localhost ~]# /usr/local/mysql/bin/mysql -uroot -p Enter password: mysql> use test; Database changed mysql> show tables; Empty set (0.01 sec) mysql> create table person(id int,name varchar(40),birthday date)ENGINE=ndb; Query OK, 0 rows affected (0.33 sec) mysql> Insert into person values(1,'test',20101212); Query OK, 1 row affected (0.11 sec) mysql> Select * from test.person; +------+------+------------+ | id | name | birthday | +------+------+------------+ | 1 | test | 2010-12-12 | +------+------+------------+ 1 row in set (0.01 sec) mysql>
sql_2节点:
[root@localhost ~]# /usr/local/mysql/bin/mysql -uroot -p Enter password: mysql> use test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> Select * from test.person; +------+------+------------+ | id | name | birthday | +------+------+------------+ | 1 | test | 2010-12-12 | +------+------+------------+ 1 row in set (0.03 sec) mysql>
发现数据。完成。
同样也可在sql_2节点上执行Insert/Update/Delete等操作,然后在sql_1上验证数据是否同步。
注意启动顺序: 管理节点-ndbd数据节点-sql节点 表在ndbd节点之间复制时,表必须用ndbcluster引擎
PS:
启动ndb节点时遇到的一个错误,加-c参数解决
[root@localhost bin]# ./ndbd –initial
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 12^C
[root@localhost bin]# ./ndbd –initial -c 192.168.0.89
2014-04-17 19:11:35 [ndbd] INFO — Angel connected to ‘192.168.0.89:1186’
2014-04-17 19:11:35 [ndbd] INFO — Angel allocated nodeid: 10
管理节点配置文件:
#此值按数据库大小设置,官方给出了公式 #(内存) 数据大小 *副本 * 1.25 = 数据库内存总需求 #实例:50 GB * 2 * 1.25 = 125 GB #(数据大小 *副本 * 1.25)/节点数 = 每个节点的内存大小 #实例:(2 GB * 2 * 1.25)/4 = 1.25 GB DataMemory=5120M IndexMemory=400M #此值设置为1的时候,ndb将不会把数据写入磁盘(意思就是shutdown后数据就没了) Diskless=0 #速度快,可以改为1试试,具体含义参考mysql官方文档 ODirect=0
mysql cluster 所有的这些节点构成一个完成的MySQL集群体系。数据保存在ndb数据服务器的存储引擎中,表(结构)则保存在sql节点中。
应用程序通过sql节点访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理ndb数据服务器。
至于数据存放是在ndb数据服务器中mysql的data目录下ndb_<node_id>_fs目录。
这个data目录是由config.ini配置文件定义的。
一般在一个mysql cluster体系中只需要一个管理节点.它仅用于cluster的启动及cluster的系统参数配置。
sql节点和存储节点在启动的时候需要连接到管理节点读取cluster的配置信息,在sql节点和存储节点启动完成后,管理节点可以停止。
不过最好不好这样做。
mysql cluster通过两种方式来检测故障:
一是通讯丢失,可以通过tcp,共享内存等方式在各存储节点之间通讯来侦测节点是否正常这种方式是最快的故障检测方式,
二是心跳失败,通讯丢失的检测方法在某些特殊情况下无效,例如磁盘故障等问题.所有的存储节点通过组成一个环路,每个
节点向下一个节点发送心跳信号,如果下一个节点没有收到心跳信号,则认为上一个存储节点故障,并依次向下下个节点广播此故障信息。
2014-04-16
发表者 Venus
暂无评论
注意:
我在redhat5下编译完新版本util-linux时,替换 了系统自带的mount命令,mfs可以成功挂载,但是在下次启动系统时发现系统起不来(停留在fsck: /lib64/libblkid.so.1: no version information available (required by fsck)),提示说可以进入修复模式检查文件系统,可是通过fsck检查重启还不行,进入单用户模式,开启网络,打开ssh服务,把另一台同版本的mount替换还是不行,接着替换libblkid.so.1模块,还是失败,最后在grub内核参数后加一句 fastboot ,启动,虽然报错,但是可以进入系统,一切正常,备份数据,重装系统!根本原因就是因为升级了util-linux-ng版本!
可参考下redhat官网bug报告:https://bugzilla.redhat.com/show_bug.cgi?id=568473
在redhat5下mfsmount元数据服务器时报错:
[root@localhost ~]# /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.1.56
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
/bin/mount:无法识别的选项“–no-canonicalize”
Usage: mount -V : print version
mount -h : print this help
mount : list mounted filesystems
mount -l : idem, including volume labels
So far the informational part. Next the mounting.
The command is `mount [-t fstype] something somewhere’.
Details found in /etc/fstab may be omitted.
mount -a [-t|-O] … : mount all stuff from /etc/fstab
mount device : mount device at the known place
mount directory : mount known device here
mount -t type dev dir : ordinary mount command
Note that one does not really mount a device, one mounts
a filesystem (of the given type) found on the device.
One can also mount an already visible directory tree elsewhere:
mount –bind olddir newdir
or move a subtree:
mount –move olddir newdir
One can change the type of mount containing the directory dir:
mount –make-shared dir
mount –make-slave dir
mount –make-private dir
mount –make-unbindable dir
One can change the type of all the mounts in a mount subtree
containing the directory dir:
mount –make-rshared dir
mount –make-rslave dir
mount –make-rprivate dir
mount –make-runbindable dir
A device can be given by name, say /dev/hda1 or /dev/cdrom,
or by label, using -L label or by uuid, using -U uuid .
Other options: [-nfFrsvw] [-o options] [-p passwdfd].
For many more details, say man 8 mount .
error in fuse_mount
查资料说是mount的版本过低,在mfsmount的时候需要–no-canonicalize 参数支持。
解决方法:
从 https://www.kernel.org/pub/linux/utils/util-linux/ 下载新版本,我这里对应centos6下的版本util-linux-ng-2.17进行安装。
[root@localhost ~]# yum install -y ncurses ncurses-devel [root@localhost ~]# wget -c https://www.kernel.org/pub/linux/utils/util-linux/v2.17/util-linux-ng-2.17.tar.gz --no-check-certificate [root@localhost ~]# tar zxvf util-linux-ng-2.17.tar.gz [root@localhost ~]# cd util-linux-ng-2.17 [root@localhost util-linux-ng-2.17]# ./configure --prefix=/usr/local/util-linux-ng-2.17 [root@localhost util-linux-ng-2.17]# make && make install [root@localhost util-linux-ng-2.17]# mv /bin/mount /bin/mount.old [root@localhost util-linux-ng-2.17]# mv /bin/umount /bin/umount.old [root@localhost util-linux-ng-2.17]# ln -s /usr/local/util-linux-ng-2.17/bin/mount /bin/mount [root@localhost util-linux-ng-2.17]# ln -s /usr/local/util-linux-ng-2.17/bin/umount /bin/umount [root@localhost util-linux-ng-2.17]# /usr/local/mfs/bin/mfsmount /var/www/html/ -H 192.168.1.56 mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root [root@localhost util-linux-ng-2.17]#
解决!
2014-04-16
发表者 Venus
暂无评论
mfs中mfsmaster存在单点故障,这里通过keepalived+shell脚本解决。
思路:
利用keepalived进行vip切换,mfschunkserver包括客户端挂载全部用vip挂载。
当master当掉时,vip漂移到slave,通过任务计划,每分钟执行一下shell脚本,脚本检测是否发现vip。
如果发现,表明master当掉,slave执行日志恢复数据。
并启动slave中的mfsmaster服务,slave身份变为master。其中,数据变化日志部分通过scp+密钥认证定时推送
(或者是通过inotify+rsync实时同步。)
系统环境信息:
mfsmaster centos6_x64 ip:192.168.0.8
mfsslave centos6_x64 ip:192.168.0.9
mfschunkserver_1 centos6_x64 ip:192.168.0.7
mfschunkserver_2 centos6_x64 ip:192.168.0.6
mfsclient centos6_x64 ip:192.168.0.127
keepalived VIP ip:192.168.0.10
selinux关闭,iptables关闭。
第一部分:配置keepalived
安装keepalived参考:https://www.rootop.org/pages/2102.html
配置keepalived参考:https://www.rootop.org/pages/2108.html
关于keepalived的配置一提而过,不需要太多配置,只要能实现vip漂移即可。
现在我的环境中已经实现keepalived正常运行,vip现漂移到mfsmaster。
第二部分:安装mfs
安装mfsmaster、chunkserver、mfsclient 日志服务器可用可不用,或者直接在某台chunkserver中运行即可。
至于mfsslave,其实就是mfsmaster,只是安装以后不需要启动服务(下面出现的脚本安装完成后会启动,并加入到/etc/rc.local自己去修改即可。)。
安装过程可参考:https://www.rootop.org/pages/2227.html
这里的安装步骤如下:
从 https://www.rootop.org/rs/shell_scripts/install_mfs_v1.6.sh 下载写好的mfs安装脚本。
此脚本包含了安装mfsmaster、mfslog、mfschunkserver、mfsclient
有些地方需要修改为自己的实际配置,主要为变量部分:
tgz_name=mfs-1.6.11.tar.gz #mfs版本源码包,如果是新版本需要修改
mfs_name=mfs-1.6.11 #mfs解压后文件夹名称,如果是新版本需要修改
fuse=fuse-2.9.3.tar.gz #fuse版本源码包,如果是新版本需要修改
fuse_name=fuse-2.9.3 #fuse解压后文件夹名称,如果是新版本需要修改
mfs_user=mfs #mfs运行的用户
mfs_group=mfs #mfs运行的用户组
mfs_path=/usr/local/mfs #mfs安装路径
mfs_sbin_path=$mfs_path/sbin #mfs相关命令路径
mfs_data_path=$mfs_path/var/mfs #元服务器数据日志路径,默认即可
allow_access=”192.168.0.0/24 / rw,maproot=0″ #允许访问mfsmaster的网段,需要修改为实际信息。
master_host=192.168.0.10 #vip的地址,用来mfschunkserver的连接和mfsclient的挂载
mfs_data=/mnt/mfs #chunkserver的数据存储路径,根据实际情况修改。
mount_dir=/mnt/mfs #mfsclient客户端挂载路径,根据实际情况修改。
其它无需修改。
执行 sh install_mfs_v1.6.sh 时,有4个安装选项。
——————Press 1 To install mfsmaster ———
——————Press 2 To install mfslog ———
——————Press 3 To install mfschunkserver ———
——————Press 4 To install mfsclient ———
1安装mfsmaster,2安装日志服务器,3安装chunkserver,4安装客户端
在
mfsmaster(192.168.0.8)选择1开始安装。
mfsslave(192.168.0.9)选择1开始安装。
mfschunkserver_1(192.168.0.7)选择3开始安装。
mfschunkserver_2(192.168.0.6)选择3开始安装。
mfsclient(192.168.0.127)选择4开始安装。
安装完成后去mfsclient查看是否写入数据。
安装完成!
第三部分:配置master->slave推送
之前想采用inotify+rsync,但是担心在传输过程中意外停止的话,会导致mfsmaster到slave的数据不完整。
采用了scp定时拷贝。因为scp拷贝数据会要求输入密码,这里采用密钥认证,略过密码输入。
在master中生成密钥:
[root@localhost ~]# ssh-keygen -t rsa
“`信息略过
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# ll
总用量 8
-rw——-. 1 root root 1675 4月 17 00:59 id_rsa
-rw-r–r–. 1 root root 408 4月 17 00:59 id_rsa.pub
[root@localhost .ssh]# scp id_rsa.pub root@192.168.0.9:/root/.ssh/authorized_keys #把master的公钥复制到slave的/root/.ssh/下并改为为authorized_keys
到slave中,更改公钥权限:
[root@localhost ~]# chmod 400 .ssh/authorized_keys
master通过scp再复制数据到slave时就不再提示密码。
在master中添加任务计划,每分钟复制一次数据变化日志到slave中:
*/1 * * * * scp /usr/local/mfs/var/mfs/* root@192.168.0.9:/usr/local/mfs/var/mfs/
重启任务计划。
第四部分:日志恢复
下面实现mfs的主从切换及数据恢复:
将下面脚本放到任务计划,每分钟执行一次。(不完美,想做到一秒一执行)
#!/bin/bash VIP=192.168.0.10 if [ "$(ip a | grep $VIP | awk {'print $2'} | cut -d/ -f1)" == "$VIP" ];then if [ -a /tmp/mfs.lock ];then exit else touch /tmp/mfs.lock cd /usr/local/mfs/var/mfs /usr/local/mfs/sbin/mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog.*.mfs /usr/local/mfs/sbin/mfsmaster start fi else exit fi
脚本思想就是检测本机是否获取到vip,如果检测到表明master宕机,slave接管vip,然后需要恢复数据日志,继续提供服务。
至此,完成。
ps:
如果修复master后要把服务切换到master,首先需要把keepalived中的vip切换到master,然后停止slave的mfsmaster服务
删除/tmp/mfs.lock ,要将slave的数据变化日志拷贝到master,执行恢复。
以此保证宕机期间数据变化带来的数据不完整问题。
暂时能想到这么多,有什么问题可以email给我: venus@rootop.org
2014-04-09
发表者 Venus
暂无评论
在iSCSI设备上(FreeNAS)启用了CHAP认证(单向)。现在需要在linux下挂载,步骤如下:
安装iSCSI发起程序:
[root@localhost ~]# yum list | grep iscsi-initiator
iscsi-initiator-utils.x86_64 6.2.0.873-10.el6 base
iscsi-initiator-utils-devel.x86_64 6.2.0.873-10.el6 base
[root@localhost ~]# yum install -y iscsi-initiator-utils
启动iSCSI服务,设置开机启动。
[root@localhost ~]# service iscsi start
[root@localhost ~]# chkconfig iscsi on
[root@localhost ~]# chkconfig iscsi –list
iscsi 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
编辑iscsi配置文件,添加initiator单向认证,如果没有认证,默认即可。
[root@localhost ~]# vi /etc/iscsi/iscsid.conf
node.startup = automatic
node.session.auth.username = admin
node.session.auth.password = admin1234567890
[root@localhost ~]# service iscsi restart
停止 iscsi: [确定]
正在启动 iscsi: [确定]
发现目标:
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 192.168.0.135
192.168.0.135:3260,1 iqn.testscsi
[root@localhost ~]# iscsiadm -m node -T iqn.testscsi -p 192.168.0.135 -l // -l登陆 -u 断开
Logging in to [iface: default, target: iqn.testscsi, portal: 192.168.0.135,3260] (multiple)
Login to [iface: default, target: iqn.testscsi, portal: 192.168.0.135,3260] successful.
如果提示下面的信息,可能是用户名密码配置错误,修改完成后需要重新发现。
重启前最好先退出target(logout)
[root@localhost ~]# iscsiadm -m node -T iqn.testscsi -p 192.168.0.135:3260 -l
Logging in to [iface: default, target: iqn.testscsi, portal: 192.168.0.135,3260] (multiple)
iscsiadm: Could not login to [iface: default, target: iqn.testscsi, portal: 192.168.0.135,3260].
iscsiadm: initiator reported error (24 – iSCSI login failed due to authorization failure)
iscsiadm: Could not log into all portals
格式化,挂载:
[root@localhost ~]# fdisk -l
Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 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: 0x000e4b9b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 10199 81920000 83 Linux
/dev/sda2 10199 10454 2048000 82 Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disk identifier: 0xa8a996b2
Device Boot Start End Blocks Id System
/dev/sdb1 1 1306 10482688 7 HPFS/NTFS
[root@localhost ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=1 blocks, Stripe width=256 blocks
655360 inodes, 2620672 blocks
131033 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]# mkdir /mnt/iscsi
[root@localhost ~]# mount /dev/sdb1 /mnt/iscsi/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 77G 4.3G 69G 6% /
tmpfs 120M 0 120M 0% /dev/shm
/dev/sdb1 9.9G 151M 9.2G 2% /mnt/iscsi
[root@localhost ~]#
写入到/etc/fstab自动开机挂载即可。
ISCSI常用命令:
1、发现iscsi存储: iscsiadm -m discovery -t st -p ISCSI_IP
2、查看iscsi发现记录 iscsiadm -m node
3、删除iscsi发现记录 iscsiadm -m node -o delete -T LUN_NAME -p ISCSI_IP
4、登录iscsi存储 iscsiadm -m node -T LUN_NAME -p ISCSI_IP -l
5、登出iscsi存储 iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u