آئی ایس سی ایس آئی کے ذریعے سیف - یا جھولا میں کھڑے ہوتے ہوئے اسکیئنگ

کیا ہم میں سے ایسے لوگ ہیں (tsefovodov) جو "پیشہ ورانہ انتہا پسندی" کو پسند نہیں کرتے؟

اس کا امکان نہیں ہے - بصورت دیگر ہم اس انتہائی دلچسپ اور مضحکہ خیز پروڈکٹ کے ساتھ گھومنے نہیں پائیں گے۔

جو لوگ Ceph کے آپریشن میں شامل تھے ان میں سے بہت سے ایسے لوگ آئے ہیں جو اکثر نہیں ہوتے (یا اس سے بھی کم ہی ہوتے ہیں) لیکن بعض اوقات ڈیمانڈ کے معاملے میں - Ceph کو iSCSI یا FC کے ذریعے جوڑتے ہیں۔ کس لیے؟ ٹھیک ہے، مثال کے طور پر، Ceph سے ونڈوز یا سولاریس سرور پر ایک تصویر جمع کروائیں جو ابھی تک کسی وجہ سے ورچوئلائز نہیں ہوئی ہے۔ یا ایک ورچوئلائزڈ، لیکن ایک ہائپر وائزر کا استعمال کرتے ہوئے جو Ceph نہیں کر سکتا - اور جیسا کہ ہم جانتے ہیں، ان میں سے بہت سارے ہیں۔ مثال کے طور پر؟ ٹھیک ہے، مثال کے طور پر، HyperV یا ESXi، جو فعال طور پر استعمال کیا جاتا ہے. اور اگر یہ کام Ceph سے مہمان مشین میں تصویر پیش کرنے کا ہوتا ہے، تو یہ ایک بہت ہی دلچسپ کام میں بدل جاتا ہے۔

تو، دیا:

  1. پہلے سے چل رہا سیف کلسٹر
  2. ایک پہلے سے موجود تصویر جسے iSCSI کے ذریعے پیش کیا جانا چاہیے۔
  3. پول کا نام mypool، تصویر کا نام میری تصویر

شروع کریں؟

سب سے پہلے، جب ہم FC یا iSCSI کے بارے میں بات کرتے ہیں، تو ہمارے پاس انیشی ایٹر اور ٹارگٹ جیسے ادارے ہوتے ہیں۔ ٹارگٹ دراصل ایک سرور ہے، انیشیٹر ایک کلائنٹ ہے۔ ہمارا کام یہ ہے کہ کم سے کم کوشش کے ساتھ سیف امیج کو انیشیٹر کو جمع کرائیں۔ اس کا مطلب ہے کہ ہمیں ہدف کو بڑھانا ہوگا۔ لیکن کہاں، کس کمپیوٹر پر؟

خوش قسمتی سے، ایک Ceph کلسٹر میں ہمارے پاس کم از کم ایک جزو ہے جس کا IP ایڈریس طے شدہ ہے اور جس پر Ceph کے اہم ترین اجزاء میں سے ایک ترتیب دیا گیا ہے، اور وہ جزو مانیٹر ہے۔ اس کے مطابق، ہم مانیٹر پر ایک iSCSI ہدف انسٹال کرتے ہیں (اور ایک ہی وقت میں، کم از کم ٹیسٹ کے لیے)۔ میں نے یہ CentOS پر کیا، لیکن یہ حل کسی دوسری تقسیم کے لیے بھی موزوں ہے - آپ کو صرف اس طرح سے پیکجز انسٹال کرنے کی ضرورت ہے جو آپ کی تقسیم میں قابل قبول ہو۔

# yum -y install iscsi-initiator-utils targetcli

انسٹال کردہ پیکجوں کا مقصد کیا ہے؟

  • targetcli — لینکس کرنل میں بنائے گئے SCSI ہدف کے انتظام کے لیے ایک افادیت
  • iscsi-initiator-utils — لینکس کرنل میں بنائے گئے iSCSI انیشی ایٹر کو منظم کرنے کے لیے استعمال ہونے والی افادیت کے ساتھ ایک پیکیج

انیشی ایٹر کو iSCSI کے ذریعے ایک تصویر جمع کرانے کے لیے، واقعات کی ترقی کے لیے دو اختیارات ہیں - ہدف کے یوزر اسپیس بیک اینڈ کا استعمال کریں یا آپریٹنگ سسٹم کو نظر آنے والے بلاک ڈیوائس کے طور پر تصویر کو جوڑیں اور اسے iSCSI کے ذریعے برآمد کریں۔ ہم دوسرے راستے پر جائیں گے - یوزر اسپیس بیک اینڈ اب بھی "تجرباتی" حالت میں ہے اور پیداواری استعمال کے لیے قدرے تیار نہیں ہے۔ اس کے علاوہ، اس کے ساتھ نقصانات ہیں، جن کے بارے میں آپ بہت بات کر سکتے ہیں اور (اوہ خوفناک!) بحث کر سکتے ہیں.

اگر ہم ایک طویل سپورٹ سائیکل کے ساتھ کسی حد تک مستحکم تقسیم کا بھی استعمال کرتے ہیں، تو ہمارے پاس جو دانا ہے وہ کچھ قدیم، قدیم ورژن ہے۔ مثال کے طور پر، CentOS7 میں یہ 3.10.* ہے، CentOS8 میں یہ 4.19 ہے۔ اور ہم کم از کم 5.3 (یا بلکہ 5.4) اور اس سے نئے کے دانا میں دلچسپی رکھتے ہیں۔ کیوں؟ کیونکہ ڈیفالٹ سیف امیجز میں آپشنز کا ایک سیٹ فعال ہوتا ہے جو پرانے دانا کے ساتھ مطابقت نہیں رکھتا۔ اس کا مطلب یہ ہے کہ ہم اپنی تقسیم کے لیے ایک ریپوزٹری کو ایک نئے کرنل کے ساتھ جوڑتے ہیں (مثال کے طور پر، CentOS کے لیے یہ elrepo ہے)، نیا کرنل انسٹال کریں اور نئے دانا کے ساتھ کام کرنے کے لیے سسٹم کو ریبوٹ کریں:

  • تجربے کے لیے منتخب مانیٹر سے جڑیں۔
  • ہم ہدایات کے مطابق ایلریپو ریپوزٹریوں کو جوڑتے ہیں۔ elrepo.org/tiki/tiki-index.php
  • کرنل انسٹال کریں: yum -y —enablerepo=elrepo-kernel install kernel-ml
  • مانیٹر کے ساتھ سرور کو ریبوٹ کریں (ہمارے پاس تین مانیٹر ہیں، ٹھیک ہے؟)

تصویر کو بلاک ڈیوائس کے طور پر جوڑنا

# rbd map mypool/myimage
/dev/rbd0

جو کچھ باقی ہے وہ ہدف کو ترتیب دینا ہے۔ اس مثال میں، میں نام نہاد ہدف کو ترتیب دوں گا۔ ڈیمو موڈ - بغیر تصدیق کے، مرئی اور ہر کسی کے لیے قابل رسائی۔ پیداواری ماحول میں، آپ ممکنہ طور پر توثیق کو ترتیب دینا چاہیں گے - لیکن یہ آج کی محض تفریحی ورزش کے لیے کچھ حد سے باہر ہے۔

فائل /dev/rbd/mypool/myimage کے ساتھ منسلک disk1 نامی ایک بیک اینڈ بنائیں۔ مخصوص فائل ایک علامتی لنک ہے جو udev ڈیمون کے ذریعہ خود بخود /dev/rbd0 پر بنایا گیا ہے۔ ہم ایک علامتی لنک استعمال کرتے ہیں کیونکہ rbd ڈیوائس کا نام اس ترتیب کے لحاظ سے بدل سکتا ہے جس میں Ceph امیجز میزبان سے منسلک ہیں۔

بیک اینڈ بنائیں:

# 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

جو کچھ باقی ہے وہ ترتیب کو برقرار رکھنا ہے تاکہ تصویر خود بخود جڑ جائے اور کنکشن کے بعد، ہدف کو سطحی شکل دی جائے۔ ہدف کو لانچ کرنا دو مراحل پر مشتمل ہوتا ہے - RBD کو جوڑنا اور اصل میں ہدف کو لانچ کرنا۔

پہلے، آئیے میزبان سے RBD امیجز کے خودکار کنکشن کو ترتیب دیں۔ یہ مندرجہ ذیل لائنوں کو /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 تالے کی ضرورت ہے)۔ چونکہ کرنل سے Ceph کلائنٹ کیچنگ کا استعمال نہیں کرتا ہے، یہ کافی قابل عمل ہے۔ یا دوسرا آپشن یہ ہے کہ تین اجزاء کا کلسٹر وسیلہ بنائیں - ایک وقف شدہ ٹارگٹ IP ایڈریس اور rbdmap اور scsi-target سروسز، اور اس وسائل کو کلسٹرنگ ٹولز کے ذریعے منظم کریں (پیس میکر کس نے کہا؟)

اپیل کے بجائے

جیسا کہ واضح ہے، یہ مضمون تھوڑا سا مذاق ہے - لیکن اس میں میں نے "جلدی اور مثالوں کے ساتھ" ایک ہی وقت میں کئی کافی مقبول موضوعات پر غور کرنے کی کوشش کی ہے - iSCSI ہدف، جو ضروری نہیں کہ Ceph امیجز کو ایکسپورٹ کرے - لیکن مثال کے طور پر، ایل وی ایم والیوم ایکسپورٹ کریں، آئی ایس سی ایس آئی انیشیٹر کے ساتھ کام کرنے کی بنیادی باتیں (ٹارگٹ کو کیسے اسکین کریں، ٹارگٹ سے کیسے جڑیں، منقطع کریں، ڈیٹا بیس سے ٹارگٹ انٹری کو کیسے ڈیلیٹ کریں)، سسٹمڈ کے لیے اپنا یونٹ لکھیں اور کچھ دیگر

مجھے امید ہے کہ اگر آپ اس پورے تجربے کو مکمل طور پر نہ دہرائیں تو بھی کم از کم اس مضمون میں سے کچھ آپ کے لیے مفید ثابت ہوگا۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں