iSCSI 伺服器(IP-SAN)

iSCSI 範例:準備 2 台電腦
Target(192.168.18.128):建置及規劃 iSCSI 儲存設備
Initiator(192.168.18.131):主要功能是提供電腦主機連線到 Target 作磁碟存取

(注意:使用 VMware Player,在安裝完 1 個虛機後,雖然可以複製更名成另一個新的虛機,但在 iSCSI 的練習中,iSCSI Initiator 會在開機時(/etc/fstab)掛載失敗(fsck fail),除非你有時間去打怪,不然請避免使用專案複製方式練習

iSCSI Target(192.168.18.128)

# yum search scsi | grep --color target
 scsi-target-utils.x86_64 : The SCSI target daemon and utility programs
# yum install -y scsi-target-utils  // 安裝 iSCSI Target 套件
# cp /etc/tgt/targets.conf /etc/tgt/targets.conf.backup  // 備份原始設定檔
# fdisk -l
 Disk /dev/sdb: 1073 MB, 1073741824 bytes  // 使用 VMware Player 配置了一個 1GB
 255 heads, 63 sectors/track, 130 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x00000000
# fdisk /dev/sdb              // 配置分享磁區,不用格式化
# fdisk -l


# vim /etc/tgt/targets.conf  // 設定分享磁區
 <target iqn.2012-10.com.example:server.target1="iqn.2008-09.com.example:server.target1">
backing-store /dev/sdb1
 </target>

啟動 iSCSI  Target 服務:服務名稱為 tgtd
# service tgtd start
 Starting SCSI target daemon: [ OK ]

開啟防火牆:通訊埠為 3260
# iptables -A INPUT -p tcp -m tcp --dport 3260 -j ACCEPT

iSCSI Initiator(192.168.18.131)

# yum search scsi | grep --color initiator
 iscsi-initiator-utils.i686 : iSCSI daemon and utility programs
# yum install -y iscsi-initiator-utils.i686  // 安裝 iSCSI Initiator 套件
# iscsiadm -m discovery -t st -p 192.168.18.128  // 搜尋定分享磁區
 Starting iscsid: [ OK ]             // 啟動 iSCSI Initiator 服務
 192.168.18.128:3260,1 iqn.2008-09.com.example:server.target1

補充:若要再偷賴點,可在搜尋後就立即登入
# iscsiadm -m discovery -t st -p 192.168.18.128 -l
登入 iSCSI Target
# iscsiadm -m node -l  // -l:login;-u:logout
 Logging in to [iface: default, target: iqn.2008-09.com.example:server.target1, portal: 192.168.18.128,3260] (multiple)
 Login to [iface: default, target: iqn.2008-09.com.example:server.target1, portal: 192.168.18.128,3260] successful.
補充:以下 2 種方式皆可登入。
  • # iscsiadm -m node -l
  • # iscsiadm -m node -T iqn.2008-09.com.example:server.target1 -l

  • 查看 iSCSI 載入狀態 # dmesg | tail


    查看磁區狀態
    # fdisk -l

    硬碟配置、格式化及掛載
    # fdisk /dev/sdb
    # fdisk /dev/sdc
    # mkfs.ext4 /dev/sdb1 ; mkfs.ext4 /dev/sdc1
    # mkdir /mnt/iscsi1
    # mkdir /mnt/iscsi2
    # mount /dev/sdb1 /mnt/iscsi1
    # mount /dev/sdc1 /mnt/iscsi2

    開機時掛載
    # vim /etc/fstab
     /dev/sdb1 /mnt/iscsi1 ext4 _netdev 1 2  // 裝置名稱亦可使用 UUID,使用指令# blkid /dev/sdb1 查看
     /dev/sdc1 /mnt/iscsi2 ext4 _netdev 1 2
    # mount -a
    # df
     /dev/sdb1 2060144 35840 1919656 2% /mnt/iscsi1
     /dev/sdc1 1027004 17668 957168 2% /mnt/iscsi2

    若下次開機時不再掛載使用,除了移除/etc/fstab的設定外,也要登出並停止相關服務,否則下次開機會停頓很久,因為服務程式在搜尋網域可用的target,但仍然可以開機。 # iscsiadm -m node -u
    # chkconfig iscsi off
    # chkconfig iscsid off

    問題探討


    當有二個 initiator 同時存取同一個 iSCSI 裝置時,資料會毀損。
    因為這二個 initiator 並不會互相通知更新資料,故除了資料毀損外,各自上傳的檔案,對方也看不到。
    叢集檔案系統(Cluster File System、CFS)應用,像是 RedHat GFS 或是 Oracle OCFS2 檔案系統,便是解決此問題的方法。

    沒有留言:

    張貼留言