Pemecahan masalah penyimpanan - FSxuntuk Lustre

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pemecahan masalah penyimpanan

Pada beberapa kasus, Anda mungkin mengalami masalah penyimpanan dengan sistem file Anda. Anda dapat memecahkan masalah ini dengan menggunakan perintah lfs, seperti perintah lfs migrate.

Kesalahan tulis karena tidak ada ruang pada target penyimpanan

Anda dapat memeriksa penggunaan penyimpanan sistem file Anda dengan menggunakan perintah lfs df -h, seperti yang dijelaskan di Layout penyimpanan sistem file. Bidang filesystem_summary melaporkan total penggunaan penyimpanan sistem file.

Jika penggunaan disk sistem file 100%, pertimbangkan untuk meningkatkan kapasitas penyimpanan sistem file Anda. Untuk informasi selengkapnya, lihat Mengelola kapasitas penyimpanan.

Jika penggunaan penyimpanan sistem file tidak 100% dan Anda masih mendapatkan kesalahan penulisan, file yang Anda tulis mungkin bergaris pada file OST yang penuh.

Tindakan yang harus diambil

  • Jika banyak dari OSTs Anda penuh, tingkatkan kapasitas penyimpanan sistem file Anda. Periksa penyimpanan yang tidak seimbang OSTs dengan mengikuti tindakan Penyimpanan tidak seimbang pada OSTs bagian.

  • Jika Anda OSTs tidak penuh, atur ukuran buffer halaman kotor klien dengan menerapkan penyetelan berikut ke semua instance klien Anda:

    sudo lctl set_param osc.*.max_dirty_mb=64

Penyimpanan tidak seimbang pada OSTs

Amazon FSx for Lustre mendistribusikan strip file baru secara merata. OSTs Namun, sistem file Anda mungkin masih menjadi tidak seimbang karena pola I/O atau tata letak penyimpanan file. Akibatnya, beberapa target penyimpanan dapat menjadi penuh sementara yang lain tetap relatif kosong.

Anda menggunakan lfs migrate perintah untuk memindahkan file atau direktori dari lebih penuh ke kurang penuh. OSTs Anda dapat menggunakan lfs migrate perintah dalam mode blok atau non-blok.

  • Mode blok adalah mode default untuk lfs migrate perintah. Saat dijalankan dalam mode blok, lfs migrate pertama-tama memperoleh kunci grup pada file dan direktori sebelum migrasi data untuk mencegah modifikasi pada file, lalu lepaskan kunci saat migrasi selesai. Dengan mencegah proses lain memodifikasi file, mode blok mencegah proses ini mengganggu migrasi. Kelemahannya adalah mencegah aplikasi memodifikasi file dapat mengakibatkan penundaan atau kesalahan untuk aplikasi.

  • Mode non-blok diaktifkan untuk lfs migrate perintah dengan -n opsi. Saat berjalan lfs migrate dalam mode non-blok, proses lain masih dapat memodifikasi file yang sedang dimigrasikan. Jika proses memodifikasi file sebelum lfs migrate selesai memigrasinya, lfs migrate akan gagal memigrasikan file itu, meninggalkan file dengan tata letak garis aslinya.

Kami menyarankan Anda menggunakan mode non-blok, karena kecil kemungkinannya mengganggu aplikasi Anda.

