前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Debian 9上安装OpenVZ

如何在Debian 9上安装OpenVZ

作者头像
GongAo啊_
发布2018-09-21 11:02:31
2K0
发布2018-09-21 11:02:31
举报
文章被收录于专栏:Maroon1105Maroon1105

什么是OpenVZ?

OpenVZ是一种基于软件的操作系统虚拟化工具,可以在主机Linux发行版中部署,管理和修改隔离的虚拟Linux环境。各种Linux发行版中的大量预构建操作系统模板允许用户轻松快速下载和部署虚拟环境。

开始之前

  1. 完成本教程需要root用户帐户,并且编写为命令以root用户身份发出。选择使用受限用户帐户的读者需要在必要时为命令添加前缀sudo。如果您尚未创建受限用户帐户,请按照“ 保护您的服务器”指南中的步骤操作。
  2. 本指南中的说明仅针对Debian 9编写和测试。它们不太可能适用于其他Debian或Ubuntu发行版。
  3. 运行OpenVZ需要对Debian 9系统进行某些必要的修改,包括使用SystemV删除和替换Systemd,以及使用自定义Linux内核。在继续之前,请确保机器上当前安装的所有软件都与这些更改兼容。 注意虽然不是必需的,但建议为OpenVZ模板创建单独的Ext4文件系统分区。默认情况下,Debian 9安装程序和Linode Manager格式都使用Ext4新创建了分区。有关如何完成此配置的信息,请在“ 磁盘和配置配置文件”指南中按照适用于您的环境的步骤进行操作

可选:为OpenVZ模板 创建单独的分区

如果您打算将整个Linode VPS专用于运行OpenVZ而不是其他服务,则建议为主机服务器及其进程以及任何OpenVZ虚拟服务器模板创建单独的分区。下表说明了建议的分区方案:

划分

描述

典型尺寸

/

根分区

4-12 GB

交换

分页分区

2倍RAM或RAM + 2GB(取决于可用的硬盘空间)

/ VZ

分区以托管OpenVZ模板

所有剩余的硬盘空间

  1. 登录您的Linode Manager并选择您的Linode。关闭计算机,通过查看“ 主机作业队列”部分验证作业是否已完成。在“ 磁盘”选项卡下,单击“ 新建磁盘”。添加您选择的标签,在“ 类型”下拉菜单中选择“ext4” ,并在“ 大小”字段中分配尽可能多的空间。点击保存更改 ; 最佳配置将类似于下图。
Linode Manager  - 分区方案
Linode Manager - 分区方案
  1. 在“ 仪表板”选项卡下,单击主配置配置文件。在“ 块设备分配”选项卡下,将新分区分配给打开的设备。完成后单击“ 保存更改”
Linode Manager  - 块设备分配
Linode Manager - 块设备分配
  1. 启动Linode并通过SSH登录。发出以下命令以验证是否已正确创建新磁盘。输出将显示新创建的磁盘。 fdisk -l
  2. 为新设备创建挂载点: mkdir /vztemp
  3. 挂载新磁盘。请务必将/ dev / sdc替换为您的设备名称: mount /dev/sdc /vztemp

从Ext4卷 删除Metadata_csum功能

在安装OpenVZ之前,必须配置系统以实现兼容性。Debian 9支持与自定义OpenVZ内核不兼容的新校验和功能。根据您的偏好,您可以选择从已安装的分区中删除metadata_csum,或者将受影响的分区重新格式化为兼容的Ext4卷。选择任一方法并按照下面相应部分中的说明进行操作。

  1. 列出可用的磁盘分区。 lsblk
  2. 检查步骤1中显示的任何已安装磁盘分区中是否安装了“metadata_csum”(不包括SWAP分区)。按照以下格式为每个分区,替换/dev/sda1为相应的卷名称。如果以下命令没有为已装入的磁盘卷生成输出,则可以跳过本节。 dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum

