Sunday, March 15, 2015

Setting up iscsi target and initiator #RHEL/CentOS 7

               အခု ပြောမည့် article ကတော့ SAN (Storage Area Network) အသုံးပြုတဲ့ နေရာမှာ သုံးတဲ့ အမျိုးအစားတစ်ခုဖြစ်တဲ့ iscsi ( Internet Small Computer System Interface) အကြောင်း ဖြစ်ပါ တယ်။
                ကိုယ့်ရဲ့ network infrastructure ထဲမှာ SAN ရှိတယ်ဆိုရင် ထို Storage ကို centralize ထားပြီး block-device level storage ကိုယူသုံးနိုင်ဖို့အတွက် iscsi နှင့် ချိတ်ဆက်ပြီး အသုံးပြုနိုင်ပါတယ်။ iscsi ရဲ့ အဓိက အားသားချက်တွေကတော့ အသုံးပြုဖို့ရန် specific devices တွေ မလိုအပ်ပဲ ethernet ပေါ်မှာပဲ အလုပ်လုပ်နိုင်ခြင်း ဥပမာ အမျိုးအစား တစ်ခုဖြစ်တဲ့ FC (Fibre Channel) တွေမှာဆိုရင် သူ့ကို အသုံးပြုရန်အတွက် FC Switch, FC card အမျိုးအစားတွေလိုအပ်ပါတယ်။
                 
                အဓိကအားဖြင့် iscsi ကို Enterprise Grade ထက်စာရင် SMB (Small,Medium Business) တွေမှာ budget အနေအထားအရ အသုံးပြုပါတယ်။ Security အရ ကြည့်မယ်ဆိုရင် iscsi မှာ CHAP Authentication ပါ၀င်ပါတယ်။ အားနည်းချက်ကတော့ FC (Fibre Channel) နှင့်ယှဥ်လျှင် "Reliability and Performance" မှာ အားနည်းပါတယ်။



How ISCSI Works?

              ISCSI အလုပ်လုပ်ပုံက သူ့ဆီမှာ iscsi "target" and "initiator"ဆိုပြီး နှစ်မျိုးရှိပါတယ်။  Storage Device အနေနဲ့ အသုံးပြုရမယ့် နေရာမှာ "iscsi target" ကို configuration လုပ်ရမည်ဖြစ်ပြီး ထို storage device ကို လှမ်းချိတ်မယ့် client/server ဘက်မှာ "iscsi initiator" ကို configuration လုပ်ရမည် ဖြစ်ပါတယ်။

               အခု ဒီ tutorial မှာ လုပ်သွားမယ့် steps တွေကတော့ အရင်ဆုံး "lvm block device" တည်ဆောက်မယ် iscsi အသုံးပြုရန်အတွက် ပြီးနောက် #targetcli command ဖြင့် blockdevice တစ်ခု တည်ဆောက်မယ် ပြီ:ရင် ထို block-device ကို တစ်ဖက် ကနေလှမ်းမြင်နိုင်ရန်အတွက် "iqn (iscsi unique name) တစ်ခုသတ်မှတ်မယ် ပြီးရင် ရလာတဲ့ block-device ကို LUN နဲ့ချိတ်ဆက်မှသာ အသုံးပြုနိင်မှာ ဖြစ်ပြီး  ထိုနောက့် #portal တစ်ခု create လုပ်ပြီ: တစ်ဖက်က လှမ်းချိတ်ရင် ထို portal မှာ သတ်မှတ်ထားတဲ့ ipaddress နဲ့ချိတ်ဆက်ရမှာဖြစ်ပါတယ်။


Preparing Block Device For iscsi target

                   အရင်ဆုံး block device တစ်ခု create လုပ်ရပါမယ်။ ပြီးမှ iscsi target နဲ့  configure လုပ်မှာ ဖြစ်ပါတယ်။ ဒီ tutorial မှာတော့ block device ကို LVM Format နဲ့ အသုံးပြုထားပါတယ်။ LVM အကြောင်းကို အရင် #lvm article မှာကြည့်နိုင်ပြီး ဒီမှာ မပြောတော့ဘဲ လုပ်ပြီးသားကိုပဲ  iscsi target နဲ့ အသုံးပြုသွားပါမယ်။အခုအောက်ပုံမှာ #/dev/sdb1 ကို lvm format လုပ်ပြီး ရလာတဲ့  "lv01" ကို iscsi target block storage အနေဖြင့် အသုံးပြုသွားပါမယ်။





