咕咕斥巨资买了一台Hetzner的独立服务器(拍卖机),官方售价27.7欧/月。
下面就来简单测评一下,供大家参考。
关于Hetzner的介绍,大家可以移步至:【VPS 选购分享】Hetzner—— 欧洲阿里云!性能小钢炮!非常适合跑业务,还有适合刷 PT 的神鸡!
概览
首先还是请出秋水的 bench.sh 脚本,这个脚本可以查看 Linux 系统信息,还可以测试网络带宽及硬盘读写速率。
wget -qO- bench.sh | bash
运行后如图:
上图第一部分就是 Linux 的详细信息,可以看到 CPU 型号、8核心、内存64G、硬盘买的时候是说512Gx2也就是1T(但是显示是936.7G)、Dedicated 杜甫、Hz自建机房,机房位置纽伦堡等信息。
第二部分也就是硬盘读写速率,硬盘一般分为 HHD、SSD、NVMe 三类, 正常 SSD 硬盘的 IO 一般在 300MB/S 左右,差一点 200MB/S 左右,100MB/S 以下这种的就是石头盘了,没法用。这边咕咕的是NVMe的盘,正常应该就是900-1000MB/S。
第三部分就是上传下载速率了,这个可以看出服务器的带宽,上传下载的速率,这个机器是 1G 口的基本也跑满了,国内稍微有点差。
总结一下,上面大家要注意的几个点:
1、如果是VPS,虚拟方式一定注意是不是 KVM,因为有些商家用的 OpenVZ 虚拟技术而故意不说明,OpenVZ 的缺点是不能修改内核也就不能开启 BBR 和可以随意超售。独立服务器的话,一般就是显示Dedicated了。
2、硬盘的 IO 差,一般是因为母鸡超售过多造成了,看 IO 数值就可以看出 VPS 有没有超售。独立服务器的话没有超售一说,如果你选的HDD硬盘(假设两块硬盘),觉得IO速度实在过低,还可以选择组raid 0,这样速度会翻倍,但是raid 0 只要有一块硬盘坏了,数据都会丢失,这个得权衡考量。
3、Speed 测速可以直观地看出 VPS 的带宽,一般G口就是 1000Mbps,百兆口也就是 100Mbps,10G 口也就是高于10000Mbps
线路测试
线路测试包括去程和回程,去程是针对的上传数据,回程一般是指下载数据也就是 VPS 回传数据。因此一个 IP 的路由好坏,看回程才有参考价值,去程反而不是那么重要了。
下面就看看回程路由:
回程测试
wget -qO- git.io/besttrace | bash
这个机器电信回程是直连的,移动和联通脚本问题没测,回程应该不是很理想,线路不咋地,这也是这台机器最大的缺点。(一般这种情况下,会考虑套CloudFlare的CDN使用,所谓带上套,大家都一样,众生平等。)
去程测试
下面看看去程,一般来说流量是不对等的,回复流量基本上是请求流量的数倍。
就比如,你浏览本站的文章,点击一个网址就可以了,电脑把网址发到本博位于国外的服务器,数据一般小于 1KB。但是本站回复你文章内容,里面的文字、图片、脚本等各种资源,压缩后至少也是几十KB,这个过程中去程和回程数据有数倍的差异。如果你看的是油管的视频,出国的流量可能就几兆,但是传过来的视频可能上G,数据相差上百倍。
所以你应该明白了上面为什么说去程没啥参考价值,因为它压根就不堵。当然,既然写到了去程这个话题,还是留下测试去程的方法:
打开下面的网址,左边选择你附近的服务器,然后右边填上你的 VPS IP 就可以查看去程路由了:
https://tools.ipip.net/traceroute.php
上海电信
上海联通 上海移动ping值查询
当然,不能忘了各运营商的 ping 值查询,这算是一个直观且简单的查询方式,如图,如果下面国内部分全线飘红,说明丢包严重,ping 值亚洲 VPS 在 100ms 左右属正常范围,美帝 VPS 在 250ms 左右属正常范围,欧洲在250-300ms左右。
当然,这些数值受时段的影响比较大,建议北京时间 22:00 - 23:00 高峰期(俗称晚高峰)测试。
国内惨不忍睹 = =
CPU性能测试
还是请出秋水的 UnixBench 脚本来测试。
UnixBench 是一个类 Unix 系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试 Linux 系统主机的性能。UnixBench 的主要测试项目有:系统调用、读写、进程、管道、运算、C库等系统基准性能提供测试数据。
wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh && chmod +x unixbench.sh && ./unixbench.sh
上面脚本运行需要1个小时左右,运行完会显示类似下面的数据:
上部分是单核跑分数据,下部分是多核跑分数据。VPS的话单核跑分有500分以上属于正常水平,低于500分就属于性能很弱了。这边独立服务器跑这个分还凑合。
取消RAID
默认两块硬盘的话,Hz会自动给你装raid1,即只有一块硬盘的容量,另一块硬盘相当于是备份用的,如果不是特别重要的数据的话,一般会考虑不组raid,这样我们硬盘空间就能完整利用起来了。(除非你是刷PT,不然不建议组raid0)
首先进入Hetzner的控制后台,找到服务器,选择Rescue (救援模式),设置完成后重启服务器:
重启完成后登录服务器,现在看到的就是救援模式;
在救援模式下输入下面命令后按回车
installimage
然后选择你需要安装的系统
选择完成后编辑配置文件;
RAID设置区分
NO RIAD:一般情况建议不设置RAID,这样既保证空间大小,也保证了安全性.;
RIAD 0:好处:速度快,合并容量,缺点:两个硬盘只要挂一个,那么文件全都挂了;
RIAD 1:好处:同时把文件写入到两个硬盘,坏一个也没事,缺点:浪费空间,读写速度稍微有降低;
编辑完成后按F10
保存配置文件;
选择yes
回车
等待程序执行完毕:
程序执行完成后输入reboot
重启即可:
重启后登录新系统可以查看之前的分区情况
RAID 0
和RAID 1
的测试对比
RAID 0
RAID 1
无RAID
installimage命令一把梭
上面的方法是图形化一步一步来搞的,其实你也可以直接用一条命令直接自动安装。
还是利用官方的installimage命令。
一般你想要知道一个命令支持哪些参数,都可以用命令 -h
或者命令 --help
来查看。
比如
installimage -h
或者 installimage --help
以下是installimage命令的参数:
这是 installimage
的使用说明,该脚本支持多种参数,以下是每个参数的简要描述:
-h
: 显示帮助信息。-a
: 自动模式 / 批处理模式 - 结合下面的选项使用可以无需进一步交互地进行安装。-c <configfile>
: 使用指定的配置文件进行自动设置。-x <post-install>
: 使用此文件作为安装后脚本,安装完成后在 chroot 环境中执行。-n <hostname>
: 设置指定的主机名。-r <yes|no>
: 是否激活软件 RAID。-l <0|1|5|6|10>
: 设置指定的 RAID 级别。-i <imagepath>
: 使用指定的 IMAGE 进行安装。-g
: 强制验证带有分离的 GPG 签名的图像文件。如果图像无效,安装将中止。-p <partitions>
: 定义要创建的分区。-v <logical volumes>
: 定义要创建的逻辑卷。-d <drives>
: 要使用的驱动器的 /dev 名称。-f <yes|no>
: 是否格式化第二块驱动器(如果不用于 RAID)。-s <de|en>
: 用于不同事务的语言(例如 PLESK)。-z PLESK_<Version>
: 安装像 PLESK 这样的可选软件。-K <path/url>
: 从文件/URL 安装 SSH 密钥。-t <yes|no>
: 接管救援系统的 SSH 公钥。-u <yes|no>
: 是否允许 USB 驱动器。-G <yes|no>
: 是否生成新的 SSH 主机密钥(默认为 yes)。
这些选项允许用户在不进入交互式模式的情况下,通过指定适当的参数来自动化服务器的安装过程。在实际使用中,您需要根据具体需求选择和组合这些参数。
installimage命令设置raid安装
直接对话ChatGPT,让它帮个小忙。
问:
`installimage -n hostname -a -r 0 -d sda,sdb -p /boot:ext3:1024M,/:ext4:all -i /root/images/Debian-1101-bullseye-amd64-base.tar.gz`所以这个命令写的有问题吗
答:
让我们逐一检查您给出的 installimage
命令的参数:
-n hostname
: 设置主机名为 "hostname"。-a
: 启用自动模式。-r 0
: 指定 RAID 类型为 RAID 0。-d sda,sdb
: 指定两个设备/dev/sda
和/dev/sdb
用于 RAID 0。-p /boot:ext3:1024M,/:ext4:all
: 分区信息,其中/boot
分区使用ext3
文件系统大小为 1024M,/
根分区使用ext4
文件系统,占据所有剩余空间。-i /root/images/Debian-1101-bullseye-amd64-base.tar.gz
: 指定安装镜像路径。
从给出的使用说明中,这些参数似乎都是正确的。但有一点需要注意:
在使用 RAID 0 时,您指定了 -r 0
,这是正确的,但根据使用说明,还需要指定 RAID 级别 -l
。尽管在您的命令中没有明确使用 -l
,但由于您使用了 -r 0
,这可能意味着 RAID 0 是默认选项。然而,为了确保没有遗漏或误解,建议明确指定 RAID 级别,即添加 -l 0
。
所以,更完整的命令可能是:
installimage -n hostname -a -r yes -l 0 -d sda,sdb -p /boot:ext3:1024M,/:ext4:all -i /root/images/Debian-1101-bullseye-amd64-base.tar.gz
但再次,这取决于 installimage
的具体实现和版本。上述命令应该是正确的,但在真正执行之前,建议再次检查您的具体环境和文档以确保一切正确。
installimage命令不设置raid安装
同理,如果你不想做raid,假设你有sda、sdb还有一块nvme0n1,你打算把系统装在nvme0n1上(靠谱一些),然后把sda和sdb当作存储盘之后单独挂载,你可以用诸如下面的命令:
installimage -n hz -a -d nvme0n1 -p /boot:ext3:1024M,/:ext4:all -i /root/images/Debian-stable-64-minimal.tar.gz
这个路径可能要根据实际情况修改一下/root/images/Debian-stable-64-minimal.tar.gz
你可以在救援模式中输入:
ls -al /root/images/
查看你想要的系统版本然后替换到上面命令中。
这样你安装完之后,系统就在nvme0n1
盘上了,另外两块硬盘需要你手动格式化并挂载。
硬盘挂载
好的,下面是详细的步骤,描述如何为 /dev/nvme1n1
创建一个分区并挂载它。请注意,这些操作可能导致数据丢失,所以在开始前,请确保已备份所有重要数据。
这边以nvme1n1
这块硬盘为例子,有可能你的是/dev/sdb
、/dev/sda
这种,其实是一样的,以此类推。
具体你的硬盘叫啥,可以登录到救援模式查看(一登录成功上方就有提示)
1. 创建分区
使用 fdisk
命令为 /dev/nvme1n1
创建一个新分区。
sudo fdisk /dev/nvme1n1
在 fdisk
命令界面:
- 输入
p
并回车,以查看现有分区。 - 输入
n
并回车,开始创建新分区。 - 选择分区类型(主分区或逻辑分区)。通常,输入
p
选择主分区。 - 选择分区号。通常情况下,默认选项应该是可以的。
- 为起始和结束扇区选择默认值,这将使用整个磁盘。
- 输入
w
并回车,写入分区表并退出。
2. 格式化分区
假设你创建的分区是 /dev/nvme1n1p1
(这取决于你之前的选择和现有分区),你可以使用以下命令将其格式化为 ext4
文件系统:
sudo mkfs.ext4 /dev/nvme1n1p1
3. 挂载分区
首先,创建一个挂载点:
sudo mkdir /mnt/mydrive
然后,挂载新分区到这个挂载点:
sudo mount /dev/nvme1n1p1 /mnt/mydrive
4. 开机自动挂载
要使得每次开机都自动挂载这个分区,需要修改 /etc/fstab
文件。首先,获取 UUID:
sudo blkid
找到 /dev/nvme1n1p1
的 UUID。接着,编辑 /etc/fstab
:
sudo nano /etc/fstab
在文件的底部添加以下内容(替换你的 UUID):
UUID=你的UUID /mnt/mydrive ext4 defaults 0 2
保存并退出。
这样,每次启动时,新分区都会自动挂载到 /mnt/mydrive
。
以上就是创建、格式化和挂载新分区的步骤。确保每一步都仔细检查,避免任何可能的错误。
合并sda和sdb(使用 LVM 将 sda 和 sdb 合并为一个逻辑卷)
假如想要把sda和sdb合并成一个硬盘,挂载,你可以:
问:
我有一块nvme0n1,还有sda,sdb,我想把系统安装在nvme0n1上,然后把sda和sdb合并成一块硬盘,用来存放文件,我是不是要定义要创建的逻辑卷?请问我应该怎么做,帮我写一个完整的安装脚本
答:
为了满足您的需求,我们可以使用以下策略:
- 将操作系统安装在
nvme0n1
上。 - 使用 LVM 将
sda
和sdb
合并为一个逻辑卷并用于存储。
以下是您可以使用的 installimage
命令:
installimage -n hostname -a -d nvme0n1 -p /boot:ext3:1024M,/:ext4:all -i /root/images/Debian-1101-bullseye-amd64-base.tar.gz
此命令将 Debian 11.01 Bullseye 安装在 nvme0n1
上,其中 /boot
使用 ext3
文件系统,大小为 1024M,根 /
使用 ext4
文件系统,占据所有剩余空间。
安装操作系统后,您可以使用以下步骤将 sda
和 sdb
合并为一个 LVM 逻辑卷:
- 创建物理卷:
pvcreate /dev/sda
pvcreate /dev/sdb
- 创建一个名为
myvg
的卷组,其中包含sda
和sdb
:
vgcreate myvg /dev/sda /dev/sdb
- 使用上面创建的卷组创建一个名为
mylv
的逻辑卷,占据所有可用空间:
lvcreate -l 100%FREE -n mylv myvg
- 格式化逻辑卷并挂载它:
mkfs.ext4 /dev/myvg/mylv
mkdir /data
mount /dev/myvg/mylv /data
- 为了确保每次启动时都能自动挂载,需要在
/etc/fstab
中添加一行:
echo "/dev/myvg/mylv /data ext4 defaults 0 0" >> /etc/fstab
以上步骤在操作系统安装后执行,可以将它们写入一个脚本中,然后在安装操作系统后手动运行。或者,您可以使用 installimage
的 -x
参数指定一个脚本,该脚本将在安装后自动执行上述步骤。
以下是一个脚本,名为 post_install.sh
,用于在操作系统安装后设置和挂载逻辑卷:
#!/bin/bash
# 创建物理卷
pvcreate /dev/sda
pvcreate /dev/sdb
# 创建一个名为 `myvg` 的卷组
vgcreate myvg /dev/sda /dev/sdb
# 使用上面创建的卷组创建一个名为 `mylv` 的逻辑卷
lvcreate -l 100%FREE -n mylv myvg
# 格式化逻辑卷
mkfs.ext4 /dev/myvg/mylv
# 创建数据目录并挂载逻辑卷
mkdir /data
mount /dev/myvg/mylv /data
# 更新 /etc/fstab 以在启动时自动挂载逻辑卷
echo "/dev/myvg/mylv /data ext4 defaults 0 0" >> /etc/fstab
您可以将上述脚本保存为 post_install.sh
,然后为其赋予执行权限:
chmod +x post_install.sh
然后,您可以使用以下 installimage
命令:
installimage -n hostname -a -d nvme0n1 -p /boot:ext3:1024M,/:ext4:all -i /root/images/Debian-1101-bullseye-amd64-base.tar.gz -x /path/to/post_install.sh
请确保将 /path/to/
替换为您保存 post_install.sh
脚本的实际路径。
这样,当 installimage
完成操作系统的安装后,它将自动运行 post_install.sh
脚本来设置和挂载逻辑卷。
救援模式恢复密码
如果您在Hetzner使用独立服务器(Dedicated Server)并且忘记了root登录密码,您可以通过以下步骤重置密码:
-
登录Hetzner Robot控制面板:
打开浏览器,访问 Hetzner Robot,然后登录您的账户。 -
选择您的服务器:
在控制面板中,找到并选择您需要重置密码的服务器。 -
启动救援系统:
在服务器的管理页面上,找到“Rescue”或“救援系统”选项并启动它。Hetzner的救援系统允许您启动一个小型的Linux环境,这样您就可以访问服务器的硬盘并对其进行操作。 -
重启服务器到救援系统:
一旦您启动了救援系统,需要重新启动服务器以进入该系统。您可以在Robot控制面板中找到并点击“重启”按钮。 -
通过SSH登录到救援系统:
当服务器重启并运行救援系统时,您应该能够使用提供的SSH凭据(通常是root和一个临时密码)登录到服务器。 -
挂载服务器的文件系统:
一旦您登录到救援系统,您需要挂载服务器的主文件系统。这通常可以通过以下命令完成(假设您的根文件系统在/dev/sda1
上):mount /dev/sda1 /mnt
注意,如果取消挂载,试另一块硬盘的话,可以先执行:
unmount /mnt
-
重置root密码:
挂载文件系统后,您可以使用chroot
命令更改root密码。如下:chroot /mnt passwd root
按照提示输入新的密码。
-
重启服务器到主系统:
一旦您完成了密码重置,退出chroot环境,然后从救援模式重启服务器回到主系统。您可以在Robot控制面板中完成这一步。 -
登录并测试新密码:
当服务器重启并运行主系统时,尝试使用新的root密码登录。确保您可以成功登录并且所有服务都在正常运行。
请注意,这些步骤是基于Hetzner的独立服务器的通常操作。具体的步骤可能会因Hetzner的系统更新或其他原因而有所不同。如果您遇到任何问题,建议联系Hetzner的技术支持以获得更多帮助。
输入:
lsblk
输出:
从您提供的 lsblk
输出来看:
sda
磁盘只有一个分区sda1
,大小为 476.9G,目前已经挂载到/mnt
。sdb
磁盘有三个分区:sdb1
大小为 32Gsdb2
大小为 1Gsdb3
大小为 443.9G
这里的关键是确定哪一个分区是您的根文件系统。考虑到 sda1
已经挂载到 /mnt
,您可能已经检查了它。但我们还需要检查 sdb
的分区,尤其是 sdb3
,因为它的大小与一个主要的文件系统相匹配。
下面是如何检查 sdb
的分区:
-
挂载并检查
sdb1
:mount /dev/sdb1 /mnt ls /mnt
如果这里有
bin
,etc
,home
,root
,usr
等目录,那么这可能是您的根文件系统。 -
如果
sdb1
不是根文件系统,尝试挂载并检查sdb3
:umount /mnt mount /dev/sdb3 /mnt ls /mnt
同样,查找典型的根文件系统目录。
您提供的信息不足以确定哪个分区是引导分区或是否有单独的 /home
分区,但上述步骤应该可以帮助您确定哪个是根文件系统。如果您还不确定,请告诉我您在每个分区上看到的主要目录,这样我可以为您提供更多的指导。
参考资料
SunPma'Blog:https://sunpma.com/656.html
主机会话:https://hostalk.net/posts/vps_test.html
https://www.openos.org/post/196/
https://wiki.hetzner.de/index.php/Installimage/en
评论区