<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>经验分享 on bugwang</title>
    <link>https://bugwang.cn/categories/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/</link>
    <description>Recent content in 经验分享 on bugwang</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-ch</language>
    <lastBuildDate>Thu, 06 Jun 2024 15:52:37 +0800</lastBuildDate><atom:link href="https://bugwang.cn/categories/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PVE重建 LVM-Thin 精简池</title>
      <link>https://bugwang.cn/posts/pve%E9%87%8D%E5%BB%BA-lvm-thin-%E7%B2%BE%E7%AE%80%E6%B1%A0%E7%BC%A9%E5%B0%8F%E9%BB%98%E8%AE%A4-local-lvm-%E5%AD%98%E5%82%A8/</link>
      <pubDate>Thu, 06 Jun 2024 15:52:37 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/pve%E9%87%8D%E5%BB%BA-lvm-thin-%E7%B2%BE%E7%AE%80%E6%B1%A0%E7%BC%A9%E5%B0%8F%E9%BB%98%E8%AE%A4-local-lvm-%E5%AD%98%E5%82%A8/</guid>
      <description>PVE重建 LVM-Thin 精简池：缩小默认 local-lvm 存储 背景 ProxmoxVE 的默认安装会创建 local 和 local-lvm 两个存储。其中local大约磁盘容量的10%，存储类别为目录。 大部分容量都给到了 local-lvm，也就是存储类别为 lvm-thin 的LVM精简卷。
前置知识： LVM逻辑卷管理器中，lv逻辑卷中还存在thin pool精简池模式，相当于 ESXI 的精简制备（Thin provisioning）； thin pool精简池就是一个存储池，可以在池子的基础再新建lv逻辑卷，也就是thin volume精简卷。
因为考虑空间回收问题，我不想像大多数网上教程一样，把全部存储空间改成目录，下面介绍如何将默认的 local-lvm 存储重建（缩小）。
一条龙命令 #假设你已经有了一个名为 pve 的 LVM 卷组 lvcreate -L 100G -T pve/thinpool lvcreate -V 99G --thin -n thinvolume pve/thinpool #剩下的空间给到目录 lvresize --extents +100%FREE --resizefs pve/root #+100%FREE也可以换成+多少G这种形式。 vim /etc/pve/storage.cfg
lvmthin: thinvolume thinpool thinpool vgname pve content images,rootdir 参考我的命令历史： 一、删除默认thinpool精简池 失败操作 root@pve:~# lvremove /dev/pve/data Removing pool &amp;#34;data&amp;#34; will remove 3 dependent volume(s).</description>
    </item>
    
    <item>
      <title>SSH登录安全与Fail2ban加固</title>
      <link>https://bugwang.cn/posts/ssh%E7%99%BB%E5%BD%95%E5%AE%89%E5%85%A8%E4%B8%8Efail2ban%E5%8A%A0%E5%9B%BA/</link>
      <pubDate>Tue, 04 Jun 2024 12:15:23 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/ssh%E7%99%BB%E5%BD%95%E5%AE%89%E5%85%A8%E4%B8%8Efail2ban%E5%8A%A0%E5%9B%BA/</guid>
      <description>SSH登录安全与Fail2ban加固 查看：SSH暴力破解/爆破次数 RedHat 和 CentOS 存储在 /var/log/secure 1.查看 root 用户登录成功的IP及次数看看是否有不熟悉的 IP 地址 grep &amp;#34;Accepted password for root&amp;#34; /var/log/secure | awk &amp;#39;{print $11}&amp;#39; | sort | uniq -c | sort -nr | more 2.查看尝试暴力破解 root 账户的IP及次数 grep &amp;#34;Failed password for root&amp;#34; /var/log/secure | awk &amp;#39;{print $11}&amp;#39; | sort | uniq -c | sort -nr | more 3.查看尝试暴力破解用户名的IP及次数 grep &amp;#34;Failed password for invalid user&amp;#34; /var/log/secure | awk &amp;#39;{print $13}&amp;#39; | sort | uniq -c | sort -nr | more Debian 和 Ubuntu 存储在 /var/log/auth.</description>
    </item>
    
    <item>
      <title>PVE使用华为USB网卡</title>
      <link>https://bugwang.cn/posts/proxmox-ve%E4%BD%BF%E7%94%A8%E5%8D%8E%E4%B8%BAusb%E7%BD%91%E5%8D%A1/</link>
      <pubDate>Sun, 05 Mar 2023 03:07:18 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/proxmox-ve%E4%BD%BF%E7%94%A8%E5%8D%8E%E4%B8%BAusb%E7%BD%91%E5%8D%A1/</guid>
      <description>在winidow中,系统会自动读取随身wifi的window驱动并安装,同时我们可以看到,网卡自带的install_linux文件说明也有linux驱动,遗憾的是,在ubuntu系统上始终无法正确识别,因为ubuntu认为是存储设备,但是又无法检测出usb网卡,因此也无法挂载,所以需要我们自己修改ubuntu.
