1. Ringkasan
Selamat datang di Codelab Google untuk menjalankan cluster sistem file Paralel Lustre di Google Cloud Platform.

Data adalah inti dari praktik Komputasi Berperforma Tinggi, dan mengakses data dalam jumlah besar dengan kecepatan yang sangat tinggi dan latensi rendah selalu menjadi tantangan utama dalam menjalankan workload HPC. Persyaratan untuk penyimpanan berperforma tinggi ini tidak berubah di cloud, dan bahkan kemampuan untuk memanfaatkan penyimpanan dalam jumlah besar dengan cepat dan mudah telah menjadi hal yang sangat penting.
Pusat HPC telah lama memenuhi kebutuhan ini di lokal menggunakan teknologi seperti sistem file paralel Lustre. Lustre adalah salah satu solusi penyimpanan berperforma tinggi open source paling populer saat ini, dan sejak Juni 2005, Lustre secara konsisten digunakan oleh setidaknya setengah dari sepuluh superkomputer tercepat, dan lebih dari 60 dari 100 superkomputer tercepat di dunia. Lustre memiliki kemampuan untuk menskalakan hingga ratusan PB kapasitas, dan memberikan performa maksimum untuk tugas HPC yang mungkin dilakukan, dengan sistem yang memberikan throughput TB/dtk dalam satu namespace.
Untuk memenuhi permintaan penyimpanan, Google Cloud telah mengambil dua pendekatan. Pertama, GCP berpartner dengan DDN untuk menghadirkan software DDN EXAScaler Lustre kelas perusahaan yang didukung ke GCP Marketplace. Kedua, engineer kami di Google Cloud telah mengembangkan dan menyediakan rangkaian skrip open source untuk memudahkan konfigurasi dan deployment cluster penyimpanan Lustre di Google Compute Engine menggunakan Google Cloud Deployment Manager.
Lustre di Google Cloud Platform sama-sama mampu memberikan performa maksimum infrastruktur tempatnya berjalan. Performa Filestore di GCP sangat baik sehingga menduduki peringkat ke-8 dalam tolok ukur sistem penyimpanan IO-500 pada tahun 2019 dengan partner kami, DDN, yang mewakili sistem file berbasis cloud dengan peringkat tertinggi di IO-500. Hari ini kami akan memandu Anda men-deploy skrip Open Source Deployment Manager untuk Lustre. Jika Anda tertarik untuk mendapatkan pengalaman Lustre yang tangguh dan siap untuk perusahaan, dengan dukungan pakar Lustre untuk cluster Lustre Anda, serta fitur seperti GUI pengelolaan dan pemantauan atau penyesuaian Lustre, sebaiknya pelajari penawaran DDN EXAScaler di Marketplace.
Yang akan Anda pelajari
- Cara menggunakan Layanan GCP Deployment Manager
- Cara mengonfigurasi dan men-deploy sistem file Lustre di GCP.
- Cara mengonfigurasi striping dan menguji I/O sederhana ke sistem file Lustre.
Prasyarat
- Akun Google Cloud Platform dan Project dengan Penagihan
- Pengalaman Linux Dasar
2. Penyiapan
Penyiapan lingkungan mandiri
Buat Proyek
Jika belum memiliki Akun Google (Gmail atau G Suite), Anda harus membuatnya. Login ke konsol Google Cloud Platform ( console.cloud.google.com) dan buka halaman Kelola resource:

Klik Buat Project.

Masukkan nama project. Ingat project ID (ditandai dengan warna merah pada screenshot di atas). ID project harus berupa nama unik di semua project Google Cloud. Jika nama project Anda tidak unik, Google Cloud akan membuat project ID acak berdasarkan nama project.
Selanjutnya, Anda harus mengaktifkan penagihan di Developers Console untuk menggunakan resource Google Cloud.
Menjalankan codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya berjalan (lihat bagian "Kesimpulan" di akhir dokumen ini). Kalkulator harga Google Cloud Platform tersedia di sini.
Pengguna baru Google Cloud Platform memenuhi syarat untuk mendapatkan uji coba gratis senilai$300.
Google Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, kita akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Membuka Google Cloud Shell
Dari Konsol GCP, klik ikon Cloud Shell di toolbar kanan atas:

Kemudian, klik Start Cloud Shell:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa jaringan dan menyederhanakan autentikasi. Sebagian besar pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser web atau Google Chromebook.
Setelah terhubung ke cloud shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID Anda:
$ gcloud auth list
Output perintah:
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
$ gcloud config list project
Output perintah:
[core]
project = <PROJECT_ID>
Jika project ID tidak disetel dengan benar, Anda dapat menyetelnya dengan perintah ini:
$ gcloud config set project <PROJECT_ID>
Output perintah:
Updated property [core/project].
3. Menyiapkan dan Meninjau Konfigurasi Deployment Lustre
Mendownload Skrip Deployment Manager Lustre
Dalam sesi Cloud Shell, jalankan perintah berikut untuk membuat clone (mendownload) repositori Git yang berisi file deployment-manager Lustre untuk Google Cloud Platform:
git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git
Beralih ke direktori konfigurasi deployment Lustre dengan menjalankan perintah berikut:
cd deploymentmanager-samples/community/lustre/
Mengonfigurasi YAML Deployment Lustre
Deployment Manager menggunakan file YAML untuk menyediakan konfigurasi deployment. File YAML ini menjelaskan konfigurasi deployment, seperti versi Lustre yang akan di-deploy, dan jenis instance mesin yang akan di-deploy. File dikonfigurasi secara default untuk di-deploy di project baru tanpa peningkatan kuota, tetapi Anda dapat mengubah jenis atau kapasitas mesin sesuai keinginan untuk codelab ini. Codelab ini ditulis untuk menggunakan setelan default ini, jadi jika Anda membuat perubahan, Anda harus menerapkan perubahan tersebut di seluruh codelab ini untuk menghindari error. Dalam produksi, sebaiknya gunakan instance dengan minimal 32 vCPU untuk node MDS, dan instance dengan minimal 8 atau 16 vCPU untuk node OSS, bergantung pada kapasitas dan jenis penyimpanan.
Untuk meninjau atau mengedit file YAML di sesi Cloud Shell, buka file YAML konfigurasi deployment Lustre-cluster.yaml. Anda dapat menggunakan editor command line pilihan Anda (vi, nano, emacs, dll.) atau menggunakan Editor Kode Konsol Cloud untuk melihat isi file:

Isi file akan terlihat seperti ini:
# [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]
Dalam file YAML ini, ada beberapa kolom. Kolom di bawah dengan tanda bintang (*) wajib diisi. Kolom ini mencakup:
Konfigurasi Cluster
- cluster_name* - Nama cluster Lustre, menambahkan semua resource yang di-deploy
- zone* - Zona untuk men-deploy cluster
- cidr* - Rentang IP dalam format CIDR
- external_ips* - Benar/Salah, node Lustre memiliki alamat IP eksternal. Jika salah (false), Cloud NAT akan disiapkan sebagai gateway NAT
- vpc_net - Tentukan kolom ini, dan kolom vpc_subnet, untuk men-deploy cluster Lustre ke VPC yang ada
- vpc_subnet - Subnet VPC yang ada untuk men-deploy cluster Lustre
- shared_vpc_host_proj - Tentukan kolom ini, serta kolom vpc_net dan vpc_subnet, untuk men-deploy cluster ke VPC Bersama
Konfigurasi sistem file
- fs_name - Nama sistem file Lustre
- lustre_version - Versi Lustre yang akan di-deploy, gunakan "latest-release" untuk men-deploy cabang terbaru dari https://downloads.whamcloud.com/public/lustre/ atau lustre-X.X.X untuk men-deploy versi lainnya
- e2fs_version - Versi E2fsprogs yang akan di-deploy, gunakan "latest" untuk men-deploy cabang terbaru dari https://downloads.whamcloud.com/public/e2fsprogs/ atau X.XX.X.wcX untuk men-deploy versi lainnya
Konfigurasi MDS/MGS
- mds_ip_address - Alamat IP Internal yang akan ditentukan untuk node MDS/MGS
- mds_machine_type - Jenis mesin yang akan digunakan untuk node MDS/MGS (lihat https://cloud.google.com/compute/docs/machine-types)
- mds_boot_disk_type - Jenis disk yang akan digunakan untuk boot disk MDS/MGS (pd-standard, pd-ssd)
- mds_boot_disk_size_gb - Ukuran boot disk MDS dalam GB
- mdt_disk_type* - Jenis disk yang akan digunakan untuk disk Target Metadata (MDT) (pd-standard, pd-ssd, local-ssd)
- mdt_disk_size_gb* - Ukuran disk MDT dalam GB
Konfigurasi OSS
- oss_node_count* - Jumlah node Object Storage Server (OSS) yang akan dibuat
- oss_ip_range_start - Awal rentang IP untuk node OSS. Jika tidak ditentukan, gunakan penetapan IP otomatis
- oss_machine_type - Jenis mesin yang akan digunakan untuk node OSS
- oss_boot_disk_type - Jenis disk yang akan digunakan untuk boot disk OSS (pd-standard, pd-ssd)
- oss_boot_disk_size_gb - Ukuran boot disk MDS dalam GB
- ost_disk_type* - Jenis disk yang akan digunakan untuk disk Target Object Storage (OST) (pd-standard, pd-ssd, local-ssd)
- ost_disk_size_gb* - Ukuran disk OST dalam GB
4. Men-deploy dan memverifikasi konfigurasi
Men-deploy Konfigurasi
Dalam sesi Cloud Shell, jalankan perintah berikut dari folder Lustre-gcp:
gcloud deployment-manager deployments create lustre --config lustre.yaml
Perintah ini membuat deployment bernama Lustre. Operasi ini dapat memerlukan waktu hingga 10-20 menit untuk selesai, jadi harap bersabar.
Setelah deployment selesai, Anda akan melihat output yang mirip dengan:
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 []
Memverifikasi Deployment

Ikuti langkah-langkah berikut untuk melihat deployment di Konsol Google Cloud Platform:
- Di Cloud Platform Console, buka menu Produk & Layanan di pojok kiri atas konsol (tiga garis horizontal).
- Klik Deployment Manager.
- Klik Lustre untuk melihat detail deployment.
- Klik Ringkasan - Lustre. Panel Deployment properties menampilkan konfigurasi deployment secara keseluruhan.
- Klik "Lihat" pada properti Config. Panel Config menampilkan konten file YAML konfigurasi deployment yang diubah sebelumnya. Verifikasi bahwa isinya sudah benar sebelum melanjutkan. Jika Anda perlu mengubah konfigurasi deployment, cukup hapus deployment sesuai dengan langkah-langkah di "Membersihkan Deployment", lalu mulai ulang deployment sesuai dengan langkah-langkah di "Mengonfigurasi YAML Deployment Lustre".
- (Opsional) Di bagian Lustre-cluster, klik setiap resource yang dibuat oleh template Lustre.jinja dan tinjau detailnya.
Setelah konfigurasi deployment diverifikasi, mari kita konfirmasi bahwa instance cluster telah dimulai. Di Konsol Cloud Platform, pada menu Produk & Layanan, klik Compute Engine > VM Instances.

Di halaman VM Instances, tinjau lima instance virtual machine yang telah dibuat oleh Deployment Manager. Ini mencakup lustre-mds1, lustre-oss1, lustre-oss2, lustre-oss3, dan lustre-oss4.
5. Mengakses Cluster Lustre
Memantau Penginstalan
Di halaman VM Instances, klik lustre-mds1 untuk membuka halaman Instance details.

Klik Port serial 1 (konsol) untuk membuka halaman output konsol serial. Kita akan menggunakan output serial ini untuk memantau proses penginstalan instance MDS, dan menunggu hingga startup-script selesai. Klik tombol "muat ulang" di bagian atas halaman untuk memperbarui output serial. Node akan dimulai ulang satu kali untuk melakukan booting ke kernel Lustre, dan menampilkan pesan yang mirip dengan di bawah ini:
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)
Artinya, Lustre diinstal di cluster Lustre, dan sistem file siap digunakan.
Mengakses Cluster Lustre
Dalam sesi Cloud Shell, klik tombol SSH di samping instance lustre-mds1 di Konsol Google Cloud. Atau, jalankan perintah berikut di Cloud Shell, dengan mengganti <ZONE> dengan zona node lustre-mds1:
gcloud compute ssh lustre-mds1 --zone=<ZONE>
Perintah ini akan login ke mesin virtual lustre-mds1. Ini adalah instance Lustre Metadata Server (MDS), yang juga bertindak sebagai instance Lustre Management Server (MGS). Instance ini menangani semua permintaan autentikasi dan metadata untuk sistem file.
Mari kita pasang sistem file di instance lustre-mds1 agar dapat mengujinya nanti. Jalankan perintah berikut:
sudo mkdir /mnt/lustre sudo mount -t lustre lustre-mds1:/lustre /mnt/lustre cd /mnt/lustre
Ketiga perintah ini melakukan tiga hal. Perintah pertama membuat direktori lokal yang akan kita gunakan sebagai titik pemasangan di "/mnt/lustre". Perintah kedua menjalankan perintah "mount" untuk memasang sistem file jenis "lustre", yang berada di server lustre-mds1, dan dengan nama sistem file "lustre", yang terlihat sebagai "/lustre". Perintah pemasangan memasang sistem file Lustre di direktori "/mnt/lustre" lokal Anda. Terakhir, perintah ketiga mengubah direktori ke direktori /mnt/lustre, tempat Lustre dipasang.
Anda kini telah memasang sistem file Lustre di /mnt/lustre. Mari kita lihat apa yang dapat kita lakukan dengan sistem file ini.
6. Tur Alat CLI Lustre
Jika Anda belum memahami Lustre dan alatnya, kami akan membahas beberapa perintah penting di sini.
Alat pengelolaan cluster tingkat rendah Lustre adalah "lctl". Kita dapat menggunakan lctl untuk mengonfigurasi dan mengelola cluster Lustre, serta untuk melihat layanan cluster Lustre. Untuk melihat layanan dan instance di cluster Lustre baru, jalankan:
sudo lctl dl
Anda akan melihat output yang mirip dengan di bawah, bergantung pada perubahan yang Anda lakukan pada file konfigurasi YAML Lustre:
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
Kita dapat melihat Lustre Management Server (MGS) sebagai item 1, Lustre Metadata Server (MDS) sebagai item 3, Lustre Metadata Target (MDT) sebagai item 5, dan empat Lustre Object Storage Server (OSS) sebagai item 8 hingga 12. Untuk memahami layanan lainnya, tinjau Lustre Manual.
Alat konfigurasi sistem file Lustre adalah "lfs". Kita dapat menggunakan lfs untuk mengelola striping file di seluruh Server Penyimpanan Objek (OSS) Lustre dan Target Penyimpanan Objek (OST) masing-masing, serta menjalankan operasi sistem file umum seperti find, df, dan pengelolaan kuota.
Striping memungkinkan kita mengonfigurasi cara file didistribusikan di seluruh cluster Lustre untuk memberikan performa terbaik. Meskipun menyatukan file besar di sebanyak mungkin OSS sering kali memberikan performa terbaik dengan memparalelkan I/O, menyatukan file kecil dapat menyebabkan performa yang lebih buruk daripada jika file tersebut hanya ditulis ke satu instance.
Untuk mengujinya, mari siapkan dua direktori, satu dengan jumlah strip satu OSS, dan satu dengan jumlah strip "-1", yang menunjukkan bahwa file yang ditulis di direktori tersebut harus di-strip di sebanyak mungkin OSS. Direktori dapat menyimpan konfigurasi striping yang diwarisi oleh file yang dibuat di dalamnya, tetapi subdirektori dan file individual dalam direktori tersebut kemudian dapat dikonfigurasi agar di-stripe secara berbeda jika diinginkan. Untuk membuat kedua direktori ini, jalankan perintah berikut saat berada di direktori "/mnt/lustre":
sudo mkdir stripe_one sudo mkdir stripe_all sudo lfs setstripe -c 1 stripe_one/ sudo lfs setstripe -c -1 stripe_all/
Anda dapat melihat setelan stripe file atau direktori menggunakan lfs getstripe:
sudo lfs getstripe stripe_all/
Anda akan melihat output yang menampilkan jumlah garis yang ditetapkan sebagai -1:
stripe_all/
stripe_count: -1 stripe_size: 1048576 pattern: raid0 stripe_offset: -1
Sekarang kita siap menguji peningkatan performa yang dapat dicapai dengan menulis file besar yang di-striping di beberapa OSS.
7. Menguji I/O Lustre
Kita akan menjalankan dua pengujian sederhana IO Lustre untuk mendemonstrasikan kemungkinan keunggulan performa dan kemampuan penskalaan sistem file Lustre. Pertama, kita akan menjalankan pengujian sederhana menggunakan utilitas "dd" untuk menulis file 5 GB ke direktori "stripe_one". Jalankan perintah berikut:
sudo dd if=/dev/zero of=stripe_one/test bs=1M count=5000
Proses penulisan data sebesar 5 GB ke sistem file rata-rata sekitar 27 detik, dengan menulis ke satu Persistent Disk (PD) di satu Object Storage Server (OSS).
Untuk menguji striping di beberapa OSS, dan oleh karena itu, beberapa PD, kita hanya perlu mengubah direktori output yang kita tulis. Jalankan perintah berikut:
sudo dd if=/dev/zero of=stripe_all/test bs=1M count=5000
Perhatikan bahwa kita mengubah "of=stripe_one/test" menjadi "of=stripe_all/test". Hal ini akan memungkinkan penulisan aliran tunggal kami mendistribusikan penulisan di semua Server Object Storage kami, dan menyelesaikan penulisan dalam rata-rata 5,5 detik, sekitar 4x lebih cepat dengan empat OSS.
Performa ini terus meningkat saat Anda menambahkan Server Penyimpanan Objek, dan Anda dapat menambahkan OSS dengan sistem file online dan mulai mengelompokkan data ke OSS tersebut untuk meningkatkan kapasitas dan performa secara online. Kemungkinannya tidak terbatas menggunakan Lustre di Google Cloud Platform, dan kami sangat antusias untuk melihat apa yang dapat Anda bangun, dan masalah apa yang dapat Anda selesaikan.
8. Kesimpulan
Selamat, Anda telah membuat cluster Lustre di Google Cloud Platform. Anda dapat menggunakan skrip ini sebagai titik awal untuk membangun cluster Lustre Anda sendiri, dan untuk mengintegrasikannya dengan cluster komputasi berbasis cloud Anda.
Membersihkan Deployment
Logout dari node Lustre:
exit
Anda dapat membersihkan deployment dengan mudah setelah selesai dengan menjalankan perintah berikut dari Google Cloud Shell, setelah logout dari cluster Lustre:
gcloud deployment-manager deployments delete lustre
Saat diminta, ketik Y untuk melanjutkan. Operasi ini dapat memerlukan waktu beberapa saat, harap bersabar.
Menghapus Project
Untuk membersihkan, kita cukup menghapus project.
- Di menu navigasi, pilih IAM & Admin
- Kemudian, klik setelan di submenu
- Klik ikon tempat sampah dengan teks "Hapus Project"
- Ikuti petunjuk perintah
Yang telah kita bahas
- Cara menggunakan Layanan GCP Deployment Manager.
- Cara mengonfigurasi dan men-deploy sistem file Lustre di GCP.
- Cara mengonfigurasi striping dan menguji I/O sederhana ke sistem file Lustre.
Temukan Dukungan
Apakah Anda sedang membangun sesuatu yang keren menggunakan skrip pengelola deployment Lustre? Ada pertanyaan? Chat dengan kami di grup diskusi Google Cloud Lustre. Untuk meminta fitur, memberikan masukan, atau melaporkan bug, gunakan formulir ini, atau jangan ragu untuk mengubah kode dan mengirimkan permintaan pull. Ingin berbicara dengan pakar Google Cloud? Hubungi tim Google Cloud sekarang melalui situs Komputasi Performa Tinggi Google Cloud.
Pelajari Lebih Lanjut
Masukan
Kirim masukan tentang codelab ini menggunakan link ini. Memberikan masukan memerlukan waktu kurang dari 5 menit. Terima kasih!