Men-deploy Sistem File Paralel Lustre di GCP

1. Ringkasan

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

d51beef5f729cbe9.png

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:

359c06e07e6d699f.png

Klik Buat Project.

25c23d651abb837b.png

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:

dbad104cef962719.png

Kemudian, klik Start Cloud Shell:

4e50db320508ac88.png

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

20b0aa80492144d.png

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:

11efd5af658f1842.png

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

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

5f2a0557d3f2476f.png

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.

aec8498e04a3c334.png

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.

ba0bea7acdbb9527.png

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!