解决步骤: 插入随身wif,按Ctrl +Alt+t打开终端,输入lsusb,显示目前所有的usb设备 root@pve:~# lsusb Bus 002 Device 002: ID 0bc2:ab24 Seagate RSS LLC Backup Plus Portable Drive Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge Bus 001 Device 003: ID 040a:2814 Kodak Co. USB Composite Device Bus 001 Device 002: ID 12d1:1c20 Huawei Technologies Co.</description>
    </item>
    
    <item>
      <title>Rclone从安装到长期挂载服务</title>
      <link>https://bugwang.cn/posts/rclone%E4%BB%8E%E5%AE%89%E8%A3%85%E5%88%B0%E6%8C%82%E8%BD%BD%E9%95%BF%E6%9C%9F%E6%9C%8D%E5%8A%A1/</link>
      <pubDate>Sat, 04 Mar 2023 23:37:09 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/rclone%E4%BB%8E%E5%AE%89%E8%A3%85%E5%88%B0%E6%8C%82%E8%BD%BD%E9%95%BF%E6%9C%9F%E6%9C%8D%E5%8A%A1/</guid>
      <description>安装 Linux Rclone官方提供了一键安装脚本： curl https://rclone.org/install.sh | bash apt install -y fuse3 Win scoop install rclone #cd C:\Users\Administrator\scoop\apps\rclone #dir 配置 第一次配置 在终端输入 rclone config 进行配置
rclone config - 进入交互式配置选项，进行添加、删除、管理网盘等操作。
详细操作参见：《Rclone 安装配置教程》
再次重复配置 备份 rclone config file - 显示配置文件的路径，一般配置文件在 ~/.config/rclone/rclone.conf
rclone config show - 显示配置文件内容，复制备份
恢复 mkdir -p ~/.config/rclone cat &amp;gt; ~/.config/rclone/rclone.conf &amp;lt;&amp;lt;EOF 《rclone.conf配置文件内容》 EOF 指定rclone配置文件启动 默认配置：/root/.config/rclone/rclone.conf
--config /root/.config/rclone/rclone.conf #例如 rclone lsd gd_share: --config=~/.config/rclone/rclone.conf 启动 rclone常用命令 ### 文件上传 rclone copy /home/backup gdrive:backup # 本地路径 配置名字:网盘文件夹路径 ### 文件下载 rclone copy gdrive:backup /home/backup # 配置名字:网盘文件夹路径 本地路径 ### 新建文件夹 rclone mkdir gdrive:backup # 配置名字:网盘文件夹路径 ### 获取文件夹大小 rclone size gdrive:backup # 配置名字:网盘文件夹路径 ### 列表 rclone ls gdrive:backup rclone lsl gdrive:backup # 比上面多一个显示上传时间 rclone lsd gdrive:backup # 只显示文件夹 ### 挂载 rclone mount gdrive:mm /root/mm &amp;amp; ### 卸载 fusermount -u /root/mm #### 其他 #### rclone config - 以控制会话的形式添加rclone的配置，配置保存在.</description>
    </item>
    
    <item>
      <title>MongoDB：副本集读写分离搭建</title>
      <link>https://bugwang.cn/posts/mongodb%E5%89%AF%E6%9C%AC%E9%9B%86%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB%E6%90%AD%E5%BB%BA/</link>
      <pubDate>Wed, 01 Mar 2023 18:54:09 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/mongodb%E5%89%AF%E6%9C%AC%E9%9B%86%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB%E6%90%AD%E5%BB%BA/</guid>
      <description>背景知识 副本集（Replica Set，replSet，复制集）具有自动故障恢复的功能。主从集群和副本集最大的区别就是副本集没有固定的主节点，整个集群会选出一个主节点，当其挂掉后，会在剩下的副节点中选中一个作为主节点，副本集中总有一个活跃节点(primary)和多个备份节点(secondary)。
