0%

Hyper-V Server 2019踩坑

我已经升级到了 Win Server 2022,讲真这个比 Hyper-V Server 香多了。同时我还在另一台服务器上部署了 PVE,这个也比 Hyper-V Server 香。可以参见 https://blog.tangbao.me/2022/01/winserver-2022-and-pve/。建议早日升级 HyperV Server,因为它并没有相应的 2022 版。

没想到这篇文章也被我咕咕咕了三个多月,我已经将系统从预装的1T HDD转移到了1T的SSD中,本文以我最新配置为准。

黑五之前收回来的那台Dell T40 Server终于被我开箱大吉了。服务器嘛,当然是装好多虚拟机来榨干它的性能啦。一开始我是打算装一个Ubuntu Server然后KVM装各种虚拟机的,不过了解了一番微软家的Hyper-V Server之后,我决定拥抱这个操作系统,大概有如下理由:

  • 微软唯一免费的系统,香
  • 可以通过另一台windows上的Hyper-V管理器管理虚拟机,GUI太香
  • Windows Admin Center可以让我在任何地方管理我的服务器和虚拟机,web端管理更香了
  • 考虑到我没有太过专业的需求,就算Hyper-V对于KVM有各种各样的坑,也应该可以满足我的日常使用了

Target

  • 在T40服务器上安装Hyper—V Server 2019,并且安装各类虚拟机。
  • 使用另一台电脑上的Hyper-V Manager来管理服务器上的虚拟机;
  • 使用RDP来远程链接T40服务器;
  • 使用Windows Admin Center来远程管理T40服务器和服务器上的虚拟机。
  • 在服务器上部署SMB服务,共享给所有的虚拟机/内网设备。

准备工作

服务器端

  1. Windows Hyper-V Server 2019 安装盘
    直接去微软评估中心填一下资料并且下载即可。说是评估版,但是evaluate时间是ulimited,也就是可以无限白嫖的意思,并且安装的时候也不需要cdk啥的,所以放心用。
    另外,使用Rufus或者别的啥你喜欢的工具制作启动盘,再此不再赘述。

  2. Windows Admin Center
    这不是一个必要的选项,你可以选择直接在服务器上管理你的服务器和虚拟机,也可以选择在别的电脑RDP+hyper-V Manager管理,也可以用Windows Admin Center来管理。
    同样地,去这里填写个人资料并下载。

  3. 驱动
    Hyper-V Server可能会缺失一些驱动,至少它没有我T40服务器的网卡驱动。我直接去Dell官方支持下载了对应的.exe网卡驱动,将此可执行文件解包之后发现它有一个命令行安装驱动的工具Setup.exe,阅读附带的文档之后发现应该可以直接运行Setup.exe安装。放入u盘备用。

  4. Windows/Linux 镜像
    自行下载你要安装到虚拟机上的系统镜像。GNU/Linux直接用,Windows可以用KMS激活,在此同样不展开。
    将Windows Admin Center、驱动和你要装进虚拟机的镜像拷到U盘里。

  5. 额外的硬盘
    我插了两块硬盘,一块4T WD Red Pro和一块1T Intel 545s,将其装入托架中并插入机箱。

其他

我准备了一台安装了Win 10 Pro的笔记本,开启Hyper-V管理器(Home版是没有Hyper-V管理器的),并且将此笔记本和服务器置于同一个内网。

如果笔记本和服务器不在同一个内网,想使用RDP或者Windows Admin Center,可以试试内网穿透。具体可以参见这篇文章

服务器端 - 系统安装和设置 & SMB

安装和普通windows的安装是一样的,我将系统装到了SSD上以提升性能。我打算将虚拟机也放在SSD上,1T原装东芝HDD用于重要文件备份,4T红盘用于当仓库盘。

修改计算机名

登陆之后可以看到两个窗口,一个是cmd,另一个是蓝色的Server Configuration。在Server Configuration窗口下输入2回车修改自己的计算机名。这步比较重要因为后面的Hyper-V管理需要通过计算机名来控制。修改完成后重启。

安装网卡和分配固定IP

切换到cmd窗口,输入diskpart回车,进入diskpart来给U盘分配一个盘符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 列出所有硬盘
DISKPART> list disk

# 根据容量找到你的u盘,并且选择它。这里假设它的Disk ###是Disk 3
DISKPART> select Disk 3

# 列出U盘分区
DISKPART> list partition

# 选择对应分区,我的U盘只有一个分区,所以选Partition 1
DISKPART> select partition 1

# 给该分区分配盘符为z
DISKPART> assign letter=z

# 退出
DISKPART> exit

输入Z:进入U盘分区,可以用dir命令看一下分区下有啥文件。我的网卡驱动放在Z:\T40\Setup.exe,于是

1
2
Z:\> cd T40
Z:\T40> Setup.exe

根据跳出来的提示进行安装。

此时进入路由器设置给服务器分配一个静态ip,然后重启路由器和服务器。在Server Configuration窗口中输入8进入Network Settings看到它的ip为你设置的静态ip即为成功。

安装Windows Admin Center

这个安装很简单,假设我把安装包WAC.msi放在了Z:\下,那么在cmd中,执行

1
Z:\>WAC.msi

一般说来用默认设置一直next下去就可以了。我改了其中两点,一个是Use Microsoft Update when I check for updates (recommended)来使用MS自带更新更新Windows Admin Center,另一个是开启了Redirect HTTP port 80 traffic to HTTPS来重定向HTTP访问,即强制开启HTTPS。

安装完成之后,你可以在同一台局域网内的电脑上使用 https://YOUR_COMPUTER_NAME:443/ 或者 https://YOUR_COMPUTER_IP:443/ 来访问服务器上的Windows Admin Center并对其进行管理了。当然,:443是可以略去的,毕竟https默认端口就是443。虚拟机设置,SMB设置均可以在其中找到。

Windows Admin Center中开启SMB

实际上服务器的每一个盘都是默认被分享的,你可以使用例如\\ip_address\c$的地址在windows客户端中添加一个网络位置/映射网络驱动器,来访问服务器端的C盘。

如果想管理/新建分享,可以在左侧Tools > Files中管理你的文件,Tools > Storage > File shares中管理你的分享。你可以将Guest加入到允许访问的账户列表中(需要在服务器端启用Guest账户,参见下面的小节),来将你的smb共享分享给局域网中的其他用户。

服务器端的其他设置

启用Guest账户

cmd窗口中,你可以输入如下命令查看Guest账户是否已经启用:

1
C:\>net user guest | findstr /C:"active"

返回的结果类似于

1
Account active               No

可以使用如下命令启用Guest

1
net user guest /active:yes

远程管理(RDP/远程Hyper-V设置)

Server Configuration窗口中以此进入4和7 Enable Remote Management和Remote Desktop。配置7的时候选择1) Allow only clients running Rmote Desktop with Network Level Authentication (more secure)

切换到cmd窗口,输入powershell进入ps。

1
2
3
4
5
6
7
8
9
10
11
# 开启Powershell远程管理
Enable-PSRemoting

# 开启CredSSP身份验证
Enable-WSManCredSSP -role server

# 关闭防火墙
netsh advfirewall set currentprofile state off

# 退出ps
exit

至此服务器就配置完成。你现在可以使用RDP来连接到你的服务器了。而远程管理Hypver-V服务,需要在客户端进行下面的设置。

客户端 - Hyper-V的远程配置

将网络设置为专用

依次进入Windows设置 > 网络和Internet > 状态 > 属性 > 设置为专用。此举提升了连接的安全等级。

启动Hyper-V管理工具

用Windows自带搜索搜索启用或关闭Windows功能,找到Hyper-V,打上勾点击确定然后重启。注意Hyper-V平台可能会和某些虚拟机有冲突,可以不启用,看个人需求。

修改组策略

按下Win+R,输入gpedit.msc,找到计算机配置 > 管理模版 > 系统 > 凭据分配 > 允许分配新的凭据用于仅NTLM服务器身份验证,选择已启用,点击显示...,将下面两条添加到列表:

1
2
wsman/*
termsvr/*

确定,退出。

开启WinRM

用Windows自带搜索搜索powershell,找到并右击使用管理员身份运行,并运行如下命令

1
2
3
4
5
winrm quickconfig

# 将"MY_SERVER_NAME"换成你在上面设置的计算机名
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "MY_SERVER_NAME"
Enable-WSManCredSSP -Role client -DelegateComputer "MY_SERVER_NAME"

用Hyper-V管理器远程连接到服务器

用Windows自带搜索搜索Hyper-V管理器,打开。在左边的Hyper-V管理器上右击,选择连接到服务器(C)...

选择另一台计算机,并填入计算机名,并勾选作为另一个用户连接,然后选择设置用户。这里假设你的用户名是默认的Administrator,那么你在登陆设置用户的时候必须输入\Administrator,注意不要少掉\,然后就可以成功添加服务器了。

接下来,你就可以像在管理本地Hyper-V虚拟机一样,管理远程服务器端的虚拟机了。当然,Windows Admin Center中也可以添加和修改虚拟机。

访问子网中的smb服务

我的T40服务器在我的192.168.100.x子网中,而这个子网通过一个ip为192.168.100.1和192.168.1.100的路由器连接在了192.168.1.x局域网中。如果想要在192.168.1.x中访问T40服务器,需要在192.168.100.1路由器上关闭防火墙,并开启端口转发。SMB在137 138端口使用了UDP,139 389 445端口使用了TCP,所以将这几个端口的请求转发到T40服务器去即可。设置完成吼,你可以在192.168.1.x局域网中使用\\\192.168.1.100\SHARE_NAME\访问服务器上的SMB共享了。

因为我路由器的固件之前似乎出现了一点问题,我搞了一个月都没成功。今天升级了一下固件,就可以成功访问SMB了。