从已安装的分区 删除Metadata_csum

  1. 发出以下命令将代码添加到fsck文件中: echo "copy_exec /sbin/e2fsck" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck echo "copy_exec /sbin/tune2fs" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
  2. 在下面指定的目录中创建一个新文件,并将其命名为tune。将下面的文本复制并粘贴到此新文件中并保存: 在/ etc / initramfs的工具/脚本/地方预先安装/调1 2 3 4 5 6 7 8 9 #!/bin/sh if [ "$readonly" != "y" ] ; then exit 0 ; fi e2fsck -f $Volume tune2fs -O -metadata_csum $Volume e2fsck -f $Volume
  3. 更新文件属性和现有initramfs映像以加载调优脚本: chmod 755 /etc/initramfs-tools/scripts/local-premount/tune update-initramfs -u -k all
  4. 重新启动系统并运行以下命令以验证是否已从所有受影响的分区禁用metadata_csum。再次,将“/ dev / sda1”替换为正确的卷名。 dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum

格式化兼容的Ext4卷

  1. 选择要格式化的Ext4卷,然后发出以下命令,替换/dev/sda3为您选择的卷。输出“0”表示成功。 警告使用该mkfs命令格式化卷可能会导致数据丢失。 mkfs -t ext4 -O -metadata_csum /dev/sda3

用SystemV 替换Systemd

  1. 安装SystemV实用程序。 apt install sysvinit-core sysvinit-utils
  2. 从Linode Manager中,重新启动计算机以释放Systemd。
  3. 从您的机器中删除Systemd: apt --auto-remove remove systemd
  4. 创建文件avoid-systemd并粘贴以下内容: /etc/apt/preferences.d/avoid-systemd1 2 3 Package: *systemd* Pin: release * Pin-Priority: -1

添加OpenVZ存储库

  1. 创建一个新的存储库源文件并粘贴到下面的内容中: /etc/apt/sources.list.d/openvz.list1 2 deb http://download.openvz.org/debian jessie main deb http://download.openvz.org/debian wheezy main
  2. 将存储库密钥添加到您的系统: wget -qO - http://ftp.openvz.org/debian/archive.key | sudo apt-key add -
  3. 截至本指南的发布日期,OpenVZ存储库密钥无效,发出该apt update命令将从系统生成警告。该命令应该成功。如果没有,请使用以下参数更新系统: apt --allow-unauthenticated update

安装OpenVZ软件包

使用所需的软件包安装OpenVZ。 KPackage="linux-image-openvz-$(dpkg --print-architecture)" sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr

  1. 安装应该创建一个新目录/vz。如果安装后该目录不存在,请使用以下命令创建符号链接: ln -s /var/lib/vz/ /vz
  2. vznet.conf在下面的行中创建文件并粘贴: /etc/vz/vznet.conf1 EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
  3. 此步骤是可选的,将导致OpenVZ虚拟实例在OpenVZ服务停止时停止。如果需要此行为,请发出以下命令。 echo 'VE_STOP_MODE=stop' | sudo tee -a /etc/vz/vznet.conf

引导进入OpenVZ内核