MongoDB官方已经不建议使用主从模式，代替的方案是采用副本集的模式。
主从模式 其实就是一个单副本的应用，没有很好的扩展性和容错性，而MongoDB副本集具有多个副本保证了容错性，即使一个副本挂掉了还有多个副本存在，主节点挂掉后，整个集群内会实现自动切换
副本集工作原理 客户端连接到整个MongoDB副本集，不关心具体哪一台节点是否挂掉。主节点负责整个副本集的读写，副本集定期同步数据备份，一旦主节点挂掉，副节点就会选举一个新的主节点，而这一切对于应用服务器不需要任何关心。
副本集中副节点在主节点挂掉后通过心跳机制检测到后，就会在副本集内发起主节点的选举机制，自动选举一位新的主节点。
官方推荐的MongoDB副本集机器数量为至少 3 个，即：一主两副
环境准备 因为主机数量有限，这里只用两个副本集部署演示，两台主机：Centos
ip地址 主机名 角色 192.168.198.140 mongo-master 副本集主节点 192.168.198.142 mongo-slave 副本集副节点 关闭防火墙：
systemctl stop firewalld systemctl disable firewalld 安装MongoDB 安装 wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.8.tgz tar -zvxf mongodb-linux-x86_64-rhel70-4.2.8.tgz mv mongodb-linux-x86_64-rhel70-4.2.8 /usr/local/mongodb cd /usr/local/mongodb mkdir conf data logs touch conf/mongodb.conf touch logs/mongodb.log mkdir -p data/db 编写MongoDB配置文件mongodb.conf #数据存储路径 dbpath=/usr/local/mongodb/data/db #日志存储文件 logpath=/usr/local/mongodb/logs/mongodb.log #运行端口 port= 27017 #守护进程的方式运行MongoDB，创建服务器进程 fork=true #使用追加的方式写日志 logappend=true # 绑定服务IP，若绑定127.0.0.1，则只能本机访问，不指定默认本地所有IP bind_ip= 192 .168.198. #使用此设置来配置复制副本集。指定一个副本集名称作为参数，所有主机都必须有相同的名称作为同一个副本集 replSet=repset 启动 [root@mongo-master mongodb]# .</description>
    </item>
    
    <item>
      <title>Linux服务器备份和还原：tar命令</title>
      <link>https://bugwang.cn/posts/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%87%E4%BB%BD%E5%92%8C%E8%BF%98%E5%8E%9Ftar%E5%91%BD%E4%BB%A4/</link>
      <pubDate>Mon, 12 Sep 2022 09:18:09 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%87%E4%BB%BD%E5%92%8C%E8%BF%98%E5%8E%9Ftar%E5%91%BD%E4%BB%A4/</guid>
      <description>tar备份还原 备份 备份脚本
#!/bin/bash # 强制必须传参 if [ $# -eq 0 ]; then echo &amp;#34;Error: Missing parameter one. Usage: $0 &amp;lt;_BACKUP_DIR&amp;gt;, EXIT&amp;#34; exit 1 fi # 设置备份目录 _BACKUP_DIR=$(realpath &amp;#34;$1&amp;#34;) # 设置输出文件夹（包含末尾斜杠） DEST_PATH=&amp;#34;${_BACKUP_DIR}/$(hostname -I | awk &amp;#39;{print $1}&amp;#39;)/&amp;#34; mkdir -p &amp;#34;$DEST_PATH&amp;#34; # 设置输出文件基础名 DEST_BASE_FILENAME=$(basename &amp;#34;$0&amp;#34;) set -x # 检查 pv 命令存在并安装 _CMDNAME=pv if ! command -v $_CMDNAME &amp;amp;&amp;gt; /dev/null; then if command -v apt-get &amp;amp;&amp;gt; /dev/null; then apt-get update apt-get install -y $_CMDNAME else echo &amp;#34;Error: $_CMDNAME not found and apt-get can&amp;#39;t install.</description>
    </item>
    
    <item>
      <title>Linux下使用NFS访问群晖文件服务</title>
      <link>https://bugwang.cn/posts/linux%E4%B8%8B%E4%BD%BF%E7%94%A8nfs%E8%AE%BF%E9%97%AE%E7%BE%A4%E6%99%96%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1/</link>
      <pubDate>Mon, 06 Dec 2021 19:00:14 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/linux%E4%B8%8B%E4%BD%BF%E7%94%A8nfs%E8%AE%BF%E9%97%AE%E7%BE%A4%E6%99%96%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1/</guid>
      <description>服务端：群晖 开启NFS服务 文件服务 - NFS权限。服务器名称或IP地址：
