微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在KVM-QEMU中创建4K扇区大小的NVMe

如何解决如何在KVM-QEMU中创建4K扇区大小的NVMe

出于测试目的,我将创建一个虚拟机,如下所示:

qemu-img create -f qcow2 \
-o cluster_size=4096,preallocation=full \
/home/marcop/.libvirt/nvme-20G.qcow2 20G

qemu-system-x86_64 -machine q35,accel=kvm \
  -m 4096 \
  -smp 4 \
  -cpu host \
  -boot d \
  -cdrom /var/lib/libvirt/isos/archlinux-2020.10.01-x86_64.iso \
  -drive file=/home/marcop/.libvirt/nvme-20G.qcow2,if=none,aio=native,cache.direct=on,id=D24 \
  -device nvme,drive=D24,serial=1234,logical_block_size=4096,physical_block_size=4096

在计算机内部引导时,我使用fdisk和nvme-cli检查扇区大小,但始终为512B。

pacman -Sy nvme-cli
fdisk -l /dev/nvme0n1

输出

disk /dev/nvme0n1: 20 GiB,21474836480 bytes,41943040 sectors
disk model: QEMU NVMe Ctrl
Units: sectors of 1 * 512 = 512 bytes
Sector size (logica/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

使用nvme-cli查找可用的扇区大小模式(有关NVMe的详细信息,请参见herehere

nvme id-ns /dev/nvme0n1

返回输出

NVME Identify Namespace 1:
nsze    : 0x2800000
ncap    : 0x2800000
nuse    : 0x2800000
nsfeat  : 0
nlbaf   : 0
flbas   : 0
mc      : 0
dpc     : 0
dps     : 0
nmic    : 0
rescap  : 0
fpi     : 0
dlfeat  : 0
nawun   : 0
nawupf  : 0
nacwu   : 0
nabsn   : 0
nabo    : 0
nabspf  : 0
noiob   : 0
nvmcap  : 0
nsattr  : 0
nvmsetid: 0
anagrpid: 0
endgid  : 0
nguid   : 00000000000000000000000000000000
eui64   : 0000000000000000
lbaf  0 : ms:0   lbads:9  rp:0 (in use)

表示只有一个扇区配置文件退出。为了进行比较,针对我的物理NVMe发出的同一命令的输出将返回

[...]
lbaf  0 : ms:0   lbads:9  rp:0x2 (in use)
lbaf  1 : ms:0   lbads:12 rp:0x1 

任何帮助将不胜感激!

解决方法

运行命令格式化为 4k。但请注意,该格式会清除数据。

nvme format /dev/nvme0n1 --lbaf=1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。