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

1. ภาพรวม

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

d51beef5f729cbe9.png

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

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

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

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

  • วิธีใช้บริการ Deployment Manager ของ 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 จะสร้างรหัสโปรเจ็กต์แบบสุ่มโดยอิงตามชื่อโปรเจ็กต์

จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Developers Console เพื่อใช้ทรัพยากรของ Google Cloud

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

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

Google Cloud Shell

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

เปิดใช้ Google Cloud Shell

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

dbad104cef962719.png

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

4e50db320508ac88.png

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

20b0aa80492144d.png

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

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็น 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 ที่มีไฟล์ Deployment Manager สำหรับ Lustre ใน Google Cloud Platform

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

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

cd deploymentmanager-samples/community/lustre/

กำหนดค่า YAML การติดตั้งใช้งาน Lustre

Deployment Manager ใช้ไฟล์ YAML เพื่อระบุการกำหนดค่าการทำให้ใช้งานได้ ไฟล์ YAML นี้จะแสดงรายละเอียดการกำหนดค่าของการทำให้ใช้งานได้ เช่น เวอร์ชัน Lustre ที่จะทำให้ใช้งานได้ และประเภทอินสแตนซ์ของเครื่องที่จะทำให้ใช้งานได้ ระบบจะกำหนดค่าไฟล์ให้ทำให้ใช้งานได้ในโปรเจ็กต์ใหม่โดยไม่มีการเพิ่มโควต้าโดยค่าเริ่มต้น แต่คุณสามารถเปลี่ยนประเภทเครื่องหรือความจุได้ตามต้องการสำหรับ Codelab นี้ 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" เพื่อทำให้ใช้งานได้ใน Branch ที่อัปเดตล่าสุดจาก https://downloads.whamcloud.com/public/lustre/ หรือ lustre-X.X.X เพื่อทำให้ใช้งานได้ในเวอร์ชันอื่นๆ
  • e2fs_version - เวอร์ชัน E2fsprogs ที่จะทำให้ใช้งานได้ ใช้ "latest" เพื่อทำให้ใช้งานได้ Branch ล่าสุดจาก 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 (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* - ประเภทดิสก์ที่จะใช้สำหรับดิสก์ Object Storage Target (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 Console ให้เปิดเมนูผลิตภัณฑ์และบริการที่มุมซ้ายบนของคอนโซล (เส้นแนวนอน 3 เส้น)
  • คลิก Deployment Manager
  • คลิก Lustre เพื่อดูรายละเอียดการติดตั้งใช้งาน
  • คลิกภาพรวม - Lustre แผงพร็อพเพอร์ตี้การติดตั้งใช้งานจะแสดงการกำหนดค่าการติดตั้งใช้งานโดยรวม
  • คลิก "ดู" ในพร็อพเพอร์ตี้ Config แผงกำหนดค่าจะแสดงเนื้อหาของไฟล์ YAML การกำหนดค่าการติดตั้งใช้งานที่แก้ไขก่อนหน้านี้ โปรดตรวจสอบว่าเนื้อหาถูกต้องก่อนดำเนินการต่อ หากต้องการเปลี่ยนการกำหนดค่าการทำให้ใช้งานได้ ให้นำการทำให้ใช้งานได้ออกตามขั้นตอนใน "ล้างข้อมูลการทำให้ใช้งานได้" แล้วเริ่มการทำให้ใช้งานได้ใหม่ตามขั้นตอนใน "กำหนดค่า YAML ของการทำให้ใช้งานได้ Lustre"
  • (ไม่บังคับ) ในส่วน Lustre-cluster ให้คลิกทรัพยากรแต่ละรายการที่สร้างโดยเทมเพลต Lustre.jinja แล้วตรวจสอบรายละเอียด

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

aec8498e04a3c334.png

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

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

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

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

ba0bea7acdbb9527.png

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

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

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

มาต่อเชื่อมระบบไฟล์ในอินสแตนซ์ 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. ทัวร์ชมเครื่องมือ Lustre 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 Server (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. ทดสอบ Lustre I/O

เราจะทำการทดสอบ I/O ของ Lustre อย่างง่าย 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) เดียวบนเซิร์ฟเวอร์ Object Storage (OSS) เดียว

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

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

โปรดสังเกตว่าเราเปลี่ยน "of=stripe_one/test" เป็น "of=stripe_all/test" ซึ่งจะช่วยให้การเขียนสตรีมเดียวของเรากระจายการเขียนไปยังเซิร์ฟเวอร์ที่เก็บข้อมูลออบเจ็กต์ทั้งหมด และทำการเขียนให้เสร็จสมบูรณ์ได้โดยเฉลี่ยใน 5.5 วินาที ซึ่งเร็วกว่าเดิมประมาณ 4 เท่าเมื่อใช้ OSS 4 เครื่อง

ประสิทธิภาพนี้จะเพิ่มขึ้นเรื่อยๆ เมื่อคุณเพิ่มเซิร์ฟเวอร์ Object Storage และคุณสามารถเพิ่ม 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 Deployment Manager
  • วิธีกำหนดค่าและทำให้ระบบไฟล์ Lustre ใช้งานได้ใน GCP
  • วิธีกำหนดค่าการแยกข้อมูลและทดสอบ I/O อย่างง่ายกับระบบไฟล์ Lustre

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

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

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

ความคิดเห็น

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