帮助

准备用于部署云服务器的镜像

在从镜像创建云服务器之前,需要进行预先配置。这样可以确保安装成功,并保证管理面板可靠运行。

下文将介绍成功部署服务器所需的检查和配置。

基本设置

分区表

请确保磁盘分区结构正确。我们建议使用 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

如有任何疑问,请联系我们