准备用于部署云服务器的镜像
在从镜像创建云服务器之前,需要进行预先配置。这样可以确保安装成功,并保证管理面板可靠运行。
下文将介绍成功部署服务器所需的检查和配置。
基本设置
分区表
请确保磁盘分区结构正确。我们建议使用 MBR 或 GPT 分区,因为大多数 Linux 发行版都支持它们,并且可以使用 fdisk、gdisk 等命令行工具进行配置。
gdisk -l /dev/vda
输出示例:
GPT fdisk (gdisk) version 1.0.5
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
如果使用的是其他分区结构,可能需要使用正确的配置重新制作镜像。
磁盘分区
如果磁盘上只有一个分区(根分区),并且使用 ext3 或 ext4 文件系统,那么从镜像安装服务器时会自动调整文件系统大小,将其扩展到服务器配置中指定的磁盘大小。
例如,如果镜像中块设备的大小为 10 GB,而安装时指定的磁盘大小为 15 GB,则块设备和文件系统将自动扩展到 15 GB。
如果使用了 LVM(逻辑卷管理器),则不会扩展文件系统。
操作系统引导程序
我们使用 SeaBIOS 启动虚拟机,因此操作系统中必须安装常规的 BIOS 引导程序。如果安装的是 UEFI 引导程序,应将其删除并安装 BIOS 引导程序。
如果您使用的是 GRUB2,可以在这里找到安装和配置说明。
配置 /etc/fstab
为保证系统稳定运行,需要在 /etc/fstab 文件中为根分区配置按 UUID 挂载。示例:
UUID=f19002a1-6e7a-45ac-91cd-24b7cc0e4cd9 / ext4 defaults 0 1
要获取分区的 UUID,可以使用以下命令:
blkid
输出示例:
/dev/vda1: UUID="f19002a1-6e7a-45ac-91cd-24b7cc0e4cd9" TYPE="ext4" PARTUUID="f7a1fae1-01"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
主用户存在
创建服务器时,系统会为 root 用户(Windows 中为 Administrator)生成密码。请确保该用户存在。通常只要没有被特意删除,该用户就是存在的。
qemu-guest-agent 已安装
请检查 qemu-guest-agent 服务是否已安装并处于运行状态。管理面板中的某些操作(例如创建备份)需要用到该服务。
- 检查服务状态。
Systemd:
systemctl status qemu-guest-agent.service
OpenRC 和 init.d:
/etc/init.d/qemu-guest-agent status
或者:
service qemu-guest-agent status
- 如果系统中没有该代理,请安装:
Debian/Ubuntu:
apt-get install qemu-guest-agent
CentOS / RHEL:
yum install qemu-guest-agent
Alpine Linux:
apk add qemu-guest-agent
- 设置开机自启:
Systemd:
systemctl enable qemu-guest-agent.service
init.d:
chkconfig --add qemu-guest-agent
OpenRC:
rc-update add qemu-guest-agent
对于 Windows,需要使用专用的 ISO 镜像安装此服务,该镜像可以在这里下载。借助它,您还可以安装支持虚拟化设备所需的 virtio 驱动程序。
完成这些设置就足以从镜像创建云服务器。不过,为了更方便地使用服务器,建议完成其余设置。
附加设置
网络设置
服务器启动后,确保其可以通过网络访问非常重要。为此,我们需要配置 DHCP 客户端,以自动获取 IP 和 IPv6 地址。
大多数系统默认已安装 DHCP 客户端,但我们建议使用 dhclient 工具,并采用以下设置:
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option dhcp6.next-hop code 242 = ip6-address;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers, dhcp6.next-hop;
timeout 300;
SSH 访问
由于通常使用 SSH 协议远程访问服务器,因此务必检查 SSH 是否已安装,并且会在服务器启动时自动运行。
- 检查状态:
Systemd:
systemctl status ssh.service
OpenRC 和 init.d:
/etc/init.d/ssh status
或者:
service ssh status
- 如果没有 SSH,请安装:
Debian/Ubuntu:
apt-get install openssh-server
CentOS / RHEL:
yum -y install openssh-server openssh-clients
Alpine Linux:
apk add openssh
- 设置开机自启:
Systemd:
systemctl enable ssh.service
Init.d:
chkconfig --add ssh
OpenRC:
rc-update add sshd
- 此外,请确保所用防火墙允许访问 SSH 端口(默认为 22)。
禁用 swap
建议禁用交换文件。
- 查看 swap 文件的当前状态信息:
swapon --show
输出示例:
NAME TYPE SIZE USED PRIO
/swap.img file 685M 0B -2
- 关闭 swap:
swapoff -a