ทำให้ระบบไฟล์ Lustre Parallel File System ใช้งานได้บน GCP

1. ภาพรวม

ยินดีต้อนรับสู่ Google Codelab สำหรับการเรียกใช้คลัสเตอร์ระบบไฟล์ Lustre Parallel บน Google Cloud Platform

d51beef5f729cbe9.png

ข้อมูลเป็นหัวใจสําคัญของการปฏิบัติด้านการประมวลผลประสิทธิภาพสูง และการเข้าถึงข้อมูลจํานวนมากด้วยความเร็วสูงมากและเวลาในการตอบสนองต่ำเป็นปัญหาสําคัญในการเรียกใช้ภาระงาน HPC เสมอมา ข้อกำหนดสำหรับพื้นที่เก็บข้อมูลประสิทธิภาพสูงนี้จะไม่เปลี่ยนแปลงในระบบคลาวด์ และแท้จริงแล้วความสามารถในการใช้พื้นที่เก็บข้อมูลปริมาณมหาศาลอย่างรวดเร็วและง่ายดายนั้นมีความสำคัญอย่างยิ่งยวด

ศูนย์ HPC ตอบสนองความต้องการนี้ภายในองค์กรมาอย่างยาวนานโดยใช้เทคโนโลยีอย่างระบบไฟล์แบบคู่ขนานของ Lustre Lustre เป็นหนึ่งในโซลูชันพื้นที่เก็บข้อมูลประสิทธิภาพสูงแบบโอเพนซอร์สที่ได้รับความนิยมมากที่สุดในปัจจุบัน และตั้งแต่เดือนมิถุนายน 2005 ซูเปอร์คอมพิวเตอร์ที่เร็วที่สุด 100 เครื่องในโลกมีอย่างน้อยครึ่งที่ใช้ Lustre อย่างต่อเนื่อง และมากกว่า 60 เครื่องใน 100 อันดับแรก Lustre สามารถปรับขนาดความจุได้สูงสุดถึงหลายร้อย PB และมอบประสิทธิภาพสูงสุดสำหรับงาน HPC ได้ ด้วยระบบที่ให้อัตราผ่านข้อมูล TB/วินาทีในเนมสเปซเดียว

Google Cloud ใช้แนวทาง 2 วิธีเพื่อตอบสนองดีมานด์พื้นที่เก็บข้อมูล ประการแรก GCP ได้ร่วมมือกับ DDN เพื่อนำซอฟต์แวร์ DDN EXAScaler Lustre ระดับองค์กรที่รองรับไปยัง GCP Marketplace ประการที่ 2 วิศวกรของ Google Cloud ได้พัฒนาและโอเพนซอร์สชุดสคริปต์เพื่อกำหนดค่าและทำให้คลัสเตอร์พื้นที่เก็บข้อมูล Lustre ใช้งานได้บน Google Compute Engine ได้อย่างง่ายดายโดยใช้ Google Cloud Deployment Manager

Lustre ใน Google Cloud Platform มีประสิทธิภาพสูงสุดของโครงสร้างพื้นฐานที่ใช้งานอยู่ ประสิทธิภาพใน GCP อยู่ในระดับที่ดีมากเสียจนอยู่ในอันดับที่ 8 ในการเปรียบเทียบระบบพื้นที่เก็บข้อมูล IO-500 ในปี 2019 ร่วมกับ DDN พาร์ทเนอร์ของเรา ซึ่งเป็นตัวแทนของระบบไฟล์ในระบบคลาวด์ที่มีอันดับสูงสุดใน IO-500 วันนี้เราจะแนะนำวิธีทำให้สคริปต์ตัวจัดการการทำให้ใช้งานได้แบบโอเพนซอร์สสำหรับ Lustre ใช้งานได้ หากคุณสนใจใช้งาน Lustre ที่เสริมความแข็งแกร่งสำหรับองค์กร พร้อมการสนับสนุนจากผู้เชี่ยวชาญ Lustre สำหรับคลัสเตอร์ Lustre ของคุณ รวมถึงฟีเจอร์ต่างๆ เช่น การจัดการและตรวจสอบ GUI หรือการปรับแต่ง Lustre เราขอแนะนำให้สำรวจข้อเสนอจาก DDN EXAScaler Marketplace

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้บริการตัวจัดการการทำให้ใช้งานได้ของ GCP
  • วิธีกำหนดค่าและทำให้ระบบไฟล์ Lustre ใช้งานได้บน GCP
  • วิธีกำหนดค่าการขีดฆ่าและทดสอบ I/O แบบง่ายไปยังระบบไฟล์ Lustre

