CentOS 5.2+Raid 0+LVM+ISCSI 配置详解 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

广东东莞 曾令萍

 

题记:本文同步发表在本人新浪博客CU博客,敬请知悉。
 
系统环境:CentOS 5.2
硬件配置:ASUS P5GC-MX +Intel E2160+Kinston 1GB 667*2+D-Link 530 1Gbps
硬盘1Seagate 80GB/7200S/8MB/SATA
硬盘2Seagate  1TB/7200S/32MB/SATA
硬盘3Seagate  1TB/7200S/32MB/SATA

 

场景:
笔者所在单位有一台用于备份文件的服务器目前空间不足(使用Symantec Backup Exec 10d for Windows Servers备份软件,备份文件服务器的所有数据,保留15天,每周六完整备份,周一至周五增量备份,现有2TB的空间已用完),该服务器已安装8个(容量与规格不一,有SCSI/IDE/SATA)硬盘,机箱内已无空间再增加硬盘,经过考虑,决定重新安装一台LINUX服务器配置ISCSI服务(提供Target Server角色),在Windows Server 2003上安装Microsoft iSCSI Initiator驱动,添加ISCSI硬盘,解决目前的空间问题;

 

目标:
Target Server系统安装在ST 80GB的硬盘上,两块1TB的硬盘通过软件(Software Raid)配置为Raid 0,然后在Raild 0硬盘上配置LVM,在LVM上创建两个逻辑卷,LV1data1)为1.5TBLV2(data2)325GB

 

Target server 建立两个target device,将LVM创建的两个逻辑卷分别加入两个target device,node1连接到target device 1(iqn.2008-12.cn.lanexpert:iscsi-data1)node2连接到target device 2iqn.2008-12.cn.lanexpert:iscsi-data2

 

功能
操作系统
主机名称
IP 地址
Iscsi-target server
CentOS 5.2
Fsbak2.lanexpert.cn
192.168.3.19
Iscsi-initiator(node1)
Windows Server 2003 Std R2 with sp2
Fsbak1.lanexpert.cn
192.168.3.18
Iscsi-initiator(node2)
Windows XP Pro With sp3
Client1.lanexpert.cn
192.168.11.108

 

Target Server系统安装在Seagate 80GB的硬盘上,在安装系统时,根据以下要求分区(仅为个人习惯,供参考),其它两个1TB的硬盘暂时不分区;
/boot    100MB
/             10GB
/usr        20GB
/home   10GB
/var        30GB
Swap      3GB

 

系统选择最小化安装,仅安装最基本的服务;

 

一、配置Raid 0
#fdisk  -l           (显示所有连接在主机上的硬盘)
Disk /dev/sda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        3929    10482412+  83  Linux
/dev/sda4            3930        9729    46588500    5  Extended
/dev/sda5            3930        5234    10482381   83  Linux
/dev/sda6            5235        5708     3807373+  82  Linux swap / Solaris
/dev/sda7            5709        9729    32298651   83  Linux

 

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

从以上信息可以看到,/dev/sda连接的是我们的系统分区,其它两个硬盘(sdb and sdc)没有分区表;

 

现在,我们要为另外两个硬盘分别创建分区,参考如下:

 

#fdisk /dev/sdb
The number of cylinders for this disk is set to 121601.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
#进入fdisk程序的工作画面后,如果硬盘太大,就会出现上述信息,这个信息表明,某些旧版本的软件与操作系统将无法支持大于1024柱面后的扇区使用
Command (m for help):m  #可以通过此命令查看所有参数
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help): new
Command action
   e   extended
   p   primary partition (1-4) p
Partition number (1-4): 1
First cylinder (1-121601, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-121601, default 121601):
Using default value 121601

 

Command (m for help): type
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

 

Command (m for help): write
The partition table has been altered!

 

Calling ioctl() to re-read partition table.
Syncing disks.

 

重复以上命令对sdc进行分区;

 

完毕后使用fdisk –l查看分区信息:
#fdisk -l
isk /dev/sda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        3929    10482412+  83  Linux
/dev/sda4            3930        9729    46588500    5  Extended
/dev/sda5            3930        5234    10482381   83  Linux
/dev/sda6            5235        5708     3807373+  82  Linux swap / Solaris
/dev/sda7            5709        9729    32298651   83  Linux

 

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      121601   976760001   fd  Linux raid autodetect

 

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1      121601   976760001   fd  Linux raid autodetect

 

