iscsi(iscsi= internet Small Computer System Interface )是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, ISCSI能够在LAN、WAN甚至internet上进行数据传送,使得数据的存储不再受地域的限制。
ISCSI技术的核心是在TCP/IP网络上传输SCSI协议,是指用TCP/IP报文、和ISCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输,如下图:
iSCSI协议定义了在 TCP/IP 网络发送、接收 block(数据块)级的存储数据的规则和方 法。发送端将SCSI命令和数据封装到 TCP/IP 包中再通过网络转发,接收端收到 TCP/IP 包之后,将其还原为SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据再封装到 TCP/IP包中再传送回发送端。而整个过程在用户看来,使用远端的存储设备就像访问本地的 SCSI设备一样简单。
一. 搭建ISCSI存储服务器
这里将Target主机第二块硬盘的第一个主分区(硬盘分区标识为/dev/sdb1)作为iSCSI共享磁盘,硬盘大小为20G,共享给一台linux主机使用。
1、在ISCSI存储服务器上安装iscsi target软件包,如下图所示:
2、iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置项默认全被注示掉了。编辑该文件,实现简单的ISCSI存储服务器配置。在文件尾部添加如下内容:
注:Target的命名在同一子网内应该是唯一的,标准命名方式为:iqn.yyyy-mm.[:identifier]其中:
iqn:表示“iSCSI Qualified Name”,简称iqn。yyyy-mm:表示年份-月份。这里是2011-08。 reversed domain name:表示倒过来的域名,这里是com.example。 identifier:表示识别代码,这里是disk
backing-store用于指定存储设备,一般指非实际的物理磁盘,如LVM卷、某个分区、raid磁盘阵列。
然后启动tgtd服务,并设置系统启动时自动启动,iscsi通信的端口:3260/tcp,以明文传输数据
#service tgtd start
#chkconfig tgtd on
运行tgtadm --lld iscsi --op show --mode target查看target信息
至此,iscsi target存储服务器配置完成,使用iSCSI Initiator就可以连接iscsi target服务器了。
二. 安装和配置iscsi客户端
1、安装iscsi发起端软件:iscsi-initiator-utils软件包
#service iscsi start
#chkconfig iscsi on
2、查找iscsi服务器上的iscsi目标,即iscsi发现。
执行iscsiadm -m discovery –t st –p iscsi服务器的IP
或
iscsiadm -m discovery -t sendtargets -p targetIP地址:端口号
若是默认端口3260可以省略不写。
3、登录服务器上的iscsi目标,即iscsi注册
执行iscsiadm -m node -T target名称 -p targetIP地址:端口号 --login
退出iscsi盘阵
执行iscsiadm -m node -T target名称 -p targetIP地址:端口号 --logout
4、查看/dev/disk/by-path目录中iscsi符号链接所指向的位置或fdisk -l查看磁盘情况或检查iscsi的状态:service iscsi status或dmesg |tail
此时,可以使用iscsi磁盘,就好像它是本地连接硬盘驱动器。
5、对连接的iscsi磁盘分区并实现自动挂载
未分区前显示sdb信息如下,通过下图可以看出sdb还未建立分区
执行fdisk /dev/sdb分区并在创建好的分区上创建文件系统(执行mkfs –t ext4 /dev/sdb命令创建文件系统)
执行完分区和创建文件系统的命令后显示sdb信息如下:创建了一个主分区/dev/sdb1
修改/etc/fstab文件实现自动挂载
执行blkid /dev/sdb1获得sdb1分区的UUID
修改/etc/fstab文件自动挂载sdb1分区,如下图所示:
测试自动挂载:mount –a或重启系统后执行df –hT查看挂载情况
注意:
使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导时显示的设备名称都不同,具体取决于iscsi设备通过网络进行响应的顺序,如果按设备名称挂载,这会导致使用错误的设备)
在/etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载文件系统,直至启用联网,否则,在引导时系统将出错)
确保iscsi和iscsid服务在引导时将启动
#chkconfig iscsi on
#chkconfig iscsid on
6、删除iscsi
卸载新文件系统并删除/etc/fstab中的行或对其添加批注,退出并删除iscsi目标的条目
7、加密iscsi (与加密一个普通LINUX分区一样)
三. 配置iscsi的发现和注册
1、#cryptsetup luksFormat /dev/sdb1 对iscsi的上新分区进行加密并设置解密密码
Are you sure? (Type uppercase yes): YES (输入大写的YES来确定创建加密分区)
Enter LUKS passphrase: (输入创建密码,你将用密码来保护你的加密分区。如果你把密码弄丢了,那就太不幸了,你就无法取回这些数据了)
Verify passphrase: (确认密码)
2、这样一个加密分区就建立好了.接下来我们需要创建一个可以挂载的分区并给它取个名字(这里我给取名为sdb1, 你也可以叫它test、fred、我的秘密分区或者任何你喜欢的名字)
#cryptsetup luksOpen /dev/sdb1 sdb1
Enter LUKS passphrase: (这里输入的是创建加密分区时设置的密码)
它将会被创建在/dev/mapper/下面.这里就是/dev/mapper/sdb1,可以用ls命令查看
3、现在将该分区格式化为ext4文件系统。mkfs.ext4 /dev/mapper/sdb1
4、接下来我们创建一个用于挂载的挂载点并挂载. 记住,你必须从/dev/mapper/路径下使用该设备
5、现在将该分区格式化为ext4文件系统。mkfs.ext4 /dev/mapper/sdb1
6、接下来我们创建一个用于挂载的挂载点并挂载. 记住,你必须从/dev/mapper/路径下使用该设备
# mkdir /bak
#mount /dev/mapper/sdb1 /bak
好了,现在你可以使用你的加密分区了,如向其内创建或存储一些文件。
使用完毕后为了保护数据的隐密,我们需要取消挂载并关闭加密分区.
# umount /bak
# cryptsetup luksClose sdb1
只有在打开加密设备的时候,你才需要输入LUKS密码。记住,如果丢了密码,你就完蛋了。你可以删除分区重新再来,但是数据是无法恢复的。打开加密设备并加载以后,你就可以像使用其它分区一样使用它了。
#cryptsetup luksOpen /dev/sdb1 sdb1
Enter LUKS passphrase: (这里输入的是创建加密分区时设置的密码)
附加资料:
系统每次启动自动挂载加密分区:
/etc/crypttab包含要在系统启动期间解锁的设备列表,每一行列出一个设备,使用空格分隔字段。其格式如下:
name /dev/sdaN /path/to/password/file
每个字段的含义:
name字段是给加密分区取的一个名字
/dev/sdaN字段用于加密的分区设备
/path/to/password/file字段是用于解锁设备的密码文件,如果该字段为空或设置为none,在系统启动时,系统会提示用户输入解密密码
具体操作如下:
修改/etc/crypttab并添加如下内容,这个文件的作用是每次系统启动时挂载加密分区时要询问的的密码
sdb1 /dev/sdb1 /path/file
具体操作如下:
1、修改/etc/crypttab并添加如下内容,这个文件的作用是每次系统启动时挂载加密分区时要询问的的密码
sdb1 /dev/sdb1 /path/file
若/path/file省略或不设置,则系统在启动时将要求用户输入密码
2、修改/etc/fstab文件:添加如下内容
/dev/mapper/sdb1 /挂载点 ext4 defaults 0 0
注:sdb1是给加密分区取的名字即执行cryptsetup luksOpen /dev/sdb1 sdb1命令后给分区起的名称
3、echo “密码” > /path/file “密码”创建加密分区时设的密码
4、chown root /path/file
5、chmod 600 /path/file
6、执行下列命令:cryptsetup luksAddKey /dev/sdb1 /path/file
四、修改内核启动参数
识别运行内核:
cat /etc/redhat-release //安装Red Hat Enterprise Linux版本。
uname -r //当前运行的内核版本
uname -m 或arch //当前运行所在处理器体系结构
yum list installed kernel\* 安装的内核版本
Grub 的配置文件位于 "/boot/grub/grub.conf", 更改后将对以后的每次启动有效。 此配置文件可分为两个大的部分:全局配置和菜单项配置:A. 全局配置命令全局配置命令从配置文件最上方到第一个 "title" 命令之前结束。default 0timeout 10splashimage (hd0,2)/boot/grub/splash.xpm.gzpassword --md5 $1$tBWhgwVY$sIzNYKY/iV9rZ4keYAkaQ/ #设置了密码的才有此项default 菜单号: 指定 Grub 默认启动项(默认引导的系统), 菜单号从0 开始, 0 表示下面的第一个菜单项timeout seconds: 从 Grub 启动界面出现到以默认启动项引导系统之间等待用户选择的时间。splashimage full_path_of_xpm_or_xpm.gz: 指定启动菜单的背景文件(xpm 图像或其gzip 压缩文件)。B. 菜单项配置从”title”开始到下一个 "title" 之前为一个启动菜单项, 即引导一个操作系统所需的参数
title: 定义启动菜单项的名称root: 设置 Grub 的根设备 (root)为 Linux 内核所在分区kernel: 后跟 Linux 内核文件为参数, 加载 Linux 内核文件initrd: 加载镜像文件
1、临时修改内核启动参数
系统启动到GRUB阶段时,中断启动,选择要引导的系统。如图所示:
按“a”键进入修改内核引导参数界面,输入系统启动时要引导的内核参数。如下图所示:
按回车键继续启动系统。
与内核引导相关的引导参数可以查看如下文件:
/usr/share/doc/kernel-doc-*/Documentation/kernel-parameters.txt文件。要确保安装kernel-doc包。
如:enforcing参数:selinux控制;enforcing=1可设置强制模式,enforcing=0可设置许可模式。
Selinux参数:selinux控制;selinux=0可完全禁用selinux,selinux=1可启用selinux
vga参数:改变字符终端的分辨率,vga=788
vga参数值的意义,这里的值给出的是十进制的,也可以使用十六进制,如vga=0x317。
# VGA Mode Args# Color 640x480 800x600 1024x768 1280x1024# 256 769 771 773 775# 32K 784 787 790 793# 64K 785 788 791 794# 16M 786 789 792 795
2、永久修改内核启动参数:使用grub.conf文件
在/boot/grub/grub.conf或/etc/grub.conf文件中将内核参数添加到kernel一行中的rhgb quiet前面,注意这一声明前后与其他部分间有空格,如图所示:
你的修改应该在/proc/cmdline文件中可以查看到。
环回设备用于像挂载设备一样挂载文件。例如,对于访问ISO映像来说这种设备非常方便。默认情况下,内核支持8个环回设备。修改服务器的内核命令行,使其支持32个环回设备。
列出/dev目录中的环回设备(环回设备的名称都是loop*):ls /dev/loop*
将参数max_loop=32添加到/boot/grub/grub.conf中的内核命令行,重启服务器,再次查看环回设备的数量。
3、给GRUB设密码:(务必将password行置于第一个title行的上方,这样才可全局应用)
明文存储密码:在grub.conf文件的全局配置中添加password 密码
密文存储密码:先执行grup-md5-crypt命令生成密码加密字串,然后修改grub.conf文件在全局配置中添加password --md5 加密密码字串
4、通过/etc/sysctl.conf文件或sysctl命令查看或调整内核网络参数
修改/etc/sysctl.conf文件以永久更改,然后运行sysctl –p以重新加载
编辑/Alex 美编/Mary
领取专属 10元无门槛券
私享最新 技术干货