win docker clickhouse 挂载本地目录到容器后无法写入数据问题解决

news/2024/5/5 16:57:40

win docker 部署clickhouse

  • 挂载本地目录到容器后无法写入数据问题
    • 具体错误提示代码
    • 尝试在docker compose 文件中添加文件操作的许可
    • 进一步在docker compose 中配置 `ulimits`参数如下
    • 修改映射的本地目录到d盘
    • 最后使用docker的数据卷来映射到容器内部目录,解决了不能读写的问题。
    • 总结
    • 参考链接

挂载本地目录到容器后无法写入数据问题

具体错误提示代码

### 错误类型1
2024.04.17 14:07:36.146364 [ 687 ] {} <Error> void DB::SystemLog<DB::MetricLogElement>::flushImpl(const std::vector<LogElement> &, uint64_t) [LogElement = DB::MetricLogElement]: std::exception. Code: 1001, type: std::__1::__fs::filesystem::filesystem_error, e.what() = filesystem error: in rename: Permission denied ["/var/lib/clickhouse/store/aab/aabeb250-8346-4fe7-9324-43afb2acfdd9/tmp_insert_202404_12_12_0/"] ["/var/lib/clickhouse/store/aab/aabeb250-8346-4fe7-9324-43afb2acfdd9/202404_12_12_0/"], Stack trace (when copying this message, always include the lines below):### 错误类型2
2024.04.17 23:45:25.431312 [ 686 ] {} <Error> void DB::SystemLog<DB::TraceLogElement>::flushImpl(const std::vector<LogElement> &, uint64_t) [LogElement = DB::TraceLogElement]: Code: 481. DB::ErrnoException: Cannot set modification time to file: /var/lib/clickhouse/store/903/903c5a1f-a517-476c-bbde-0a1820d67d99/tmp_insert_202404_5_5_0/: , errno: 1, strerror: Operation not permitted. (PATH_ACCESS_DENIED), Stack trace (when copying this message, always include the lines below):

大概都是说无法写文件或者修改文件

services:clickhouse:image: clickhouse/clickhouse-server:23container_name: clickhouse
+   privileged: true
+   user: rootports:- 8123:8123- 9000:9000restart: alwaysvolumes:- ./log:/var/log/clickhouse-server:wr- ./conf:/etc/clickhouse-server- ./data:/var/lib/clickhouse:wr

尝试在docker compose 文件中添加文件操作的许可

privileged: true 修改用户的执行权限,添加user:root 都没能解决当前问题。

在容器内执行 df -ih 看到数据目录挂载的路径Inodes有异常,进一步跟踪Inodes问题

root@6b6ab9114480:/var/lib/clickhouse# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
overlay           64M  179K   64M    1% /
tmpfs            982K   189  982K    1% /dev
tmpfs            982K    16  982K    1% /sys/fs/cgroup
shm              982K     1  982K    1% /dev/shm
C:\               999 -976K  977K     - /var/lib/clickhouse
/dev/sdd          64M  179K   64M    1% /etc/hosts

进一步在docker compose 中配置 ulimits参数如下

重启还是没能解决

+   ulimits:
+   nproc: 65535
+     nofile:
+       soft: 65535
+       hard: 65535

修改映射的本地目录到d盘

也没能解决

最后使用docker的数据卷来映射到容器内部目录,解决了不能读写的问题。

具体compose如下:

volumes:data:services:clickhouse:image: clickhouse/clickhouse-server:23container_name: clickhouseprivileged: trueports:- 8123:8123- 9000:9000restart: alwaysvolumes:- ./log:/var/log/clickhouse-server:wr- ./conf:/etc/clickhouse-server- data:/var/lib/clickhouse:wr

docker的数据卷只在docker环境下管理,在本地路径中找不到,可以通过下面命令查看具体数据

docker volume ls
docker volume inspect data

总结

在win下docker的 绑定挂载(bind mount)模式可以将宿主机上的特定目录映射到容器内的指定目录,但是不能支持有大量文件创建的目录绑定,会有inode不够导致数据无法写入的问题,即便是权限、空间都满足,但硬盘格式不匹配,导致inode信息不匹配。

如果映射的目录有大量文件的创建删除,需要使用docker自己创建的数据卷来作为数据挂载目录,用来解决inode问题。

参考链接

  1. 在 WSL 2 中装载 Linux 磁盘
  2. docker 容器数据卷使用(三种挂载方式)

http://www.mrgr.cn/p/53267042

相关文章

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树&#xff1f; 二叉树是一种二分查找树&#xff0c;有很好的查找性能&#xff0c;相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因&#xff1a; 但是当N比较大的时候&#xff0c;树的深度比较高。数据查询的时间主要依赖于…

算法学习笔记Day8——回溯算法

本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;回溯算法代码是否有规律可循&#xff1f; 一、介绍 1.回溯算法是什么&#xff1f; 回溯算法就是个多叉树的遍历问题&#xff0c;关键在于在前序和后序时间点做一些操作…

wps屏幕录制怎么用?分享使用方法!

数字化时代&#xff0c;屏幕录制已成为我们学习、工作和娱乐中不可或缺的一部分。无论是制作教学视频、分享游戏过程&#xff0c;还是录制网络会议&#xff0c;屏幕录制都能帮助我们轻松实现。WPS作为一款功能强大的办公软件&#xff0c;其屏幕录制功能也备受用户青睐。本文将详…

CentOS-7安装Mysql并允许其他主机登录

一、通用设置&#xff08;分别在4台虚拟机设置&#xff09; 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

day13 ts后端持久层框架(java转ts全栈/3R教室)

