继上回,咱入手了个 NOCIX 的独服,操作系统是 Debian 的 Stretch 版本,本文记录如果从 Debian 安装 Proxmox VE,以及配置 IPv4 和 IPv6 网卡,为硬盘分区。
预配置
系统装好后,从 NOCIX 后台面板取得 登陆用户名 和 密码。
用户名是 customer
密码是一串随机生成的字符串
使用 su
切换到 root 还需要输入密码,这样频繁操作比较麻烦。
免密登陆 root
安装 sudo
实现免密 su
1 | apt update |
修改 /etc/sudoers
文件
注意:只能用 visudo
交互式来修改 sudoers
文件
- 这是为了防止被脚本修改,就别想用 echo 来改了
visudo
会验证配置的格式,如果不验证,而你写的配置有问题,那么你无法切换到 root,而只有 root 用户才能修改 sudoer(嘛,死循环了1
visudo
在文件最后加上一行1
username ALL=(ALL:ALL) NOPASSWD:ALL
username 是你当前的用户,你想从哪个用户免密切换到 root
在我这里是1
customer ALL=(ALL:ALL) NOPASSWD:ALL
visudo
命令使用的是 nano
编辑器
所以修改好了后,ctrl+x,y,回车
回到 customer 用户, sudo su
,可以免密进入 root ,说明配置好了
开启 bbr
因为内核版本在 4.9 以上,可以直接开启 bbr。
修改系统参数1
2echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
应用更改1
sysctl -p
验证是否开启1
lsmod | grep bbr
返回信息如下,表示已经开启1
tcp_bbr 20480 15
安装一些常用工具(可选)
1 | apt install -y htop speedtest-cli vim |
安装 Proxmox VE
参考官方 wiki:https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch
直接从 【 Install Proxmox VE Install 】 这部分开始
复制以下到终端执行1
2
3
4
5echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg
apt -y update && apt -y dist-upgrade
apt install -y proxmox-ve postfix open-iscsi
apt remove os-prober
安装好了后,使用浏览器访问 https://<ip-address>:8006
,访问会提示证书不被信任,这是正常的,因为是主机自签名的证书。
我习惯把视图调整为目录视图。
左上角有个下拉框,Folder View.
这里系统是安装完了,但是还需要一些配置.
设置网络
Datacenter - Nodes - node
System - Network
现在服务器是通过具体的硬件网卡来获取 IP 地址接入互联网。
如图:
但是我们需要新建一个桥接网卡,VM 会通过这个桥接网卡来配置 IP 地址,类比桌面环境下用 VMWare 开虚拟机,通过桥接上网之类的。
这里需要先删掉 Network Device 上面的 IP 地址,因为 IP 地址不能同时分配到两张网卡上,所以记下你的 IP 地址和网关,当然,你的服务器后台也应该有这些。
那么,问题来了,删掉后,IP 地址没有配置到网卡上,我们是不是无法访问到这台服务器了呢?会立即断网吗?
放心,网卡配置需要重启才能生效,所以你只需要确保重启前正确配置了网卡。
新建一个 vmbr0.
Create - Linux Bridge 桥接网卡
将 IP 地址配置到桥接网卡上,桥接网卡指向 物理网卡
如果有 IPv6 地址也可以加上。
IPv6 也不是完全没卵用,我们可以用 cf 中转,搞点网站什么的还是可以,就不用再配置一套内网了。
Cloudflare support IPv6 addresses to your origin server, and will accept both IPv4 and IPv6 from clients. via: https://serverfault.com/questions/874387/ipv6-only-server-through-cloudflare-gateway
经测试,Cloudflare Spectrum 也可以配置 IPv6 的源站地址,然后 ssh 连接是 IPv4,同样可以中转。
最后如图,点击 “Create” 保存。
图片下方的 +++ — 是网卡配置文件(/etc/network/interfaces)的 diff。
重启来使更改生效。
重启后,可以正常通过 IPv4 的地址来 ssh,不过 curl ip.sb
返回的是 IPv6 的地址。
硬盘
在开始创建 VM 前,还需要配置一下存储。
服务器硬盘配置
- SSD:
/dev/sda
240G - HDD:
/dev/sdb
3T
默认安装出来是,VM 需要的系统镜像文件存放目录 /var/lib/vz
在 SSD 里面,这样有点浪费,因为镜像不是经常需要读取的.
SSD 这块硬盘的分区,因为不是直接安装的 Proxmox ,调整分区大小有风险,先保持现状吧.
HDD 的话,我打算 100G 作为镜像存放(完全够了吧),剩下的作为 VM 的存储。
1 | root@s163941:/home/customer# lvs |
运行 lvs
和 vgs
发现之前的 VM 硬盘 还在,fdisk
格式化一下
看来 nocix 后台的 wipe hard disk
没起作用
1 | fdisk /dev/sdb |
m 可以查看帮助菜单
输入 p 回车,d 回车,w 回车
命令说明:
p 打印分区
d 删除分区
w 写入更改
过程如下: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
26
27Command (m for help): p
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: FD775806-E159-461E-9BF0-320C987B0796
Device Start End Sectors Size Type
/dev/sdb1 2048 5860533134 5860531087 2.7T Linux filesystem
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): p
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: FD775806-E159-461E-9BF0-320C987B0796
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
创建 volumn group
参考官方 wiki:https://pve.proxmox.com/wiki/Logical_Volume_Manager_(LVM)#_creating_a_volume_group
第二块硬盘的 volumn group 名字叫 hdd。
1 | root@s163941:/home/customer# sgdisk -N 1 /dev/sdb |
这是之前那台独服的配置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
26
27
root@Server:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 543.9G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 256M 0 part
└─sda3 8:3 0 543.7G 0 part
├─pve-swap 253:0 0 8G 0 lvm [SWAP]
├─pve-root 253:1 0 96G 0 lvm /
├─pve-data_tmeta 253:2 0 4.2G 0 lvm
│ └─pve-data-tpool 253:4 0 415.2G 0 lvm
│ ├─pve-data 253:5 0 415.2G 0 lvm
│ ├─pve-vm--100--disk--0 253:6 0 100G 0 lvm
│ ├─pve-vm--102--disk--1 253:7 0 30G 0 lvm
│ ├─pve-vm--103--disk--1 253:8 0 30G 0 lvm
│ ├─pve-vm--101--disk--0 253:9 0 50G 0 lvm
│ └─pve-vm--104--disk--0 253:10 0 32G 0 lvm
└─pve-data_tdata 253:3 0 415.2G 0 lvm
└─pve-data-tpool 253:4 0 415.2G 0 lvm
├─pve-data 253:5 0 415.2G 0 lvm
├─pve-vm--100--disk--0 253:6 0 100G 0 lvm
├─pve-vm--102--disk--1 253:7 0 30G 0 lvm
├─pve-vm--103--disk--1 253:8 0 30G 0 lvm
├─pve-vm--101--disk--0 253:9 0 50G 0 lvm
└─pve-vm--104--disk--0 253:10 0 32G 0 lvm
sr0 11:0 1 1024M 0 rom
root@Server:~#
我想要配置成这样,镜像存储和 VM 的存储在同一个硬盘上面。
后续简写说明:
vg -> volumn group
lv -> logic volumn
创建镜像文件存储
在 hdd 的 vg 里面创建 100G 大小的 lv,lv 名叫 vz.1
lvcreate -L 100G -n vz hdd
转换为 thin-pool1
lvconvert --type thin-pool hdd/vz
过程如下:1
2
3
4
5
6
7
8
9root@s163941:/home/customer# lvcreate -L 100G -n vz hdd
WARNING: ext4 signature detected on /dev/hdd/vz at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/hdd/vz.
Logical volume "vz" created.
root@s163941:/home/customer# lvconvert --type thin-pool hdd/vz
WARNING: Converting logical volume hdd/vz to thin pool's data volume with metadata wiping.
THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Do you really want to convert hdd/vz? [y/n]: y
Converted hdd/vz to thin pool.
格式化 vz 分区为 ext41
mkfs.ext4 /dev/hdd/vz
将 vz 分区挂载到 /var/lib/vz
,因为/var/lib/vz
目录存在且非空,所以需要删掉。
先看看这个的目录结构:1
2
3
4
5
6
7
8|-- dump
|-- images
|-- private
|-- snippets
`-- template
|-- cache
|-- iso
`-- qemu
通过 /etc/fstab
来挂载,避免重启后配置丢失。
实测,删除前不用备份这个目录,因为挂载后,目录结构会回来的。
命令如下1
2
3
4rm -r /var/lib/vz
echo '/dev/hdd/vz /var/lib/vz ext4 defaults 0 2' >> /etc/fstab
cat /etc/fstab
mount -a
最后一个命令执行完成没有任何回显,说明成功了。
通过 df -h
验证:1
2
3
4
5
6
7
8
9
10
11
12root@s163941:~/vz.bak# df -h
Filesystem Size Used Avail Use% Mounted on
udev 12G 0 12G 0% /dev
tmpfs 2.4G 9.1M 2.4G 1% /run
/dev/mapper/s163941--vg-root 196G 1.9G 184G 2% /
tmpfs 12G 46M 12G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/sda1 236M 82M 142M 37% /boot
/dev/fuse 30M 16K 30M 1% /etc/pve
tmpfs 2.4G 0 2.4G 0% /run/user/1000
/dev/mapper/hdd-vz 98G 61M 93G 1% /var/lib/vz
最后一行,可以看到已经挂载好了,size 因为计算的问题,和 100G 有些许出入
剩下的是 VM 的存储分区。
创建 VM 存储分区
需要确定我们配置的存储类型,因为时间有限,之前那台独服用的是 LVM-Thin,新的这台也考虑使用 LVM-Thin,还有一种是 LVM。
LVM 和 LVM-Thin 的区别如下:
参考:https://pve.proxmox.com/wiki/LVM2#LVM_vs_LVM-Thin
Type | Content types | Image formats | Shared | Snapshots | Clones |
---|---|---|---|---|---|
LVM | images,rootdir | raw | possible | no | no |
LVM-Thin | images,rootdir | raw | no | yes | yes |
可以看到,LVM-Thin 支持快照和克隆,但是不能共享了,没事,我不需要共享给别的节点,我没用集群。
但是添加 LVM 和 添加 LVM-Thin 的步骤都记录下。
如果是添加 LVM
如果是要添加 LVM,只需要到 Datacenter - Storage
点击 Add:LVM
1 | Base storage: Existing volumn groups |
这样添加后,容量是 hdd 的容量, 2.73T , 但是会显示已经占用了 100G。
Usage 3.59% (100.20 GiB of 2.73 TiB)
如果是添加 LVM-Thin
添加 LVM-Thin 会相对有点麻烦。
需要指定容量,末尾还要留点容量,因为 convert 到 thin-pool 后需要占用少量空间来存放一些元数据 metadata,2 MB,但这个容量不会从你创建的 lv 中去获取,所以这个容量要留有,分区不能全部划完。
1 | root@s163941:/var/lib/vz/template/iso# vgs |
vgs
看到剩余容量是 2.63T,我也指定 2.63T,实际上也留有一部分小数.
从名为 hdd 的 vg 中创建大小为 2.63T,名字叫 vm-data 的 lv.1
lvcreate -L 2.63T -n vm-data hdd
将 hdd 中的 vm-data 转换的 thin-pool
1 | lvconvert --type thin-pool hdd/vm-data |
上述命令的过程如下:1
2
3
4
5
6
7
8
9
10
11root@s163941:/var/lib/vz/template/iso# lvcreate -L 2.63T -n vm-data hdd
Rounding up size to full physical extent 2.63 TiB
WARNING: ext4 signature detected on /dev/hdd/vm-data at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/hdd/vm-data.
Logical volume "vm-data" created.
root@s163941:/var/lib/vz/template/iso# lvconvert --type thin-pool hdd/vm-data
WARNING: Converting logical volume hdd/vm-data to thin pool's data volume with metadata wiping.
THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Do you really want to convert hdd/vm-data? [y/n]: y
WARNING: Pool zeroing and large 2.00 MiB chunk size slows down provisioning.
Converted hdd/vm-data to thin pool.
然后到面板,Datacenter - Storage
点击 Add:LVM-Thin
如图配置
点击 Add
,即可保存。
这样就算完成了。
运行 lvs
,vgs
,pvs
,lsblk
结果如下:
1 | root@s163941:/home/customer# lvs |
最后没切完,留了 1.11g,不过不影响。