diff --git a/setup/fio-setup-basic b/setup/fio-setup-basic
index c15ecb1d3..fd66e2b52 100755
--- a/setup/fio-setup-basic
+++ b/setup/fio-setup-basic
@@ -68,10 +68,18 @@ fi
 [ -z "$storages" ] && die "storages is empty, we can't get jobs_per_storage and nr_task_remain"
 for storage in $storages
 do
-	mnt_point=$(stat -c %m $(readlink -f $storage))
-	available_storage_size=$(df -k | awk '{print $4" "$NF}' | grep $mnt_point$ | awk '{print $1}')
-	[ -n "$available_storage_size" ] || die "storage $storage doesn't mounted"
-	available_storage_size=$(to_byte ${available_storage_size}k)
+	if [ "$raw_disk" = 1 ]; then
+		# for raw disk, using lsblk to get disk capacity in bytes instead of reading filesystem stats
+		# because raw disk will not mount filesystem
+		available_storage_size=$(lsblk -b | grep $(basename $storage) | awk '{print $4}')
+		[ -n "$available_storage_size" ] || die "device $storage doesn't exist"
+	else
+		mnt_point=$(stat -c %m $(readlink -f $storage))
+		available_storage_size=$(df -k | awk '{print $4" "$NF}' | grep $mnt_point$ | awk '{print $1}')
+		[ -n "$available_storage_size" ] || die "storage $storage doesn't mounted"
+		available_storage_size=$(to_byte ${available_storage_size}k)
+	fi
+
 
 	require_size=$test_size
 	df | grep $mnt_point$ | awk '{print $1}' | grep -q /dev/pmem && require_size=$size