سيف ذريعي iSCSI - يا اسڪائينگ جڏهن هڪ hammock ۾ بيٺو

ڇا اسان جي وچ ۾ اهي آهن (tsefovodov) جيڪي پسند نه ڪندا آهن "پروفيشنل انتها"؟

اهو ممڪن ناهي - ٻي صورت ۾ اسان هن انتهائي دلچسپ ۽ مضحکہ خیز پراڊڪٽ سان ڀرجي نه سگهنداسين.

انهن مان گھڻا جيڪي ڪيف جي آپريشن ۾ ملوث هئا، انهن مان هڪ ۾ آيو آهي تمام گهڻو نه (يا بلڪه تمام گهڻو غير معمولي) پر ڪڏهن ڪڏهن گهربل صورت ۾ - سيف کي iSCSI يا FC ذريعي ڳنڍڻ. ڇا جي لاءِ؟ خير، مثال طور، هڪ تصوير جمع ڪريو Ceph کان ونڊوز يا سولاريس سرور تي جيڪو اڃا تائين ڪجهه سببن لاءِ ورچوئل نه ڪيو ويو آهي. يا هڪ مجازي هڪ، پر هڪ هائپر وائيزر استعمال ڪندي جيڪو سپورٽ نٿو ڪري Ceph- ۽، جيئن اسان ڄاڻون ٿا، انهن مان ڪافي آهن. مثال طور؟ خير، مثال طور، HyperV يا ESXi، جيڪي فعال طور تي استعمال ڪيا ويا آهن. ۽ جيڪڏهن اهو ڪم پيدا ٿئي ٿو ته تصوير جي خدمت ڪرڻ Ceph کان مهمان مشين ڏانهن، اهو هڪ تمام دلچسپ ڪم ۾ بدلجي ٿو.

تنهن ڪري، ڏنو:

  1. اڳ ۾ ئي هلندڙ Ceph ڪلستر
  2. اڳ ۾ ئي موجود تصوير جيڪا iSCSI ذريعي پيش ڪئي وڃي
  3. نالو حوض مائي پولتصوير جو نالو منهنجي تصوير

شروع ڪريو؟

سڀ کان پهريان، جڏهن اسان FC يا iSCSI بابت ڳالهايون ٿا، اسان وٽ اهڙيون ادارا آهن جيئن شروعات ڪندڙ ۽ ٽارگيٽ. ھدف اصل ۾ ھڪڙو سرور آھي، شروعات ڪندڙ ھڪڙو ڪلائنٽ آھي. اسان جو ڪم اهو آهي ته سيف تصوير کي شروعات ڪندڙ کي گهٽ ۾ گهٽ ڪوشش سان. هن جو مطلب آهي ته اسان کي حدف کي وڌائڻ گهرجي. پر ڪٿي، ڪهڙي ڪمپيوٽر تي؟

خوشقسمتيءَ سان، هڪ Ceph ڪلستر ۾ اسان وٽ گهٽ ۾ گهٽ هڪ جزو آهي جنهن جو IP پتو مقرر ٿيل آهي ۽ جنهن تي Ceph جي سڀ کان اهم حصن مان هڪ ترتيب ڏنل آهي، ۽ اهو حصو مانيٽر آهي. ان جي مطابق، اسان مانيٽر تي هڪ iSCSI ٽارگيٽ نصب ڪريون ٿا (۽ ساڳئي وقت هڪ شروعات ڪندڙ، گهٽ ۾ گهٽ ٽيسٽ لاء). مون اهو ڪيو CentOS تي، پر اهو حل ڪنهن ٻئي ورهائڻ لاءِ پڻ موزون آهي - توهان کي صرف پيڪيجز کي انسٽال ڪرڻ جي ضرورت آهي انهي طريقي سان جيڪا توهان جي تقسيم ۾ قابل قبول هجي.

# yum -y install iscsi-initiator-utils targetcli

انسٽال ٿيل پيڪيجز جو مقصد ڇا آهي؟

  • ٽارگيٽ ڪل لينڪس ڪنيل ۾ ٺهيل SCSI ٽارگيٽ کي منظم ڪرڻ لاءِ هڪ يوٽيلٽي
  • iscsi-initiator-utils — يوٽيليٽيز سان گڏ ھڪڙو پيڪيج جيڪو لينڪس ڪنيل ۾ ٺاھيل iSCSI شروعات ڪندڙ کي منظم ڪرڻ لاءِ استعمال ڪيو ويندو آھي

شروعات ڪندڙ کي iSCSI ذريعي تصوير موڪلڻ لاءِ، واقعن جي ترقيءَ لاءِ ٻه آپشن آهن- ٽارگيٽ جي يوزر اسپيس پس منظر کي استعمال ڪريو يا تصوير کي هڪ بلاڪ ڊيوائس طور ڳنڍيو جيڪو آپريٽنگ سسٽم کي نظر اچي ٿو ۽ ان کي iSCSI ذريعي برآمد ڪريو. اسان ٻئي طريقي سان هلنداسين - يوزر اسپيس پس منظر اڃا "تجرباتي" حالت ۾ آهي ۽ پيداواري استعمال لاءِ ٿورو تيار ناهي. ان کان سواء، ان سان گڏ نقصان آهن، جن بابت توهان تمام گهڻو ڳالهائي سگهو ٿا ۽ (او خوفناڪ!) بحث ڪيو.

