Menguji performa penyimpanan blok membantu Anda memahami kemampuan perangkat penyimpanan sehingga dapat dioptimalkan. Pengujian disk mentah memberikan hasil akurat untuk performa penyimpanan blok. Topik ini menjelaskan cara menggunakan alat open-source Flexible I/O Tester (FIO) pada sistem Linux untuk menguji metrik performa utama disk mentah, seperti IOPS, throughput, dan latensi.
FIO merupakan alat pengujian performa I/O open-source yang kuat, digunakan untuk menjalankan tes beban seperti operasi baca dan tulis acak serta berurutan pada perangkat penyimpanan.
Prosedur
Menguji disk mentah memberikan ukuran yang akurat dari performa penyimpanan blok. Namun, jika perangkat penyimpanan blok berisi partisi atau sistem file, menjalankan uji stres dengan FIO dapat menyebabkan pengecualian sistem file dan kehilangan data. Sebelum memulai tes, buat Snapshot untuk mencadangkan data Anda. Untuk informasi lebih lanjut, lihat Buat snapshot.
Untuk mencegah kehilangan data, jangan uji disk sistem atau disk data yang berisi data. Disarankan untuk menguji performa disk data baru yang belum diinisialisasi dan kosong.
Hasil pengujian performa hanya bersifat referensi. Dalam lingkungan produksi, performa disk dapat bervariasi karena faktor-faktor seperti lingkungan jaringan dan akses bersamaan.
Setelah tes selesai, kelola disk baru sebagai berikut:
Jika ingin menyimpan disk, inisialisasi ulang sebelum digunakan.
Jika tidak lagi membutuhkan disk, lepas dan kemudian lepaskan.
Topik ini menggunakan gambar publik Alibaba Cloud Linux 3.2104 LTS 64-bit sebagai contoh. Prosedur dapat bervariasi tergantung pada lingkungan Anda.
Sambungkan ke instance ECS.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk masuk ke instance Linux.
Jalankan perintah berikut untuk menanyakan nama perangkat dari perangkat penyimpanan blok.
sudo fdisk -lu
Gambar di atas menunjukkan bahwa instance memiliki tiga perangkat penyimpanan blok: disk sistem /dev/vda dan dua disk data, /dev/vdb dan /dev/vdc.Jalankan perintah berikut untuk memeriksa apakah partisi dan sistem file ada pada perangkat Elastic Block Storage.
sudo blkid
Seperti yang ditunjukkan pada gambar di atas, perangkat penyimpanan blok /dev/vda dan /dev/vdb memiliki partisi dan sistem file. Output tidak berisi informasi tentang /dev/vdc, yang menunjukkan bahwa perangkat ini tidak memiliki partisi atau sistem file.
PeringatanMenjalankan uji stres dengan FIO pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan pengecualian sistem file dan kehilangan data. Jika disk data Anda memiliki partisi dan sistem file, buat disk data baru yang kosong untuk pengujian:
Buat disk bayar sesuai penggunaan dengan konfigurasi yang sama dan sambungkan ke instance untuk pengujian. Untuk informasi lebih lanjut, lihat Sambungkan disk data ke instance Linux.
Setelah tes selesai, lepaskan disk sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Lepaskan instance.
Sebelum menguji performa perangkat penyimpanan blok, cadangkan datanya untuk mencegah kehilangan data. Untuk informasi lebih lanjut, lihat Buat snapshot.
CatatanSnapshot dikenakan biaya. Untuk informasi lebih lanjut tentang penagihan snapshot, lihat Harga snapshot.
Jalankan salah satu perintah berikut untuk menginstal pustaka libaio dan alat FIO. Pilih perintah yang sesuai dengan sistem operasi Anda.
Alibaba Cloud Linux 2, Alibaba Cloud Linux 3, CentOS 6, dan versi selanjutnya
CatatanCentOS 6 telah mencapai akhir masa pakai (EOL). Sesuai aturan komunitas Linux, semua konten dihapus dari alamat repositori CentOS 6 berikut: http://mirror.centos.org/centos-6/. Jika Anda terus menggunakan repositori CentOS 6 default di Alibaba Cloud, kesalahan akan dilaporkan. Untuk menggunakan paket instalasi tertentu dari CentOS 6, ubah alamat repositori CentOS 6. Untuk informasi lebih lanjut, lihat Bagaimana cara mengubah alamat repositori CentOS 6?
sudo yum install libaio libaio-devel fio -yDebian 9, Ubuntu 14, dan versi selanjutnya
PentingKarena Debian 9 dan Debian 10 telah mencapai akhir masa pakai (EOL), jika Anda menggunakan instance ECS yang menjalankan Debian 9 atau Debian 10, Anda harus terlebih dahulu mengganti alamat repositori. Untuk informasi lebih lanjut, lihat Ganti alamat repositori untuk CentOS atau Debian setelah EOL.
sudo apt-get update sudo apt-get install libaio* fio -yUbah jalur:
cd /tmpJalankan perintah pengujian performa. Untuk informasi lebih lanjut tentang perintah, lihat bagian berikut:
Untuk perintah menguji performa disk, lihat Perintah pengujian performa disk.
Untuk perintah menguji performa disk lokal, lihat Perintah pengujian performa disk lokal.
Lihat hasil tes. Nilai bervariasi untuk disk yang berbeda. Nilai dalam gambar berikut hanya untuk referensi.
Untuk hasil tes IOPS, temukan nilai
IOPS=***, seperti yang ditunjukkan pada gambar berikut.
Untuk hasil tes throughput, temukan nilai
BW=***, seperti yang ditunjukkan pada gambar berikut:
Untuk hasil tes latensi, temukan nilai lat (usec), seperti yang ditunjukkan pada gambar berikut.

