1、RAID磁盘阵列
在Linux系统中做RAID,磁盘阵列的设备可以是一块磁盘中的三个以上的分区,也可以是三块或以上的磁盘。本文主要以几块磁盘为例,来实现在RAID5。
实验说明:
在VMware中进行,系统中有一块磁盘sda,新添加6块SCSI磁盘,分别为sdb,sdc,sdd,sde,sdf,sdg,其中4块作为磁盘阵列的设备,1块作为预备(spare)磁盘,还有1块留作备用(用于扩展RAID)。
实验步骤:
1.先查看一下系统中磁盘设备:fdisk -l
显示结果略
2.接下来开始创建RAID了,主要会应用到mdadm命令,使用此命令需要先安装RHEL6安装光盘中自带的mdadm包,如果没有安装,先进行安装。
[root@svr ~]# mdadm --create --auto=yes/dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-f]
参数说明:
--create //表示要创建raid
--auto=yes /dev/md0 //新建立的软件磁盘阵列设备为md0,md序号可以为0-9
--level=5 //磁盘阵列的等级,这里表示创建是的raid5
--raid-devices //添加作为磁盘阵列用的磁盘的块数
--spare-devices //添加作为预备(spare)磁盘的块数
/dev/sd[b-f] //磁盘阵列所使用的设备,还可写成/dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
另外这条命令也可以简写:
mdadm -C /dev/md0 -l5 -n4 -x1 /dev/sd[b-f]
3.查看RAID是否成功创建及是否正常运行,有两种方法(当磁盘容量越大时,磁盘阵列构建的时间越长,所以可能需要等待很长时间才能看到以下信息):
执行mdadm --detail/dev/md0 命令查看RAID的详细信息:图略
查看/proc/mdstat文件,可以比较简单明了的查看RAID创建和运行的情况:
S代表预备(spare)磁盘,4个U代表正常,出现_表示不正常
确认新建的RAID设备
执行 mdadm -Q /dev/md0 //-Q用来查询设备信息。
4.格式化并且挂载和使用创建的RAID:
[root@svr ~]# mkfs.ext4 /dev/md0
[root@svr ~]# mkdir /raid5
[root@svr ~]# mount /dev/md0 /mnt/raid5/查看一下挂载的情况(已经挂载上):略
来查看一下新挂的RAID是否可以使用
5.设置开机自动启动RAID以及自动挂载:
先建立/etc/mdadm.conf这个配置文件:
[root@svr ~]#mdadm --detail /dev/md0 |grep UUID > /etc/mdadm.conf
上面建立的这个文件需要作小小的修改:
[root@svr ~]# vi/etc/mdadm.conf
ARRAY/dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805
然后再修改/etc/fstab文件,设置开机自动挂载:
[root@svr ~]# vi/etc/fstab
/dev/md0 /mnt/raid5 ext4 defaults 00
重启一下系统,就可以检查开机自动挂载有没有设置成功了!
扩容raid磁盘阵列:
显示磁盘阵列的组成情况,4个块设备组成,:
# cat /proc/mdstat
把/dev/sdg增加进阵列/dev/md0:
# mdadm --add /dev/md0 /dev/sdg
把raid5阵列/dev/md0修改为5个块设备:
# mdadm --grow/dev/md0 -n5
再显示一下磁盘阵列的组成情况,现在/dev/md1是6个块设备组成,完成扩容,还需要7.7分钟。
# cat /proc/mdstat
等待扩容完成.....
执行下列命令:
验证:
6.模拟RAID5中一块磁盘损坏,检验spare磁盘的功能(raid5中允许一块磁盘损坏,我们所设置的那1块spare磁盘会立即替代损坏的磁盘,进行RAID的重建,保障数据的安全):
[root@svr ~]#mdadm --manage /dev/md0 --fail /dev/sdd
//使用此命令设置磁盘sdd成为出错的状态
来查看一下:mdadm --detail /dev/md0
可以查看cat /proc/mdstat文件查看RAID5的重建过程
再来看一下重建完后的结果
/mnt/raid5还可以正常使用
7.将出错的磁盘删除并加入新的磁盘:
先删除损坏的磁盘sdd:
[root@svr raid5]#mdadm --manage /dev/md0 --remove/dev/sdd //将损坏的磁盘sdd从RAID中删除
再添加一块新的磁盘作为spare磁盘:
[root@svr raid5]#mdadm --manage /dev/md0 --add /dev/sdg //添加新的磁盘sdg
OK,再来查看一下:
执行以下命令
mdadm --detail /dev/md0查看结果
8关闭软件RAID的方法:
当你不再需要已经设置的RAID的时候,可以用以下方法关闭RAID:
1)卸载/dev/md0,并且删除或注释掉/etc/fstab文件中的配置:
[root@svr ~]#umount /dev/md0
[root@svr ~]# vi /etc/fstab
#/dev/md0 /mnt/raid5 ext4 defaults 00
2)注释掉或删除/etc/mdadm.conf中的设置:
[root@svr ~]# vi /etc/mdadm.conf
#ARRAY /dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805
3)停止raid设备
# mdadm --stop/dev/md0
4)删除raid中的所有磁盘
这时候raid中的磁盘就删除了,重启后也不会产生md127了.
RAID0和RAID1实同于RAID5
RAID0:并行读写数据
RAID1:镜像磁盘阵列
2、在rhel6系统中搭建ISCSI存储服务器
随着企业中数据信息的不断增长,尤其当成百上千TB的数据需要备份、恢复,以及面临着扩容、灾难恢复等需求时,DAS(直接附加存储,就是通过与计算机主板的I/O接口,如IDE、SCSI相连接由本机操作系统负责读写及管理)方式使得数据的管理与维护日益困难。正因为如此,网络存储技术应运而生,其最常见的就是NAS和SAN
SAN(storage area network,存储区域网络)
SAN是通过光纤交换机、光纤路由器等设备将磁盘阵列、磁带机或独立的ISCSI设备与服务器连接,构成一个高速存储子网,存储的数据以数据块的形式通过ISCSI协议进行传输,从而优于普通的IP包传输。
NAS(network attachment storage,网络附加存储)
NAS存储设备相当于一台独立的服务器,设备本身带有操作系统,也拥有网络接口,因此不依赖于其他服务器,在NAS设备中为客户机分配存储空间时,通常采用共享文件夹的方式进行发布,存储的数据以文件的形式进行传输,采用CIFS或者NFS等协议
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设备一样简单。
在RHEL6中搭建ISCSI存储服务器:
ISCSI服务器通常也称为Target端,负责定义存储对象、分配逻辑空间LUN(Logical Unit,逻辑单元)。在RHEL6服务器中需要安装scsi-target-utils软件包,对应的系统服务为tgtd,命令行管理工具为tgtadm.
下面依次讲解配置ISCSI的主要过程:准备存储设备、创建ISCSI对象、为客户机分配存储空间,客户机使用ISCSI。
此处所说的存储设备指将要分配给某一个客户机使用的设备文件,在RHEL6系统中,硬盘、分区、逻辑卷、软RAID等都可以用作ISCSI服务的存储设备,为了延续磁盘空间的可扩展性,建议以一个逻辑卷为单位分配给客户机使用,对于个别有特殊要求的客户机,也可以将一个软RAID阵列分配出去。
这里将Target主机一个逻辑卷作为iSCSI共享磁盘,共享给一台linux主机使用。
创建一个逻辑卷,名为lv00,将来分配给客户机使用。如下图所示:
ISCSI服务器配置推荐步骤:
1、在ISCSI存储服务器上安装iscsi target软件包,如下图所示:
2、iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置项默认全被注示掉了。编辑该文件,实现简单的ISCSI存储服务器配置。在文件尾部添加如下内容:
若要将多个存储设备分配给客户机可以在targets.conf文件中添加多个
<target ……>
……
</target>
注:Target的命名在同一子网内应该是唯一的,标准命名方式为:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
iqn:表示“iSCSI Qualified Name”,简称iqn。
yyyy-mm:表示年份-月份。这里是2011-08。
reversed domain name:表示倒过来的域名,这里是com.example。
identifier:表示识别代码,这里是disk
backing-store用于指定存储设备,一般指非实际的物理磁盘,如LVM卷、某个分区、raid磁盘阵列。
initiator-address 地址 用于将target指派给指定的客户机使用。
然后启动tgtd服务,并设置系统启动时自动启动,iscsi通信的端口:3260/tcp,以明文传输数据
#service tgtd start
#chkconfig tgtd on
若是ISCSI服务器上开启了防火墙可以将iptables关闭或创建允许规则,如下图所示:
运行tgtadm--lld iscsi --op show --mode target查看target信息
至此,iscsitarget存储服务器配置完成,使用iSCSIInitiator就可以连接iscsi target服务器了。
使用tgtadm工具创建ISCSI对象时,主要命令选项如下所述:
-L,--lld:指定驱动类型,如“-L iscsi”表示ISCSI存储。
-o,--op:指定操作类型,如“-o new”表示创建,“-o delete”表示删除,“-o show”表示查看信息。
-m,--mode:指定管理目标,如“-m target”表示ISCSI对象。
-t,--tid:指定对象ID号,如“-t 1”表示第一个对象。
-T,--targetname:指定ISCSI对象的名称。
在RHEL6上iscsi客户端配置:
1、安装iscsi发起端软件:iscsi-initiator-utils和lsscsi软件包
#service iscsi start
#chkconfig iscsi on
2、查找iscsi服务器上的iscsi目标,即iscsi发现。
执行iscsiadm -m discovery �Ct st �Cp iscsi服务器的IP
或
iscsiadm -m discovery -t sendtargets -ptargetIP地址:端口号
若是默认端口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磁盘建立LVM并实现自动挂载
未分区前显示sdb信息如下,执行fdisk-l /dev/sdb查看
在ISCSI客户机上执行fdisk /dev/sdb创建LVM类型分区并查看/dev/sdb新建分区后的信息
为了实现磁盘扩容,在客户机上可以将连接的ISCSI磁盘创建为LVM。
在建好的逻辑卷上创建文件系统。
创建挂载点目录并挂载
修改/etc/fstab文件实现自动挂载
执行blkid /dev/vg_data/lv_data获得逻辑卷lv_data的UUID
修改/etc/fstab文件自动挂载逻辑卷lv_data,如下图所示:
测试自动挂载:mount �Ca或重启系统后执行df �ChT查看挂载情况
注意:
1、 使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导时显示的设备名称都不同,具体取决于iscsi设备通过网络进行响应的顺序,如果按设备名称挂载,这会导致使用错误的设备)
2、 在/etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载文件系统,直至启用联网,否则,在引导时系统将出错)
3、 确保iscsi服务在引导时将启动
#chkconfig iscsi on