amd服务器开启虚拟化,记一次 AMD 虚拟化 IOMMU 开启过程

起因

开始是这样的,需要做一些虚拟化的工作,发现需要开启IOMMU开启网卡直通,过程也是很曲折。

过程阶段一 失败

通过网上的教程,参考文章如下:https://www.jianshu.com/p/035287ba9acb (写得比较好的一篇,但漏掉了AMD CPU的相关信息)

# vim /etc/default/grub

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="console"

GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet amd_iommu=on"

GRUB_DISABLE_RECOVERY="true"

开启了第一遍,开机重启好几次,终于在BIOS中打开了对应的选项,遂启动。

然后开机过程中报错:ATA1.00: revalidation failed 而且还执行了100多秒,重复如此几次,最后还是报错进入紧急恢复模式。

然后放弃,此时凌晨3点,无解。

过程阶段二 失败

几天后,还是开始尝试阶段一的方案,这中间不断重启了N次,期间还经历了两次由于硬盘温度过高导致的自动关机。

然后就拆下硬盘用风扇吹,最后突然发现日志最后提示的是硬盘未找到,简单说就是硬盘没有被识别到。

于是在只保留一块系统硬盘的情形下开机了,此时直接无视阶段一的100s,等就是了。于是真的进入到了系统。

执行如下命令,可以看到结果实际上是成功了。

[root@vm ~]# dmesg | grep -E "DMAR|IOMMU"

[    1.726112] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported

[    1.728781] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40

[    1.729335] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).

于是去掉/etc/fstab中对应的磁盘挂载信息

只是在执行磁盘分区信息查看时,硬盘居然不见了,不见了,不见了

[root@vm ~]# lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sda      8:0    0 232.9G  0 disk

├─sda4   8:4    0    11G  0 part [SWAP]

├─sda2   8:2    0   566M  0 part /boot

├─sda3   8:3    0 220.8G  0 part /

└─sda1   8:1    0   550M  0 part /boot/efi

然后我搜了 iommu 无法识别硬盘, IOMMU can find disk, centos iommu disk 等几个关键词

期间介绍了几个问题,于是我尝试了 iommu=soft 这个选项,最终结果还是悲剧的。

过程阶段三 成功

通过 iommu=soft 这个选项还是搜索到了一些内容,有一些官方内容,还有一些论坛的内容:

期间有很多实时在在的内容,总得来说比国内的一些教程来好些,比如这里就看到了关键的参数:

amd_iommu=on iommu=pt

于是调整参数,加上这一段,重启系统,一切正常。

实际上在archlinux上的那片文章很早就看到了,也看到了iommu=pt相关的内容,只是没太注意,因为后面的一句话您同时需要设置iommu=pt,这将防止Linux试图接触(touching)无法直通的设备。这让我仍未这个参数实际上不是必须选项。

完整的步骤复盘

修改/etc/default/grub, 调整GRUB_CMDLINE_LINUX内容,比如我这里的

GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet amd_iommu=on iommu=pt"

执行启动选项重新生成的逻辑

# 如果服务器时UEFI启动

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

# 普通模式启动

grub2-mkconfig -o /boot/grub2/grub.cfg

在BIOS中开启IOMMU选项,如果网卡有对应的虚拟化选项记得同步开启

查看状态: dmesg | grep -E "DMAR|IOMMU"

总结

太困了,看文章太快,不仔细。

注:该内容仅对AMD系列CPU的虚拟化有参考意义,如果是Intel系列请主动忽略

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值