必须将系统配置为每次重新启动服务器时引导OpenVZ内核。

  1. 打开grub.cfg文件less,或首选文本编辑器: less /boot/grub/grub.cfg
  2. grub.cfg文件中,查找类似于以下内容的部分: /boot/grub/grub.cfg 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 . . . menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-e025e52b-91c4-4f64-962d-79f244caa92a' { gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod ext2 set root='hd0' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 e025e52b-91c4-4f64-962d-79f244caa92a else search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a fi echo 'Loading Linux 4.9.0-3-amd64 ...' linux /boot/vmlinuz-4.9.0-3-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-4.9.0-3-amd64 } submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' . . .复制前面的文本条目submenu,在本例中,文本将是:Debian GNU / Linux的高级选项
  3. grub.cfg“子菜单”行下面的文件中,您将看到多个缩进的“menuentry”部分。这些代表了可用的内核。从这些,您需要找到新安装的OpenVZ内核菜单项。它应该类似于下面的内容。请注意,有些将是恢复内核,应该被忽略: /boot/grub/grub.cfg 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 . . . menuentry 'Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-2.6.32-openvz-042stab123.9-amd64-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' { gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod ext2 set root='hd0' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 e025e52b-91c4-4f64-962d-79f244caa92a else search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a fi echo 'Loading Linux 2.6.32-openvz-042stab123.9-amd64 ...' linux /boot/vmlinuz-2.6.32-openvz-042stab123.9-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-2.6.32-openvz-042stab123.9-amd64 } . . . Again, write down the text directly after "menuentry" in single quotes. Here, the text to copy is **Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64**.
  4. 关闭grub.cfg文件并在首选文本编辑器中打开/ etc / default / grub。找到以GRUB_DEFAULT=。开头的行。删除此参数的默认值,然后按照以下格式输入您在前面步骤中复制的文本。通过上面的示例,值将如下所示: GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64" 请注意,两个复制的字符串都用胡萝卜“>”字符分隔。
  5. 保存并关闭grub文件,并发出以下命令以使用新的内核值重新加载grub引导加载程序: update-grub
  6. 默认情况下,内核加载不是由Grub处理,而是由Linode管理器处理。登录您的Linode Manager并选择您的Linode。单击配置文件。在“Boot Settings”部分下,从Kernel下拉列表中选择“GRUB 2”保存更改并退出。

  1. 重新启动服务器并发出以下命令以验证是否已加载OpenVZ内核: uname -r 如果未加载OpenVZ内核,则很可能是grub文件配置错误。检查并确保选择并正确输入正确的内核。

下载并部署操作系统模板

  1. 启动OpenVZ服务: service vz start service vz status
  2. 注册官方OpenVZ模板库: sudo gpg --recv-keys $(echo $(sudo gpg --batch --search-keys security@openvz.org 2>&1 | grep -ie ' key.*created' | sed -e 's|key|@|g' | cut -f 2 -d '@') | cut -f 1 -d ' ' | cut -f 1 -d ',')
  3. 编辑/etc/vz/vz.conf并更改以下行以使用simfs而不是ploop: /etc/vz/vz.conf1 VE_LAYOUT=simfs
  4. 列出可下载的OS模板: vztmpl-dl --list-remote
  5. 从可用的模板列表中,选择一个下载。使用以下格式,发出以下命令,将centos7-x86_64替换为您选择的模板: vztmpl-dl --gpg-check centos7-x86_64
  6. OpenVZ将每个已安装的操作系统模板称为“容器”。您必须为每个下载的模板创建容器ID(CTID)。发出以下命令,将[CTID]替换为任何数字(建议使用101),使用下载的模板替换CentOS 7模板名称。 vzctl create [CTID] --ostemplate centos7-x86_64
  7. 如果为OpenVZ模板设置单独的磁盘分区,请使用以下命令在新磁盘中创建容器。将-ostemplate替换为您的模板名称,将-name替换为您选择的描述性名称: vzctl create [CTID] --ostemplate debian-8.0-x86_64 --layout simfs --name centos7 --private /vztemp/vz/private/$VEID --root /vztemp/vz/root/$VEID --config basic
  8. 现在将为您的OS模板创建配置文件。此文件的位置被指定为上一个命令的输出的一部分。立即打开此文件以进行以下更改。配置文件将以[CTID] .conf格式命名。
    • 为您的虚拟环境提供IP地址。推荐格式为192.168.0。[CTID]。在这种情况下,它将是192.168.0.101。
    • 提供名称服务器。谷歌的名称服务器(8.8.8.8)应该足够了。
    • 如果你有麻烦引导到你的虚拟环境中,您可以尝试改变VE_LAYOUTploopsimfs

    您还可以自行配置其他选项,例如SWAP和RAM分配。完成后保存并关闭。 /etc/vz/conf/101.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 . . . # RAM PHYSPAGES="0:256M" # Swap SWAPPAGES="0:512M" # Disk quota parameters (in form of softlimit:hardlimit) DISKSPACE="2G:2.2G" DISKINODES="131072:144179" QUOTATIME="0" # CPU fair scheduler parameter CPUUNITS="1000" NETFILTER="stateless" VE_ROOT="/var/lib/vz/root/$VEID" VE_PRIVATE="/var/lib/vz/private/$VEID" VE_LAYOUT="simfs" OSTEMPLATE="centos7-x86_64" ORIGIN_SAMPLE="vswap-256m" NAMESERVER="8.8.8.8" IP_ADDRESS="192.168.0.101/24" HOSTNAME="centos-7"

  9. 使用以下命令引导到新创建的容器中。将[CTID]替换为容器的CTID编号。要在保持虚拟环境运行的同时退出任何容器会话,请键入exit命令行。 vzctl start [CTID] vzctl enter [CTID]