Perintah pengujian performa disk
Menjalankan uji stres dengan FIO pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan pengecualian sistem file dan kehilangan data. Jika disk data Anda memiliki partisi dan sistem file, buat disk data baru yang kosong untuk pengujian:
Buat disk bayar sesuai penggunaan dengan konfigurasi yang sama dan sambungkan ke instance untuk pengujian. Untuk informasi lebih lanjut, lihat Sambungkan Disk Data ke Instance Linux.
Setelah tes selesai:
Jika Anda ingin menyimpan disk, inisialisasi ulang.
Jika Anda tidak lagi membutuhkan disk, lepas dan kemudian lepaskan.
Nilai parameter dalam perintah sampel hanya untuk referensi. Dalam perintah, ganti /dev/your_device dengan nama perangkat penyimpanan blok yang ingin Anda uji, yang Anda peroleh di Langkah 2. Misalnya, jika nama perangkat disk yang ingin diuji adalah /dev/vdb, ganti /dev/your_device dengan /dev/vdb. Untuk informasi lebih lanjut tentang parameter FIO, lihat Deskripsi Parameter FIO.
Uji IOPS tulis acak disk:
sudo fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Write_TestingUji IOPS baca acak disk:
sudo fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Read_TestingUji throughput tulis berurutan disk:
sudo fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Write_PPS_TestingUji throughput baca berurutan disk:
sudo fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Read_PPS_TestingUji latensi tulis acak disk:
sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Write_Latency_TestingUji latensi baca acak disk:
sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Read_Latency_Testing
Untuk langkah-langkah rinci tentang cara menguji jenis disk yang berbeda, lihat Uji Performa IOPS ESSD.
Perintah pengujian performa disk lokal
Menjalankan uji stres dengan FIO pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan pengecualian sistem file dan kehilangan data. Jika disk lokal Anda memiliki partisi dan sistem file, kami sarankan untuk membuat instance baru dengan disk lokal untuk pengujian:
Disk lokal hanya dapat dibuat bersamaan dengan instance. Untuk mengujinya, buat instance baru dengan konfigurasi yang sama. Untuk informasi lebih lanjut, lihat Beli Instance Kustom.
Setelah pengujian selesai:
Jika Anda ingin menyimpan disk, inisialisasi ulang disk data.
Jika Anda tidak lagi membutuhkan disk, lepas dan kemudian lepaskan disk.
Perintah pengujian berikut berlaku untuk NVMe SSD lokal dan HDD SATA lokal. Nilai parameter dalam perintah sampel hanya untuk referensi. Dalam perintah, ganti /dev/your_device dengan nama perangkat penyimpanan blok yang ingin diuji, yang diperoleh di Langkah 2. Misalnya, jika nama perangkat disk lokal yang ingin diuji adalah /dev/vdb, ganti /dev/your_device dengan /dev/vdb. Untuk informasi lebih lanjut tentang parameter FIO, lihat Deskripsi Parameter FIO.
Uji IOPS tulis acak disk lokal:
sudo fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji IOPS baca acak disk lokal:
sudo fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji throughput tulis berurutan disk lokal:
sudo fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji throughput baca berurutan disk lokal:
sudo fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latensi tulis acak disk lokal:
sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latensi baca acak disk lokal:
sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latensi tulis berurutan disk lokal:
sudo fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latensi baca berurutan disk lokal:
sudo fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
Deskripsi parameter FIO
Tabel berikut menjelaskan parameter FIO yang digunakan dalam perintah pengujian.
Parameter | Deskripsi |
direct | Menentukan apakah akan menggunakan direct I/O. Nilai default: 1.
|
iodepth | Kedalaman antrian I/O selama pengujian. Misalnya, |
rw | Kebijakan baca dan tulis untuk pengujian. Anda dapat mengatur parameter ini ke salah satu nilai berikut:
|
ioengine | Mesin I/O yang digunakan untuk pengujian. `libaio` biasanya dipilih karena lebih mencerminkan pola aplikasi sehari-hari. Untuk informasi lebih lanjut tentang opsi lainnya, lihat dokumentasi resmi FIO. |
bs | Ukuran blok untuk setiap unit I/O. Nilai default: 4 KB. Anda dapat menentukan nilai terpisah untuk operasi baca dan tulis dalam format `read,write`. Jika nilai dibiarkan kosong, nilai default digunakan. |
size | Ukuran total file tes. FIO menghentikan tes hanya setelah membaca atau menulis jumlah data yang ditentukan, kecuali dibatasi oleh opsi lain seperti `runtime`. Jika parameter ini tidak ditentukan, FIO menggunakan ukuran penuh file atau perangkat yang ditentukan. Anda juga dapat menentukan ukuran sebagai persentase dari 1 hingga 100. Misalnya, jika Anda menentukan `size=20%`, FIO menggunakan 20% dari ukuran total file atau perangkat yang ditentukan. |
numjobs | Jumlah thread bersamaan untuk pengujian. Nilai default: 1. |
runtime | Durasi tes. Jika Anda tidak menentukan parameter ini, FIO berjalan hingga selesai membaca atau menulis ukuran file total yang ditentukan oleh size, menggunakan ukuran blok yang ditentukan oleh bs. |
group_reporting | Mode tampilan untuk hasil tes. Jika parameter ini ditentukan, hasilnya menggabungkan statistik untuk setiap proses alih-alih menampilkan statistik untuk setiap tugas. |
filename | Jalur objek yang ingin Anda uji. Jalur tersebut dapat berupa nama perangkat disk atau alamat file. Dalam topik ini, objek tes fio adalah seluruh disk yang tidak memiliki sistem file (disk mentah). Untuk mencegah data pada disk lain rusak, ganti /dev/your_device dengan jalur aktual. |
name | Nama tes. Anda dapat menentukan parameter ini sesuai kebutuhan. Misalnya, Rand_Write_Testing. |
Untuk informasi lebih lanjut mengenai parameter, lihat halaman manual FIO.