Venti
وینٹی ایک نیٹ ورک اسٹوریج سسٹم ہے جو ڈیٹا بلاکس کو مستقل طور پر محفوظ کرتا ہے۔ ڈیٹا کا 160 بٹ ایس ایچ اے-1 ہیش (جسے وینٹی اسکور کہتے ہیں) ڈیٹا کے ایڈریس کے طور پر کام کرتا ہے۔ یہ ایک بار لکھنے کی پالیسی کو نافذ کرتا ہے کیونکہ ایک ہی پتے کے ساتھ کوئی دوسرا ڈیٹا بلاک نہیں پایا جا سکتا: ایک ہی ڈیٹا کی متعدد تحریروں کے پتے ایک جیسے ہوتے ہیں، اس لیے ڈپلیکیٹ ڈیٹا کی آسانی سے شناخت کی جاتی ہے اور ڈیٹا بلاک صرف ایک بار محفوظ کیا جاتا ہے۔ ڈیٹا بلاکس کو ہٹایا نہیں جا سکتا، جو اسے مستقل یا بیک اپ اسٹوریج کے لیے مثالی بناتا ہے۔ وینٹی کو عام طور پر فوسل کے ساتھ مستقل سنیپ شاٹس کے ساتھ فائل سسٹم فراہم کرنے کے لیے استعمال کیا جاتا ہے۔ ہسٹری وینٹی کو بیل لیبز میں شان کوئنلان اور شان ڈورورڈ نے ڈیزائن اور نافذ کیا تھا۔ یہ 2002 میں پلان 9 کی تقسیم میں ظاہر ہوا۔ رس کاکس نے ترقی جاری رکھی ہے جس نے زیادہ تر سرور کو دوبارہ نافذ کیا ہے، وینٹی میں اسٹور کرنے کے لیے ڈیٹا اسٹرکچرز (فائلیں، ڈائریکٹریز اور میٹا ڈیٹا) بنانے کے لیے ایک لائبریری لکھی ہے اور اصلاح کو نافذ کیا ہے۔ وینٹی پلان 9 کی تقسیم میں اور بہت سے یونکس جیسے آپریٹنگ سسٹمز کے لیے یوزر اسپیس سے پلان 9 کے حصے کے طور پر دستیاب ہے۔ وینٹی کو رسائی کے لیے ماڈیولز کے ساتھ انفرنو کے حصے کے طور پر شامل کیا گیا ہے۔ اپنے وینٹی سرور بنانے کے لیے پروگراموں کا ایک گو سیٹ ہے۔ مختلف قسم کے بیک اینڈ اسٹوریج کا استعمال کرتے ہوئے مثالیں شامل ہیں۔ تفصیلات وینٹی ایک یوزر اسپیس ڈیمون ہے۔ کلائنٹ ٹی سی پی کے ذریعے وینٹی سے جڑتے ہیں اور ایک سادہ آر پی سی پروٹوکول کا استعمال کرتے ہوئے بات چیت کرتے ہیں۔ پروٹوکول کے سب سے اہم پیغامات ذیل میں درج ہیں۔ نوٹ کریں کہ دیئے گئے پتے پر ایڈریس کو حذف کرنے یا ڈیٹا میں ترمیم کرنے کا کوئی پیغام نہیں ہے۔ پڑھیں (اسکور، ٹائپ)، اسکور اور ٹائپ رائٹ (ڈیٹا، ٹائپ) کے ذریعے شناخت شدہ ڈیٹا واپس کرتا ہے، قسم کے ساتھ مل کر ایس ایچ اے-1 ہیشنگ ڈیٹا کے حساب سے ایڈریس پر ڈیٹا اسٹور کرتا ہے۔ وینٹی کے ذریعے ذخیرہ کردہ ڈیٹا بلاک کی لمبائی 512 بائٹس سے زیادہ اور 56 کلو بائٹس سے کم ہونی چاہیے۔ لہذا، اگر کوئی وینٹی صارف/کلائنٹ بڑے ڈیٹا بلاکس کو اسٹور کرنا چاہتا ہے، تو اسے ایک ڈیٹا اسٹرکچر بنانا ہوگا (جسے وینٹی میں اسٹور کیا جا سکتا ہے)۔ مثال کے طور پر فوسل بڑی فائلوں کو ذخیرہ کرنے کے لیے ہیش ٹری کا استعمال کرتا ہے۔ وینٹی خود ڈیٹا بلاک کے مندرجات سے متعلق نہیں ہے ؛ تاہم یہ ڈیٹا بلاک کی قسم کو محفوظ کرتا ہے۔ وینٹی کے ڈیزائن کے درج ذیل نتائج ہوتے ہیں: چونکہ تحریریں مستقل ہوتی ہیں، اس لیے فائل سسٹم صرف ضمیمہ ہوتا ہے (جو ڈیٹا کو تباہ کرنے والے کیڑوں کے کم امکان کے ساتھ سادہ عمل درآمد کی اجازت دیتا ہے) ؛ فائل سسٹم کا کوئی ٹکڑا نہیں ہوتا ہے۔ کلائنٹ سرور کی درستگی کی تصدیق کر سکتے ہیں: واپس کیے گئے ڈیٹا کا اسکور درخواست کردہ پتے جیسا ہی ہونا چاہیے۔ چونکہ ایس ایچ اے-1 ایک کرپٹوگرافک طور پر محفوظ ہیش ہے، اس لیے ڈیٹا بنانا کمپیوٹیشنل طور پر ناقابل عمل ہے۔ ڈیٹا کو اوور رائٹ نہیں کیا جا سکتا۔ اگر کوئی پتہ پہلے سے موجود ہے، تو ڈیٹا پہلے سے موجود ہے۔ صارف کی تصدیق کی ضرورت بہت کم ہے: ڈیٹا کو حذف نہیں کیا جا سکتا، اور صرف اس صورت میں پڑھا جا سکتا ہے جب اسکور معلوم ہو۔ واحد ممکنہ مسئلہ یہ ہے کہ صارف ڈسک کو بھر رہا ہے۔ ڈسک کی ساخت کو پیچیدہ بنائے بغیر ڈیٹا کو کمپریس کیا جا سکتا ہے۔ ڈیٹا بلاکس ہارڈ ڈرائیوز پر محفوظ کیے جاتے ہیں۔ دستیاب اسٹوریج بنانے والی ڈسک، عام طور پر ایک ریڈ، کو ڈیٹا لاگ کہا جاتا ہے۔ یہ ڈیٹا لاگ چھوٹے ٹکڑوں میں تقسیم کیا جاتا ہے جسے ایرینا کہا جاتا ہے، جو سائز کے ہوتے ہیں تاکہ انہیں دوسرے میڈیا جیسے سی ڈی/ڈی وی ڈی یا مقناطیسی ٹیپ پر لکھا جا سکے۔ انڈیکس کے لیے ہارڈ ڈرائیوز کا ایک اور سیٹ استعمال کیا جاتا ہے، جو ڈیٹا لاگ میں پتے پر اسکور کا نقشہ بناتا ہے۔ انڈیکس کے لیے استعمال ہونے والا ڈیٹا ڈھانچہ ایک ہیش ٹیبل ہے جس میں مقررہ سائز کی بالٹیاں ہوتی ہیں۔ وینٹی تصادفی طور پر تقسیم کیے جانے والے اسکور پر انحصار کرتا ہے تاکہ بالٹیاں نہ بھر سکیں۔ چونکہ ہر تلاش پر ایک ڈسک کی تلاش کا وقت خرچ ہوتا ہے، ایک انڈیکس عام طور پر کم رسائی کے وقت کے ساتھ متعدد ہارڈ ڈرائیوز پر مشتمل ہوتا ہے۔ استعمال وینٹی سرور کو کلائنٹ کئی طریقوں سے استعمال کر سکتے ہیں۔ پلان 9 آپریٹنگ سسٹم فائل سسٹم کے روزانہ آرکائیول سنیپ شاٹس کے لیے وینٹی کا استعمال کرتا ہے۔ مرکزی فائل سسٹم کی ان کاپیوں کو تاریخ کے مطابق منظم مکمل کاپیوں کے فائل ٹری کے طور پر نصب کیا جا سکتا ہے۔ یوٹیلیٹی پروگرام 'ویک' اور 'انویک' کو وینٹی سرور سے ڈیٹا کو انفرادی فائلوں کی شکل میں یا ڈائرکٹری اور اس کے مندرجات کے طور پر ذخیرہ کرنے اور بازیافت کرنے کے لیے استعمال کیا جا سکتا ہے۔ 'وی اے سی ایف ایس' دور سے محفوظ کردہ تمام ڈیٹا کی مکمل بازیافت کے بغیر وی اے سی اسکور سے وابستہ ڈیٹا کو براؤز کرنے کی اجازت دیتا ہے۔ ڈیٹا اور انڈیکس اسکور کو 'آر ڈیرینا' اور 'ریرینا' کا استعمال کرتے ہوئے وینٹی سرورز کے درمیان نقل کیا جا سکتا ہے۔ بیل لیبز سے پلان 9، یوزر اسپیس سے پلان 9، انفرنو اور وینٹی پروٹوکول کو نافذ کرنے والے کسی بھی دوسرے کلائنٹ کو ڈیٹا کو اسٹور کرنے اور بازیافت کرنے کے لیے ایک دوسرے کے متبادل کے طور پر استعمال کیا جا سکتا ہے۔ معلومات کے نظریہ کا ایک بنیادی اصول کبوتر سوراخ کا اصول ہے، جس میں کہا گیا ہے کہ اگر سیٹ A سیٹ B سے زیادہ اقدار پر مشتمل ہے، تو کسی بھی فنکشن کے لیے جو A سے B کا نقشہ بناتا ہے، B کے ایسے اراکین ہوں گے جو سیٹ A کے ایک سے زیادہ اراکین سے وابستہ ہوں گے۔ وینٹی کے معاملے میں، ممکنہ ایس ایچ اے-1 ہیش کا سیٹ واضح طور پر تمام ممکنہ بلاکس کے سیٹ سے چھوٹا ہے جو فائل سسٹم میں محفوظ کیا جا سکتا ہے، اور اس طرح ہیش تصادم ممکن ہے۔ 160 بٹ ہیش میں حادثاتی ہیش تصادم کا خطرہ بہت کم ہے، یہاں تک کہ ڈیٹا کے ایکسابائٹس کے لیے بھی۔ تاریخی طور پر، تاہم، بہت سے ہیش افعال کرپٹوگرافک اور کمپیوٹیشنل ترقی دونوں کی وجہ سے بدنیتی پر مبنی ہیش تصادم کے لیے تیزی سے کمزور ہو جاتے ہیں۔ وینٹی ہیش تصادم کے مسئلے کو حل نہیں کرتا ہے۔ اس وقت تک، ایس ایچ اے-1 میں تصادم تلاش کرنا اب بھی کمپیوٹیشنل طور پر ناقابل عمل ہے، لیکن وینٹی کے لیے مستقبل میں کسی وقت کسی مختلف ہیش فنکشن میں تبدیل ہونا ضروری ہو سکتا ہے۔ 23 فروری 2017 کو، گوگل نے شیٹرڈ حملے کا اعلان کیا، جس میں انہوں نے تقریبا 263.1 SHA-1 تشخیص میں ایک ہی SHA-1 ہیش کے ساتھ دو مختلف پی ڈی ایف فائلیں تیار کیں۔ فوسل-سنیپ شاٹ فائل سسٹم بھی دیکھیں جو مستقل اسٹوریج کے لیے وینٹی کا استعمال کرتا ہے۔ یوزر اسپیس ریفرنسز سے پلان 9 بیرونی لنکس وینٹی: آرکائیول اسٹوریج کے لیے ایک نیا نقطہ نظر، وینٹی کو بیان کرنے والا کاغذ۔ نیا وینٹی دستی صفحہ (جائزہ)، سیکشن 7 وینٹی دستی صفحہ بشمول عمومی تفصیل اور اسٹوریج فارمیٹ۔ نیا وینٹی دستی صفحہ (سرور)، سیکشن 8 وینٹی سرور دستی صفحہ۔ نیا وینٹی دستی صفحہ (اوزار)، سیکشن 1 وینٹی یوٹیلیٹیز دستی صفحہ۔ کلائنٹس اور سرورز کو لاگو کرنے کے لیے کوڈ پر جائیں۔ انفرنو کے لیے لمبو میں وینٹی ماڈیول، گوگل سمر آف کوڈ کی بدولت براہ کرم زندہ کیا گیا۔ بیل لیبز کا پلان 9