파일을 사용하여 NVMe 장치를 에뮬레이션할 수 있나요? 나는 qemu를 사용하고 싶지 않습니다. 내 컴퓨터에서는 정말 느립니다.
답변1
예, 가능합니다. 하지만 NVME 대상 지원이 필요합니다.
- 커널 모듈이 있는지 확인하십시오:
nvme_loop
,nvmet
,nvme_fabrics
- 파일에 루프 장치를 설정합니다.
losetup /dev/loop0 /tmp/mynvmefile
- 얻다NVME 타겟 CLI, 종속성이 있는지 확인하세요.
configshell-fb
기본 부서이고 제대로 선언되지 않았습니다.setup.py
examples/loop.json
nvmetcli에서 편집:device
예제의 배경을/dev/loop0
(기본값은/dev/nvme0n1
)로 변경합니다.
- 목표를 설정하다:
sudo ./nvmetcli restore examples/loop-modified.json
- 커널 로그에는 한 줄만 있어야 합니다.
nvmet: adding nsid 1 to subsystem testnqn
- 커널 로그에는 한 줄만 있어야 합니다.
- nvme-cli 도구를 사용하여 대상에 연결합니다.
nvme connect -t loop -n testnqn -q hostnqn
- 이익!
생성 및 연결 후 dmesg 출력 예
nvmet: adding nsid 1 to subsystem testnqn
nvmet: creating controller 1 for subsystem testnqn for NQN hostnqn.
nvme nvme0: creating 8 I/O queues.
nvmet: adding queue 1 to ctrl 1.
nvmet: adding queue 2 to ctrl 1.
nvmet: adding queue 3 to ctrl 1.
nvmet: adding queue 4 to ctrl 1.
nvmet: adding queue 5 to ctrl 1.
nvmet: adding queue 6 to ctrl 1.
nvmet: adding queue 7 to ctrl 1.
nvmet: adding queue 8 to ctrl 1.
nvme nvme0: new ctrl: "testnqn"
NVME 정보:
# nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 191b474c759f6b80 Linux 1 134.22 MB / 134.22 MB 4 KiB + 0 B 4.14.0-r
fio는 이 가짜 장치(디스크의 파일이 아닌 메모리로 지원됨)에서 실행됩니다.
# fio --filename=/dev/nvme0n1 --rw=write --bs=4k --numjobs=1 \
--iodepth=1 --runtime=60 --time_based --group_reporting \
--name=journal-test
journal-test: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=psync, iodepth=1
fio-2.16
Starting 1 process
Jobs: 1 (f=1): [W(1)] [100.0% done] [0KB/951.4MB/0KB /s] [0/244K/0 iops] [eta 00m:00s]
journal-test: (groupid=0, jobs=1): err= 0: pid=13352: Thu Oct 19 13:26:18 2017
write: io=110476MB, bw=1840.5MB/s, iops=471152, runt= 60027msec
clat (usec): min=0, max=85222, avg= 1.78, stdev=190.60
lat (usec): min=0, max=85222, avg= 1.84, stdev=190.60
clat percentiles (usec):
| 1.00th=[ 0], 5.00th=[ 0], 10.00th=[ 1], 20.00th=[ 1],
| 30.00th=[ 1], 40.00th=[ 1], 50.00th=[ 1], 60.00th=[ 1],
| 70.00th=[ 1], 80.00th=[ 1], 90.00th=[ 2], 95.00th=[ 2],
| 99.00th=[ 2], 99.50th=[ 3], 99.90th=[ 9], 99.95th=[ 9],
| 99.99th=[ 21]
lat (usec) : 2=88.18%, 4=11.50%, 10=0.27%, 20=0.03%, 50=0.01%
lat (usec) : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01%
lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%
lat (msec) : 100=0.01%
cpu : usr=26.90%, sys=39.40%, ctx=3488, majf=0, minf=11
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%, >=64=0.0%
issued : total=r=0/w=28281845/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: io=110476MB, aggrb=1840.5MB/s, minb=1840.5MB/s, maxb=1840.5MB/s, mint=60027msec, maxt=60027msec
Disk stats (read/write):
nvme0n1: ios=0/12044, merge=0/3027439, ticks=0/347358, in_queue=318011, util=46.10%