在偏僻数据中心混了两年,真真的是技术都荒废了,连行业名词都陌生了,真是惭愧。VMware有钱任性,没钱就折腾折腾开源的超融合吧。


一:企业源

Proxmox和红帽的模式类似,有钱的买技术支持,踩的第一个坑就因为这个默认的企业源导致Ceph安装失败。

先把Debian源换成国内再更新。

echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list #中科大源

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list #中科大源

sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm #中科大源

sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list

sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

apt update && apt dist-upgrade

更新完成后把企业源重新注册掉,Ceph源同样改到国内。偷懒的做法直接把上面一段继续复制粘贴。

echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list #中科大源

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list #中科大源

sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm #中科大源

sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list

sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

二:根分区写满

OS用的300G硬盘,从VMware导虚拟机时直接在root目录下跑命令,还洋洋得意用screen把进度扔后台,结果第二天到公司就发现群集挂了,因为这个节点上挂了Ceph集群上多数的盘。好在分区使用了lvm,结果发现pve-data这个分区无法调大小,无奈只有删掉把根分区先拉上来。后来查资料才学习到这个data是个thin pool。精简池就可以动态回收存储空间,在Proxmox这里做虚拟机的盘来用。

重新创建thinpool的命令行格式 lvcreate -L 64G -T pve/data。

三:调整分区大小

在群集上点点点发现swap分区被用满,原来Proxmox默认只创建了8G的swap。使用lvresize和root data分区一起调调调,心里没一点谱还恶向胆边生,结果一重启直接进不了系统。扑街重装。

调整分区大小正确的姿势:

增大

直接 lvresize -L 128G /dev/pve/root

缩小

先随便找个Linux发行版的安装盘把proxmox挂载上来

lvchange -a

vgs

lvs

resize2fs /dev/pve/root 64G

lvreduce -L 64G /dev/pve/root

当然在进不了系统的shell里也可以搞,不一样的是要用lvm这个工具,先进来这个工具的shell才有上面熟悉的命令。

还有一个情况是扩大分区,调整硬盘大小很简单,网页直接操作,后面当然就是一番搜索啦。​​https://pve.proxmox.com/wiki/Resize_disks​

用到的工具有parted pvresize lvresize和resizefs

parted /dev/sda

print

Fix(F)

lvm分区

resizepart 3 100%

pvresize /dev/sda3

lvresize --size +20G -resizefs /dev/ubuntu-vg/ubuntu-lv

lvresize --extents +100%FREE --resizefs /dev/ubuntu-vg/ubuntu-lv

非lvm分区

resize2fs /dev/sda1

四:Ceph

Ceph官方文档明确主了不推荐物理的RAID卡,Ceph已经把RAID卡能做的事情全做了,两个在一起还打架。没奈何手里的拖拉机不支持直通,只能RAID0绕过。过程中遇到Ceph其中一块盘快写满,然后整个群集又挂起来不允许读写。救急的办法是把这个写满的盘先Out把群集恢复,再加盘扩容量。

比较白痴的事情是,存储上的盘架和服务器不兼容,为了把这些盘用起来,直接热插拔几块盘,大的群集当然没问题,3节点12块盘拨了3块,结果Ceph就跪了。最后等不及Ceph蜗牛爬爬恢复,直接用备份恢复虚机了。锅也不在Ceph,7.2K的HDD,千兆的存储交换机,硬件跟不上都扯软蛋。后面上了监控看到交换机流量,千兆都没跑满过,哎。

PS,如果硬盘不是新的,Ceph出于安全考虑不能直接添加这块盘做为OSD。确认这块盘要用到Ceph里来就洗白白它

ceph-volume lvm zap /dev/sd[X] --destroy

其它的监控节点,中小性规模3个就足够了。

You won’t need more than 3 monitors, as long as your cluster is small to medium-sized. Only really large clusters will require more than this.


ceph osd out osd.2

ceph osd crush rm osd.2

ceph auth del osd.2

ceph osd rm osd.2

ceph osd tree

五:网络高可用

原来bond之后还可以桥接,桥接了也能bond,Linux真是好玩。对一张网卡四个口几经折腾,最终放弃复杂的混搭,一个管理做桥接,一个跑业务,另外两个主备跑存储。其中一台有两块网卡的机器,四个口bond去跑大文件传输的业务。

存储的两块网卡,bond做active-backup,不需要交换机特殊支持,缺点嘛就是浪费一块网卡的流量,反正流量也上不去,为了高可用多上个交换机也可以接受。

要充分利用带宽就做链路聚和,bound配LACP(802.1ad)需要交换机支持

思科交换机上port channel做trunk


!

interface Port-channel1

switchport mode trunk

end

聚和的端口做active

channel-group 1 mode active


六:虚拟机迁移

VMware有工具导出ovf,然后qm导入。Windows就在BIOS/UEFI和硬盘模式SATA/IDE/SCSI之间排列组合,不同版本的Windows只要能进系统把virtio装上就好了。Linux上Ubuntu基本上重新配一下网络,CentOS7有的要重新编译initramfs把半虚拟机驱动整合进去。不执著性能弄成sata也可以。


导出导入都很粗暴,拷数据慢慢慢

ovftool vi://root@<ip-of-esxi>/<name-of-a-virtual-machine> .

qm importovf 10x vm01.ovf local-lvm


检查内核对驱动的支持 grep -i virtio /boot/config-$(uname -r)

If the values of the parameters CONFIG_VIRTIO_BLK and CONFIG_VIRTIO_NET are y, the virtio driver is included and can be uploaded directly.

If the values of the parameters CONFIG_VIRTIO_BLK and CONFIG_VIRTIO_NET are m

检查文件系统的支持

CentOS Fedora

lsinitrd /boot/initramfs-$(uname -r).img | grep virtio

Ubuntu Debian

lsinitrd /boot/initrd.img-$(uname -r) | grep virtio command


virtio_blk.ko, virtio_pci.ko and virtio.ko


修复


CentOS/Redhat 6/7


cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)


CentOS 5

cp /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak

mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initrd-$(uname -r).img $(uname -r)


Debian/Ubuntu


echo -e "virtio_pci\nvirtio_blk" >> /etc/initramfs-tools/modules

update-initramfs -u


​https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE#Virtual-to-Virtual_.28V2V.29​


有机器卡住不能通过网页管理就用qm命令行直接干

rm -rf /var/lock/qemu-server/lock-100.conf

qm list

qm stop


qm unlock

qm destory


网卡用VirtIO

Intel E1000是默认设置,它模拟Intel千兆网卡。

在为Virtio半虚拟化的,如果你的目标是获得最大性能NIC应该使用。与所有VirtIO设备一样,来宾OS应已安装正确的驱动程序。

在瑞昱8139模拟一个较旧的100 MB / s的网卡,只应模拟旧版操作系统时使用(2002年之前发布)

所述VMXNET3是另一半虚拟化设备,从另一个管理程序导入VM时,才应使用。

七:其它


root@pve254:~# rbd ls -l r610 | grep No

rbd: error opening vm-288-disk-0: (2) No such file or directory

rbd: listing images failed: (2) No such file or directory

root@pve254:~# rbd rm vm-288-disk-0 -p r610

Removing image: 100% complete...done.