配置Internet访问容器

容器无法访问互联网或从互联网访问。必须将主机服务器配置为向每个已安装的虚拟环境传递请求。

配置从容器到Internet 访问

注意您可能需要以root身份登录su -才能在本节中运行iptables-save命令。

  1. 在主机服务器上,使用Iptables发出以下命令。用适当的信息替换括号和内容。对于容器IP地址,请确保以CIDR表示法列出它。包括IP地址和子网,或者xxx.xxx.xxx.xxx/xx包含一系列IP地址,以便访问将来添加的任何容器。例如,输入192.168.0.0/24将设置IP地址192.168.0.0到192.168.0.255的路由: iptables -t nat -A POSTROUTING -s [container IP] -o eth0 -j SNAT --to [host server IP]
  2. 如果已iptables-persistent安装,请跳过此步骤。保存新的Iptables规则: iptables-save > /etc/iptables.conf
  3. 配置防火墙以允许转发的请求。如果您不使用iptables-persistent保存规则: iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT iptables-save > /etc/iptables.conf
  4. 您现在应该可以从容器环境中访问Internet。尝试更新容器中的包以验证连接。

配置从Internet到容器 访问

  1. 如果您需要从Internet访问容器上的特定服务,则需要在主机上保留一个端口并通过它进行路由访问。发出以下命令,用适当的信息替换任何括号内的值: iptables -t nat -A PREROUTING -p tcp -d [host_ip] --dport [host_port_number] -i eth0 -j DNAT --to-destination [container_ip:container_port_number]
  2. 保存新规则。如果已iptables-persistent安装,请跳过此步骤: iptables-save > /etc/iptables.conf

从哪里开始

安装OpenVZ,下载模板,创建容器和配置Internet访问后,您的虚拟环境将完全像任何普通Linux环境一样运行:需要定期更新,安全配置等。大多数配置可以通过OpenVZ命令从主机服务器完成。

请参阅“ 外部资源”部分中的“OpenVZ基本操作”链接,以熟悉基本管理命令。还可以下载其他用户创建的模板,这些模板未包含在主模板列表中。您可以通过“OpenVZ用户贡献的模板”链接找到这些内容。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是OpenVZ?
    • 开始之前
      • 可选:为OpenVZ模板 创建单独的分区
        • 从Ext4卷 删除Metadata_csum功能
          • 从已安装的分区 删除Metadata_csum
            • 格式化兼容的Ext4卷
            • 用SystemV 替换Systemd
              • 添加OpenVZ存储库
                • 安装OpenVZ软件包
                  • 使用所需的软件包安装OpenVZ。 KPackage="linux-image-openvz-$(dpkg --print-architecture)" sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr
                  • 引导进入OpenVZ内核
                    • 下载并部署操作系统模板
                      • 配置Internet访问容器
                        • 配置从容器到Internet 访问
                          • 配置从Internet到容器 访问
                          • 从哪里开始
                          • 更多信息
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档