جيڪڏهن اسان هڪ ڊگهي سپورٽ چڪر سان پڻ ڪجهه مستحڪم ورهاست استعمال ڪندا آهيون، پوء اسان وٽ ڪيل ڪنيل ڪجهه قديم، قديم نسخو آهي. مثال طور، CentOS7 ۾ اھو آھي 3.10.*، CentOS8 ۾ اھو آھي 4.19. ۽ اسان گهٽ ۾ گهٽ 5.3 (يا بلڪه 5.4) ۽ نئين جي ڪني ۾ دلچسپي رکون ٿا. ڇو؟ ڇاڪاڻ ته ڊفالٽ طور Ceph تصويرن ۾ اختيارن جو هڪ سيٽ فعال ٿيل آهي جيڪي پراڻن ڪنلن سان مطابقت نٿا رکن. هن جو مطلب اهو آهي ته اسان هڪ مخزن کي اسان جي ورڇ لاء نئين ڪنييل سان ڳنڍيندا آهيون (مثال طور، CentOS لاء هي ايلريپو آهي)، نئين ڪنييل کي انسٽال ڪريو ۽ نئين ڪنييل سان ڪم ڪرڻ لاء سسٽم کي ريبوٽ ڪريو:

  • تجربي لاءِ چونڊيل مانيٽر سان ڳنڍيو
  • اسان هدايتن مطابق Elrepo repositories سان ڳنڍيون ٿا - elrepo.org/tiki/tiki-index.php
  • ڪرنل انسٽال ڪريو: yum -y —enablerepo=elrepo-kernel install kernel-ml
  • مانيٽر سان سرور کي ريبوٽ ڪريو (اسان وٽ ٽي مانيٽر آهن، صحيح؟)

تصوير کي بلاڪ ڊوائيس طور ڳنڍڻ

# rbd map mypool/myimage
/dev/rbd0

باقي اهو آهي ته مقصد کي ترتيب ڏيڻ لاء. ھن مثال ۾، مان ھدف کي ترتيب ڏيندس نام نهاد. ڊيمو موڊ - بغير تصديق جي، ڏسڻ ۾ اچي ٿو ۽ هر ڪنهن لاء دستياب آهي. پيداوار واري ماحول ۾، توهان ممڪن طور تي تصديق کي ترتيب ڏيڻ چاهيو ٿا - پر اهو اڄ جي صرف تفريح لاءِ مشق جي دائري کان ٻاهر آهي.

فائل سان لاڳاپيل ڊسڪ 1 نالي هڪ پس منظر ٺاهيو /dev/rbd/mypool/myimage. بيان ڪيل فائل هڪ علامتي لنڪ آهي جيڪو خودڪار طور تي udev ڊيمن طرفان /dev/rbd0 ڏانهن ٺاهيل آهي. اسان هڪ علامتي لنڪ استعمال ڪريون ٿا ڇاڪاڻ ته آر بي ڊي ڊيوائس جو نالو تبديل ٿي سگهي ٿو ترتيب جي لحاظ سان جنهن ۾ ڪيف تصويرون ميزبان سان ڳنڍيل آهن.

هڪ پس منظر ٺاهيو:

# targetcli /backstores/block create disk1 /dev/rbd/mypool/myimage

هڪ iSCSI ٽارگيٽ ٺاهيو:

# targetcli /iscsi create iqn.2020-01.demo.ceph:mypool

اسان پس منظر کي LUN طور ٽارگيٽ تائين ڳنڍيندا آهيون:

# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/luns create /backstores/block/disk1

اچو ته ڊيمو موڊ لاء ٽارگيٽ ترتيب ڏيو:

# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute demo_mode_write_protect=0
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute generate_node_acls=1
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute cache_dynamic_acls=1

ترتيب محفوظ ڪريو:

# targetcli saveconfig

ھدف جي موجودگي جي جانچ ڪندي:

# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool

اسان ھدف سان ڳنڍيندا آھيون:

# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (multiple)
Login to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] successful.

جيڪڏهن توهان سڀ ڪجهه صحيح طرح ڪيو، هڪ نئين ڊسڪ سرور تي ظاهر ٿيندي، جيڪا هڪ SCSI ڊوائيس وانگر ڏسڻ ۾ ايندي، پر اصل ۾ Ceph کان هڪ تصوير آهي، هڪ iSCSI ٽارگيٽ ذريعي پهچندي. بوٽ جي مسئلن کان بچڻ لاء، اهو بهتر آهي ته ڳنڍيل ڊسڪ کي هٽائڻ ۽ مقامي شروعاتي کان معلوم ڪيل ٽارگيٽ:

