TiMa

分类: 运维

  • Gitlab Docker部署gitaly启动失败问题

    在NAS上部署docker版gitlab,发现其他都正常,创建群组也正常,但是创建项目就会报500错误,

    Request ID: 01JXKP6NTCNM201KEGMSDHFJ2J

    查运行状态,gitaly未运行,有大量的gitaly错误日志,错误信息大致如下:

    {"error":"open /var/opt/gitlab/gitaly/gitaly.pid: permission denied","level":"fatal","msg":"find process","pid":3499,"time":"2025-06-13T14:56:03.048Z","wrapper":3499}
    
    unclean Gitaly shutdown: creating Git command factory: setting up Git execution environment: constructing Git environment: Checking bundled Git binary "gitaly-git-v2.49": permission denied
    {“level”:“warning”,“msg”:“The current configurations will cause Gitaly to fail to start up in future versions. Please run ‘gitaly configuration validate \u003c /var/opt/gitlab/gitaly/config.toml’ and fix the errors that are printed.”,“pid”:46135,“time”:“2025-06-13T14:59:34.981Z”}
    FAIL: 14:connections to all backends failing; last error: UNKNOWN: unix:/var/opt/gitlab/gitaly/gitaly.socket: No such file or directory

    换了好几个版本都是如此,经过大量查询和AI解释,都只解释了一半,主要与 GitLab 容器内 gitaly-git 二进制文件的权限或配置异常有关,也没有给准确的建议。这个问题的原因在于/var是一个受noexec保护的路径,禁止运行gitaly服务程序,而gitaly的运行目录正好位于:/var/opt/gitlab/gitaly/

    即便做了目录持久化挂载,给了读写权限,给了git用户/组权限,也会受目录保护影响,解决方案有两个:

    (更多…)
  • Centos常用命令1

    开发工具安装 yum groupinstall “Development tools”

     
     

    查看文件夹占用空间:

    du -h –max-depth=1

     
     

    apt-get install ubuntu-developer-tools-center

    yum install bash-completion 命令补全

     
     

    更新时间

    timedatectl

    设置时区

    timedatectl set-timezone Asia/Shanghai

    是否NTP服务器同步

    timedatectl set-ntp yes

    yum -y install ntp ntpdate

    设置系统时间与网络时间同步

    ntpdate cn.pool.ntp.org

     
     

    删除30天以前的log文件

    find /opt/soft/log/ -mtime +30 -name “*.log” -exec rm -rf {} \;

     
     

    shell脚本测试:

    测试脚本: sh -n ***.sh 

    检验脚本: sh -vx ***.sh

  • Gitlab 相关命令

    # 重新应用gitlab的配置

    gitlab-ctl reconfigure

     

    # 重启gitlab服务

    gitlab-ctl restart

     

    # 查看gitlab运行状态

    gitlab-ctl status

     

    #停止gitlab服务

    gitlab-ctl stop

     

    # 查看gitlab运行日志

    gitlab-ctl tail

     

    # 停止相关数据连接服务

    gitlab-ctl stop unicorn

    gitlab-ctl stop sideki

     

    创建备份:gitlab-rake gitlab:backup:create

     
     

    现在我们要从1522918586_2018_04_05_10.6.2这个备份编号中,恢复数据,命令如下:

    gitlab-rake gitlab:backup:restore BACKUP=1522918586_2018_04_05_10.6.2

  • 服务器利用LVM分区挂载磁盘全记录

    服务器利用LVM分区挂载磁盘全记录

    1、进入服务器后,首先利用fdisk -l来观察磁盘信息,可以看出红线标注处,有两块硬盘信息,分别是40G和300G

    2、同时你也可以观察到分区信息,40G的硬盘已经分了一个区vda1,大小(Blocks)是41940992,分区类型83,linux分区类型。而vdb磁盘下并没有任何分区信息,证明还没有分区。

    3、因为我们要分的是第二块300G的硬盘,所以我们输入 fdisk /dev/vdb,出来如下界面的时候,就可以继续输入命令进行操作了

     4、可以通过m命令来查看分区的命令都有那些

    5、输入 n 选择创建一个分区

    6、连续输入三次回车,都使用默认值,来创建一个主分区

    7、这样分区就分好了,下边继续操作,输入 t 修改创建好的分区格式,显示已有一个分区被选择

    8、输入 8e 就把分区格式修改为了 Linux LVM 格式

    9、最后输入 w 保存修改即完成了分区的过程

    10、我们再来用 fdisk -l 查看下磁盘信息,可以看到硬盘vdb下已经多了一个分区vdb1了,并且分区格式是8e Linux LVM

     11、首先检查LVM安装了没有,使用 yum list installed | grep lvm 看安装了没有,如果没有就用 yum install lvm2 命令装一下

    12、下边开始开始使用LVM来进行动态卷管理了,使用 pvcreate 来创建物理卷,创建后使用pvdisplay  来查看创建的物理卷信息

    pvcreate /dev/sdb1

    pvcreate /dev/vdb1

    13、使用 vgcreate 来创建卷组,创建后使用vgdisplay来查看创建的卷组信息

    vgcreate vgsdb /dev/sdb1

    vgcreate vgvdb /dev/vdb1

     14、使用 lvcreate 来创建逻辑卷(文中命令是把VG空间全部给于lv1逻辑卷),创建后使用lvdisplay来查看创建的逻辑卷信息

    lvcreate -l 100%free -n lvsdb vgsdb

    lvcreate -l 100%free -n lvvdb vgvdb

     15、再来使用 fdisk -l 命令来看一个分区信息,可以出到lv1已经被显示出来了

    16、使用 mkfs.ext4 来格式化 lv1

    mkfs.ext4 /dev/vgsdb/lvsdb

    mkfs.xfs /dev/vgsdb/lvsdb

    mkfs.xfs /dev/vgvdb/lvvdb

     16、先建立一个目录,然后将该lv1挂载至该目录下,利用df -T -h命令,我们可以看出该lv1已经挂载好并且可以访问了

    mount /dev/vgsdb/lvsdb /

    mount -t xfs /dev/vgsdb/lvsdb /

    mount -t xfs /dev/vgvdb/lvvdb /

    17、使用 vim /etc/fstab  来设置开机自动挂载

    18、输入 /dev/vgsdb/lvsdb                    /apps                   ext4    defaults        0 0

    /dev/vgsdb/lvsdb /opt xfs defaults 0 0

    /dev/vgvdb/lvvdb /opt xfs defaults 0 0

    19、重启机器后,可以看到lv1分区已经顺利挂载到了apps目录下,打完收功,大功告成!

  • Linux下buff/cache占用过大处理

    echo 1 > /proc/sys/vm/drop_caches

    echo 2 > /proc/sys/vm/drop_caches

    echo 3 > /proc/sys/vm/drop_caches

    sync && echo 1 > /proc/sys/vm/drop_caches && echo 2 > /proc/sys/vm/drop_caches && echo 3 > /proc/sys/vm/drop_caches