配置raid使用mdadm命令,有关该命令的具体参数参考man mdadm;

 

# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: array /dev/md0 started.

 

# cat /proc/mdstat    #查看Raid信息
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
      1953519872 blocks 64k chunks
     
unused devices: <none>

 

# fdisk -l

 

Disk /dev/sda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        3929    10482412+  83  Linux
/dev/sda4            3930        9729    46588500    5  Extended
/dev/sda5            3930        5234    10482381   83  Linux
/dev/sda6            5235        5708     3807373+  82  Linux swap / Solaris
/dev/sda7            5709        9729    32298651   83  Linux

 

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      121601   976760001   fd  Linux raid autodetect

 

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1      121601   976760001   fd  Linux raid autodetect

 

Disk /dev/md0: 2000.4 GB, 2000404348928 bytes
2 heads, 4 sectors/track, 488379968 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

 

Disk /dev/md0 doesn't contain a valid partition table

 

# mdadm --detail --scan
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=bf5eb6f7:da2e7196:dc2b05b5:fa5903c1

 

为了让系统开机启动时自动加载raid信息,可以使用以下命令将配置信息写入/etc/mdadm.conf文件,该文件默认没有,可自行创建;

 

#echo DEVICE /dev/sdb1 /dev/sdc1 > /etc/mdadm.conf
#mdadm –detail –scan >> /etc/mdadm.conf   (--为两个中短线)

 

# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=bf5eb6f7:da2e7196:dc2b05b5:fa5903c1

 

二、配置LVM

 

要配置LVM,可以按以下步骤进行:
1.       创建和初始化物理卷(Physical Volume),通过pvcreate建立pv,即pv阶段;
2.       添加物理卷到卷组(Volume Group),使用vgcreate加入多个pv成为vg,即vg阶段;
3.       在卷组上创建逻辑卷(logical volume),使用lvcreate划分vg,成为一个或多个lv,lv阶段;

 

# pvcreate /dev/md0      #创建PV
  Physical volume "/dev/md0" successfully created

 

# pvscan
  PV /dev/md0   VG LVM1   lvm2 [1.82 TB / 1.82 GB free]
  Total: 1 [1.82 TB] / in use: 1 [1.82 TB] / in no VG: 0 [0   ]

 

# vgcreate LVM1 /dev/md0  #创建VG
  Volume group "LVM1" successfully created

 

# vgdisplay  LVM1  
  --- Volume group ---
  VG Name               LVM1
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.82 TB
  PE Size               4.00 MB
  Total PE              476933
  Alloc PE / Size       0 / 0  
  Free  PE / Size       476933 / 1.82 TB
  VG UUID               97Fecv-lBFP-oB19-dfrF-wJ7y-9KJ9-9sIKYG

 

# lvcreate -L 1.5TB -n data1 LVM1     #创建LV
  /dev/cdrom: open failed: Read-only file system
  Logical volume "data1" created

 

# lvcreate -L 325GB -n data2 LVM1   #创建LV
  /dev/cdrom: open failed: Read-only file system
  Logical volume "data2" created

 

# lvscan                   #查看LV信息
  ACTIVE            '/dev/LVM1/data1' [1.50 TB] inherit
  ACTIVE            '/dev/LVM1/data2' [325.00 GB] inherit

 

# pvscan                  #再次查看PV信息
  PV /dev/md0   VG LVM1   lvm2 [1.82 TB / 2.02 GB free]
  Total: 1 [1.82 TB] / in use: 1 [1.82 TB] / in no VG: 0 [0   ]

 

# vgdisplay LVM1       #再次查看VG信息

 

  --- Volume group ---
  VG Name               LVM1
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.82 TB
  PE Size               4.00 MB
  Total PE              476933
  Alloc PE / Size       476416 / 1.82 TB
  Free  PE / Size       517 / 2.02 GB
  VG UUID               97Fecv-lBFP-oB19-dfrF-wJ7y-9KJ9-9sIKYG

 

到这里,本实例的LVM配置完成;
注意:由于要将LV挂载到iscsi,所以,在这里不必格式化,也不必将LV挂载到系统中,以下是挂载方法,如应用于其它地方,可以参考;

 

格式化逻辑卷
#mke2fs -j /dev/LVM1/data1
#mke2fs -j /dev/LVM1/data2

 

参数说明:
-j :本来mke2fsext2,加上-j后,会主动加入日志而成为ext3

 

#新增两个挂载点
#mkdir -pv /data1 /data2 

 

挂载命令,本例不需要将以下两个LV挂载到系统中;

#mount /dev/LVM1/data1 /data1
#mount /dev/LVM1/data2 /data2

 

设置开机自动挂载:
编辑/etc/fstab
#Raid 0 and LVM1
/dev/LVM1/data1         /data1                  ext3    defaults        2 2
/dev/LVM1/data2         /data2                  ext3    defaults        2 2

 

★有关挂载参数说明,请参考鸟哥私房菜——基础学习篇

 

三、配置ISCSI
1、 安装iscsi-targetiscsi-target可以从以下网址下载:
#wget [url]ftp://ftp.muug.mb.ca/mirror/centos/5.2/os/i386/CentOS/scsi-target-utils-0.0-0.20070620snap.el5.i386.rpm[/url]
#rpm -ivh scsi-target-utils-0.0-0.20070620snap.el5.i386.rpm

 

#启动tgtd服务
#service tgtd start    
 
#设置开机自启动tgtd服务
#chkconfig --level 345 tgtd on      

 

#服务启动后,可以查看监听端口:
# netstat -tunlp |grep tgtd
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      2295/tgtd          
tcp        0      0 :::3260                     :::*                        LISTEN      2295/tgtd          

 

可以看到,默认target server使用的服务端口是tcp 3260;
2、 建立target device
Centos 5.0以上是利用tgtadm命令来设置而不是编写/etc/ietd.conf(据台湾朋友Alex Lin介绍,4.0是通过编写/etc/ietd.conf来配置的,本节也是参考Alex的文章测试的),个人认为tgtadm的命令相关参数真的较难记,幸好scsi-target-utils软件中包含如何利用tagadm命令建立target device的步骤,建议读者一定要把/usr/share/doc/scsi-target-utils-0.0/README.iscs打开阅读,里面有举例说明可参考;

 

现准备新增iqn名为iqn.2008-12.cn.lanexpert:iscsi-data1target device
[iscsi qualified name]   (简称iqn),格式通常如下:
  
 
 
Yyyy-mm
年-月
2008-12
Reversed domain name
把域名反过来写
Cn.lanexpert
identifier
识别字,通常描述这个储存空间的用途
Iscsi-data1

 

新增target device 命令如下:

 

#tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2008-12.cn.lanexpert:iscsi-data1

 

执行后,可以利用以下命令查看target device:
# tgtadm --lld iscsi --op show  --mode target
Target 1: iqn.2008-12. cn.lanexpert:iscsi-data1
    System information:
        Driver: iscsi
        Status: running
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: deadbeaf1:0
            SCSI SN: beaf10
            Size: 0
            Backing store: No backing store
    Account information:
ACL information:
3、 target server 新建的LV1/dev/LVM1/data1)加入target device
#tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/LVM1/data1
将逻辑卷加入target device后,利用下列命令查看target device的信息:
# tgtadm --lld iscsi --op show  --mode target
Target 1: iqn.2008-12. cn.lanexpert:iscsi-data1
    System information:
        Driver: iscsi
        Status: running
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: deadbeaf1:0
            SCSI SN: beaf10
            Size: 0
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: deadbeaf1:1
            SCSI SN: beaf11
            Size: 1T                      
#这里有些不解,实际上的容量是1.5TB,后来我在Win2k3上连接并分区时也是1.5TB
            Backing store: /dev/LVM1/data1
    Account information:
    ACL information:

 

4、 允许initiator主机node1(192.168.3.18)可以存取此target device
#tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.3.18

 

