我已经升级到了 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服务,共享给所有的虚拟机/内网设备。
准备工作
服务器端
Windows Hyper-V Server 2019 安装盘
直接去微软评估中心填一下资料并且下载即可。说是评估版,但是evaluate时间是ulimited,也就是可以无限白嫖的意思,并且安装的时候也不需要cdk啥的,所以放心用。
另外,使用Rufus或者别的啥你喜欢的工具制作启动盘,再此不再赘述。Windows Admin Center
这不是一个必要的选项,你可以选择直接在服务器上管理你的服务器和虚拟机,也可以选择在别的电脑RDP+hyper-V Manager管理,也可以用Windows Admin Center来管理。
同样地,去这里填写个人资料并下载。驱动
Hyper-V Server可能会缺失一些驱动,至少它没有我T40服务器的网卡驱动。我直接去Dell官方支持下载了对应的.exe网卡驱动,将此可执行文件解包之后发现它有一个命令行安装驱动的工具Setup.exe,阅读附带的文档之后发现应该可以直接运行Setup.exe安装。放入u盘备用。Windows/Linux 镜像
自行下载你要安装到虚拟机上的系统镜像。GNU/Linux直接用,Windows可以用KMS激活,在此同样不展开。
将Windows Admin Center、驱动和你要装进虚拟机的镜像拷到U盘里。额外的硬盘
我插了两块硬盘,一块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 | # 列出所有硬盘 |
输入Z:
进入U盘分区,可以用dir
命令看一下分区下有啥文件。我的网卡驱动放在Z:\T40\Setup.exe,于是
1 | Z:\> cd T40 |
根据跳出来的提示进行安装。
此时进入路由器设置给服务器分配一个静态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 | # 开启Powershell远程管理 |
至此服务器就配置完成。你现在可以使用RDP来连接到你的服务器了。而远程管理Hypver-V服务,需要在客户端进行下面的设置。
客户端 - Hyper-V的远程配置
将网络设置为专用
依次进入Windows设置 > 网络和Internet > 状态 > 属性 > 设置为专用
。此举提升了连接的安全等级。
启动Hyper-V管理工具
用Windows自带搜索搜索启用或关闭Windows功能
,找到Hyper-V
,打上勾点击确定然后重启。注意Hyper-V平台
可能会和某些虚拟机有冲突,可以不启用,看个人需求。
修改组策略
按下Win+R
,输入gpedit.msc
,找到计算机配置 > 管理模版 > 系统 > 凭据分配 > 允许分配新的凭据用于仅NTLM服务器身份验证
,选择已启用
,点击显示...
,将下面两条添加到列表:
1 | wsman/* |
确定,退出。
开启WinRM
用Windows自带搜索搜索powershell
,找到并右击使用管理员身份运行,并运行如下命令
1 | winrm quickconfig |
用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了。