Configuring "iscsi target"

               အရင်ဆုံး target အနေနဲ့အသုံးပြုမယ့် server ပေါ်မှာ #targetcli ဆိုတဲ့ package ကိုအရင် installation လုပ်ရပါမယ်။

           package ကို သွင်းပြီးရင် #targetcli ဖြင့် terminal ပေါ်မှာ type ပြီးလျှင် သူ့ configuration ထဲသို့ရောက်သွားမည်ဖြစ်သည်။အရင်ဆုံး #ls ဖြင့်ကြည့်လျှင် "backstores", "iscsi" and "loopback"ဆိုတာကို တွေ့ရမှာ ဖြစ်ပါတယ်။ 

  1.  block = အခု iscsi target device တည်ဆောက်ရာမှာ အသုံးပြုမှာဖြစ်ပါတယ်။
  2. fileio =  create a file of specific sized, block file တစ်ခု #dd command  ဖြင့် အလုပ်လုပ်ပုံတူညီ
  3. pscsi = physical scsi, not typically used
  4. ramdisk = create ramdisk specific size in memory of server, but not permanent, temp only



 #Creating block device 

               အရင်ဆုံး #cd backstores ထဲကို ၀င်ပြီး #block/ create (block-name)  (lvm-path) command ကိုအသုံးပြုထားပါတယ်။အောက်ပုံမှာ အသုံးပြုထားပုံကို ပြထားပါတယ်။ 




#Creating iscsi iqn name 

                 အခု block-device သတ်မှတ်ပြီးပြီဆိုလျှင် "iqn" name သတ်မှတ်မှာဖြစ်ပါတယ်။ iqn name ကိုသတ်မှတ်ခြင်းမှာ ထို unique iqn name ဖြင့် တစ်ဖက် iscsi initiator ကလှမ်းခေါ်နိုင်မှာဖြစ်ပါတယ်။
iscis iqn name သတ်မှတ်တဲ့ format မှာ "iqn.(year)−(month).(reserve.computer..name):(targetname) ဖြစ်ပါတယ်။ အောက်ပုံမှာ အသုံးပြုထားပါတယ်။အသုံးပြုထားပါတယ်။



                အောက်ပုံကတော့ အခု iscsi iqn create လုပ်ပြီးနောက် နောက်ထပ် သတ်မှတ်ရမည့် steps တွေဖြစ်ပါတယ်။ အရင်ဆုံး iscsi အောက်မှာ #tpg (target portal group) ကိုတွေ့ရမည်ဖြစ်ပြီး ၄င်းအောက်မှာ "acls", "luns" and "portals"ကိုတွေ့ရမှာဖြစ်ပါတယ်။

    1. acls = တစ်ဖက် iscsi initiator မှာ သတ်မှတ်ဖို့အတွက် တည်းဆောက်ပေးရပါမယ်
    2. luns = block-devices တွေကို storage resource ထဲသို့ lun အဖြစ်သတ်မှတ်တာဖြစ်ပါတယ်။
    3. portals = ချိတ်ဆက်ရန်အတွက် portal ip address ကိုသတ်မှတ်ပေးတာဖြစ်ပါတယ်။


 #Creating ACLS for iscsi initiator

             အရင်ဆုံး #cd command  ဖြင့် acls ထိရောက်အောင်သွားပါမယ်။ ပြီးရင် #create iqn.2015-03.com.example.rhel01:rhel02(initiator name) သတ်မှတ်ပါတယ်။ 


 #Set CHAP authentication using #set auth under "/acls/iqn.../

            ဒီ tutorial မှာ CHAP Authentication ပါ အသုံးပြုပြီး iscsi ကို create လုပ်မှာ ဖြစ်တဲ့အတွက် အောက်က ပုံအတိုင်း acls > iqn > ထဲကို ၀င်ပြီး #set auth (userid, password) သတ်မှတ်ရမှာဖြစ်ပါတယ်။ authentication က အသုံးမပြုလဲ ရပါတယ်။


  #Creating luns for block-device

             ACLS သတ်မှတ်ပြီးလျှင် luns သတ်မှတ်မှာဖြစ်ပါတယ်။ အောက်ပုံမှာ luns ထဲကို ၀င်ပြီး #create "/backstores/block/block1" ဆိုတာက စစချင်း ကျွန်တော်တို့ block-device create လုပ်တုန်းက location ကို ပြန်ညွှန်းထားတာပါ။


  #Creating Portals

              နောက်ဆုံးအဆင့် ဖြစ်တဲ့ portal မှာ ip address သတ်မှတ်တာဖြစ်ပါတယ်။ တစ်ဖက် iscsi initiator က အခု portal မှာသတ်မှတ်ထားတဲ့ ip address ကို access လုပ်မှာဖြစ်ပါတယ်။


#Review iscsi target

            အောက်ပုံမှာ iscsi  target တည်ဆောက်ပြီးသွားလို့ အစနေရာကနေ #ls command ဖြင့် review ပြန်ကြည့်ထားတာဖြစ်ပါတယ်။ ထို့နောက်  "exit" command  ဖြင့် ထွက်လိုက်လျှင် ကျွန်တော်တို့ config လုပ်ထားတာတွေ ကို save လုပ်သွားမည်ဖြစ်ပါတယ်။


  

#Open iscsi port "3260" in firewall


              iscsi port ကို firewall မှာ allow လုပ်ပေးထားရပါမယ်။








 #Setting up iscsi-initiator 



                တစ်ဖက်စက် "rhel02" မှာ အရင်ဆုံး target ကိုချိတ်ဖို့အတွက် #yum install iscsi-initiator-utils" package ကို install လုပ်ထားရပါမယ်။




