failed: Too many links 解决

今天收到反馈,某些文件同步失败,查看日志发现:

rsync: recv_generator: mkdir "/app/data/ckl/ckli2780581" failed: Too many links (31)
*** Skipping any contents from this failed directory ***
  1. 进入相关目录建立文件:
cd /app/data/ckl/
mkdir vd

报错一样:

failed: Too many links

2.查看目录

ls /app/data/ckl | wc -l
31998

目录个数竟然这么多,有可能是文件系统的限制

3.查看文件系统

 df -lhT
Filesystem                       Type  Size  Used Avail Use% Mounted on
/dev/sda1                        ext3  7.9G  4.9G  2.7G  65% /

果然是ext3

大概如下:

nclude/linux/ext2_fs.h:#define EXT2_LINK_MAX           32000
include/linux/ext3_fs.h:#define EXT3_LINK_MAX           32000

为什么说31998个呢?这是因为mkdir创建一个目录时,目录下默认就会创建两个子目录的,一个是.目录(代表当前目录),另一个是..目录(代表上级目录)。这两个子目录是删除不掉的,“ rm . ” 会得到“rm: cannot remove `.‘ or `..‘”的提示。所以32000-2=31998。

解决:

ext4 对目录个数没有限制

挂载一块新盘,将目录建立连接

脚本如下:

#!/bin/bash
CUR_DAY=`date +%Y%m%d`
SRC_DIR=/app
DST_DIR=/data

fdisk /dev/vdc <<EOF
	d               
	n             
	p               
	1  
	1              
               
	t              
	83             
	w  
EOF  

echo
echo "star create vg and lv..."
pvcreate /dev/sdc1
if [ $? -eq 0 ];then
	vgcreate data-volume /dev/vdc1
	if [ $? -eq 0 ];then
		lvcreate -L 99G -n s1_data data-volume
	else
		echo "lv create failed!"
		exit 1
else
	echo "vg create failed !"
fi
mkfs -t ext4 /dev/data-volume/s1_data

mount /dev/data-volume/s1_data ${DST_DIR}
cp -a ${SRC_DIR}/data ${DST_DIR}
mv ${SRC_DIR}/data ${SRC_DIR}/data_bak/
ln -s ${DST_DIR}/data/ ${SRC_DIR}/data
时间: 2025-01-01 22:42:47

failed: Too many links 解决的相关文章

Appium运行时,error: Logcat capture failed: spawn ENOENT的解决办法

Appium运行的时候,查看到log输出为: info: Welcome to Appium v1.2.0 (REV e53f49c706a25242e66d36685c268b599cc18da5)info: Appium REST http interface listener started on 0.0.0.0:4723debug: Non-default server args: {"deviceName":"emulator","platfor

【转】 远程到服务器安装visualSVN server,出现Service &#39;VisualSVN Server&#39; failed to start的解决方法

在帮助远程到服务器上安装visualSVN server的时候,出现Service 'VisualSVN Server' failed to start. 解决方法(先不要关闭安装弹出的错误窗口): 1 运行:services.msc,打开服务管理器,找到“VisualSVNServer”. 2 在服务上,点击右键--属性,打开“登录”选项卡.将“此帐户”改成“本地系统帐户”.再回到安装程序弹出窗口处,选择"Retry"即可. 在服务器上安装完SVN服务器后,也要做这一步,要不然其他电

DELPHI XE5 UP2 运行IOS 遇到 Wrapper init failed: (null)问题的解决办法

一.问题表现: 在MAC OSX(10.9.2)上安装了比较新的XCODE5.1 和COMMAND LINE TOOLS 在DELPHI XE5 UP2上放了一个按钮,输出到MAC OSX上,出现: Wrapper init failed: (null) 查看了很多大侠的博客. 二.问题的其他表现在Embarcadero的论坛上找到: 原文位置:https://forums.embarcadero.com/thread.jspa?threadID=101749&tstart=0 What doe

[nodemon] Internal watch failed: watch ENOSPC错误解决办法

运行环境:Ubuntu 16.04, WebStorm 2016.1.3, node.js v0.12.5, nodemon 1.9.2 在WS自带的终端输入nodemon server.js启动项目,报如下错误提示,服务能正常跑,但是无法监测文件修改. [nodemon] Internal watch failed: watch ENOSPC 解决办法是在终端输入如下命令,然后重新运行nodemon server.js. echo fs.inotify.max_user_watches=582

HDU 1426 dancing links解决数独问题

题目大意: 这是一个最简单的数独填充题目,题目保证只能产生一种数独,所以这里的初始9宫格较为稠密,可以直接dfs也没有问题 但最近练习dancing links,这类数据结构解决数独无疑效率会高很多 dancing links的数独限制条件是: 1.每行有9个元素,共9行 对应dlx81列 2.每列有9个元素,共9行 对应dlx81列 3.每个九宫格有9个元素,共9行 对应dlx81列 4.81个格子,每个格子最多有一个数 1 #include <iostream> 2 #include &l

asp.net网站运行出错:the underlying provider failed on open的解决

在登录系统,通过linq查询时发生错误,the underlying provider failed on open,如何解决,请看: Step 1:Open Internet Information Service ManagerStep 2:Click on Application Pools in left navigation tree.Step 3:Select your version Pool. In my case, I am using ASP .Net v4.0. If yo

在使用rsync时候出现rsync: Failed to exec ssh解决方法

上了一个精简的centos vps,装个rsync发现问题很大同步的时候提示下面错误 rsync: Failed to exec ssh: No such file or directory (2)rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.6]rsync: connection unexpectedly closed (0 bytes received so far) [sender]rsync erro

parseSdkContent failed java.lang.NullPointerException解决办法

最近手贱更新了Android studio,而as又自动更新了sdk,导致该死的Eclipse找不到当初设置的api文档了,整个Eclipse都不好了,所有的Android项目报错,所有的项目都无法导入.生成. 每次打开adt都会报错parseSdkContent failed java.lang.NullPointerException 1.网上很多人说可以删除workspace下的.metadata文件来解决,但我的就没好使. 2.还有人说可以删除C:\Documents and Setti

Server Tomcat v7.0 Server at localhost failed to start.临时解决办法

错误名:Server Tomcat v7.0 Server at localhost failed to start. 解决办法:去掉下面这句话: (通常在代码开头部分,public class前) 1 @WebServlet("/TwoServlet") “/TwoServlet”类似的名字 @WebServlet这玩意儿究竟是什么? 编写好Servlet之后,接下来要告诉Web容器有关于这个Servlet的一些信息.在Servlet 3.0中,可以使用标注(Annotation)来