ข้อกำหนดเบื้องต้น

  • บัญชี Google Cloud Platform และโปรเจ็กต์ที่มีการเรียกเก็บเงิน
  • ประสบการณ์การใช้งาน Linux ขั้นพื้นฐาน

2. ตั้งค่า

การตั้งค่าสภาพแวดล้อมในแบบของคุณ

สร้างโปรเจ็กต์

หากยังไม่มีบัญชี Google (Gmail หรือ G Suite) คุณต้องสร้างบัญชี ลงชื่อเข้าใช้คอนโซล Google Cloud Platform ( console.cloud.google.com) และเปิดหน้าจัดการทรัพยากร แล้วทำดังนี้

359c06e07e6d699f.png

คลิกสร้างโครงการ

25c23d651abb837b.png

ป้อนชื่อโปรเจ็กต์ จำรหัสโปรเจ็กต์ (ไฮไลต์ด้วยสีแดงในภาพหน้าจอด้านบน) รหัสโปรเจ็กต์ต้องเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด หากชื่อโปรเจ็กต์ไม่ใช่ชื่อเฉพาะ Google Cloud จะสร้างรหัสโปรเจ็กต์แบบสุ่มตามชื่อโปรเจ็กต์

ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินในคอนโซลนักพัฒนาซอฟต์แวร์เพื่อใช้ทรัพยากร Google Cloud

ค่าใช้จ่ายในการทํา Codelab นี้ไม่ควรเกิน 200 บาท แต่อาจมากกว่านี้หากเลือกใช้ทรัพยากรเพิ่มเติมหรือปล่อยไว้ให้ทํางาน (ดูส่วน "สรุป" ที่ท้ายเอกสารนี้) เครื่องคำนวณราคาของ Google Cloud Platform มีที่นี่

ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรี$300

Google Cloud Shell

แม้ Google Cloud จะทำงานจากระยะไกลได้จากแล็ปท็อป แต่ใน Codelab นี้ เราจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

เปิด Google Cloud Shell

จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

dbad104cef962719.png

จากนั้นคลิกเริ่ม Cloud Shell

4e50db320508ac88.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที

20b0aa80492144d.png

เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานบน 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

ในเซสชัน Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้เพื่อโคลน (ดาวน์โหลด) ที่เก็บ Git ที่มีไฟล์เครื่องมือจัดการการติดตั้งใช้งาน Lustre สำหรับ Google Cloud Platform

git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git

เปลี่ยนไปใช้ไดเรกทอรีการกำหนดค่าการทำให้ Lustre ใช้งานได้โดยเรียกใช้คำสั่งต่อไปนี้

cd deploymentmanager-samples/community/lustre/

กำหนดค่า YAML ของ Lustre Deployment