# iscsiadm -m node --logout
# iscsiadm -m discoverydb -o delete -t st -p 127.0.0.1:3260

باقي اهو آهي ته ترتيب کي جاري رکڻ لاءِ ته جيئن تصوير پاڻمرادو ڳنڍجي وڃي ۽ ڪنيڪشن کان پوءِ، حدف کي مضبوط ڪيو وڃي. ٽارگيٽ لانچ ڪرڻ ٻن مرحلن تي مشتمل آهي - آر بي ڊي کي ڳنڍڻ ۽ اصل ۾ ٽارگيٽ لانچ ڪرڻ.

پهرين، اچو ته ترتيب ڏيون خودڪار ڪنيڪشن آر بي ڊي تصويرن جي ميزبان کي. اهو /etc/ceph/rbdmap فائل ۾ هيٺيون لائينون شامل ڪندي ڪيو ويو آهي:

# cat /etc/ceph/rbdmap
# RbdDevice Parameters
mypool/myimage id=admin
# systemctl enable rbdmap

ھدف جي ٺاھ جوڙ کي بحال ڪرڻ ٿورڙو وڌيڪ پيچيده آھي - اسان کي سسٽم لاء ھڪڙو يونٽ لکڻ جي ضرورت آھي جيڪا ترتيب بحال ڪندي.

# cat /usr/lib/systemd/system/scsi-target.service
[Unit] Description=Start iSCSI target

After=network-online.target rbdmap.service
Before=remote-fs-pre.target
Wants=network-online.target remote-fs-pre.target

[Service] Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/targetcli restoreconfig

[Install] WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable scsi-target

آخري ٽيسٽ اسان جي مانيٽر کي ٻيهر ريبوٽ ڪرڻ آهي (اهو هاڻي هڪ iSCSI ٽارگيٽ آهي). اهو ياد رکڻ گهرجي ته جيڪڏهن اسان حڪم سان شروعاتي ڊيٽابيس کي صاف نه ڪيو هو iscsiadm -n discoverydb -o حذف ڪريو ... توهان هڪ سرور سان ختم ڪري سگهو ٿا جيڪو لوڊ نٿو ٿئي يا لوڊ ٿيڻ ۾ گهڻو وقت وٺندو آهي.

ڇا بچيو آهي؟

سرور تي شروعات ڪندڙ کي ترتيب ڏيو جتي اسان ٽارگيٽ موڪلڻ چاهيون ٿا.

اسان جي ٽارگيٽ جي غلطي رواداري کي ڪيئن يقيني بڻائي؟

توھان ساڳيءَ طرح ٻين مانيٽرن تي ھدف کي ترتيب ڏئي سگھو ٿا ۽ ملٽي پاٿ سيٽ اپ ڪري سگھو ٿا (vmware ان کي سمجھندو ۽ ڪم به ڪندو، Hyper-V نه سمجھندو- ان لاءِ SCSI لاڪ جي ضرورت آھي). جيئن ته ڪرنل مان ڪيف ڪلائنٽ ڪيشنگ استعمال نٿو ڪري، اهو ڪافي قابل عمل آهي. يا ٻيو اختيار اهو آهي ته ٽن حصن جو ڪلستر وسيلو ٺاهيو - هڪ وقف ٽارگيٽ IP پتو ۽ rbdmap ۽ scsi-target خدمتون، ۽ هن وسيلن کي ڪلسٽرنگ ٽولز ذريعي منظم ڪريو (پيس ميڪر ڪير چيو؟)

اقوام متحده جي بدران

جيئن واضع آهي، هي مضمون ٿورڙو مذاق آهي - پر ان ۾ مون ڪوشش ڪئي ته ”جلدي ۽ مثالن سان“ هڪ ئي وقت ڪيترن ئي ڪافي مشهور عنوانن تي غور ڪيو - iSCSI ٽارگيٽ، جيڪو شايد ضروري طور تي ڪيف تصويرون برآمد نه ڪري - پر مثال طور، ايڪسپورٽ LVM حجم، هڪ iSCSI شروعات ڪندڙ سان ڪم ڪرڻ جا بنيادي اصول (هڪ ٽارگيٽ کي ڪيئن اسڪين ڪجي، ڪيئن ٽارگيٽ سان ڳنڍجي، ڊسڪنيڪٽ ڪريو، ڊيٽابيس مان ٽارگيٽ انٽري کي حذف ڪريو)، سسٽم ڊي لاءِ پنهنجو يونٽ لکڻ ۽ ڪجهه ٻيا

مون کي اميد آهي ته جيتوڻيڪ توهان هن سڄي تجربي کي مڪمل طور تي نه ورجايو، گهٽ ۾ گهٽ هن مضمون مان ڪجهه توهان لاء مفيد ٿيندو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو