1. खास जानकारी
Google Cloud Platform पर Lustre पैरलल फ़ाइल सिस्टम क्लस्टर चलाने के लिए, Google Codelab में आपका स्वागत है!

डेटा, हाई परफ़ॉर्मेंस कंप्यूटिंग (एचपीसी) का अहम हिस्सा है. एचपीसी वर्कलोड चलाने के लिए, बहुत ज़्यादा डेटा को बहुत कम समय में ऐक्सेस करना हमेशा से ही एक बड़ी चुनौती रही है. क्लाउड में भी, ज़्यादा परफ़ॉर्मेंस वाले स्टोरेज की ज़रूरत बनी हुई है. साथ ही, अब बड़ी मात्रा में स्टोरेज का इस्तेमाल आसानी से और तुरंत करना बहुत ज़रूरी हो गया है.
एचपीसी सेंटर, लंबे समय से इस ज़रूरत को पूरा कर रहे हैं. इसके लिए, वे Lustre पैरलल फ़ाइल सिस्टम जैसी टेक्नोलॉजी का इस्तेमाल करते हैं. Lustre, आज के समय में सबसे लोकप्रिय ओपन सोर्स हाई परफ़ॉर्मेंस स्टोरेज सॉल्यूशन में से एक है. जून 2005 से, इसका इस्तेमाल दुनिया के सबसे तेज़ सुपरकंप्यूटर में से कम से कम आधे सुपरकंप्यूटर में किया जा रहा है. साथ ही, दुनिया के सबसे तेज़ 100 सुपरकंप्यूटर में से 60 से ज़्यादा सुपरकंप्यूटर में इसका इस्तेमाल किया जा रहा है. Lustre में सैकड़ों पेटाबाइट तक डेटा स्टोर किया जा सकता है. साथ ही, यह एचपीसी जॉब के लिए सबसे अच्छी परफ़ॉर्मेंस दे सकता है. इसमें सिस्टम, एक ही नेमस्पेस में टीबी/सेकंड की थ्रूपुट डिलीवर करते हैं.
स्टोरेज की मांग को पूरा करने के लिए, Google Cloud ने दो तरीके अपनाए हैं. सबसे पहले, GCP ने DDN के साथ साझेदारी की, ताकि DDN EXAScaler Lustre सॉफ़्टवेयर को GCP Marketplace पर उपलब्ध कराया जा सके. यह सॉफ़्टवेयर, एंटरप्राइज़-क्लास का है और GCP के साथ काम करता है. दूसरा, Google Cloud के इंजीनियरों ने स्क्रिप्ट का एक सेट तैयार किया है और उसे ओपन-सोर्स किया है. इससे Google Cloud Deployment Manager का इस्तेमाल करके, Google Compute Engine पर Lustre स्टोरेज क्लस्टर को आसानी से कॉन्फ़िगर और डिप्लॉय किया जा सकता है.
Lustre on Google Cloud Platform, उस इन्फ़्रास्ट्रक्चर की पूरी परफ़ॉर्मेंस दे सकता है जिस पर यह चल रहा है. GCP पर इसकी परफ़ॉर्मेंस इतनी अच्छी है कि साल 2019 में, इसने हमारे पार्टनर DDN के साथ मिलकर IO-500 स्टोरेज सिस्टम के बेंचमार्क में आठवां स्थान हासिल किया. यह IO-500 में सबसे ज़्यादा रैंक वाला क्लाउड-आधारित फ़ाइल सिस्टम है. आज हम आपको Lustre के लिए, Open Source Deployment Manager स्क्रिप्ट को डिप्लॉय करने का तरीका बताएंगे. अगर आपको Lustre के साथ एंटरप्राइज़-ग्रेड का अनुभव चाहिए, तो हम आपको DDN EXAScaler Marketplace की पेशकश के बारे में जानने का सुझाव देते हैं. इसमें Lustre क्लस्टर के लिए Lustre के विशेषज्ञ की सहायता के साथ-साथ, मैनेजमेंट और मॉनिटरिंग जीयूआई या Lustre ट्यूनिंग जैसी सुविधाएं मिलती हैं.
आपको क्या सीखने को मिलेगा
- GCP Deployment Manager सेवा का इस्तेमाल कैसे करें
- GCP पर Lustre फ़ाइल सिस्टम को कॉन्फ़िगर और डिप्लॉय करने का तरीका.
- Lustre फ़ाइल सिस्टम में स्ट्राइपिंग को कॉन्फ़िगर करने और सामान्य I/O की जांच करने का तरीका.
ज़रूरी शर्तें
- Google Cloud Platform खाता और बिलिंग की सुविधा वाला प्रोजेक्ट
- Linux का बुनियादी अनुभव
2. सेटअप
अपने हिसाब से एनवायरमेंट सेट अप करना
प्रोजेक्ट बनाना
अगर आपके पास पहले से कोई Google खाता (Gmail या G Suite) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console ( console.cloud.google.com) में साइन इन करें और संसाधन मैनेज करें पेज खोलें:

