安装配置磁盘阵列SAN存储系统

  • Post author:
  • Post category:其他

安装配置磁盘阵列SAN存储系统

磁盘阵列SAN存储系统在以前是一种昂贵和复杂的系统,往往还牵涉到FC,只有大企业才有能力使用。但随着100M/1G以太网的发展和 iSCSI 技术的成熟,低成本、高速和高可靠性的SAN系统已经成为可能,就是小微企业也有能力来使用SAN存储系统。

本文将介绍如何在普通商用硬件设备和Ubuntu建立低成本、高速、高可靠的磁盘阵列SAN系统。


硬件选择

本文主要介绍软件设置,硬件配置不多做介绍。

基本系统配置:
CPU:Intel Xeon E5 或 E3 处理器
内存:8G 或 4G
硬盘:120GB x3 (为系统盘,不含数据盘)
网口:1000M 或 100M 以太网口
主板:任意服务器主板

对中小微企业来说,内部流量不会太大,上述配置的服务器系统完全能满足需求,价格一般在几千到一万左右。


系统安装和配置

操作系统

本示例中使用 Ubuntu 18.04 LTS 作为操作系统,安装在由 3个磁盘组成的RAID1磁盘陈列上,其中2个为活跃磁盘,一个为后备磁盘。有三个磁盘组成的RAID1系统非常可靠,只有在三个磁盘都出错时才会有问题。
在此对系统的安装不再做介绍,具体安装方式请参见 基于SAMBA4的域控制器安装设置 一文中的 操作系统安装 部分。

root@lssan1:~# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sat Jun  2 10:14:37 2018
        Raid Level : raid1
        Array Size : 122358784(116.19 GiB 116.89 GB)
     Used Dev Size : 122358784(116.19 GiB 116.89 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Oct 18 13:33:46 2018
             State : clean 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : resync

              Name : storageOS:0
              UUID : 2bae87ad:0552c629:e2a73596:5479c044
            Events : 22

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

       2       8       33        -      spare   /dev/sdc1
root@lssan1:~# 

建立RAID磁盘阵列

一般情况下,SAN存储设备较为适合使用RAID6或RAID10磁盘阵列。RAID6和RAID10各有其优缺点,可根据需求选择其中之一来建立SAN存储系统。

RAID类型 优点 缺点 适用场景
RAID6 很高的冗余度,读取性能尤为突出。 由于奇偶校验,执行大量写操作会降低性能 。 大容量存储服务器和应用服务器。
RAID10 非常高的读写性能和容错能力。 可用容量较低/成本较高, 可扩展性受限。 执行大量写入操作的服务器/数据库。

系统上,/dev/sda、/dev/sdb和/dev/sdc 已经被用于操作系统,余下的5个硬盘将被用来建立用于存储设备的磁盘阵列。

在 /dev/sdd,/dev/sde,/dev/sdf,/dev/sdg和/dev/sdh 上创建 RAID6

root@lssan1:~# mdadm --create --verbose /dev/md60 --level=6 --raid-devices=4 /dev/sdd /dev/sde /dev/sdf /dev/sdg --spare-devices=1 /dev/sdh
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10476544K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md60 started.
root@lssan1:~#

检查新建的RAID阵列:

root@lssan1:~# mdadm --detail /dev/md60
/dev/md60:
           Version : 1.2
     Creation Time : Thu Oct 18 20:58:00 2018
        Raid Level : raid6
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Thu Oct 18 20:58:54 2018
             State : clean 
    Active Devices : 4
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : lssan1:60  (local to host lssan1)
              UUID : 6e55fa84:a4212001:ad18a7d2:1b078048
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       48        0      active sync   /dev/sdd
       1       8       64        1      active sync   /dev/sde
       2       8       80        2      active sync   /dev/sdf
       3       8       96        3      active sync   /dev/sdg

       4       8      112        -      spare   /dev/sdh
root@lssan1:~#

我们可以看到/dev/md60已成功建立。为了在启动时,系统就能操作/dev/md60,我们必须将/dev/md60的相关信息写入initramfs中,启动时系统可以自动重建/dev/md60磁盘阵列。

一、首先获取/dev/md60的布局信息:

root@lssan1:~# mdadm --detail --scan
ARRAY /dev/md/0 metadata=1.2 spares=1 name=storageOS:0 UUID=2bae87ad:0552c629:e2a73596:5479c044
ARRAY /dev/md/1 metadata=1.2 spares=1 name=storageOS:1 UUID=3531eed2:4a05b3d6:e343fe19:eca8288c
ARRAY /dev/md60 metadata=1.2 spares=1 name=lssan1:60 UUID=6e55fa84:a4212001:ad18a7d2:1b078048
root@lssan1:~#

二、将ARRAY /dev/md60 metadata=1.2 spares=1 name=lssan1:60 UUID=6e55fa84:a4212001:ad18a7d2:1b078048 加入文件/etc/mdadm/mdadm.conf

三、更新initramfs

root@lssan1:~# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.15.0-36-generic
root@lssan1:~# 

四、检查系统重启后/dev/md60是否自动重建

重启系统,然后用mdadm --detail --scan检查磁盘阵列情况。

root@lssan1:~# mdadm --detail --scan
ARRAY /dev/md60 metadata=1.2 spares=1 name=lssan1:60 UUID=6e55fa84:a4212001:ad18a7d2:1b078048
ARRAY /dev/md/0 metadata=1.2 spares=1 name=storageOS:0 UUID=2bae87ad:0552c629:e2a73596:5479c044
ARRAY /dev/md/1 metadata=1.2 spares=1 name=storageOS:1 UUID=3531eed2:4a05b3d6:e343fe19:eca8288c
root@lssan1:~# 

/dev/md60磁盘阵列已重建。

如果要建立RAID10阵列,只需要在创建命令中,将 --level=6 改成 --level=10 即可,其他都一样。

建立SAN设备

基于以太网的SAN使用iSCSI协议,我们首先需要在本机上安装TGT(TarGeT framework),支持本机提供iSCSI目标服务。

root@lssan1:~# apt install tgt -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  tgt-rbd
The following NEW packages will be installed:
  tgt
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 214 kB of archives.
After this operation, 641 kB of additional disk space will be used.
Get:1 http://mirrors.aliyun.com/ubuntu bionic/main amd64 tgt amd64 1:1.0.72-1ubuntu1 [214 kB]
Fetched 214 kB in 1s (171 kB/s)
......
......
......
Setting up tgt (1:1.0.72-1ubuntu1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/tgt.service → /lib/systemd/system/tgt.service.
Processing triggers for systemd (237-3ubuntu10.3) ...
Processing triggers for ureadahead (0.100.0-20) ...
root@lssan1:~# 

配置 /dev/md60 成为iSCSI目标磁盘陈列

root@lssan1:~# vi /etc/tgt/conf.d/target-dev-md10.conf

<target iqn.Oct-18-2018.md60.lssan1.lswin.cn:lun1>
        # iSCSI 目标设备
        backing-store /dev/md60
        # 用户IP地址
        initiator-address 192.168.220.60
        # 用户授权信息
        incominguser lssan1-user-name lssan1-user-passwd
        # SAN授权信息
        outgoinguser lssan1-owner-name lssan1-owner-passwd
</target>

重启tgt,检查SAN目标情况。

root@lssan1:~# tgtadm --mode target --op show
Target 1: iqn.Oct-18-2018.md60.lssan1.lswin.cn:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 21456 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/md60
            Backing store flags: 
    Account information:
        lssan1-user-name
        lssan1-owner-name (outgoing)
    ACL information:
        192.168.220.60
root@lssan1:~# 

一般情况下,我们建议将磁盘阵列以原始模式提供目标服务,由用户机决定如何使用。

使用SAN设备

在配置SAN时,我们的ACL只允许 192.168.220.60 使用,该IP地址是测试机的IP地址。

首先在测试机上用 iscsiadm 寻找 TGT,在找到目标服务后,自动形成默认SAN挂载配置文件。

root@lstest:~# iscsiadm -m discovery -t st -p lssan1.lswin.cn
192.168.220.30:3260,1 iqn.Oct-18-2018.md60.lssan1.lswin.cn:lun1
root@lstest:~#

目标服务已经找到,下面按我们的需求修改自动形成的默认SAN挂载配置文件。
/etc/iscsi/nodes/iqn.Oct-18-2018.md60.lssan1.lswin.cn\:lun1/192.168.220.30\,3260\,1/default
按下列步骤对上述文件进行修改:
一、将 node.startup = manual 修改为 node.startup = automatic
二、将node.session.auth.authmethod = None改为 node.session.auth.authmethod = CHAP
三、将下列4行内容加在 node.session.auth.authmethod = CHAP 行后

	node.session.auth.username = lssan1-user-name   
	node.session.auth.password = lssan1-user-passwd
	node.session.auth.username_in = lssan1-owner-name   
	node.session.auth.password_in = lssan1-owner-passwd

挂载前磁盘情况

root@lstest:~# iscsiadm -m session
iscsiadm: No active sessions.
root@lstest:~# lsblk
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                      8:0    0   40G  0 disk 
└─sda1                   8:1    0   40G  0 part 
  ├─minisys--vg-root   253:0    0   39G  0 lvm  /
  └─minisys--vg-swap_1 253:1    0  976M  0 lvm  [SWAP]
sr0                     11:0    1  704M  0 rom  
root@lstest:~#

挂载SAN(重启iSCSI服务):
root@lstest:~# service open-iscsi restart

root@lstest:/var/log# iscsiadm -m session
tcp: [1] 192.168.220.30:3260,1 iqn.Oct-18-2018.md60.lssan1.lswin.cn:lun1 (non-flash)
root@lstest:/var/log# lsblk
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                      8:0    0   40G  0 disk 
└─sda1                   8:1    0   40G  0 part 
  ├─minisys--vg-root   253:0    0   39G  0 lvm  /
  └─minisys--vg-swap_1 253:1    0  976M  0 lvm  [SWAP]
sdb                      8:16   0   20G  0 disk 
sr0                     11:0    1  704M  0 rom  
root@lstest:/var/log# 

我们可以看到SAN存储设备已经被成功挂载到测试机上,并以磁盘(/dev/sdb)形式出现。

注意:尽量不要再SAN上建LVM!如在SAN上建LVM有可能产生不可预测的问题。


版权声明:本文为laotou1963原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。