1. ภาพรวม
ยินดีต้อนรับสู่ Google Codelab สำหรับคลัสเตอร์ระบบไฟล์แบบขนานของ Lustre ใน Google Cloud Platform
ข้อมูลเป็นหัวใจสําคัญของการปฏิบัติด้านการประมวลผลประสิทธิภาพสูง และการเข้าถึงข้อมูลจํานวนมากด้วยความเร็วสูงมากและเวลาในการตอบสนองต่ำเป็นปัญหาสําคัญในการเรียกใช้ภาระงาน 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) และเปิดหน้าจัดการทรัพยากร
คลิกสร้างโปรเจ็กต์
ป้อนชื่อโปรเจ็กต์ จดจำรหัสโปรเจ็กต์ (ไฮไลต์ด้วยสีแดงในภาพหน้าจอด้านบน) รหัสโปรเจ็กต์ต้องเป็นชื่อที่ไม่ซ้ำกันในทุกโปรเจ็กต์ 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 ในแถบเครื่องมือด้านขวาบน
จากนั้นคลิกเริ่ม Cloud Shell
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 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 เพื่อดูเนื้อหาไฟล์ก็ได้ โดยทำดังนี้
เนื้อหาของไฟล์จะมีลักษณะดังนี้
# [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 []
ยืนยันการติดตั้งใช้งาน
ทําตามขั้นตอนต่อไปนี้เพื่อดูการติดตั้งใช้งานในคอนโซล Google Cloud Platform
- ในคอนโซลแพลตฟอร์มระบบคลาวด์ ให้เปิดเมนูผลิตภัณฑ์และบริการที่มุมซ้ายบนของคอนโซล (เส้นแนวนอน 3 เส้น)
- คลิกเครื่องมือจัดการการทำให้ใช้งานได้
- คลิก Lustre เพื่อดูรายละเอียดของการติดตั้งใช้งาน
- คลิกภาพรวม - Lustre แผงคุณสมบัติของการปรับใช้งานจะแสดงการกำหนดค่าการปรับใช้งานโดยรวม
- คลิก "ดู" ในพร็อพเพอร์ตี้ Config แผงการกําหนดค่าจะแสดงเนื้อหาของไฟล์ YAML สำหรับการกําหนดค่าการทําให้ใช้งานได้ซึ่งแก้ไขก่อนหน้านี้ โปรดตรวจสอบว่าเนื้อหาถูกต้องก่อนดำเนินการต่อ หากต้องการเปลี่ยนการกำหนดค่าการทำให้ใช้งานได้ ให้ลบการทำให้ใช้งานได้ตามขั้นตอนใน "ล้างข้อมูลการทำให้ใช้งานได้" แล้วเริ่มการทำให้ใช้งานได้อีกครั้งตามขั้นตอนใน "กำหนดค่า YAML ของการทำให้ใช้งานได้ของ Lustre"
- (ไม่บังคับ) ในส่วน Lustre-cluster ให้คลิกทรัพยากรแต่ละรายการที่สร้างโดยเทมเพลต Lustre.jinja และตรวจสอบรายละเอียด
เมื่อยืนยันการกําหนดค่าของการปรับใช้งานแล้ว ให้ตรวจสอบว่าอินสแตนซ์ของคลัสเตอร์เริ่มทํางานแล้ว ในคอนโซล Cloud Platform ให้คลิก Compute Engine > อินสแตนซ์ VM ในเมนูผลิตภัณฑ์และบริการ
ในหน้าอินสแตนซ์ VM ให้ตรวจสอบอินสแตนซ์เครื่องเสมือน 5 รายการที่สร้างโดยเครื่องมือจัดการการนําส่ง ซึ่งรวมถึง lustre-mds1, lustre-oss1, lustre-oss2, lustre-oss3 และ lustre-oss4
5. เข้าถึงคลัสเตอร์ Lustre
ตรวจสอบการติดตั้ง
ในหน้าอินสแตนซ์ VM ให้คลิก lustre-mds1 เพื่อเปิดหน้ารายละเอียดอินสแตนซ์
คลิกพอร์ตซีเรียล 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 นาที ขอขอบคุณ