交换机CF卡中文件太多导致保存配置失败故障

发布时间:  2016-08-27 浏览次数:  163 下载次数:  0
问题描述

客户在对S9300交换机保存配置时,备用主控板保存失败,尝试copy文件可以正常copy

处理过程

1.         备用主控板中的CF卡中保存有的大量的配置备份文件,导致删除失败:

<GZ-SN-DSW-2.TW.S9306>dir      

Directory of slave#cfcard:/      

  Idx  Attr     Size(Byte)  Date        Time       FileName 

    0  drw-              -  Oct 11 2014 01:32:38   logfile                     

    1  -rw-            198  Oct 29 2010 22:09:16   $_patchstate_a              

    2  -rw-              4  Aug 01 2013 17:23:14   snmpnotilog.txt              

    3  -rw-          2,667  May 28 2014 03:50:16   private-data.txt            

    4  -rw-          2,101  Aug 02 2013 00:50:32   vrpcfg.zip                  

    5  -rw-      1,279,050  May 18 2010 09:54:48   s9300v100r001sph013.pat     

    6  -rw-      1,730,668  Dec 20 2014 17:50:46   s9300v100r001sph017.pat     

    7  -rw-     52,749,606  Aug 01 2013 20:20:08   s9300v100r006c00spc800.cc   

    8  -rw-     90,923,066  Aug 01 2013 20:22:18   s9300v200r001c00spc300.cc   

    9  -rw-        943,820  Aug 01 2013 20:22:38   s9300v100r006hp0018.pat     

   10  -rw-        854,612  Aug 01 2013 20:22:50   s9300ser-v200r001sph009.pa

   11  -rw-             36  Aug 02 2013 01:31:14   $_patchstate_reboot         

   12  drw-              -  Aug 02 2013 01:04:20   sysdrv                      

   13  -rw-          6,833  Jul 01 2011 01:34:38   snj-s9306_2011-07-01.cfg    

   14  -rw-          6,833  Jul 02 2011 01:34:38   snj-s9306_2011-07-02.cfg    

   15  -rw-          6,833  Jul 03 2011 01:34:40   snj-s9306_2011-07-03.cfg    

   16  -rw-          6,833  Jul 04 2011 01:34:42   snj-s9306_2011-07-04.cfg    

   17  -rw-          6,833  Jul 05 2011 01:34:46   snj-s9306_2011-07-05.cfg    

   18  -rw-          6,833  Jul 06 2011 01:34:46   snj-s9306_2011-07-06.cfg    

   19  -rw-          6,833  Jul 07 2011 01:35:48   snj-s9306_2011-07-07.cfg    

   20  -rw-          6,833  Jul 08 2011 01:35:50   snj-s9306_2011-07-08.cfg    

……

  167  -rw-          6,884  Dec 31 2011 01:37:12   snj-s9306_2011-12-31.cfg    

  168  -rw-          6,884  Jan 01 2012 01:37:22   snj-s9306_2012-01-01.cfg    

  169  -rw-          6,884  Jan 02 2012 01:37:46   snj-s9306_2012-01-02.cfg    

  170  -rw-          6,884  Jan 03 2012 01:37:54   snj-s9306_2012-01-03.cfg    

2.         背板诊断日志信息会打印如下信息:

Dec  2 2014 06:00:35.310.1+08:00 GZ-SN-DSW-2.TW.S9306 %%01VFS/3/NEWFILE_ERR (D)[19778]:Failed to create file cfcard:/vrpcfgfilebak.zip. (ErrorCode=3670034)

Dec  2 2014 06:00:35.310.2+08:00 GZ-SN-DSW-2.TW.S9306 %%01VFS/6/ VFSOPERATIONFAIL(D)[19779]:Failed to Create,Reason is File cfcard:/vrpcfgfilebak.zip, FileAttr 1070, Ret -17, CName vfs_rpc.c, CLine 2100, RetLine 5977.

ErrorCode=3670034vxworks错误码,意思是根目录区满了,文件太多了:3670034 0x380012 S_dosFsLib_ROOT_DIR_FULL‍

保存配置时是要先生成一个备份文件用来备份原有文件,保存成功了再删掉,保存不成功再写回来,这个备份文件就叫vrpcfgfilebak.zip

3.         原理解释:vxworks文件管理采用FAT16,根目录区有限制。假设根目录区占用32个扇区,每个扇区512字节,每个文件目录项单位32字节,我们每个文件最少占用2个目录项,那么,这个cfcard根目录下最多256个文件,极限值。有些文件名很长,占用的目录项就更多,因此,根目录下实际可能放不下256个文件的。

文件名长度跟目录项占用数的关系如下。还有就是文件添加、删除就会有目录项的创建、删除,会产生碎片,比如,现在名字很长一个文件,需要占用4个目录项,但找不到连续的4个目录项了。

一个目录项单位32字节,假设文件名长度为x,则:

x<=13时,占用2个单位,即2*32字节;

14<=x<=26时,占用3个单位,即3*32字节;

27<=x<=39时,占用4个单位,即4*32字节;

...

以此类推,就是文件名每多13字节,就多占用一个目录项单位。

dir 查看主控板CF卡下的文件信息,按上面的算法能够算出,当前根目录下占用了多少个单位的目录项,已经接近最大值了,但可能有碎片,再加长的文件名,找不到连续的空间存储了。

根因

主控板CF卡中包含日志文件在内的文件太多占用了太多的目录项导致配置文件保存失败。

问题判断方法:

1.         对交换机做保存操作时,提示保存失败;

2.         保存失败的主控板CF卡中有大量的文件(至少有100多个文件);

3.         保存失败的主控板诊断日志中提示“Failed to create file cfcard:/vrpcfgfilebak.zip.”的错误信息。

解决方案
删除对应主控板CF卡中多余的无效文件后再保存配置

END