प्रोजेक्ट बनाएं पर क्लिक करें.

प्रोजेक्ट का नाम डालें. प्रोजेक्ट आईडी को याद रखें. यह आईडी, ऊपर दिए गए स्क्रीनशॉट में लाल रंग से हाइलाइट किया गया है. प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होना चाहिए. अगर आपके प्रोजेक्ट का नाम यूनीक नहीं है, तो Google Cloud, प्रोजेक्ट के नाम के आधार पर एक रैंडम प्रोजेक्ट आईडी जनरेट करेगा.
इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Developers Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में आपको कुछ डॉलर से ज़्यादा खर्च नहीं करने पड़ेंगे. हालांकि, अगर ज़्यादा संसाधनों का इस्तेमाल किया जाता है या उन्हें चालू रखा जाता है, तो यह खर्च बढ़ सकता है. इस दस्तावेज़ के आखिर में "नतीजा" सेक्शन देखें. Google Cloud Platform के प्राइसिंग कैलकुलेटर का इस्तेमाल यहां किया जा सकता है.
Google Cloud Platform के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
Google Cloud Shell
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में हम Google Cloud Shell का इस्तेमाल करेंगे. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
Google Cloud Shell लॉन्च करें
GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

इसके बाद, Cloud Shell शुरू करें पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस बेहतर होती है और पुष्टि करने की प्रोसेस आसान हो जाती है. इस लैब में ज़्यादातर काम, सिर्फ़ वेब ब्राउज़र या Google Chromebook की मदद से किया जा सकता है.
क्लाउड शेल से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके PROJECT_ID पर पहले ही सेट कर दिया गया है:
$ gcloud auth list
कमांड का आउटपुट:
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
$ gcloud config list project
कमांड का आउटपुट:
[core]
project = <PROJECT_ID>
अगर प्रोजेक्ट आईडी सही तरीके से सेट नहीं किया गया है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:
$ gcloud config set project <PROJECT_ID>
कमांड का आउटपुट:
Updated property [core/project].
3. Lustre डिप्लॉयमेंट कॉन्फ़िगरेशन तैयार करना और उसकी समीक्षा करना
Lustre Deployment Manager की स्क्रिप्ट डाउनलोड करना
Cloud Shell सेशन में, नीचे दी गई कमांड को एक्ज़ीक्यूट करके, Git रिपॉज़िटरी को क्लोन (डाउनलोड) करें. इसमें Lustre for Google Cloud Platform deployment-manager फ़ाइलें शामिल होती हैं:
git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git
नीचे दी गई कमांड को चलाकर, Lustre डिप्लॉयमेंट कॉन्फ़िगरेशन डायरेक्ट्री पर स्विच करें:
cd deploymentmanager-samples/community/lustre/
Lustre डिप्लॉयमेंट YAML को कॉन्फ़िगर करना
Deployment Manager, डिप्लॉयमेंट कॉन्फ़िगरेशन देने के लिए YAML फ़ाइल का इस्तेमाल करता है. इस YAML फ़ाइल में डिप्लॉयमेंट के कॉन्फ़िगरेशन के बारे में जानकारी होती है. जैसे, डिप्लॉय करने के लिए Lustre का वर्शन और डिप्लॉय करने के लिए मशीन इंस्टेंस के टाइप. फ़ाइल को डिफ़ॉल्ट रूप से, बिना किसी कोटे में बढ़ोतरी के नए प्रोजेक्ट में डिप्लॉय करने के लिए कॉन्फ़िगर किया जाता है. हालांकि, इस कोडलैब के लिए, मशीन टाइप या क्षमता को अपनी ज़रूरत के हिसाब से बदला जा सकता है. इस कोडलैब को इन डिफ़ॉल्ट वैल्यू का इस्तेमाल करने के लिए लिखा गया है. इसलिए, अगर आपने कोई बदलाव किया है, तो आपको इस कोडलैब में उन बदलावों को लागू करना होगा, ताकि गड़बड़ियों से बचा जा सके. हमारा सुझाव है कि प्रोडक्शन में, MDS नोड के लिए कम से कम 32 वीसीपीयू वाला इंस्टेंस और OSS नोड के लिए कम से कम 8 या 16 वीसीपीयू वाला इंस्टेंस इस्तेमाल करें. यह स्टोरेज की क्षमता और टाइप पर निर्भर करता है.
Cloud Shell सेशन में YAML फ़ाइल की समीक्षा करने या उसमें बदलाव करने के लिए, डिप्लॉयमेंट कॉन्फ़िगरेशन वाली YAML फ़ाइल खोलें Lustre-cluster.yaml. फ़ाइल का कॉन्टेंट देखने के लिए, अपने पसंदीदा कमांड लाइन एडिटर (vi, nano, emacs वगैरह) का इस्तेमाल करें या Cloud Console के कोड एडिटर का इस्तेमाल करें:

