recent
أخبار ساخنة

إعداد خادم تخزين iSCSI على Ubuntu

الصفحة الرئيسية
إعداد خادم تخزين iSCSI على Ubuntu



iSCSI هو اختصار لـ  (Internet Small Computer System Interface) .
 سنشرح هنا كيفية إعداد iSCSI على خادم Ubuntu 20.04.

المطلوب تحضيره قبل البدء في الخطوات
1- نظام يقوم بتشغيل Ubuntu 20.04 لـ iSCSI target مع محرك أقراص صلبة خارجي بسعة 1 جيجابايت.
2- نظام يشغل Ubuntu 20.04 حديثًا لـ  iSCSI initiator.
3- إعداد عنوان IP ثابت 192.168.1.10 على iSCSI target وتم تكوين 192.168.1.20 على iSCSI initiator.
4- إعداد كلمة مرور لـ root على الخادمين.


قبل البدء ، من الجيد تحديث نظامك بأحدث الحزم.
يمكنك تحديثها بالأمر التالي:

apt-get update -y
apt-get upgrade -y

بمجرد تحديث جميع الحزم ، قم بإعادة تشغيل النظام لتطبيق التغييرات.

تثبيت iSCSI target

بشكل افتراضي ، تتوفر حزمة iSCSI target في Ubuntu 20.04 الافتراضي. يمكنك تثبيته عن طريق تشغيل الأمر التالي على خادم iSCSI Target:

apt-get install tgt -y

بعد تثبيت iSCSI Target ، تحقق من حالة الخادم بالأمر التالي:

systemctl status tgt

يجب أن تحصل على النتيجة التالية:

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-07-11 07:13:04 UTC; 23s ago
       Docs: man:tgtd(8)
   Main PID: 7770 (tgtd)
     Status: "Starting event loop..."
      Tasks: 1
     Memory: 1.1M
     CGroup: /system.slice/tgt.service
             ??7770 /usr/sbin/tgtd -f

Jul 11 07:13:04 ubuntu2004 systemd[1]: Starting (i)SCSI target daemon...
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jul 11 07:13:04 ubuntu2004 systemd[1]: Started (i)SCSI target daemon.


عند هذه النقطة تم تثبيت iSCSI Target في الخادم الخاص بك يمكنك الآن المتابعة إلى الخطوة التالية.

إعداد iSCSI Target


أولاً ، ستحتاج إلى إنشاء جهاز LUN والذي هو اختصار لـ (Logical Unit Number) على خادم iSCSI.

LUN عبارة عن أجهزة تخزين خلفية (backend storage) وهي جزء من جهاز SCSI الفعلي.

جميع وحدات LUN المحددة لـ iSCSI target مرتبطة virtually بنظام تشغيل المستخدمين.

. لذلك ، يمكن للمبادرين إنشاء وإدارة أنظمة الملفات على iSCSI LUNs.

يمكنك إعداده عن طريق:

nano /etc/tgt/conf.d/iscsi.conf

أضف الأسطر التالية:

<target iqn.2020-07.example.com:lun1>
     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass
</target>

احفظ وأغلق الملف عند الانتهاء.


يحدد السطر الأول اسم LUN.
يحدد السطر الثاني موقع واسم جهاز التخزين على خادم iSCSI Target.
يحدد السطر الثالث عنوان IP لـ  iSCSI initiator.
يحدد السطر الرابع اسم المستخدم / كلمة المرور الواردة.
يحدد السطر الخامس اسم المستخدم / كلمة المرور التي سيوفرها target إلى initiator للسماح بمصادقة CHAP المتبادلة.

بعد ذلك ، أعد تشغيل خدمة iSCSI لتطبيق التغييرات:

systemctl restart tgt

بعد ذلك ، تحقق من خادم iSCSI Target باستخدام الأمر التالي:

tgtadm --mode target --op show

يجب أن تحصل على النتيجة:


Target 1: iqn.2020-07.example.com: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: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.1.10





تثبيت وإعداد iSCSI initiator

بعد ذلك ، انتقل إلى جهاز iSCSI initiator  وقم بتثبيت حزمة iSCSI initiator باستخدام الأمر التالي:

apt-get install open-iscsi -y


بمجرد اكتمال التثبيت ، اكتشف خادم iSCSI Target لمعرفة الأهداف المشتركة باستخدام الأمر التالي:

iscsiadm -m discovery -t st -p 192.168.1.10

يجب أن ترى النتيجة التالية:


192.168.1.10:3260,1 iqn.2020-07.example.com:lun1

بعد ذلك ، ستحتاج إلى تحديد اسم جهاز LUN في ملف initiatorname.iscsi:

nano /etc/iscsi/initiatorname.iscsi

أضف اسم iSCSI Target  الخاص بك كما هو موضح أدناه:

InitiatorName = iqn.2020-07.example.com: lun1

احفظ وأغلق الملف عند الانتهاء.

بعد ذلك ، ستحتاج إلى تحديد معلومات CHAP التي قمت بتكوينها على iSCSI Target للوصول إلى iSCSI Target من iSCSI initiator.

سيكون ملف التكوين موجودًا في المجلد '/ etc / iscsi / nodes /' وسيكون به مجلد لكل LUN متاح.

يمكنك تعريفه بتحرير الملف التالي:

nano /etc/iscsi/nodes/iqn.2020-07.example.com\:lun1/192.168.1.10\,3260\,1/default

إضافة / تعديل الأسطر التالية:

node.session.auth.authmethod = CHAP  
node.session.auth.username = iscsi-user
node.session.auth.password = password          
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass         
node.startup = automatic


احفظ وأغلق الملف ثم أعد تشغيل خدمة iSCSI initiator باستخدام الأمر التالي:

systemctl restart open-iscsi iscsid

يمكنك أيضًا التحقق من حالة الخدمة بالأمر التالي:

systemctl status open-iscsi



يجب أن ترى النتيجة التالية:

? open-iscsi.service - Login to default iSCSI targets
     Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2020-07-11 07:24:19 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 3861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 3867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 3867 (code=exited, status=0/SUCCESS)

Jul 11 07:24:19 initiator systemd[1]: Starting Login to default iSCSI targets...
Jul 11 07:24:19 initiator iscsiadm[3861]: Logging in to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jul 11 07:24:19 initiator iscsiadm[3861]: Login to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] success>
Jul 11 07:24:19 initiator systemd[1]: Finished Login to default iSCSI targets.

يمكنك أيضًا التحقق من اتصال iSCSI باستخدام الأمر التالي:

iscsiadm -m session -o show

يجب أن ترى النتيجة التالية:

tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.example.com:lun1 (non-flash)

يمكنك أيضًا التحقق من جهاز التخزين المشترك من iSCSI Target باستخدام الأمر التالي:

lsblk

يجب أن تشاهد sdb الجهاز المشترك في الإخراج التالي:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
??sda1   8:1    0   80G  0 part /
sdb      8:16   0 1000M  0 disk


إنشاء نظام ملفات (File System)  على جهاز مشترك


لاستخدام الجهاز المشترك (Shared Device) على iSCSI initiator ، ستحتاج إلى إنشاء نظام ملفات على الجهاز المشترك (sdb) وإعداده.

أولاً ، قم بإنشاء نظام ملفات على الجهاز المشترك (sdb) باستخدام الأمر التالي:

fdisk /dev/sdb

أجب عن جميع الأسئلة كما هو موضح أدناه لإنشاء نظام ملفات:

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9743ddcf.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-2047999, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2047999, default 2047999): 

Created a new partition 1 of type 'Linux' and of size 999 MiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.

Syncing disks.


بعد ذلك ، قم بتهيئة القسم بالأمر التالي:

mkfs.ext4 /dev/sdb1

يجب أن ترى النتيجة التالية:



mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 255744 4k blocks and 64000 inodes
Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done




بعد ذلك ، قم بتحميل القسم إلى المجلد / mnt باستخدام الأمر التالي:

mount /dev/sdb1 /mnt

يمكنك الآن التحقق من القسم المركب باستخدام الأمر التالي:

df -h

يجب أن ترى النتيجة التالية:

Filesystem      Size  Used Avail Use% Mounted on
udev            981M     0  981M   0% /dev
tmpfs           199M  588K  199M   1% /run
/dev/sda1        79G  1.8G   74G   3% /
tmpfs           994M     0  994M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           994M     0  994M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1       968M  2.5M  899M   1% /mnt
google-playkhamsatmostaqltradent