简介&#xff1a;如果说TS全栈后端开发最重要的两个框架&#xff0c;除了nestjs就是持久层框架了&#xff0c;这里主要看下Typeorm&#xff08;java中常用的就是mybatis&#xff0c;springdatajpa&#xff0c;hebernite了&#xff09; 先回顾下ORM的概念&#xff1a;ORM就是建…

C# GetField 方法应用实例

目录 关于 C# Type 类 GetField 方法应用 应用举例 心理CT设计题 类设计 DPCT类实现代码 小结 关于 C# Type 类 Type表示类型声明&#xff1a;类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义&#xff0c;以及开放或封闭构造的泛型类型。调用 t…

二叉树的性质

性质一:二叉树的第i层上最多有2^(i-1) 个节点 性质二:深度为k的二叉树最多有2^(k)-1个节点 等比数列求和公式: 直接套进去就得到 2^(k)-1 (结点的度&#xff08;Degree) &#xff1a;结点子树的个数。树的度&#xff1a; 树中结点的最大度数。度为k的树也称为k叉树) 性质三:叶…

Uptime Kuma 使用指南:一款简单易用的站点监控工具

我平时的工作会涉及到监控&#xff0c;而站点是一个很重要的监控项。项目上线后&#xff0c;我们通常会将站点监控配置到云平台上&#xff0c;以检测各站点的连通性。但随着项目不断增多&#xff0c;云平台上的配额就有点捉急了。针对这个情况&#xff0c;我们可以试试这个开源…

CSS画一条虚线,并且灵活设置虚线的宽度和虚线之间的间隔和虚线的颜色

CSS画一条虚线,并且灵活设置虚线的宽度和虚线之间的间隔和虚线的颜色。 先看效果图&#xff1a; 在CSS中&#xff0c;你可以使用border属性或者background属性来画一条虚线。以下是两种常见的方法&#xff1a; 方法一&#xff1a;使用border属性 你可以设置一个元素的border…

4.24日团队开发第五天

今天进行了晨会主要讨论了昨天完成情况,以及遇到的问题 同时针对完成度进行了分析,及时调整了进度

Linux 网络操作命令Telnet

Telnet 尽管 Telnet 已经逐渐被更安全的 SSH 协议所取代&#xff0c;但在某些特定场景下&#xff0c;如对旧系统的维护或教育目的&#xff0c;Telnet 仍然有其使用价值。本文将介绍如何在 Linux 系统中安装 Telnet 客户端&#xff0c;以及如何使用它进行远程登录。 用户使用 t…

MySQL 锁机制全面解析

目录 1. MySQL的锁类型1.1 全局锁1.2 表锁1.3 行锁1.4 共享锁&#xff08;读锁&#xff09;1.5 排它锁&#xff08;写锁&#xff09;1.6 死锁 2 乐观锁和悲观锁2.1 乐观锁2.2 悲观锁 3 意向锁4 间隙锁5 临键锁6 插入意向锁7. 事务隔离级别对锁的影响6.1 读未提交&#xff08;Re…

账号安全及应用

一、账号安全控制 1.1系统账号清理 将用户设置为无法登陆 锁定账户 删除账户 设定账户密码&#xff0c;本质锁定 锁定配置文件-chattr&#xff1a; -a 让文件或目录仅供附加用途。只能追加 -i 不得任意更动文件或目录。 1.2密码安全控制 chage 1.3历史命令 history&am…

OceanBase数据库日常运维快速上手

这里为大家汇总了从租户创建、连接数据库&#xff0c;到数据库的备份、归档、资源配置调整等&#xff0c;在OceanBase数据库日常运维中的操作指南。 创建租户 方法一&#xff1a;通过OCP 创建 确认可分配资源 想要了解具体可分配的内存量&#xff0c;可以通过【资源管理】功…

Hive主要介绍

Hive介绍 hive是基于 Hadoop平台操作 HDFS 文件的插件工具 可以将结构化的数据文件映射为一张数据库表 可以将 HQL 语句转换为 MapReduce 程序 1.hive 是由驱动器组成&#xff0c;驱动器主要由4个组件组成&#xff08;解析器、编译器、优化器、执行器&#xff09; 2.hive本身不…

网络协议深度解析:SSL、 TLS、HTTP和 DNS(C/C++代码实现)

在数字化时代&#xff0c;网络协议构成了互联网通信的基石。SSL、TLS、HTTP和DNS是其中最关键的几种&#xff0c;它们确保了我们的数据安全传输、网页的正确显示以及域名的正常解析。 要理解这些协议&#xff0c;首先需要了解网络分层模型。SSL和TLS位于传输层之上&#xff0c…

数据可视化(四):Pandas技术的高级操作案例,豆瓣电影数据也能轻松分析!

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

如何在阿里云快速配置自动定时重启ECS云服务器?

背景 无论是电子商务、在线教育、游戏&#xff0c;还是流媒体等业务&#xff0c;服务器的稳定运行都是至关重要的。然而&#xff0c;在实际运行中&#xff0c;我们可能会遇到这样一些场景&#xff1a; 系统更新&#xff1a;一些操作系统或者软件的更新可能需要重启服务器才能…

buuctf-pwn-2.rip

先用checksec看一下保护情况红色表示没有保护,绿色则表示有相应的保护 关于每种保护会在之后的做题中遇到,也有相应的应对措施,这次就不过多深入 打开ida64分析附件发现高危函数gets,这个函数不会检查输入的长度 我们可以利用它修改函数的返回地址,从而执行后门函数找到后…

【draw.io的使用心得介绍】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…