เครื่องมือจัดการการทำให้ใช้งานได้ใช้ไฟล์ YAML เพื่อระบุการกำหนดค่าการทำให้ใช้งานได้ ไฟล์ YAML นี้แสดงรายละเอียดการกำหนดค่าของการทำให้ใช้งานได้ เช่น เวอร์ชัน Lustre ที่จะทำให้ใช้งานได้ และประเภทอินสแตนซ์ของเครื่องที่จะทำให้ใช้งานได้ ระบบจะกําหนดค่าไฟล์โดยค่าเริ่มต้นให้ติดตั้งใช้งานในโปรเจ็กต์ใหม่โดยไม่มีการเพิ่มโควต้า แต่คุณเปลี่ยนประเภทเครื่องหรือความจุได้ตามต้องการสําหรับโค้ดแล็บนี้ Codelab นี้เขียนขึ้นเพื่อใช้ค่าเริ่มต้นเหล่านี้ ดังนั้นหากคุณทำการเปลี่ยนแปลง ก็จะต้องทำการเปลี่ยนแปลงดังกล่าวตลอดทั้ง Codelab เพื่อหลีกเลี่ยงข้อผิดพลาด ในเวอร์ชันที่ใช้งานจริง เราขอแนะนำให้มีอินสแตนซ์ vCPU อย่างน้อย 32 รายการสำหรับโหนด MDS และอินสแตนซ์ vCPU 8 หรือ 16 รายการเป็นอย่างน้อยสำหรับโหนด OSS ทั้งนี้ขึ้นอยู่กับความจุและประเภทของพื้นที่เก็บข้อมูล

หากต้องการตรวจสอบหรือแก้ไขไฟล์ YAML ในเซสชัน Cloud Shell ให้เปิดไฟล์ YAML การกำหนดค่าการทำให้ใช้งานได้ Lustre-cluster.yaml คุณสามารถใช้เครื่องมือแก้ไขบรรทัดคำสั่งที่ต้องการ (vi, nano, emacs ฯลฯ) หรือใช้เครื่องมือแก้ไขโค้ดของ Cloud Console เพื่อดูเนื้อหาไฟล์ก็ได้ โดยทำดังนี้

11efd5af658f1842.png

เนื้อหาของไฟล์จะมีลักษณะดังนี้

# [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 นี้มีช่องหลายช่อง ช่องด้านล่างที่มีเครื่องหมายดอกจัน (*) คือช่องที่ต้องระบุข้อมูล ฟิลด์เหล่านี้ ได้แก่

การกำหนดค่าคลัสเตอร์

  • คลัสเตอร์_name* - ชื่อของคลัสเตอร์ Lustre ใส่ทรัพยากรที่ทำให้ใช้งานได้ทั้งหมดไว้ด้านหน้า
  • zone* - โซนที่จะติดตั้งใช้งานคลัสเตอร์
  • cidr* - ช่วง IP ในรูปแบบ CIDR
  • external_ips* - จริง/เท็จ โหนด Lustre มีที่อยู่ IP ภายนอก หากเป็น "เท็จ" จะมีการตั้งค่า Cloud NAT เป็นเกตเวย์ NAT
  • vpc_net - กำหนดช่องนี้และช่อง vpc_subnet เพื่อทำให้คลัสเตอร์ Lustre ใช้งานได้ใน VPC ที่มีอยู่
  • vpc_subnet - ซับเน็ต VPC ที่มีอยู่เพื่อใช้ติดตั้งใช้งานคลัสเตอร์ Lustre
  • shared_vpc_host_proj - กําหนดฟิลด์นี้ รวมถึงฟิลด์ vpc_net และ vpc_subnet เพื่อติดตั้งใช้งานคลัสเตอร์ใน VPC ที่แชร์

การกำหนดค่าระบบไฟล์

  • fs_name - ชื่อระบบไฟล์ Lustre
  • lustre_version - เวอร์ชัน Lustre เพื่อทำให้ใช้งานได้ ใช้ "latest-release" เพื่อทำให้ Branch ล่าสุดจาก https://downloads.whamcloud.com/public/lustre/ หรือ lustre-X.X.X ใช้งานได้ในเวอร์ชันใหม่
  • e2fs_version - เวอร์ชัน E2fsprogs ที่จะติดตั้งใช้งาน ใช้ "latest" เพื่อติดตั้งใช้งานสาขาล่าสุดจาก https://downloads.whamcloud.com/public/e2fsprogs/ หรือ X.XX.X.wcX เพื่อติดตั้งใช้งานเวอร์ชันอื่นๆ

การกำหนดค่า MDS/MGS

  • mds_ip_address - ที่อยู่ IP ภายในที่จะระบุสำหรับโหนด 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* - ประเภทดิสก์ที่จะใช้สำหรับดิสก์เป้าหมายข้อมูลเมตา (MDT) (pd-standard, pd-ssd, local-ssd)
  • mdt_disk_size_gb* - ขนาดของดิสก์ MDT เป็น GB

