You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LXC容器rsync迁移后MySQL目录权限归属异常排查求助

LXC容器迁移后MySQL目录属主异常问题解答

1. 问题成因及责任归属

这是LXC用户ID(UID)/组ID(GID)映射规则不一致导致的,和rsync、MariaDB无关:

  • rsync只是忠实地同步了文件在宿主机层面的UID/GID值,未做任何修改;
  • 原容器内mysql用户对应某个UID,在原宿主机的LXC映射规则下,这个容器UID会被转换为宿主机的某个UID;
  • 新宿主机拉取数据时,同步过来的文件保留了原宿主机的UID值;
  • 新宿主机的LXC映射规则与原宿主机不同,导致该宿主机UID在新容器内被解析为另一个用户的UID(即996,对应polkitd);
  • 你确认两个容器/etc/passwd一致,说明容器内用户配置无问题,问题出在宿主机的LXC映射层。

2. 解决方案

步骤1:统一LXC映射规则

  1. 停止新服务器上的目标容器:
    lxc-stop -n myRsyncedContainer
    
  2. 同步原宿主机的ID映射配置:
    • 查看原容器配置文件(通常在/var/lib/lxc/myOriginalContainer/config),找到lxc.idmap相关行,例如:
      lxc.idmap = u 0 100000 65536
      lxc.idmap = g 0 100000 65536
      
    • 将上述配置复制到新宿主机对应容器的config文件中;
    • 确保新宿主机/etc/subuid和/etc/subgid包含相同的映射范围,例如添加:
      root:100000:65536
      

步骤2:修正文件属主

两种可选方式:

  • 宿主机层面操作(容器未启动时):
    假设容器内mysql用户的UID为Y,映射规则为容器UID对应宿主机UID 100000+Y,执行:
    chown -R $((100000+Y)):$((100000+Y)) /var/lib/lxc/myRsyncedContainer/rootfs/var/lib/mysql
    chown -R $((100000+Y)):$((100000+Y)) /var/lib/lxc/myRsyncedContainer/rootfs/var/lib/mysql-files
    
  • 容器内操作(映射规则修正后启动容器):
    启动容器后进入内部重置属主:
    lxc-start -n myRsyncedContainer
    lxc-attach -n myRsyncedContainer
    chown -R mysql:mysql /var/lib/mysql /var/lib/mysql-files
    exit
    

步骤3:验证结果

重新进入容器,执行ls -ld /var/lib/mysql /var/lib/mysql-files确认属主已恢复为mysql:mysql。

3. 受影响文件范围及全局检查方法

受影响文件

所有容器内由非root用户/组拥有的文件都可能受影响,例如:

  • Web服务的www-data用户文件;
  • PostgreSQL、Redis等数据库服务的用户文件;
  • systemd-journald、ntp等系统服务的专用用户文件。

全局检查方法

  1. 容器内直接排查异常属主:
    列出所有非root属主且UID未正确解析为用户名的文件:

    find / -not -user root -not -group root -exec ls -ld {} \; | grep -E '^[^ ]+ +[0-9]+ [0-9]+ '
    

    (输出中显示数字UID/GID的即为解析异常的文件)

  2. 对比原容器属主列表:

    • 在原容器内导出所有文件的属主信息:
      find / -printf "%u:%g %p\n" > original_owners.txt
      
    • 将original_owners.txt传到新容器,导出当前属主信息:
      find / -printf "%u:%g %p\n" > new_owners.txt
      
    • 对比差异:
      diff original_owners.txt new_owners.txt
      
  3. 宿主机层面验证映射匹配:
    查看容器rootfs目录下文件的宿主机UID,对照LXC映射规则,确认是否对应容器内的正确用户。例如映射规则为u 0 100000 65536,则容器内UID X对应宿主机UID 100000+X,若文件的宿主机UID不符合该规则,说明存在异常。


内容的提问来源于stack exchange,提问作者Kiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:57:21