192.168.0.1/24 客户端 一条龙命令：
#安装nfs服务 yum install nfs-utils -y #显示远程主机共享文件 showmount -e 192.168.x.xx #创建本地目录 mkdir /NFSfile #将远程文件夹挂载到本地目录 mount -t nfs 192.168.1.15:/volume4/Swap /NFSfile -o proto=tcp -o nolock #开启开机挂载 vi /etc/fstab 192.168.x.xx:/volume1/Swap /NFSfile nfs defaults 0 0 安装 apt update apt install nfs-common 查看挂载点
root@debian-11:~# showmount -e 192.168.0.155 Export list for 192.168.0.155: /volume2/HC550_16T 192.168.0.155 /volume1/esxi 192.168.0.8 挂载 注意左下角提示的「装载路径」
使用mount命令：
mount -t nfs -o nolock 群晖IP地址:/volume1/video /mnt/挂载路径要先存在 mount -t nfs -o nolock 192.</description>
    </item>
    
    <item>
      <title>Dockerfile笔记</title>
      <link>https://bugwang.cn/posts/docker%E7%AC%94%E8%AE%B0%E7%BC%96%E5%86%99dockerfile/</link>
      <pubDate>Sat, 07 Aug 2021 16:25:53 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/docker%E7%AC%94%E8%AE%B0%E7%BC%96%E5%86%99dockerfile/</guid>
      <description>DockerFile指令 Dockerfile指令包括：
Dockerfile 指令 说明 FROM 指定基础镜像，用于后续的指令构建。 MAINTAINER 指定Dockerfile的作者/维护者。（已弃用，推荐使用LABEL指令） LABEL 添加镜像的元数据，使用键值对的形式。 RUN 在构建过程中在镜像中执行命令。 CMD 指定容器创建时的默认命令。（可以被覆盖） ENTRYPOINT 设置容器创建时的主要命令。（不可被覆盖） EXPOSE 声明容器运行时监听的特定网络端口。 ENV 在容器内部设置环境变量。 ADD 将文件、目录或远程URL复制到镜像中。 COPY 将文件或目录复制到镜像中。 VOLUME 为容器创建挂载点或声明卷。 WORKDIR 设置后续指令的工作目录。 USER 指定后续指令的用户上下文。 ARG 定义在构建过程中传递给构建器的变量，可使用 “docker build” 命令设置。 ONBUILD 当该镜像被用作另一个构建过程的基础时，添加触发器。 STOPSIGNAL 设置发送给容器以退出的系统调用信号。 HEALTHCHECK 定义周期性检查容器健康状态的命令。 SHELL 覆盖Docker中默认的shell，用于RUN、CMD和ENTRYPOINT指令。 通过 Dockerfile 中的这些指令，可以构建出一个完整的Docker 镜像。
1 基础指令 1）FROM 格式： FROM &amp;lt;image&amp;gt; FROM &amp;lt;image&amp;gt;:&amp;lt;tag&amp;gt; 解释：FROM是Dockerfile的第一条而且只能是除了首行注释之外的第一条指令。
2）MAINTAINER 格式： MAINTAINER &amp;lt;name&amp;gt; 解释：指定该Dockerfile文件的维护者信息，类似我们在docker commit时候使用-a参数指定的信息。
3）RUN：(构建镜像) 运行命令（安装环境） 解释：执行命令并创建新的镜像层，通常用于安装软件包
格式： RUN &amp;lt;command&amp;gt; (shell 模式) RUN[&amp;#34;executable&amp;#34;, &amp;#34;param1&amp;#34;, &amp;#34;param2&amp;#34;] (exec 模式：注意需要&amp;#34;双引号&amp;#34;) shell模式：RUN echo 1 ——/bin/sh -c &amp;lsquo;1 &#39; 使用 shell 模式时，docker 会以 /bin/sh -c &amp;quot;task command&amp;quot; 的方式执行任务命令。也就是说容器中的 1号进程 不是任务进程而是 bash进程</description>
    </item>
    
  </channel>
</rss>