การกำหนดค่า OSS

  • oss_node_count* - จำนวนโหนดของ Object Storage Server (OSS) ที่จะสร้าง
  • oss_ip_range_start - จุดเริ่มต้นของช่วง IP สำหรับโหนด OSS หากไม่ได้ระบุ ให้ใช้การกำหนด IP โดยอัตโนมัติ
  • oss_machine_type - ประเภทเครื่องที่จะใช้สำหรับโหนด OSS
  • oss_boot_disk_type - ประเภทดิสก์ที่จะใช้สำหรับดิสก์บูต OSS (pd-standard, pd-ssd)
  • oss_boot_disk_size_gb - ขนาดของดิสก์เปิดเครื่อง MDS เป็น GB
  • ost_disk_type* - ประเภทดิสก์ที่จะใช้สำหรับดิสก์เป้าหมายพื้นที่เก็บข้อมูลออบเจ็กต์ (OST) (pd-standard, pd-ssd, local-ssd)
  • ost_disk_size_gb* - ขนาดของดิสก์ OST เป็น GB

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  []

ยืนยันการติดตั้งใช้งาน

5f2a0557d3f2476f.png

ทำตามขั้นตอนต่อไปนี้เพื่อดูการทำให้ใช้งานได้ในคอนโซล Google Cloud Platform

  • ในคอนโซล Cloud Platform ให้เปิดเมนูผลิตภัณฑ์และบริการที่มุมซ้ายบนของคอนโซล (เส้นแนวนอน 3 เส้น)
  • คลิกตัวจัดการการทำให้ใช้งานได้
  • คลิก Lustre เพื่อดูรายละเอียดของการติดตั้งใช้งาน
  • คลิกภาพรวม - Lustre แผงคุณสมบัติของการปรับใช้งานจะแสดงการกำหนดค่าการปรับใช้งานโดยรวม
  • คลิก "View" ในพร็อพเพอร์ตี้ Config แผงการกำหนดค่าจะแสดงเนื้อหาของไฟล์ YAML การกำหนดค่าการทำให้ใช้งานได้ที่แก้ไขก่อนหน้านี้ ตรวจสอบว่าเนื้อหาถูกต้องก่อนดำเนินการต่อ หากต้องการเปลี่ยนการกำหนดค่าการทำให้ใช้งานได้ ให้ลบการทำให้ใช้งานได้ตามขั้นตอนใน "ล้างข้อมูลการทำให้ใช้งานได้" แล้วเริ่มการทำให้ใช้งานได้อีกครั้งตามขั้นตอนใน "กำหนดค่า YAML ของการทำให้ใช้งานได้ของ Lustre"
  • (ไม่บังคับ) ในส่วน Lustre-cluster ให้คลิกทรัพยากรแต่ละรายการที่สร้างโดยเทมเพลต Lustre.jinja แล้วดูรายละเอียด

เมื่อยืนยันการกำหนดค่าการทำให้ใช้งานได้แล้ว เราขอยืนยันว่าอินสแตนซ์ของคลัสเตอร์เริ่มต้นแล้ว ในคอนโซล Cloud Platform ให้คลิก Compute Engine > อินสแตนซ์ VM ในเมนูผลิตภัณฑ์และบริการ

aec8498e04a3c334.png

ในหน้าอินสแตนซ์ VM ให้ตรวจสอบอินสแตนซ์เครื่องเสมือน 5 รายการที่สร้างโดยตัวจัดการการทำให้ใช้งานได้ ซึ่งรวมถึง lustre-mds1, lustre-oss1, lustre-oss2, lustre-oss3 และ lustre-oss4

5. เข้าถึงคลัสเตอร์ Lustre

ตรวจสอบการติดตั้ง

ในหน้าอินสแตนซ์ VM ให้คลิก lustre-mds1 เพื่อเปิดหน้ารายละเอียดอินสแตนซ์

