Hầu hết các nhà cung cấp đều hỗ trợ khách hàng sử dụng lệnh sau để thực hiện kiểm tra:

dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
Cách test đơn giản này được thực hiện với lệnh dd có sẵn trên Linux nhưng có thể nói nó không hoàn toàn chính xác. Có một vài vấn đề về mặt kỹ thuật như sau:

+ Lệnh này sử dụng một single-threaded và sequential-write. Nếu chạy trên một VPS với web và database thì con số trên sẽ trở nên vô nghĩa do các service cụ thể không thực hiện một tác vụ sequential writes nào dài như vậy.

+ Lượng Data test là nhỏ 1Gb do đó chắc chắn sẽ bị ảnh hưởng bới caching trên server vật lý hoặc RAID controller

+ Tùy chọn conv=fdatasync chỉ áp dụng với VPS và nó được thực thi trong thời gian rất ngắn vì thế sẽ ko có kết quả tổng thể, và bản thân lệnh trên cũng không cho biết được read performance, iops là bao nhiêu.

Một phương pháp chuẩn mực và hiệu quả hơn rất nhiều để kiểm tra và đo một cách chi tiết tốc độ của ổ SSD sử dụng phần mêm fio như sau:

Trước tiên cần setup fio như sau:

first, install prerequisites (of course, as root):

yum install libaio* gcc wget make
Then, get the current fio sources (as time of writing, the current version was 2.0.14)

wget http://brick.kernel.dk/snaps/fio-2.0.14.tar.gz
and unzip / configure them:
gunzip fio-2.0.14.tar.gz
tar -xf fio-2.0.14.tar
cd fio-2.0.14
./configure
make
make install

Sau khi setup xong chạy lệnh sau:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
Lệnh này sẽ tạo một file 4Gb và thực hiện các hoạt động đọc và ghi với các block 4Kb trong đó tỉ lệ là 75% read và 25% write, và có 64 tác vụ được chạy đồng thời mỗi lần.

Tỉ lệ 3:1 này tương đương tỉ lệ của một Database server thực tế.

Và kết quả test SSD của 1 VPS như sau:

[root@xxx ~]# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
test: (g=0): rw=randrw, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.0.14
Starting 1 process
test: Laying out IO file(s) (1 file(s) / 4096MB)
Jobs: 1 (f=0): [m] [100.0% done] [56923K/18541K/0K /s] [14.3K/4635 /0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=3129: Thu Jan 18 14:32:06 2018
read : io=3071.7MB, bw=54057KB/s, iops=13514 , runt= 58186msec
write: io=1024.4MB, bw=18027KB/s, iops=4506 , runt= 58186msec
cpu : usr=7.27%, sys=69.81%, ctx=14753, majf=0, minf=22
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
issued : total=r=786347/w=262229/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=3071.7MB, aggrb=54057KB/s, minb=54057KB/s, maxb=54057KB/s, mint=58186msec, maxt=58186msec
WRITE: io=1024.4MB, aggrb=18026KB/s, minb=18026KB/s, maxb=18026KB/s, mint=58186msec, maxt=58186msec

Disk stats (read/write):
sda: ios=782810/261257, merge=580/104, ticks=1358170/370426, in_queue=1727546, util=99.72%

Kết quả trên cho thấy:

+ Hoạt động đọc có tốc độ copy trung bình ~ 540Mb/s và IOPS trung bình ~ 13514

+ Hoạt động ghi có tốc độ copy trung bình ~ 180Mb/s và IOPS trung bình ~ 4506

Các kết quả trên xác định 100% ổ cứng đang chạy là SSD. Các con số có thể nhỉnh hơn hoặc kém một chút do là kết quả trung bình nhưng nếu kém hơn quá nhiều thì có thể đấy không phải là ổ SSD.

P/S: sưu tầm