将逻辑卷加入target device后,利用下面的命令查看target device的信息:
# tgtadm --lld iscsi --op show  --mode target
Target 1: iqn.2008-12.local.superlgroup.xt:iscsi-data1
    System information:
        Driver: iscsi
        Status: running
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: deadbeaf1:0
            SCSI SN: beaf10
            Size: 0
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: deadbeaf1:1
            SCSI SN: beaf11
            Size: 1T
            Backing store: /dev/LVM1/data1
    Account information:
    ACL information:
        192.168.3.18

 

再使用以下命令创建另一个target device:
tgtadm --lld iscsi --op new --mode target --tid 2 -T iqn.2008-12.cn.lanexpert:iscsi-data2
tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 -b /dev/LVM1/data2
tgtadm --lld iscsi --op bind --mode target --tid 2 -I 192.168.11.108

 

创建完毕后,再利用下面的命令查看target device:
# tgtadm --lld iscsi --op show  --mode target
Target 1: iqn.2008-12.cn.lanexpert:iscsi-data1
    System information:
        Driver: iscsi
        Status: running
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: deadbeaf1:0
            SCSI SN: beaf10
            Size: 0
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: deadbeaf1:1
            SCSI SN: beaf11
            Size: 1T
            Backing store: /dev/LVM1/data1
    Account information:
    ACL information:
        192.168.3.18
Target 2: iqn.2008-12.cn.lanexpert:iscsi-data2
    System information:
        Driver: iscsi
        Status: running
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: deadbeaf2:0
            SCSI SN: beaf20
            Size: 0
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: deadbeaf2:1
            SCSI SN: beaf21
            Size: 325G
            Backing store: /dev/LVM1/data2
    Account information:
    ACL information:
        192.168.11.108

 

5、 修改/etc/rc.local,设置开机自动加载target device配置
因为以上命令的配置结果,重新开机后便会消失,而且现版本的target server,Redhat尚未修改成System V服务,如果需要系统重新启动后上述配置仍然有效,只能将以上配置写入/etc/rc.local,让系统每次开机都自动执行一次:

 

# ISCSI target device setting -LingPing 2008/12/06
#target 1 (Space 1.5TB)
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2008-12.cn.lanexpert:iscsi-data1
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/LVM1/data1
tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.3.18

 

#target 2 (Space 325GB)
tgtadm --lld iscsi --op new --mode target --tid 2 -T iqn.2008-12.cn.lanexpert:iscsi-data2
tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 -b /dev/LVM1/data2
tgtadm --lld iscsi --op bind --mode target --tid 2 -I 192.168.11.108

 

由于tgtdm的参数短时间内难于记忆,建议多参考man或以下提及的文章;
本节主要参考台湾朋友林彦明的大作,在鸟哥的网站可下载到,原文还详细介绍了iscsi initiator on rhel 5.1的配置,值得一读;

 

四、配置WindowsInitiator)系统连接到ISCSI

 

Initiator主要是负责电脑连接到target作磁盘读取功能,如果是Windows系统,可以到Microsoft的官方网站下载最新版本的initiator,可在以下网址选择适合自己的版本:

 

1、安装initiator
双击iator-2.08-build3825-x86fre.exe依提示进行安装,安装完毕后,会在桌面上产生一个Microsoft iSCSI Initiator图标;

 

2、配置initiator
双击Microsoft iSCSI Initiator图标,在discovery选项的target portals框中,选择add,填写target portals的地址,例如192.168.3.19,端口保持默认;如图:

 

数秒钟后,可以在targets选项中看到刚才在target server建立的iqn名称(是经过授权的,未经授权的将不会显示出来),本例中的截图是node2,所以显示的是iqn.2008-12.cn.lanexpert:iscsi-data2

 

在上图中,点击log on,出现如下所示对话框,建议勾选第一个选项,让系统重启后自动加载;

 

 

然后打开我的电脑-属性-管理-磁盘管理,会弹出一个初始化磁盘的向导,依向导提示即可如操作本机中的硬盘一样进行分区、格式化等工作;

 

可以通过同样的方法将Fsbak1.lanexpert.cn连接到另一个Target,解决备份服务器的空间问题;

 

主要参考资料:Linux系统管理手册(第二版)、鸟哥私房菜、林彦明朋友的专题文章(rhel5-iscsi.pdf
LingPing   on 2008/12/06
[url]http://blog.sina.com.cn/zenglingping[/url]