一、安装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