开发者社区 > 云存储 > 文件存储NAS > 正文

请教一个关于文件存储NAS的问题,log文件再次写入会出现文件恢复的情况?

请教一个关于文件存储NAS的问题。问题一:使用cat /dev/null > *.log 命令清空文件后,log文件再次写入会出现文件恢复的情况?3ffa7413900907713e9dd85d21ea2ce6.png
问题二:有其他客户端的并发写的操作,清理的是log文件 问题三:写的客户端只有一个。其他同类型的日志也是使用这种方式清理的。有一部分日志可以正常删除。刚才清理失败的操作是在非使用文件的服务器上执行的。我换到了使用该文件的ecs上执行命令后成功了。为什么会出现这样的现象?

展开
收起
jdki652dnjsbo 2023-05-09 21:30:32 127 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    问题一:使用 cat /dev/null > *.log 命令清空文件后,实际上是将文件的内容清空,并不会删除文件本身。如果在清空文件后再次写入数据,文件的大小和内容会重新恢复。

    问题二:如果有其他客户端并发写入相同的日志文件,那么可能会出现覆盖或者冲突的情况。使用 cat /dev/null > *.log 命令清空文件并不会解决这个问题,因为其他客户端仍然可能在写入数据。为了避免这个问题,建议您可以使用专门的日志管理工具,例如 logrotate、syslog-ng 等,来进行日志的轮转和管理。

    问题三:可能是因为您在非使用文件的服务器上执行命令时,文件仍然被其他客户端占用或者锁定,导致清空操作失败。在换到使用该文件的 ECS 上执行命令后成功,可能是因为此时文件没有被其他客户端占用,或者您的权限更高,可以强制清空文件。为了避免类似的问题,建议您在进行文件操作时,先检查文件的状态和锁定情况,以及确认您有足够的权限进行操作。

    2023-05-09 22:53:43
    赞同 展开评论 打赏
  • 针对问题一的回答:是不是有其他客户端的并发写的操作? 针对问题二的回答:嗯,这个是一致性的问题,我们是close-to-open的语义,因为其他的客户端没open,没看到文件的size变小了,还从原来的offset开始写下去,所以就把文件直接给写大了,中间应该有很多空洞在里面。其他的还在写客户端很多吗? 最好是可以在写之前,重新open一下,然后lseek到文件尾开始写。在写日志的机器上清理一下,应该就可以。针对问题三的回答:https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwja4L35pNv-AhUXfXAKHdZXCWkQFnoECAgQAw&url=https%3A%2F%2Fman7.org%2Flinux%2Fman-pages%2Fman5%2Fnfs.5.html&usg=AOvVaw2n8Or96kl-1FJMy5flt1WA 您可以看一下nfs的close-to-open的语义。就是在多节点并发的时候,只有open在另外的客户端close了以后,才能确保看到最新的数据。--此回答整理自钉群“文件存储NAS官方技术支持服务群”

    2023-05-09 21:52:52
    赞同 展开评论 打赏

阿里云文件存储 NAS(Apsara File Storage NAS)是一个可大规模共享访问,弹性扩展的分布式文件系统。广泛应用于企业级应用数据共享、容器数据存储、AI 机器学习、Web 服务和内容管理、应用程序开发和测试、媒体和娱乐工作流、数据库备份等场景。

相关产品

  • 文件存储NAS
  • 热门讨论

    热门文章

    相关电子书

    更多
    PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
    Kubernetes下日志实时采集、存储与计算实践 立即下载
    日志数据采集与分析对接 立即下载