फ़ाइल का कॉन्टेंट ऐसा दिखेगा:
# [START cluster_yaml]
imports:
- path: lustre.jinja
resources:
- name: lustre
type: lustre.jinja
properties:
## Cluster Configuration
cluster_name : lustre
zone : us-central1-f
cidr : 10.20.0.0/16
external_ips : True
### Use these fields to deploy Lustre in an existing VPC, Subnet, and/or Shared VPC
#vpc_net : < VPC Network Name >
#vpc_subnet : < VPC Subnet Name >
#shared_vpc_host_proj : < Shared VPC Host Project name >
## Filesystem Configuration
fs_name : lustre
### Review https://downloads.whamcloud.com/public/ to determine version naming
lustre_version : latest-release
e2fs_version : latest
## Lustre MDS/MGS Node Configuration
#mds_node_count : 1
mds_ip_address : 10.20.0.2
mds_machine_type : n1-standard-8
### MDS/MGS Boot disk
mds_boot_disk_type : pd-standard
mds_boot_disk_size_gb : 10
### Lustre MetaData Target disk
mdt_disk_type : pd-ssd
mdt_disk_size_gb : 1000
## Lustre OSS Configuration
oss_node_count : 4
oss_ip_range_start : 10.20.0.5
oss_machine_type : n1-standard-4
### OSS Boot disk
oss_boot_disk_type : pd-standard
oss_boot_disk_size_gb : 10
### Lustre Object Storage Target disk
ost_disk_type : pd-standard
ost_disk_size_gb : 5000
# [END cluster_yaml]
इस YAML फ़ाइल में कई फ़ील्ड हैं. नीचे दिए गए स्टार (*) वाले फ़ील्ड में जानकारी डालना ज़रूरी है. इन फ़ील्ड में ये शामिल हैं:
क्लस्टर कॉन्फ़िगरेशन
- cluster_name* - Lustre क्लस्टर का नाम. यह डिप्लॉय किए गए सभी संसाधनों के नाम से पहले जुड़ जाता है
- zone* - वह ज़ोन जिसमें क्लस्टर को डिप्लॉय करना है
- cidr* - सीआईडीआर फ़ॉर्मैट में आईपी रेंज
- external_ips* - True/False, Lustre नोड में बाहरी आईपी पते होते हैं. अगर यह वैल्यू 'गलत है' पर सेट है, तो Cloud NAT को NAT गेटवे के तौर पर सेट अप किया जाता है
- vpc_net - इस फ़ील्ड और vpc_subnet फ़ील्ड को तय करें, ताकि Lustre क्लस्टर को किसी मौजूदा वीपीसी में डिप्लॉय किया जा सके
- vpc_subnet - Lustre क्लस्टर को डिप्लॉय करने के लिए मौजूदा वीपीसी सबनेट
- shared_vpc_host_proj - इस फ़ील्ड के साथ-साथ vpc_net और vpc_subnet फ़ील्ड को भी तय करें, ताकि क्लस्टर को शेयर किए गए वीपीसी पर डिप्लॉय किया जा सके
फ़ाइल सिस्टम का कॉन्फ़िगरेशन
- fs_name - Lustre फ़ाइल सिस्टम का नाम
- lustre_version - डिप्लॉय करने के लिए Lustre का वर्शन. https://downloads.whamcloud.com/public/lustre/ से सबसे नया वर्शन डिप्लॉय करने के लिए, "latest-release" का इस्तेमाल करें. किसी अन्य वर्शन को डिप्लॉय करने के लिए, lustre-X.X.X का इस्तेमाल करें
- e2fs_version - E2fsprogs का वह वर्शन जिसे डिप्लॉय करना है. https://downloads.whamcloud.com/public/e2fsprogs/ से सबसे नया वर्शन डिप्लॉय करने के लिए, "latest" का इस्तेमाल करें या कोई अन्य वर्शन डिप्लॉय करने के लिए, X.XX.X.wcX का इस्तेमाल करें
एमडीएस/एमजीएस कॉन्फ़िगरेशन
- mds_ip_address - MDS/MGS नोड के लिए इंटरनल आईपी पता
- mds_machine_type - MDS/MGS नोड के लिए इस्तेमाल किया जाने वाला मशीन टाइप (देखें: https://cloud.google.com/compute/docs/machine-types)
- mds_boot_disk_type - MDS/MGS बूट डिस्क के लिए इस्तेमाल किया जाने वाला डिस्क टाइप (pd-standard, pd-ssd)
- mds_boot_disk_size_gb - MDS बूट डिस्क का साइज़ GB में
- mdt_disk_type* - मेटाडेटा टारगेट (एमडीटी) डिस्क के लिए इस्तेमाल किया जाने वाला डिस्क टाइप (pd-standard, pd-ssd, local-ssd)
- mdt_disk_size_gb* - एमडीटी डिस्क का साइज़, जीबी में
ओएसएस कॉन्फ़िगरेशन
- oss_node_count* - बनाए जाने वाले ऑब्जेक्ट स्टोरेज सर्वर (ओएसएस) नोड की संख्या
- oss_ip_range_start - ओएसएस नोड के लिए आईपी पते की रेंज की शुरुआत. अगर यह विकल्प नहीं चुना गया है, तो आईपी पते अपने-आप असाइन होने की सुविधा का इस्तेमाल करें
- oss_machine_type - OSS नोड के लिए इस्तेमाल किया जाने वाला मशीन टाइप
- oss_boot_disk_type - OSS बूट डिस्क के लिए इस्तेमाल किया जाने वाला डिस्क टाइप (pd-standard, pd-ssd)
- oss_boot_disk_size_gb - MDS बूट डिस्क का साइज़ GB में
- ost_disk_type* - ऑब्जेक्ट स्टोरेज टारगेट (ओएसटी) डिस्क के लिए इस्तेमाल किया जाने वाला डिस्क टाइप (pd-standard, pd-ssd, local-ssd)
- ost_disk_size_gb* - OST डिस्क का साइज़, जीबी में
4. कॉन्फ़िगरेशन को डिप्लॉय करना और उसकी पुष्टि करना
कॉन्फ़िगरेशन डिप्लॉय करना
Cloud Shell सेशन में, Lustre-gcp फ़ोल्डर से यह कमांड चलाएं:
gcloud deployment-manager deployments create lustre --config lustre.yaml
इस कमांड से, Lustre नाम का डिप्लॉयमेंट बनाया जाता है. इस प्रोसेस को पूरा होने में 10 से 20 मिनट लग सकते हैं. इसलिए, कृपया इंतज़ार करें.
डप्लॉयमेंट पूरा होने के बाद, आपको इससे मिलता-जुलता आउटपुट दिखेगा:
Create operation operation-1572410719018-5961966591cad-e25384f6-d4c905f8 completed successfully.
NAME TYPE STATE ERRORS INTENT
lustre-all-internal-firewall-rule compute.v1.firewall COMPLETED []
lustre-lustre-network compute.v1.network COMPLETED []
lustre-lustre-subnet compute.v1.subnetwork COMPLETED []
lustre-mds1 compute.v1.instance COMPLETED []
lustre-oss1 compute.v1.instance COMPLETED []
lustre-oss2 compute.v1.instance COMPLETED []
lustre-oss3 compute.v1.instance COMPLETED []
lustre-oss4 compute.v1.instance COMPLETED []
lustre-ssh-firewall-rule compute.v1.firewall COMPLETED []
डिप्लॉयमेंट की पुष्टि करना

Google Cloud Platform Console में डिप्लॉयमेंट देखने के लिए, यह तरीका अपनाएं:
- Cloud Platform Console में, कंसोल के सबसे ऊपर बाएं कोने में मौजूद प्रॉडक्ट और सेवाएं मेन्यू (तीन हॉरिज़ॉन्टल लाइन) खोलें.
- Deployment Manager पर क्लिक करें.
- डिप्लॉयमेंट की जानकारी देखने के लिए, Lustre पर क्लिक करें.
- खास जानकारी - Lustre पर क्लिक करें. डिप्लॉयमेंट प्रॉपर्टी पैनल में, डिप्लॉयमेंट का पूरा कॉन्फ़िगरेशन दिखता है.
- कॉन्फ़िग प्रॉपर्टी पर, "देखें" पर क्लिक करें. कॉन्फ़िगरेशन पैनल में, डिप्लॉयमेंट कॉन्फ़िगरेशन की उस वाईएएमएल फ़ाइल का कॉन्टेंट दिखता है जिसे पहले बदला गया था. आगे बढ़ने से पहले, पुष्टि करें कि कॉन्टेंट सही है. अगर आपको डिप्लॉयमेंट कॉन्फ़िगरेशन में बदलाव करना है, तो "डिप्लॉयमेंट को हटाना" में दिए गए तरीके के मुताबिक डिप्लॉयमेंट को मिटाएं. इसके बाद, "Lustre डिप्लॉयमेंट YAML को कॉन्फ़िगर करना" में दिए गए तरीके के मुताबिक डिप्लॉयमेंट को फिर से शुरू करें.
- (ज़रूरी नहीं) Lustre-cluster सेक्शन में जाकर, Lustre.jinja टेंप्लेट से बनाए गए हर संसाधन पर क्लिक करें और जानकारी देखें.
डिप्लॉयमेंट के कॉन्फ़िगरेशन की पुष्टि हो गई है. अब पुष्टि करते हैं कि क्लस्टर के इंस्टेंस शुरू हो गए हैं. Cloud Platform Console में, प्रॉडक्ट और सेवाएं मेन्यू में जाकर, Compute Engine > वीएम इंस्टेंस पर क्लिक करें.

VM इंस्टेंस पेज पर, डिप्लॉयमेंट मैनेजर की ओर से बनाए गए पांच वर्चुअल मशीन इंस्टेंस की समीक्षा करें. इनमें lustre-mds1, lustre-oss1, lustre-oss2, lustre-oss3, और lustre-oss4 शामिल हैं.
5. Lustre क्लस्टर को ऐक्सेस करना
इंस्टॉलेशन को मॉनिटर करना
वीएम इंस्टेंस पेज पर, lustre-mds1 पर क्लिक करें. इससे इंस्टेंस की ज़्यादा जानकारी वाला पेज खुल जाएगा.

सीरियल कंसोल आउटपुट पेज खोलने के लिए, सीरियल पोर्ट 1 (कंसोल) पर क्लिक करें. हम इस सीरियल आउटपुट का इस्तेमाल, MDS इंस्टेंस की इंस्टॉलेशन प्रोसेस की निगरानी करने के लिए करेंगे. साथ ही, हम तब तक इंतज़ार करेंगे, जब तक स्टार्टअप-स्क्रिप्ट पूरी नहीं हो जाती. सीरियल आउटपुट को अपडेट करने के लिए, पेज के सबसे ऊपर मौजूद "रीफ़्रेश करें" बटन पर क्लिक करें. Lustre कर्नल में बूट करने के लिए, नोड एक बार रीबूट होगा. साथ ही, यहां दिए गए मैसेज की तरह मैसेज दिखाएगा:
Startup finished in 838ms (kernel) + 6.964s (initrd) + 49.302s (userspace) = 57.105s.
Lustre: lustre-MDT0000: Connection restored to 374e2d80-0b31-0cd7-b2bf-de35b8119534 (at 0@lo)
इसका मतलब है कि Lustre को Lustre क्लस्टर पर इंस्टॉल कर दिया गया है और फ़ाइल सिस्टम का इस्तेमाल किया जा सकता है!
Lustre क्लस्टर को ऐक्सेस करना
Cloud Shell सेशन में, Google Cloud Console में lustre-mds1 इंस्टेंस के बगल में मौजूद, SSH बटन पर क्लिक करें. इसके अलावा, Cloud Shell में यहां दी गई कमांड चलाएं. साथ ही, lustre-mds1 नोड के ज़ोन के लिए <ZONE> को बदलें:
gcloud compute ssh lustre-mds1 --zone=<ZONE>
इस कमांड से, lustre-mds1 वर्चुअल मशीन में लॉग इन किया जाता है. यह Lustre Metadata Server (MDS) इंस्टेंस है. यह Lustre Management Server (MGS) इंस्टेंस के तौर पर भी काम करता है. यह इंस्टेंस, फ़ाइल सिस्टम के लिए पुष्टि करने और मेटाडेटा के सभी अनुरोधों को मैनेज करता है.
चलिए, फ़ाइल सिस्टम को lustre-mds1 इंस्टेंस पर माउंट करते हैं, ताकि बाद में इसकी जांच की जा सके. इन कमांड को चलाएं:
sudo mkdir /mnt/lustre sudo mount -t lustre lustre-mds1:/lustre /mnt/lustre cd /mnt/lustre
इन तीन निर्देशों से तीन काम किए जाते हैं. पहली कमांड, एक लोकल डायरेक्ट्री बनाती है. इसका इस्तेमाल हम "/mnt/lustre" पर माउंट पॉइंट के तौर पर करेंगे. दूसरी कमांड, "lustre" टाइप के फ़ाइल सिस्टम को माउंट करने के लिए "mount" कमांड चलाती है. यह फ़ाइल सिस्टम, lustre-mds1 सर्वर पर मौजूद होता है. साथ ही, इसका नाम "lustre" होता है, जिसे "/lustre" के तौर पर देखा जाता है. माउंट कमांड, Lustre फ़ाइल सिस्टम को आपकी लोकल "/mnt/lustre" डायरेक्ट्री में माउंट करती है. आखिर में, तीसरी कमांड डायरेक्ट्री को /mnt/lustre डायरेक्ट्री में बदल देती है. यहां Lustre को माउंट किया जाता है.
अब आपने Lustre फ़ाइल सिस्टम को /mnt/lustre पर माउंट कर दिया है. आइए, देखते हैं कि इस फ़ाइल सिस्टम की मदद से क्या-क्या किया जा सकता है.
6. Lustre CLI टूल के बारे में जानकारी
अगर आपको Lustre और इसके टूल के बारे में जानकारी नहीं है, तो हम यहां कुछ ज़रूरी कमांड के बारे में बताएंगे.
Lustre का लो-लेवल क्लस्टर मैनेजमेंट टूल "lctl" है. हम Lustre क्लस्टर को कॉन्फ़िगर और मैनेज करने के लिए, lctl का इस्तेमाल कर सकते हैं. साथ ही, Lustre क्लस्टर की सेवाएं देखने के लिए भी इसका इस्तेमाल किया जा सकता है. हमारे नए Lustre क्लस्टर में मौजूद सेवाओं और इंस्टेंस को देखने के लिए, यह कमांड चलाएं:
sudo lctl dl
आपने Lustre YAML कॉन्फ़िगरेशन फ़ाइल में जो बदलाव किए हैं उनके हिसाब से, आपको यहां दिए गए उदाहरण जैसा आउटपुट दिखेगा:
0 UP osd-ldiskfs lustre-MDT0000-osd lustre-MDT0000-osd_UUID 11
1 UP mgs MGS MGS 12
2 UP mgc MGC10.128.15.2@tcp 374e2d80-0b31-0cd7-b2bf-de35b8119534 4
3 UP mds MDS MDS_uuid 2
4 UP lod lustre-MDT0000-mdtlov lustre-MDT0000-mdtlov_UUID 3
5 UP mdt lustre-MDT0000 lustre-MDT0000_UUID 12
6 UP mdd lustre-MDD0000 lustre-MDD0000_UUID 3
7 UP qmt lustre-QMT0000 lustre-QMT0000_UUID 3
8 UP lwp lustre-MDT0000-lwp-MDT0000 lustre-MDT0000-lwp-MDT0000_UUID 4
9 UP osp lustre-OST0000-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
10 UP osp lustre-OST0002-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
11 UP osp lustre-OST0001-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
12 UP osp lustre-OST0003-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
हमें अपना Lustre Management Server (MGS) पहले आइटम के तौर पर, Lustre Metadata Server (MDS) तीसरे आइटम के तौर पर, Lustre Metadata Target (MDT) पांचवें आइटम के तौर पर, और चार Lustre Object Storage Servers (OSS) आठवें से बारहवें आइटम के तौर पर दिख रहे हैं. अन्य सेवाओं के बारे में जानने के लिए, कृपया Lustre का मैन्युअल देखें.
Lustre के फ़ाइल सिस्टम को कॉन्फ़िगर करने वाला टूल "lfs" है. हम lfs का इस्तेमाल, Lustre Object Storage Servers (OSS) और उनके Object Storage Targets (OST) में फ़ाइलों को स्ट्राइप करने के लिए कर सकते हैं. साथ ही, फ़ाइल सिस्टम से जुड़ी सामान्य कार्रवाइयां करने के लिए भी इसका इस्तेमाल किया जा सकता है. जैसे, फ़ाइल ढूंढना, डिस्क स्पेस देखना, और कोटा मैनेज करना.
स्ट्राइपिंग की मदद से, हम यह कॉन्फ़िगर कर सकते हैं कि किसी फ़ाइल को हमारे Lustre क्लस्टर में कैसे डिस्ट्रिब्यूट किया जाए, ताकि बेहतर परफ़ॉर्मेंस मिल सके. किसी बड़ी फ़ाइल को ज़्यादा से ज़्यादा ओएसएस में स्ट्राइप करने से, अक्सर आईओ को पैरलल करके बेहतर परफ़ॉर्मेंस मिलती है. हालांकि, किसी छोटी फ़ाइल को स्ट्राइप करने से, उस फ़ाइल को सिर्फ़ एक इंस्टेंस में लिखने की तुलना में खराब परफ़ॉर्मेंस मिल सकती है.
इसे आज़माने के लिए, हम दो डायरेक्ट्री सेट अप करते हैं. एक में एक ओएसएस का स्ट्राइप काउंट होता है और दूसरे में "-1" का स्ट्राइप काउंट होता है. इससे पता चलता है कि उस डायरेक्ट्री में लिखी गई फ़ाइलों को ज़्यादा से ज़्यादा ओएसएस में स्ट्राइप किया जाना चाहिए. डायरेक्ट्री में स्ट्राइपिंग कॉन्फ़िगरेशन हो सकते हैं. इनमें बनाई गई फ़ाइलों को ये कॉन्फ़िगरेशन इनहेरिट किए जाते हैं. हालांकि, अगर चाहें, तो उस डायरेक्ट्री में मौजूद सब-डायरेक्ट्री और अलग-अलग फ़ाइलों को अलग-अलग तरीके से स्ट्राइप करने के लिए कॉन्फ़िगर किया जा सकता है. इन दो डायरेक्ट्री को बनाने के लिए, "/mnt/lustre" डायरेक्ट्री में रहते हुए, यहां दिए गए कमांड चलाएं:
sudo mkdir stripe_one sudo mkdir stripe_all sudo lfs setstripe -c 1 stripe_one/ sudo lfs setstripe -c -1 stripe_all/
lfs getstripe का इस्तेमाल करके, किसी फ़ाइल या डायरेक्ट्री की स्ट्राइप सेटिंग देखी जा सकती हैं:
sudo lfs getstripe stripe_all/
आपको ऐसा आउटपुट दिखेगा जिसमें स्ट्राइप की संख्या -1 के तौर पर सेट की गई है:
stripe_all/
stripe_count: -1 stripe_size: 1048576 pattern: raid0 stripe_offset: -1
अब हम कई ओएसएस में स्ट्राइप की गई बड़ी फ़ाइल को लिखकर, परफ़ॉर्मेंस में होने वाले सुधारों को टेस्ट करने के लिए तैयार हैं.
7. Test Lustre I/O
हम Lustre IO के दो सामान्य टेस्ट चलाएंगे. इससे Lustre फ़ाइल सिस्टम की परफ़ॉर्मेंस और स्केलिंग की क्षमताओं के बारे में पता चलेगा. सबसे पहले, हम "dd" यूटिलिटी का इस्तेमाल करके एक सामान्य टेस्ट करेंगे. इससे हम अपनी "stripe_one" डायरेक्ट्री में 5 जीबी की फ़ाइल लिख पाएंगे. यहां दिया गया निर्देश चलाएं:
sudo dd if=/dev/zero of=stripe_one/test bs=1M count=5000
फ़ाइल सिस्टम में 5 जीबी डेटा लिखने में औसतन 27 सेकंड लगते हैं. यह समय, एक ऑब्जेक्ट स्टोरेज सर्वर (ओएसएस) पर मौजूद एक परसिस्टेंट डिस्क (पीडी) में डेटा लिखने में लगता है.
कई ओएसएस और इसलिए कई पीडी में स्ट्राइपिंग की जांच करने के लिए, हमें सिर्फ़ उस आउटपुट डायरेक्ट्री को बदलना होगा जिसमें हम लिखते हैं. यहां दिया गया निर्देश चलाएं:
sudo dd if=/dev/zero of=stripe_all/test bs=1M count=5000
ध्यान दें कि हमने "of=stripe_one/test" को "of=stripe_all/test" में बदल दिया है. इससे हमारी सिंगल स्ट्रीम राइट सुविधा, ऑब्जेक्ट स्टोरेज सर्वर पर डेटा को डिस्ट्रिब्यूट कर पाएगी. साथ ही, डेटा को औसतन 5.5 सेकंड में राइट कर पाएगी. यह चार ओएसएस के साथ, करीब चार गुना तेज़ी से काम करेगी.
जैसे-जैसे ऑब्जेक्ट स्टोरेज सर्वर जोड़े जाते हैं वैसे-वैसे परफ़ॉर्मेंस बेहतर होती जाती है. फ़ाइल सिस्टम के साथ ऑनलाइन ओएसएस जोड़े जा सकते हैं. साथ ही, ऑनलाइन क्षमता और परफ़ॉर्मेंस को बेहतर बनाने के लिए, उनमें डेटा स्ट्रिपिंग शुरू की जा सकती है. Google Cloud Platform पर Lustre का इस्तेमाल करके, कई तरह के काम किए जा सकते हैं. हमें यह देखने में खुशी होगी कि इसका इस्तेमाल करके, क्या बनाया जा सकता है और किन समस्याओं को हल किया जा सकता है.
8. नतीजा
बधाई हो, आपने Google Cloud Platform पर Lustre क्लस्टर बना लिया है! इन स्क्रिप्ट का इस्तेमाल, अपना Lustre क्लस्टर बनाने और उसे क्लाउड-आधारित कंप्यूटिंग क्लस्टर के साथ इंटिग्रेट करने के लिए किया जा सकता है.
डिप्लॉयमेंट को मिटाना
Lustre नोड से लॉग आउट करें:
exit
हमारा काम पूरा होने के बाद, डिप्लॉयमेंट को आसानी से हटाया जा सकता है. इसके लिए, Lustre क्लस्टर से लॉग आउट करने के बाद, Google Cloud Shell में यह कमांड चलाएं:
gcloud deployment-manager deployments delete lustre
जब कहा जाए, तब जारी रखने के लिए Y टाइप करें. इस प्रोसेस में कुछ समय लग सकता है. कृपया इंतज़ार करें.
प्रोजेक्ट मिटाना
क्लीनअप करने के लिए, हम अपने प्रोजेक्ट को मिटा देते हैं.
- नेविगेशन मेन्यू में, IAM और एडमिन चुनें
- इसके बाद, सब-मेन्यू में मौजूद सेटिंग पर क्लिक करें
- "प्रोजेक्ट मिटाएं" टेक्स्ट वाले ट्रैश कैन आइकॉन पर क्लिक करें
- प्रॉम्प्ट से जुड़े निर्देशों का पालन करना
हमने क्या-क्या कवर किया है
- GCP Deployment Manager सेवा का इस्तेमाल कैसे करें.
- GCP पर Lustre फ़ाइल सिस्टम को कॉन्फ़िगर और डिप्लॉय करने का तरीका.
- Lustre फ़ाइल सिस्टम में स्ट्राइपिंग को कॉन्फ़िगर करने और सामान्य I/O की जांच करने का तरीका.
सहायता पाना
क्या Lustre डिप्लॉयमेंट मैनेजर स्क्रिप्ट का इस्तेमाल करके कोई बेहतरीन चीज़ बनाई जा रही है? क्या आपका कोई सवाल है? Google Cloud Lustre discussion group में हमारे साथ चैट करें. सुविधाओं का अनुरोध करने, सुझाव/राय देने या गड़बड़ियों की शिकायत करने के लिए, कृपया इस फ़ॉर्म का इस्तेमाल करें. इसके अलावा, कोड में बदलाव करके पुल अनुरोध सबमिट किया जा सकता है! क्या आपको Google Cloud के किसी विशेषज्ञ से बात करनी है? आज ही Google Cloud की हाई परफ़ॉर्मेंस कंप्यूटिंग वेबसाइट पर जाकर, Google Cloud टीम से संपर्क करें.
ज़्यादा जानें
सुझाव/राय दें या शिकायत करें
कृपया इस कोडलैब के बारे में सुझाव/राय दें या शिकायत करें. इसके लिए, इस लिंक का इस्तेमाल करें. सुझाव/राय देने या शिकायत करने में पांच मिनट से भी कम समय लगता है. धन्यवाद!