1.1 问题
本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端:
- 服务器上要额外配置一块硬盘
- 服务端安装target,并将新加的硬盘配置为iSCSI 的共享磁盘
- 在客户端上安装initiator,挂在服务器iSCSI,要求实现开机自动挂载
1.2 方案
使用2台RHEL6虚拟机,其中一台作为iSCSI服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.205),如图-1所示。
RHEL7系统中,默认通过targetcli软件包提供iSCSI服务,因此需要在服务端安装targetcli包并配置对应的服务,iSCSI服务主要配置选项如表-1所示。
客户端挂载iSCSI服务器:
- 客户端需要安装iscsi-initiator-utils软件包
- 客户端使用命令挂载后需要分区、格式化并进行挂载测试
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:安装iSCSI服务器软件
1)使用yum安装targetcli软件包
[root@san ~]# yum -y install targetcli
[root@san ~]# which targetcli
/usr/bin/targetcli
[root@san ~]# yum info targetcli
为虚拟机添加一个20G的磁盘
[root@san ~]# lsblk
vdb 252:16 0 20G 0 disk
步骤二:通过命令行配置iSCSI服务
1)定义后端存储
2)创建iqn对象
3) 授权客户机访问
4) 绑定存储
5) 绑定存储绑定监听地址,并保存配置
[root@san ~]# targetcli
/> ls
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 0]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 0]
o- loopback ..................................................... [Targets: 0]
/> /backstores/block >create ipsasn /dev/vdb
/backstores/block> create ipasn /dev/vdb
Created block storage object ipasn using /dev/vdb.
/backstores/block> ls
o- block .................................................. [Storage Objects: 1]
o- ipasn ......................... [/dev/vdb (20.0GiB) write-thru deactivated]
o- alua ................................................... [ALUA Groups: 1]
o- default_tg_pt_gp ....................... [ALUA state: Active/optimized]
/backstores/block> cd iscsi
No such path /backstores/block/iscsi
/backstores/block> cd /iscsi
/iscsi> ls
o- iscsi .......................................................... [Targets: 0]
/iscsi> create iqn.2018-08.cn.tedu:sharedisk
Created target iqn.2018-08.cn.tedu:sharedisk.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> iqn.2018-08.cn.tedu:sharedisk/tpg1/acls create iqn.2018-08.cn.tedu:client1
Created Node ACL for iqn.2018-08.cn.tedu:client1
/iscsi> cd /
/> saveconfig
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
服务管理:
[root@san ~]# systemctl start target
[root@san ~]# ss -ntulp | grep :3260
tcp LISTEN 0 256 *:3260 *:*
[root@san ~]# systemctl enable target
[root@san ~]# systemctl is-enabled target.service
enabled
客户端:
客户端安装软件并启动服务
[root@mysql1 ~]# yum -y install iscsi-initiator-utils
2)设置本机的iqn名称
[root@mysql1 ~]# vim /etc/iscsi/initiatorname.iscsi
3)发现远程target存储
[root@mysql1 ~]# man iscsiadm
[root@mysql1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.71 --discover
192.168.4.71:3260,1 iqn.2018-08.cn.tedu:sharedisk
3)客户端挂载iSCSI共享
[root@mysql1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
[root@mysql1 ~]# mkfs.ext4 /dev/sda
[root@mysql1 ~]# blkid
/dev/vda1: UUID="5d6c8afe-b75a-4e6b-9de1-1a3eeeaf23d9" TYPE="xfs"
/dev/vda2: UUID="8HzKnG-z99E-gram-8cmA-Snmm-Nrwf-4R0i0Z" TYPE="LVM2_member"
/dev/mapper/rhel-root: UUID="862ad236-a628-46ce-81d2-eda3f90c8044" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="aab7ca11-e7ab-4446-97ff-09026c1f12ab" TYPE="swap"
/dev/sda: UUID="c1aa5bea-2f49-44d4-abf4-c0c82dfd6916" TYPE="ext4"
[root@mysql1 ~]# yum -y install mariadb-server
[root@mysql1 ~]# vim /etc/fstab
[root@mysql1 ~]# mount -a
[root@mysql1 ~]# ll -d /var/lib/mysql
drwxr-xr-x. 3 root root 4096 8月 3 12:53 /var/lib/mysql
[root@mysql1 ~]# chown mysql.mysql /var/lib/mysql
[root@mysql1 ~]# ll -d /var/lib/mysql
drwxr-xr-x. 3 mysql mysql 4096 8月 3 12:53 /var/lib/mysql
[root@mysql1 ~]# systemctl restart mariadb
进入数据库,添加部分数据:
[root@mysql1 ~]# mysql
MariaDB [(none)]> create database mydb;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> use mydb;
Database changed
MariaDB [mydb]> create table t1;
ERROR 1113 (42000): A table must have at least 1 column
MariaDB [mydb]> create table t1(id int,name varchar(30));
Query OK, 0 rows affected (0.08 sec)
MariaDB [mydb]> insert into t1 values(1,"king"),(2,"jack")
-> ;
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
MariaDB [mydb]> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | king |
| 2 | jack |
+------+------+
2 rows in set (0.00 sec)
查看文件系统可以正常使用:
[root@mysql1 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17811456 3457312 14354144 20% /
devtmpfs 492200 0 492200 0% /dev
tmpfs 508128 0 508128 0% /dev/shm
tmpfs 508128 7200 500928 2% /run
tmpfs 508128 0 508128 0% /sys/fs/cgroup
/dev/vda1 1038336 164008 874328 16% /boot
tmpfs 101628 0 101628 0% /run/user/0
/dev/sda 20511312 75012 19371340 1% /var/lib/mysql
本地文件系统:ext2/3/4 xfs ,同时只能单台设备使用,不能多台设备使用
gfs 是集群文件系统,就可以同时多台设备使用
++++++++++++++++++++++++++++++++++++++++++++
授权另外一台客户端访问:
服务端:
[root@san ~]# targetcli
/> iscsi/iqn.2018-08.cn.tedu:sharedisk/tpg1/acls/ create iqn.2018-08.cn.tedu:client2
Created Node ACL for iqn.2018-08.cn.tedu:client2
Created mapped LUN 0.
/> saveconfig
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
/>exit
客户端:
[root@mysql2 ~]# vim /etc/iscsi/initiatorname.iscsi
发现存储:
[root@mysql2 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.71 --discover
192.168.4.71:3260,1 iqn.2018-08.cn.tedu:sharedisk
192.168.4.71:3260,1 iqn.2018-08.cn.tedu.sharedisk
[root@mysql1 ~]# systemctl stop mariadb
[root@mysql1 ~]# umount /var/lib/mysql/
一个磁盘只能提供单台主机,共享磁盘 。多台主机一起共享数据,会损坏数据
[root@mysql1 ~]# ls /var/lib/iscsi/
ifaces isns nodes send_targets slp static
[root@mysql1 ~]# ls /var/lib/iscsi/send_targets/
192.168.4.71,3260
[root@mysql1 ~]# ls /var/lib/iscsi/send_targets/192.168.4.71,3260/
iqn.2018-08.cn.tedu:sharedisk,192.168.4.71,3260,1,default st_config
iqn.2018-08.cn.tedu.sharedisk,192.168.4.71,3260,1,default
[root@mysql2 ~]# systemctl restart iscsi
[root@mysql2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm
[root@mysql2 ~]# blkid
/dev/vda1: UUID="5d6c8afe-b75a-4e6b-9de1-1a3eeeaf23d9" TYPE="xfs"
/dev/vda2: UUID="8HzKnG-z99E-gram-8cmA-Snmm-Nrwf-4R0i0Z" TYPE="LVM2_member"
/dev/mapper/rhel-root: UUID="862ad236-a628-46ce-81d2-eda3f90c8044" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="aab7ca11-e7ab-4446-97ff-09026c1f12ab" TYPE="swap"
/dev/sda: UUID="c1aa5bea-2f49-44d4-abf4-c0c82dfd6916" TYPE="ext4"
不需要,创建文件系统,如果创建文件系统,如果创建文件系统,有的数据就会丢失和损坏
[root@mysql2 ~]# yum install mariadb-server
[root@mysql2 ~]# mount /dev/sda /var/lib/mysql
[root@mysql2 ~]# systemctl restart mariadb.service
[root@mysql2 ~]# mysql
MariaDB [(none)]> show databases;
MariaDB [(none)]> use mydb;
MariaDB [mydb]> show tables;
MariaDB [mydb]> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | king |
| 2 | jack |
+------+------+
2 rows in set (0.00 sec)
[root@mysql1 ~]# yum install tree
[root@mysql1 ~]# tree /var/lib/iscsi/
清理工作:
1.停止mysql服务
[root@mysql2 ~]# systemctl stop mariadb
2.卸载/var/lib/mysql
[root@mysql2 ~]# umount /var/lib/mysql/
3.logout (卸载块设备)
[root@mysql2 ~]# iscsiadm -m node -T iqn.2018-08.cn.tedu:sharedisk -P 192.168.4.71 -u
Logging out of session [sid: 1, target: iqn.2018-08.cn.tedu:sharedisk, portal: 192.168.4.71,3260]
Logout of [sid: 1, target: iqn.2018-08.cn.tedu:sharedisk, portal: 192.168.4.71,3260] successful.
[root@mysql2 ~]# lsblk
[root@mysql2 ~]# systemctl stop iscsi