ติดตั้งใช้งานระบบไฟล์แบบขนาน Lustre ใน GCP

1. ภาพรวม

ยินดีต้อนรับสู่ Google Codelab สำหรับคลัสเตอร์ระบบไฟล์แบบขนานของ Lustre ใน 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

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

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

  • วิธีใช้บริการตัวจัดการการทำให้ใช้งานได้ของ 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 จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้เราจะใช้ 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 นี้มีช่องหลายช่อง ฟิลด์ด้านล่างที่มีเครื่องหมายดอกจัน (*) คือฟิลด์ที่ต้องกรอก ฟิลด์เหล่านี้ ได้แก่

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

  • cluster_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" เพื่อติดตั้งใช้งานสาขาล่าสุดจาก 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* - จำนวนโหนดเซิร์ฟเวอร์พื้นที่เก็บข้อมูลออบเจ็กต์ (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

  • ในคอนโซลแพลตฟอร์มระบบคลาวด์ ให้เปิดเมนูผลิตภัณฑ์และบริการที่มุมซ้ายบนของคอนโซล (เส้นแนวนอน 3 เส้น)
  • คลิกเครื่องมือจัดการการทำให้ใช้งานได้
  • คลิก Lustre เพื่อดูรายละเอียดของการติดตั้งใช้งาน
  • คลิกภาพรวม - Lustre แผงคุณสมบัติของการปรับใช้งานจะแสดงการกำหนดค่าการปรับใช้งานโดยรวม
  • คลิก "ดู" ในพร็อพเพอร์ตี้ 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 และรอจนกว่าสคริปต์เริ่มต้นจะเสร็จสมบูรณ์ คลิกปุ่ม "รีเฟรช" ที่ด้านบนของหน้าเพื่ออัปเดตเอาต์พุตซีเรียล โหนดจะรีบูต 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" คำสั่งที่ 2 จะเรียกใช้คำสั่ง "mount" เพื่อต่อเชื่อมระบบไฟล์ประเภท "lustre" ซึ่งอยู่ในเซิร์ฟเวอร์ lustre-mds1 และชื่อระบบไฟล์คือ "lustre" ซึ่งจะแสดงเป็น "/lustre" คำสั่ง mount จะต่อเชื่อมระบบไฟล์ Lustre ในไดเรกทอรี "/mnt/lustre" ในพื้นที่ทำงาน สุดท้าย คำสั่งที่ 3 จะเปลี่ยนไดเรกทอรีเป็นไดเรกทอรี /mnt/lustre ซึ่งต่อเชื่อม Lustre

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

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

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

เครื่องมือจัดการคลัสเตอร์ระดับต่ำของ Lustre คือ "lctl" เราสามารถใช้ lctl เพื่อกำหนดค่าและจัดการคลัสเตอร์ Lustre รวมถึงดูบริการของคลัสเตอร์ Lustre หากต้องการดูบริการและอินสแตนซ์ในคลัสเตอร์ Lustre ใหม่ ให้ดำเนินการดังนี้

sudo lctl dl

คุณจะเห็นเอาต์พุตที่คล้ายกับด้านล่างนี้ โดยขึ้นอยู่กับการเปลี่ยนแปลงที่คุณทำในไฟล์กำหนดค่า 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

เราจะเห็นเซิร์ฟเวอร์การจัดการ Lustre (MGS) เป็นรายการที่ 1, เซิร์ฟเวอร์ข้อมูลเมตา Lustre (MDS) เป็นรายการที่ 3, เป้าหมายข้อมูลเมตา Lustre (MDT) เป็นรายการที่ 5 และเซิร์ฟเวอร์พื้นที่เก็บข้อมูลออบเจ็กต์ Lustre (OSS) 4 เครื่องเป็นรายการที่ 8 ถึง 12 หากต้องการทำความเข้าใจบริการอื่นๆ โปรดอ่านคู่มือ Lustre

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

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

ในการทดสอบนี้ ให้สร้างไดเรกทอรี 2 รายการ โดยให้ไดเรกทอรีหนึ่งมีจำนวนแถบเป็น OSS 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. ทดสอบ I/O ของ Lustre

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

ประสิทธิภาพนี้จะเพิ่มขึ้นเรื่อยๆ เมื่อคุณเพิ่มเซิร์ฟเวอร์พื้นที่เก็บข้อมูลออบเจ็กต์ และคุณสามารถเพิ่ม OSS ด้วยระบบไฟล์ออนไลน์และเริ่มจัดแบ่งข้อมูลไปยัง 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 นาที ขอขอบคุณ