博客

  • devstack安装

    创建devstack用户

    sudo useradd -s /bin/bash -d /opt/stack -m stack
    sudo chmod +x /opt/stack
    apt-get install sudo -y || dnf install -y sudo
    
    echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
    sudo su stack && cd ~
    sudo apt-get install git -y || sudo dnf install -y git
    
    git clone https://opendev.org/openstack/devstack
    
    cd devstack
    

    配置local.conf

    [[local|localrc]]
    
    # Minimal Contents
    # ----------------
    
    # While ``stack.sh`` is happy to run without ``localrc``, devlife is better when
    # there are a few minimal variables set:
    
    # If the ``*_PASSWORD`` variables are not set here you will be prompted to enter
    # values for them by ``stack.sh``and they will be added to ``local.conf``.
    HOST_IP=192.168.33.190
    ADMIN_PASSWORD=hetao1987
    DATABASE_PASSWORD=stackdb
    RABBIT_PASSWORD=stackqueue
    SERVICE_PASSWORD=$ADMIN_PASSWORD
    VOLUME_GROUP_NAME="devstack"
    VOLUME_NAME_PREFIX="volume-"
    

    我添加了第2块硬盘,并在其上创建了devstack卷组,这样防止devstack自动创建的卷组空间不够。

    最后执行

    ./stack.sh
    

    上传镜像

    下载ubuntu的云计算环境安装镜像 https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img 上传的时候选择qcow2格式 云计算镜像不能配置用户名密码,只能通过ssh密钥登录

    遇到的问题

    • 上传镜像时提示post数据太大 /etc/apache2/apache2.conf文件中添加 LimitRequestBody 0

    Views: 0

  • openstack概念

    认证服务

    • 用户,角色,项目的关系

      用户代表自然人,每个用户有自己的帐号和密码 角色代表一组权限,一个用户可以属于一个或多个角色 项目(project),以前叫租户(tenant),项目是一组资源的集合(包括虚拟机,存储,网络等)。通过角色权限赋予某个用户具有操作某个项目的权限。

    • 域(Domain)

      域是一组用户,角色,项目的集合,不同域中的用户,角色,项目可以重名。域是为了openstack中的对象进行隔离管理。

    • keystone

      keystone是openstack中负责用户管理和认证的组件,其功能包括用户和角色的增删改查,身份证证,会话管理。在openstack中每一个api请求都要经过keystone进行身份认证和权限检查。 keystone相当于openstack的用户中心。

    • 服务目录

      每个模块启动后都会向服务目录进行注册,有点类似Java的微服务。一个服务注册的时候包括名字,类型,URL。 kkeystone的服务注册如下:

      {
        "catalog": [
            {
                "name": "Keystone",
                "type": "identity",
                "endpoints": [
                    {
                        "interface": "public",
                        "url": "https://identity.example.com:5000/"
                    }
                ]
            }
        ]
      }
      

    服务目录也是由keystone提供的,所以keystone是openstack最核心的模块,也是第一个模块。 keystone的介绍参考这里: https://docs.openstack.org/keystone/rocky/index.html https://blog.csdn.net/i_nclude/article/details/78106119

    keystone是用python开发的,所以安装keystone要先安装python

    网络

    Openstack的网络是由Neutron提供的,Neutron中plugin处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用 Agent 处理请求。 Agent处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。 也就是说Plugin提供了对虚拟网络的访问,Agent提供了与物理网经的交互。 但是以上方式存在一个问题,就是所有openstack节点需要使用相同的plugin和agent,这限制了网络架构的灵活性。为了解决这个问题就开发了ML2 Plugin,它对物理网络进行了抽象,也就是不管物理网络是Linux bridge,Open vSwitch,SDN等,plugin看到的物理网络都是一样的。 ML2需要配置两种driver,Type Driver定义了虚拟网络的类型,如local,flat,vlan,也就是虚拟机可见的网络类型,Mechansim Driver定义了底层的网络实现机制,例如Linux bridge,Open vSwitch,SDN,SR-IOV。

    要在 ML2 插件中启用类型驱动程序,请编辑 /etc/neutron/plugins/ml2/ml2_conf.ini文件:

    [ml2] 
    type_drivers  =  flat,vlan,vxlan,gre
    

    type driver介绍: local: 只能与同一节点同一网络的vm连接 flat: 相于当桥接到物理网络上 vlan: 需要配置vlan,基它同flat vxlan: 基于udp的二层隧道 gre: 基于gre封装的二层隧道

    同样在/etc/neutron/plugins/ml2/ml2_conf.ini文件中配置启用的Mechansim Driver

    [ml2]
    mechanism_drivers = ovs,l2pop
    

    Mechansim Driver支持Linux bridge,Open vSwitch,SRIOV,MacVTap,L2 population,Specialized。

    neutron的agent是部署在计算节点上的,其它的服务部署在控制节点。

    块存储

    Cinder提供基于网络的块存储设备相关服务,包括存储卷的增删改查,Cinder本身不处理IO请求,只是对存储卷进行管理。Cinder通过具体的Driver与存储后端进行交换,比如lvm,nfs,smb等后端存储设备。cinder-volume安装在专门的存储节点,cinder-api和cinder-scheduler安装在控制节点。存储节点与计算节点通过iscsi,fc等网络协议进行通信。 cinder-volume通过调用iscsi工具创建iSCSI Target。 计算实例如果要使用本地节点的存储而不是cinder提供的网络存储则要配置使用Ephemeral storage。

    计算服务

    openstack通过nova提供计算服务,其实就是对kvm的一层包装,nova也分为控制节点和计算节点,nova-compute部署在计算节点,提供对虚拟机的生命周期管理,其它的部署在控制节点。nova-compute通过libvirt管理kvm。

    镜像服务

    Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。镜像是用来启动和安装虚拟计算实例的,glance支持各种磁盘镜像格式,如vmdk,qcow2,raw等,也支持iso光盘镜像格式。glance中的镜像可以存储在cinder或swift中,也可以存储在本地文件系统或者nfs,http,ftp等网络存储。

    以上五种组件和服务涵盖了认证,计算,存储,网络,镜像等openstack必须的功能。

    Views: 0

  • nextcloud aio添加外部存储

    • 添加环境变量NEXTCLOUD_MOUNT

      NEXTCLOUD_MOUNT会把宿主机上的路径映射到容器中相同的位置 在compose.yaml文件的environment区段添加NEXTCLOUD_MOUNT: /opt/ncdata/ 注意不要加路径设为/mnt或/mnt/ncdata,因为这些nextcloud的默认数据目录重叠了。

      services:
        nextcloud-aio-mastercontainer:
          image: ghcr.io/nextcloud-releases/all-in-one:latest
          init: true
          restart: always
          container_name: nextcloud-aio-mastercontainer
          volumes:
            - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
          ports:
            - 80:80
            - 8080:8080
            - 8443:8443
          environment:
            NEXTCLOUD_MOUNT: /opt/ncdata/ 
      
      • 启用外部存储扩展

      • 启动外部存储

      • 添加外部目录的挂载

        挂载外部目录

    Views: 1

  • nextcloud aio重置

    • 停止主容器 docker stop nextcloud-aio-mastercontainer
    • 停止附属容器 查看所有相关的附属容器 docker ps –format {{.Names}} 重复执行逐一关闭所有附属容器 docker stop nextcloud-aio-apache docker stop nextcloud-aio-whiteboard docker stop nextcloud-aio-notify-push docker stop nextcloud-aio-nextcloud docker stop nextcloud-aio-imaginary docker stop nextcloud-aio-redis docker stop nextcloud-aio-database docker stop nextcloud-aio-talk docker stop nextcloud-aio-collabora
    • 删除已停止的容器 查看所有已停止的容器 docker ps –filter “status=exited” 删除所有已停止的容器 docker container prune
    • 删除容器网络 docker network rm nextcloud-aio
    • 删除虚悬(dangling)状态的volume 查看所有虚悬卷 docker volume ls –filter “dangling=true” 删除所有虚悬卷 docker volume prune –filter all=1 如果配置了NEXTCLOUD_DATADIR环境变量需要手动清理该变量指向的文件夹 查看是否还有没删除的卷 docker volume ls –format {{.Name}}

    现在可以重新创建容器了

    Views: 2

  • nextcloud aio安装

    • 安装docker

      参考docker官方教程

    • 创建/opt/nextcloud/compose.yaml文件

      services:
      nextcloud-aio-mastercontainer:
        image: ghcr.io/nextcloud-releases/all-in-one:latest
        init: true
        restart: always
        container_name: nextcloud-aio-mastercontainer
        volumes:
          - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
          - /var/run/docker.sock:/var/run/docker.sock:ro
        network_mode: bridge
        ports:
          - 80:80 
          - 8080:8080
          - 8443:8443
        environment: 
          NEXTCLOUD_DATADIR: /opt/nextcloud/data/ncdata 
          NEXTCLOUD_MOUNT: /opt/ncdata/ 
          SKIP_DOMAIN_VALIDATION: true 
          #security_opt: ["label:disable"] # Is needed when using SELinux
      volumes:
        nextcloud_aio_mastercontainer:
          name: nextcloud_aio_mastercontainer
      
    • 启动容器

      docker compose up -d

    • 配置安装向导

      打开https://192.168.33.32:8080 记下单词口令,后面登录要用 填写域名,然后点submit,其它不要动 等附属容器启动完成后记下admin密码

    • SSL证书

      nextcloud aio用的是caddy申请证书,需要给nextcloud绑定一个公网IP和域名,caddy启动时会自动申请SSL证书

    • 容器管理

      通过https://192.168.33.32:8080/containers页面可以对附属容器进行管理

    Views: 7

  • ZStack部署

    ZStack安装

    • 下载ISO安装镜像

      http://www.zstack.io/product/product_downloads/ 文件名 ZStack-x86_64-DVD-4.8.26-h84r.iso 建议下载4.8版本,我用5.3版本安装的时候会出现频繁死机,崩溃,内存溢出的问题。

    • 创建Hyper-V虚拟机作为ZStack的管理节点和计算节点

      创建虚拟机的时候要关闭安全启动,动态内存等 关闭安全启动 关闭安全启动 关闭动态内存 关闭动态内存 启用网卡混杂模式 启用网卡混染模式 开启嵌套虚拟化 Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true 参考:https://learn.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/user-guide/enable-nested-virtualization

    • 安装管理节点

      zstack_install_os.png zstack_mode_selection 可以选择安装企业版和社会版,企业版没有授权只能管理一个计算节点,社区版则有各种功能限制,但不限制节点数。 如果安装后没有启动Web界面(社区版有可能不自动启动Web界面)需要执行以下命令手动启动

      zstack-ctl install_ui
      zstack-ctl start_ui
      

      然后打开:http://192.168.33.183:5000/ 192.168.33.183是管理节点的IP

    • 安装计算节点

      在选择Base Environment的时候选择ZStack Compute Node即可,只不过计算节点没有Web界面 在一个计算集群中各个计算节点的网卡配置需要相同

    • 初始化管理节点

      添加区域,区域就是地理区域,一个区域中包含存储,网络,和集群定义 添加区域 添加集群,集群是一组计算结点的集合,同一集群中的节点共用存储和网络资源 添加区域 添加物理机,一个物机就一个计算节点,管理节点也可以添加为物理机,ZStack可以管理KVM节点,也可以管理VMware Esix节点 添加物理机 添加镜像服务器,就是一个iso等镜像文件的存储空间,这里是放在管理节点的/cloud_bs目录了 添加镜像服务器 添加存储,这里使用本地存储 添加存储 添加实例规格 添加实例规格 向镜像服务器中添加镜像 添加镜像 ZStack会从指定的URL远程下载镜像,也可以通过file://前缀指定本地其它目录的像像 BIOS指的是镜像的启动模式 定义网络 定义二层网络 网卡名称就是物理网卡的设备名 定义三层网络 因为我使用的是桥接上网,所以后面要把三层网络删除再重新创建 把上面定义的三层网络删除后再创建一个没有IP地址管理的三层网络 定义三层桥接网络

      以上已经完成了一个ZStack区域的初始化

    • 创建云盘规格

      创建云盘规格 云盘规格

    • 云主机

      创建云主机 创建云主机 云主机基础规格 基础规格 资源配置 资源配置 信息确认 信息确认 云主机创建完成后还需要修改CPU模式,不然不能发挥CPU的全部功能 CPU模式

      安装好的效果 windows

      我的测试中安装Windows11是不成功的,我猜是因为ZStack还不支持TPM模块的模拟。

    我在测试的时候当管理网络和业务网络共用一张网卡时出现过云主机不能上网的问题,每次需要在计算节点上手动执行ip link set eth0 promisc on开启网卡的混杂模式,但是后来不知道怎么又好了。 对于这种情况还有一种方法是手动创建网桥,而不是使用ZStack自动创建的网桥 创建文件:/etc/sysconfig/network-scripts/ifcfg-br_eth0

    DEVICE=br_eth0
    NAME=br_eth0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.33.183
    PREFIX=24
    GATEWAY=192.168.33.1
    DNS1=192.168.33.1
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    DELAY=5
    STP=no
    

    然后配置ifcfg-eth0,把eth0加入网桥br_eth0

    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth0
    UUID=74db9f02-ee1f-42a2-9847-104fcfa26e8b
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=none
    BRIDGE=br_eth0
    

    重启后就会自动创建网桥br_eth0

    Views: 0

  • centos10配置镜像源

    centos.repo

    [baseos]
    name=CentOS Stream $releasever - BaseOS
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/BaseOS/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=1
    
    [baseos-debuginfo]
    name=CentOS Stream $releasever - BaseOS - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/BaseOS/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [baseos-source]
    name=CentOS Stream $releasever - BaseOS - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/BaseOS/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [appstream]
    name=CentOS Stream $releasever - AppStream
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/AppStream/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=1
    
    [appstream-debuginfo]
    name=CentOS Stream $releasever - AppStream - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/AppStream/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [appstream-source]
    name=CentOS Stream $releasever - AppStream - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/AppStream/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [crb]
    name=CentOS Stream $releasever - CRB
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/CRB/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-crb-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=1
    
    [crb-debuginfo]
    name=CentOS Stream $releasever - CRB - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/CRB/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-crb-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [crb-source]
    name=CentOS Stream $releasever - CRB - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/CRB/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-crb-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    

    centos-addons.repo

    [highavailability]
    name=CentOS Stream $releasever - HighAvailability
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/HighAvailability/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=0
    
    [highavailability-debuginfo]
    name=CentOS Stream $releasever - HighAvailability - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/HighAvailability/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [highavailability-source]
    name=CentOS Stream $releasever - HighAvailability - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/HighAvailability/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [nfv]
    name=CentOS Stream $releasever - NFV
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/NFV/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=0
    
    [nfv-debuginfo]
    name=CentOS Stream $releasever - NFV - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/NFV/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [nfv-source]
    name=CentOS Stream $releasever - NFV - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/NFV/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [rt]
    name=CentOS Stream $releasever - RT
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/RT/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-rt-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=0
    
    [rt-debuginfo]
    name=CentOS Stream $releasever - RT - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/RT/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-rt-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [rt-source]
    name=CentOS Stream $releasever - RT - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/RT/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-rt-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [resilientstorage]
    name=CentOS Stream $releasever - ResilientStorage
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/ResilientStorage/$basearch/os
    # metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=0
    
    [resilientstorage-debuginfo]
    name=CentOS Stream $releasever - ResilientStorage - Debug
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/ResilientStorage/$basearch/debug/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-debug-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [resilientstorage-source]
    name=CentOS Stream $releasever - ResilientStorage - Source
    baseurl=https://mirrors.hetao.me/centos-stream/$releasever-stream/ResilientStorage/source/tree/
    # metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    [extras-common]
    name=CentOS Stream $releasever - Extras packages
    baseurl=https://mirrors.hetao.me/centos-stream/SIGs/$releasever-stream/extras/$basearch/extras-common
    # metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-$stream&arch=$basearch&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    countme=1
    enabled=1
    
    [extras-common-source]
    name=CentOS Stream $releasever - Extras packages - Source
    baseurl=https://mirrors.hetao.me/centos-stream/SIGs/$releasever-stream/extras/source/extras-common
    # metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-source-$stream&arch=source&protocol=https,http
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
    gpgcheck=1
    repo_gpgcheck=0
    metadata_expire=6h
    enabled=0
    
    

    docker-ce.repo

    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-stable-debuginfo]
    name=Docker CE Stable - Debuginfo $basearch
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/debug-$basearch/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-stable-source]
    name=Docker CE Stable - Sources
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/source/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-test]
    name=Docker CE Test - $basearch
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-test-debuginfo]
    name=Docker CE Test - Debuginfo $basearch
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/debug-$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-test-source]
    name=Docker CE Test - Sources
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/source/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly]
    name=Docker CE Nightly - $basearch
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly-debuginfo]
    name=Docker CE Nightly - Debuginfo $basearch
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/debug-$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly-source]
    name=Docker CE Nightly - Sources
    baseurl=https://mirrors.hetao.me/docker-ce/linux/centos/$releasever/source/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.hetao.me/docker-ce/linux/centos/gpg
    

    Views: 1

  • Ventoy启动Linux镜像

    参考上一篇:https://blog.hetao.me/2025/05/12/ventoy%e5%90%af%e5%8a%a8windows%e9%95%9c%e5%83%8f/

    启动Linux镜像和Windows的镜像区别就要是镜像制作方式

    制作Linux镜像

    1. 用Hyper-V创建一个vhd格式,大小固定的虚拟硬盘
    2. 用Hyper-V创建一个虚拟机,使用UEFI启动,不勾选TPM(受信任的平台模块)
    3. 正常安装虚拟机
      创建虚拟机后一定要把硬盘快照关掉
      在虚拟机设置->管理->检查点中取消启用检查点
    4. 下载vtoyboot
      https://github.com/ventoy/vtoyboot/releases
      把下载vtoyboot-1.0.36.iso,解压其中的vtoyboot-1.0.36.tar.gz
      然后执行vtoyboot.sh脚本并关机
    5. 复制镜像到U盘
      虚拟机关机后把vhd格式的硬盘镜像复制到U盘根目录,然后给硬盘镜像添加.vtoy后缀,不然无法启动。
    6. 在BIOS中把UEFI启动类型
      以华硕主板为例
      进入Secure Boot设置菜单
      OS Type设为Other OS
      Secure Boot Mode设为Custom
      这样可以关闭安全启动并支持Linux系统的启动

    Views: 11

  • ubuntu配置nftables规则(开机加载)

    配置/etc/nftables.conf,如下示例

    #!/usr/sbin/nft -f
    
    flush ruleset
    
    table ip filter {
            chain input {
                    type filter hook input priority 0;
            }
            chain forward {
                    type filter hook forward priority filter; policy accept;
            }
            chain output {
                    type filter hook output priority 0;
            }
    }
    table ip nat {
            chain POSTROUTING {
                    type nat hook postrouting priority srcnat; policy accept;
                    iifname "wg2" oifname "eth0" counter masquerade
            }
    }

    systemctl enable nftables

    然后重启系统

    Views: 3

  • powerdns性能基准测试

    下载dnspyre

    https://github.com/Tantalor93/dnspyre/releases

    sqlite数据库

    dnspyre -n 10 -c 100 –server 172.29.0.1 www.hetao.me

    切换到mysql数据库后再次测试

    性能基本没区别,说明数据库并不影响性能,因为查询都是在缓存中完成的,但是数据量大的时候数据库维护更方便。

    Views: 0