一、安装iSCSI 客户端
apt-getinstall open-iscsi
二、修改iscsid.conf配置文件(这样就能开机启动!)
vim/etc/iscsi/iscsid.conf
设置node.starup为automatic:
node.startup = automatic
三、查找iSCSItargets主机的targetname
iscsiadm --mode discovery --type sendtargets --portal 192.168.1.1
注:假设target主机ip为192.168.1.1
四、登录iscsi
iscsiadm --mode node --targetname iqn.target-2.aa56d02bb5--portal 192.168.1.1:3260 --login
注:假设target name为iqn.target-2.aa56d02bb5,3260为iSCSI服务默认端口
五、查看iscsitargets映射过来的卷
fdisk -l
或用dmesg 或tail-f /var/log/messages 命令查看
六、创建分区
fdisk /dev/sdb
按m可以看菜单,一般就直接n根据需要新建分区
注:fdisk一般只用来建立MBR的分区表,所以一般只用于2T以下的分区
七、格式化分区
mkfs.ext4 /dev/sdb1
现在一般用ext4的比较多了
八、挂载文件系统
mkdir /mnt/iscsi
mount /dev/sdb1 /mnt/iscsi
但是这样没法开机挂载,下面有一个挂载方法,但是我实际使用下来,不行,测试了一下,发现在运行rc.local的时候,iscsi都还没有挂载上去, 所以写在分区表里面是不行的,这个后面解决,先把挂载方法记录一下:
设置开机自动加载文件系统 在/etc/fstab中添加
/dev/sdb1 /data ext4 _netdev 0 0
但是,Linux系统重启后,磁盘设备的名称可能会发生飘移,从而引起文件系统不能挂载上来或者不能正确挂载,
使用UUID的方式进行挂载可以解决这个问题
命令tune2fs -l /dev/sdb可以查到文件系统的UUID
在/etc/fstab中添加
UUID=xxxxxxx /data ext4 _netdev 0 0 替换掉原来的那行
九、注销iSCSIinitiator登录
不需要时可以注销iSCSI initiator登录,先umount文件系统,再把第四步命令的login参数改成logout执行即可:
umount /mnt/iscsi
iscsiadm --mode node --targetname iqn.target-2.aa56d02bb5--portal 192.168.1.1:3260 --logout
十、删除指定Target
用logout只是暂时登出,发现的target信息会保存在数据库中,下次重启iscsi服务时(service iscsi restart),仍会找回该Target卷。如果想从数据库中删除该Target,需用以下命令:
查询数据库中Target内容:
iscsiadm -m node
删除指定的Target:
iscsiadm --mode node -o delete –targetname iqn.target-2.aa56d02bb5--portal 192.168.1.1:3260
因为直接挂载不行,所以就写个测试脚本,看看是不是脚本没有执行;这样也能知道几个文件的执行顺序,分别把脚本写在/etc/bash.bashrc /etc/rc.local /etc/init.d/rc.local
发现/etc/init.d/rc.local在ubuntu不执行。
#/bin/echo "by /etc/bash.bashrc ">> /root/tmp
#/bin/date >> /root/tmp
#/bin/ls /dev/sd* >> /root/tmp
#/bin/echo "======E N D=====">> /root/tmp
因为直接写在分区表,包括rc.local都不行,于是我就只能直接写在/etc/bash.bashrc里面
#/root/ds.sh
#: << End
#! /bin/bash
chk=$(du -s /mnt/iscsi |awk '{print $1}')
#空文件的话,只有du出来只有8
#echo $chk
des=20
#ch2=2
if [ $chk -lt $des ]
#如果小于20,说明没有挂载,就直接挂载
then #if iscsi is not mount then mount
mount /dev/sdg /mnt/iscsi
echo $?
echo "mount success !"
else
echo "Already mount !"
fi
#End