ba0bea7acdbb9527.png

คลิกพอร์ตอนุกรม 1 (คอนโซล) เพื่อเปิดหน้าเอาต์พุตของคอนโซลอนุกรม เราจะใช้เอาต์พุตซีเรียลนี้เพื่อตรวจสอบกระบวนการติดตั้งอินสแตนซ์ MDS และรอจนกว่าสคริปต์เริ่มต้นจะเสร็จสมบูรณ์ คลิกปุ่ม "รีเฟรช" ที่ด้านบนของหน้าเพื่ออัปเดตเอาต์พุตซีเรียล โ nod จะรีบูต 1 ครั้งเพื่อบูตเข้าสู่เคอร์เนล 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 ให้คลิกปุ่ม SSH ข้างอินสแตนซ์ lustre-mds1 ใน Google Cloud Console หรือเรียกใช้คําสั่งต่อไปนี้ใน Cloud Shell โดยแทนที่ <ZONE> ด้วยโซนของโหนด lustre-mds1

gcloud compute ssh lustre-mds1 --zone=<ZONE>

คำสั่งนี้จะเข้าสู่ระบบเครื่องเสมือน lustre-mds1 นี่คืออินสแตนซ์เซิร์ฟเวอร์ข้อมูลเมตา Lustre (MDS) ซึ่งทำหน้าที่เป็นอินสแตนซ์เซิร์ฟเวอร์การจัดการ Lustre (MGS) ด้วย อินสแตนซ์นี้จะจัดการคำขอการตรวจสอบสิทธิ์และข้อมูลเมตาทั้งหมดสำหรับระบบไฟล์

มาต่อเชื่อมระบบไฟล์บนอินสแตนซ์ lustre-mds1 กัน เพื่อให้สามารถทดสอบได้ในภายหลัง เรียกใช้คำสั่งต่อไปนี้

sudo mkdir /mnt/lustre
sudo mount -t lustre lustre-mds1:/lustre /mnt/lustre
cd /mnt/lustre

คำสั่ง 3 อย่างนี้ทำได้ 3 อย่าง คำสั่งแรกจะสร้างไดเรกทอรีในเครื่องที่เราจะใช้เป็นจุดต่อเชื่อมที่ "/mnt/lustre" คำสั่งที่สองเรียกใช้คำสั่ง "mount" เพื่อต่อเชื่อมระบบไฟล์ประเภท "lustre" ซึ่งอยู่บนเซิร์ฟเวอร์ lustre-mds1 และที่ที่ชื่อระบบไฟล์คือ "lustre" ซึ่งแสดงเป็น "/lustre" คำสั่ง mount จะต่อเชื่อมระบบไฟล์ Lustre ในไดเรกทอรี "/mnt/lustre" ในพื้นที่ สุดท้าย คำสั่งที่ 3 จะเปลี่ยนไดเรกทอรีเป็นไดเรกทอรี /mnt/lustre ซึ่งต่อเชื่อม Lustre

ตอนนี้คุณได้ต่อเชื่อมระบบไฟล์ Lustre ที่ /mnt/lustre แล้ว มาดูกันว่าระบบไฟล์นี้ทำอะไรได้บ้าง

6. ทัวร์ชมเครื่องมือ CLI ของ Lustre

หากคุณไม่คุ้นเคยกับ Lustre และเครื่องมือนี้ เราจะแนะนำคำสั่งที่สำคัญ 2-3 อย่างที่นี่

เครื่องมือจัดการคลัสเตอร์ระดับต่ำของ Lustre คือ "lctl" เราสามารถใช้ lctl เพื่อกำหนดค่าและจัดการคลัสเตอร์ Lustre รวมถึงดูบริการของคลัสเตอร์ 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) เป็นรายการ 1, Lustre Metadata Server (MDS) เป็นรายการ 3, Lustre Metadata Target (MDT) เป็นรายการ 5 และ Lustre Object Storage Servers (OSS) 4 รายการ เป็นรายการ 8 ถึง 12 หากต้องการทำความเข้าใจบริการอื่นๆ โปรดอ่านคู่มือ Lustre

เครื่องมือกำหนดค่าระบบไฟล์ของ Lustre คือ "lfs" เราสามารถใช้ lfs เพื่อจัดการการแบ่งไฟล์ในเซิร์ฟเวอร์พื้นที่เก็บข้อมูลออบเจ็กต์ Lustre (OSS) และเป้าหมายพื้นที่เก็บข้อมูลออบเจ็กต์ (OST) ที่เกี่ยวข้อง รวมถึงการเรียกใช้การดำเนินการของระบบไฟล์ทั่วไป เช่น find, df และการจัดการโควต้า

การแบ่งกลุ่มช่วยให้เรากำหนดค่าวิธีกระจายไฟล์ไปยังคลัสเตอร์ Lustre เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด แม้ว่าการนำไฟล์ขนาดใหญ่ออกจากระบบปฏิบัติการต่างๆ ให้ได้มากที่สุดเท่าที่จะเป็นไปได้มักให้ประสิทธิภาพที่ดีที่สุดเมื่อโหลด IO พร้อมกัน แต่การตัดไฟล์ขนาดเล็กอาจทำให้ประสิทธิภาพแย่ลงเมื่อเทียบกับการเขียนไฟล์ดังกล่าวไปยังอินสแตนซ์เดียว

หากต้องการทดสอบ ให้สร้างไดเรกทอรี 2 รายการ โดยรายการหนึ่งมีจำนวนแถบของระบบปฏิบัติการ 1 รายการ และอีกไดเรกทอรีหนึ่งมีจำนวนแถบเท่ากับ "-1" ซึ่งบ่งชี้ว่าไฟล์ที่เขียนในไดเรกทอรีนั้นควรมีการแยกเป็นแถบใน OSS ให้ได้มากที่สุด ไดเรกทอรีสามารถเก็บการกำหนดค่าการแยกรายการที่ได้รับมาจากไฟล์ที่สร้างขึ้นภายใน แต่สามารถกำหนดค่าไดเรกทอรีย่อยและไฟล์แต่ละรายการภายในไดเรกทอรีนั้นได้ให้แยกเป็นแถบในทางอื่นได้หากต้องการ ในการสร้างไดเรกทอรีทั้ง 2 รายการนี้ ให้เรียกใช้คำสั่งต่อไปนี้ขณะอยู่ในไดเรกทอรี "/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

ตอนนี้เราพร้อมที่จะทดสอบการปรับปรุงประสิทธิภาพที่ทำได้โดยการเขียนไฟล์ขนาดใหญ่ที่แบ่งออกเป็นหลายส่วนใน OSS หลายรายการ

7. ทดสอบ Lustre I/O

เราจะทำการทดสอบ Lustre IO แบบง่าย 2 รายการเพื่อแสดงให้เห็นถึงข้อได้เปรียบด้านประสิทธิภาพที่เป็นไปได้และความสามารถในการปรับขนาดของระบบไฟล์ Lustre ขั้นแรก เราจะทำการทดสอบอย่างง่ายๆ โดยใช้ยูทิลิตี "dd" เพื่อเขียนไฟล์ขนาด 5GB ไปยังไดเรกทอรี "stripe_one" ของเรา เรียกใช้คําสั่งต่อไปนี้

sudo dd if=/dev/zero of=stripe_one/test bs=1M count=5000

กระบวนการเขียนข้อมูล 5 GB ลงในระบบไฟล์ใช้เวลาโดยเฉลี่ยประมาณ 27 วินาที โดยเขียนลงใน Persistent Disk (PD) 1 ตัวบนเซิร์ฟเวอร์ Object Storage (OSS) 1 ตัว

หากต้องการทดสอบการตัดข้อความในหลาย OSS รวมถึง PD หลายรายการ เราเพียงต้องเปลี่ยนไดเรกทอรีเอาต์พุตที่เราเขียนถึง ดำเนินการด้วยคำสั่งต่อไปนี้

sudo dd if=/dev/zero of=stripe_all/test bs=1M count=5000

เราสังเกตว่าเราได้เปลี่ยน "of=stripe_one/test" เป็น "of=stripe_all/test" วิธีนี้จะช่วยให้การเขียนสตรีมเดียวเผยแพร่การเขียนในเซิร์ฟเวอร์ Object Storage ทั้งหมดของเรา และเขียนจนเสร็จโดยเฉลี่ย 5.5 วินาที ซึ่งเร็วถึง 4 เท่าใน 4 OSS

ประสิทธิภาพนี้จะเพิ่มขึ้นอย่างต่อเนื่องเมื่อคุณเพิ่ม Object Storage Server และคุณสามารถเพิ่ม OSS ด้วยระบบไฟล์ออนไลน์และเริ่มตัดข้อมูลลงในระบบดังกล่าวเพื่อเพิ่มความจุและประสิทธิภาพทางออนไลน์ได้ Lustre บน Google Cloud Platform สามารถทำงานต่างๆ ได้มากมาย เรารู้สึกตื่นเต้นที่จะได้เห็นสิ่งที่คุณสร้างได้และปัญหาที่คุณจะแก้ไขได้

8. บทสรุป

ขอแสดงความยินดี คุณได้สร้างคลัสเตอร์ Lustre บน Google Cloud Platform แล้ว คุณใช้สคริปต์เหล่านี้เป็นจุดเริ่มต้นในการสร้างคลัสเตอร์ Lustre ของคุณเองและผสานรวมกับคลัสเตอร์การประมวลผลในระบบคลาวด์ได้

ล้างข้อมูลการทำให้ใช้งานได้

ออกจากระบบโหนด Lustre

exit

คุณล้างข้อมูลการทำให้ใช้งานได้ง่ายๆ หลังจากเราดำเนินการเสร็จแล้วโดยเรียกใช้คำสั่งต่อไปนี้จาก Google Cloud Shell หลังจากออกจากระบบคลัสเตอร์ Lustre แล้ว

gcloud deployment-manager deployments delete lustre

เมื่อได้รับแจ้ง ให้พิมพ์ Y เพื่อดำเนินการต่อ การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดทนรอ

ลบโปรเจ็กต์

เราจึงลบโปรเจ็กต์เพื่อล้างข้อมูล

  • ในเมนูการนำทาง ให้เลือก IAM และผู้ดูแลระบบ
  • แล้วคลิกการตั้งค่าในเมนูย่อย
  • คลิกไอคอนถังขยะที่มีข้อความ "ลบโปรเจ็กต์"
  • ทำตามวิธีการในข้อความแจ้ง

สิ่งที่เราได้พูดถึง

  • วิธีใช้บริการตัวจัดการการทำให้ใช้งานได้ของ GCP
  • วิธีกำหนดค่าและทำให้ระบบไฟล์ Lustre ใช้งานได้บน GCP
  • วิธีกำหนดค่าการแบ่งกลุ่มและทดสอบ I/O แบบง่ายไปยังระบบไฟล์ Lustre

ค้นหาการสนับสนุน

คุณกำลังสร้างอะไรเจ๋งๆ โดยใช้สคริปต์ตัวจัดการการติดตั้งใช้งานของ Lustre ไหม หากมีคำถาม แชทกับเราได้ในกลุ่มสนทนา Google Cloud Lustre หากต้องการขอฟีเจอร์ แสดงความคิดเห็น หรือรายงานข้อบกพร่อง โปรดใช้แบบฟอร์มนี้ หรือแก้ไขโค้ดและส่งคำขอดึงข้อมูล! ต้องการพูดคุยกับผู้เชี่ยวชาญของ Google Cloud ไหม ติดต่อทีม Google Cloud เลยผ่านเว็บไซต์การประมวลผลประสิทธิภาพสูงของ Google Cloud

ดูข้อมูลเพิ่มเติม

ความคิดเห็น

โปรดส่งความคิดเห็นเกี่ยวกับ Codelab นี้โดยใช้ลิงก์นี้ การให้ความคิดเห็นใช้เวลาไม่ถึง 5 นาที ขอขอบคุณ