#Configuration iscsi target acl and CHAP config



              အခု package install လုပ်ပြီးရင် "/etc/iscsi" ထဲမှာ "initiatorname.iscsi" နဲ့ ""iscsid.conf" ဆိုပြီး file 2 ခုတွေ့ရပါမည်။ ထိုထဲမှာမှ "initiatorname.iscsi" ထဲမှာ တစ်ဖက် iscsi target မှာတုန်းက acls မှာ သတ်မှတ်ထားတဲ့ "iqn" name ကိုထည့်ပေးရမှာဖြစ်ပါတယ်။ အောက်ပုံမှာပြထားပါတယ်။





           

  #CHAP Authentication

              အောက်ပုံမှာ တစ်ဖက် iscsi target config လုပ်တုန်းက CHAP authentication လုပ်တုန်းက သတ်မှတ်ခဲ့တဲ့ userid=iscsiclient, password=anaconda အတိုင်း သတ်မှတ်ရမှာဖြစ်ပါတယ်။



          အောက်ပုံကတော့ အခု အပေါ်က ပြောခဲ့တဲ့ နှစ်ခုကို ပြင်ဆင်ပြီးလျှင် "iscsid.service" ကို restart ချတာဖြစ်ပါတယ်။




#Discover iscsi target using #iscsiadm


              အခု စပြီး တစ်ဖက်မှာ iscsi target ဖြင့် တည်ဆောက်ထားတဲ့ block-device ကို #iscsiadm command ဖြ်င့် ရှာမှာဖြစ်ပါတယ်။ တစ်ဖက် iscsi target ဖက်က iqn name နှင့် ပြမှာဖြစ်ပါတယ်။



#Connecting iscsi target block-device #iscsiadm

               Discover လုပ်လို့ တွေ့တဲ့ iqn name ကို #iscsiadm ဖြင့် connect လုပ်မှာဖြစ်ပါတယ်။ အောက်ပုံမှာ connect successful ဖြစ်တာကို တွေ့ရမှာ ဖြစ်ပါတယ်။ ဒီနေရာမှာ "authorization failure" ဆိုတဲ့ error တွေ့ခဲ့လျှင် acls ထည့်တဲ့နေရာမှာ မှားနေလို့ ဖြစ်ပါတယ်။ "/etc/iscsi/initiator.iscsi" ထဲမှာရေးထားတဲ့ "acl iqn name" သည် iscsi target မှာ သတ်မှတ်ခဲ့သော "acls" "iqn name" နှင့် တူညီရမည် ဖြစ်ပါတယ်။


#Formating iscsi block-device and using as a attached storage device


                အောက်က အဆင့်တွေမှာတော့ တစ်ဖက် iscsi target ကိုချိတ်လိုက်တဲ့အခါမှာ ဒီဖက်စက်ခြမ်းမှာ "/dev/sdc" အနေနဲ့ လာပေါ်ပါတယ်။ ထို "/dev/sdc" ကို ကျွန်တော်တို့ #fdisk ထဲ partition ပိုင်း ပြီး RHEL 7 ရဲ့ default file system "xfs" နှင့် format ရိုက်ထားပါတယ်။ 





  #Mounting and Using iscsi storage device


                 အပေါ်က အဆင့်တွေပြီးပြီ ဆိုရင်တော့ mount လုပ်ပြီး local storage အနေနဲ့ အသုံးပြုထားတာ ဖြစ်ပါတယ်။ တစ်ခု သတိထားရမှာက local မဟုတ်တဲ့ အတွက် #/etc/fstab မှာ သတ်မှတ်ရတွင် "defaults" အစား "_netdev" ကိုသုံးရမှာဖြစ်ပါတယ်။







      #Using "man iscsiadm" for using #iscsiadm command

                       အောက်ပုံမှာ #iscsiadm ရဲ့ man page ဖြစ်ပါတယ် အပေါ်မှာ အသုံးပြုခဲ့တဲ့ #iscsiadm command တွေကို နေစဥ်လုပ်မနေရင် မှတ်မိမှာမဟုတ်တဲ့အတွက် အခု ဒီ Man page ကနေလဲ အသုံးပြုလို့ ရပါတယ်။ အဲ့ဒီမှာ #login ဆိုရင် connect လုပ်တာဖြစ်ပြီး Disconnect  လုပ်ချင်ပါက #logout ကို အသုံးပြုရပါမယ် disconnect မလုပ်ခင် mount လုပ်ထားတာတွေ ရှိပါက အရင်ဆုံး umount လုပ်ပြီးမှ အသုံးပြုရပါမယ်။





    #### အခုဆိုရင် setting up iscsi target and initiator article ပြီးသွားပြီဖြစ်ပါတယ်။ #####

Enjoy Reading and Thank You!!!
Please also Like and Follow Root Of Info Page


Share:

0 comments:

Post a Comment