分类目录归档:技术工作记录

复制Esxi虚拟机

1.复制单个虚拟机

    SRC_VM="klv10-000_1"
    DST_VM="klv10-008"
    DATASTORE="kylin-vdis-storage (1)"
    
    # 录
    mkdir "/vmfs/volumes/${DATASTORE}/${DST_VM}"
    
    # 复制文件
    vmkfstools -i "/vmfs/volumes/${DATASTORE}/${SRC_VM}/${SRC_VM}.vmdk" \
               "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmdk" -d thin
    
    # 复制并修改配置文件
    cp "/vmfs/volumes/${DATASTORE}/${SRC_VM}/${SRC_VM}.vmx" \
       "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
    
    sed -i "s/${SRC_VM}/${DST_VM}/g" "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
    
    # 注册新虚拟机
    vim-cmd solo/registervm "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
    
    echo "虚拟机 ${DST_VM} 克隆完成"
    

    2. 批量复制虚拟机

    onfiguration
    SRC_VM="klv10-008"       # Source VM template
    DATASTORE="kylin-vdis-storage (1)"   # Storage location
    START_NUM=12              # First VM number
    END_NUM=106              # Last VM number
    
    # Path definitions
    SRC_DIR="/vmfs/volumes/${DATASTORE}/${SRC_VM}"
    SRC_VMDK="${SRC_DIR}/${SRC_VM}.vmdk"
    SRC_VMX="${SRC_DIR}/${SRC_VM}.vmx"
    
    # Verify source VM exists
    [ ! -d "${SRC_DIR}" ] && { echo "ERROR: Source VM directory ${SRC_DIR} not found"; exit 1; }
    [ ! -f "${SRC_VMX}" ] && { echo "ERROR: Source VMX file ${SRC_VMX} not found"; exit 1; }
    
    # Main cloning loop
    for NUM in $(seq -w ${START_NUM} ${END_NUM}); do
        DST_VM="klv10-${NUM}"
        DST_DIR="/vmfs/volumes/${DATASTORE}/${DST_VM}"
        DST_VMDK="${DST_DIR}/${DST_VM}.vmdk"
        DST_VMX="${DST_DIR}/${DST_VM}.vmx"
    
        echo "========================================"
        echo "Cloning ${SRC_VM} to ${DST_VM}"
        echo "========================================"
    
        # Create destination directory
        mkdir -p "${DST_DIR}" || { echo "ERROR: Failed to create directory ${DST_DIR}"; continue; }
    
        # Clone virtual disk
        echo "Step 1/3: Cloning virtual disk..."
        vmkfstools -i "${SRC_VMDK}" "${DST_VMDK}" -d thin || { echo "ERROR: Disk clone failed"; continue; }
    
        # Copy and modify config file
        echo "Step 2/3: Processing VM configuration..."
        cp "${SRC_VMX}" "${DST_VMX}" || { echo "ERROR: Failed to copy VMX file"; continue; }
        sed -i "s/${SRC_VM}/${DST_VM}/g" "${DST_VMX}" || { echo "ERROR: Failed to modify VMX file"; continue; }
    
        # Register new VM
        echo "Step 3/3: Registering VM..."
        vim-cmd solo/registervm "${DST_VMX}" || { echo "ERROR: VM registration failed"; continue; }
    
        echo "Successfully cloned ${DST_VM}"
    done
    
    echo "Bulk cloning operation completed"
    

    Ubuntu部署Wireguard

    # 更新镜像并安装WireGuard
    apt update && apt install -y wireguard
    
    # 开启IP转发
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p
    
    

    2. 生成密钥对

    # 创建配置目录
    mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
    cd /etc/wireguard
    umask 077
    
    # 生成服务器密钥
    wg genkey | tee server_privatekey | wg pubkey > server_publickey
    
    # 生成客户端密钥(可生成多个)
    wg genkey | tee client1_privatekey | wg pubkey > client1_publickey
    
    

    3. 服务端配置

    # 创建配置文件(注意替换eth0为实际网卡名)
    cat > wg0.conf <<EOF
    [Interface]
    PrivateKey = $(cat server_privatekey)
    Address = 10.0.8.1/24
    ListenPort = 50814
    DNS = 8.8.8.8
    MTU = 1420
    
    # 流量转发规则(eth0需替换)
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
    [Peer]
    # 客户端1配置
    PublicKey = $(cat client1_publickey)
    AllowedIPs = 10.0.8.10/32
    EOF
    
    

    4. 启动服务

    # 设置开机自启
    systemctl enable wg-quick@wg0
    
    # 启动服务
    wg-quick up wg0
    
    # 检查状态
    wg show

    5. 客户端配置

    # 生成客户端配置
    cat > client1.conf <<EOF
    [Interface]
    PrivateKey = $(cat client1_privatekey)
    Address = 10.0.8.10/32
    DNS = 8.8.8.8
    MTU = 1420
    
    [Peer]
    PublicKey = $(cat server_publickey)
    Endpoint = [服务器公网IP]:50814
    AllowedIPs = 0.0.0.0/0
    PersistentKeepalive = 25
    EOF
    
    
    # 生成新客户端密钥
    wg genkey | tee client2_privatekey | wg pubkey > client2_publickey
    
    # 追加到wg0.conf
    cat >> wg0.conf <<EOF
    
    [Peer]
    # 客户端2配置
    PublicKey = $(cat client2_publickey)
    AllowedIPs = 10.0.8.11/32
    EOF
    
    # 重载配置
    wg syncconf wg0 <(wg-quick strip wg0)
    
    链接:https://juejin.cn/post/7512058418623774735
    来源:稀土掘金

    服务器升级

    因为预算被砍掉了,部门的服务器算力和存储存在巨大缺失

    6月开始单独批了一笔耗材费用用于升级服务器

    升级的主要设备如下:

    11台IBM 3850 M4,5台IBM 3850 M4;

    同时从图书馆移交的老设备中恢复了两个惠普P1000 G3存储,一共35T,另外还有一台宝徳存储80T

    升级完成总的算力增加了968核心,内存增加2688T

    另外,校园涉及的三级存储模式基本成型:

    F级别:ssd等缓存和加速卡

    S级别:磁盘阵列等用于生产存储,关键业务存储

    T级别:USB磁盘柜,移动硬盘,磁带机等用于离线备份和历史数据的存储等大容量非在线面向用户服务的存储

    openwrt的批量配置

    最近使用openwrt来配置实名制无线网络,使用了B70的极路由。使用openwrt的官网相应版本刷机。

    1. 算号器在恩山上下载,go语言编写,同步有ssh自动开启
    2. 开启后,使用mtd -r write ./<image.bin> u-boot;刷上uboot
    3. 拔掉电源按住reset,启动后进入uboot,输入最新镜像即可
    4. 配置网络要求
    5. 在路由器系统设置中,导出openwrt配置,为tar.gz文件,解压缩修改里面二各项目配置,特别是删除MAC地址的配置
    6. 这样就制作好了配置模板,其他路由器就可以按照定制的方式刷入配置