Tindakan yang harus diambil

  1. Luncurkan instance klien yang relatif besar (seperti jenis EC2 c5n.4xlarge instans Amazon) untuk dipasang ke sistem file.

  2. Sebelum menjalankan skrip mode non-blok pr skrip blok-mode, pertama-tama jalankan perintah berikut pada setiap instance klien untuk mempercepat proses:

    sudo lctl set_param 'mdc.*.max_rpcs_in_flight=60' sudo lctl set_param 'mdc.*.max_mod_rpcs_in_flight=59'
  3. Mulai sesi layar dan jalankan skrip mode non-blok atau skrip mode blok. Pastikan untuk mengubah variabel yang sesuai dalam skrip:

    • Skrip mode non-blok:

      #!/bin/bash # UNCOMMENT THE FOLLOWING LINES: # # TRY_COUNT=0 # MAX_MIGRATE_ATTEMPTS=100 # OSTS="fsname-OST0000_UUID" # DIR_OR_FILE_MIGRATED="/mnt/subdir/" # BATCH_SIZE=10 # PARALLEL_JOBS=16 # up to max-procs processes, set to 16 if client is c5n.4xlarge with 16 vcpu # LUSTRE_STRIPING_CONFIG="-E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32" # should be consistent with the existing striping setup # if [ -z "$TRY_COUNT" -o -z "$MAX_MIGRATE_ATTEMPTS" -o -z "$OSTS" -o -z "$DIR_OR_FILE_MIGRATED" -o -z "$BATCH_SIZE" -o -z "$PARALLEL_JOBS" -o -z "$LUSTRE_STRIPING_CONFIG" ]; then echo "Some variables are not set." exit 1 fi echo "lfs migrate starts" while true; do output=$(sudo lfs find ! -L released --ost $OSTS --print0 $DIR_OR_FILE_MIGRATED | shuf -z | /bin/xargs -0 -P $PARALLEL_JOBS -n $BATCH_SIZE sudo lfs migrate -n $LUSTRE_STRIPING_CONFIG 2>&1) if [[ $? -eq 0 ]]; then echo "lfs migrate succeeds for $DIR_OR_FILE_MIGRATED at the $TRY_COUNT attempt, exiting." exit 0 elif [[ $? -eq 123 ]]; then echo "WARN: Target data objects are not located on these OSTs. Skipping lfs migrate" exit 1 else echo "lfs migrate fails for $DIR_OR_FILE_MIGRATED at the $TRY_COUNT attempt, retrying..." if (( ++TRY_COUNT >= MAX_MIGRATE_ATTEMPTS )); then echo "WARN: Exceeds max retry attempt. Skipping lfs migrate for $DIR_OR_FILE_MIGRATED. Failed with the following error" echo $output exit 1 fi fi done
    • Skrip mode blok:

      • Ganti nilai OSTS dengan nilai AndaOSTs.

      • Berikan nilai integer nproc untuk mengatur jumlah proses max-procs untuk dijalankan secara paralel. Misalnya, jenis EC2 c5n.4xlarge instans Amazon memiliki 16vCPUs, sehingga Anda dapat menggunakan 16 (atau nilai < 16) untuknproc.

      • Berikan jalur direktori mount Anda dimnt_dir_path.

      # find all OSTs with usage above a certain threshold; for example, greater than or equal to 85% full for OST in $(lfs df -h |egrep '( 8[5-9]| 9[0-9]|100)%'|cut -d' ' -f1); do echo ${OST};done|tr '\012' ',' # customer can also just pass OST values directly to OSTS variable OSTS='dzfevbmv-OST0000_UUID,dzfevbmv-OST0002_UUID,dzfevbmv-OST0004_UUID,dzfevbmv-OST0005_UUID,dzfevbmv-OST0006_UUID,dzfevbmv-OST0008_UUID' nproc=<Run up to max-procs processes if client is c5n.4xlarge with 16 vcpu, this value can be set to 16> mnt_dir_path=<mount dir, e.g. '/my_mnt'> lfs find ${mnt_dir_path} --ost ${OSTS}| xargs -P ${nproc} -n2 lfs migrate -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32

Catatan

  • Jika Anda melihat bahwa ada dampak pada kinerja pembacaan sistem file, Anda dapat menghentikan migrasi kapan saja dengan menggunakan ctrl-c atau kill -9, dan mengurangi jumlah utas (nprocnilai) kembali ke angka yang lebih rendah (seperti 8), dan melanjutkan migrasi file.

  • lfs migratePerintah akan gagal pada file yang juga dibuka oleh beban kerja klien. Ini akan menimbulkan kesalahan dan pindah ke file berikutnya; oleh karena itu, dimungkinkan jika ada banyak file yang diakses, skrip tidak akan dapat memigrasi file apa pun, dan itu akan tercermin karena migrasi membuat kemajuan yang sangat lambat.

  • Anda dapat memantau OST penggunaan menggunakan salah satu metode berikut

    • Pada pemasangan klien, jalankan perintah berikut untuk memantau OST penggunaan dan temukan penggunaan OST dengan lebih dari 85%:

      lfs df -h |egrep '( 8[5-9]| 9[1-9]|100)%'
    • Periksa CloudWatch metrik Amazon,OST FreeDataStorageCapacity, periksaMinimum. Jika skrip Anda menemukan OSTs bahwa lebih dari 85% penuh, maka ketika metrik mendekati 15%, gunakan ctrl-c atau kill -9 untuk menghentikan migrasi.

  • Anda juga dapat mempertimbangkan mengubah konfigurasi stripe sistem file atau direktori, sehingga file baru memiliki stripe di beberapa target penyimpanan. Untuk informasi lebih lanjut, lihat di Sedang melakukan stripe data di sistem file Anda.