免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7354 | 回复: 1
打印 上一主题 下一主题

[FastDFS] 删除一个storage组 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2017-12-08 11:07:35
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-06-30 20:16 |只看该作者 |倒序浏览
fastdfs 如何删除一个storage 组,网上找都是删除组里的一个storage
  1. fdfs_monitor /etc/fdfs/client.conf delete storegroup1 192.168.1.202
复制代码

我的storagegroup1组内只有一个storage, 删除storage提示成功了,现在该删除组了
  1. fdfs_monitor /etc/fdfs/client.conf delete storegroup1
复制代码

但是当我删除组时,提示
  1. [2017-06-30 20:08:36] ERROR - file: tracker_proto.c, line: 48, server: 192.168.1.201:22122, response status 16 != 0
  2. [2017-06-30 20:08:36] ERROR - file: ../client/tracker_client.c, line: 1334, fdfs_recv_response fail, result: 16
  3. delete group: storegroup1 fail, error no: 16, error info: Device or resource busy
复制代码

查了一下tracker的代码是
  1. int tracker_mem_delete_group(const char *group_name)
  2. {
  3.     FDFSGroupInfo *pGroup;
  4.     int result;

  5.     pGroup = tracker_mem_get_group(group_name);

  6.     pGroup = tracker_mem_get_group(group_name);
  7.     if (pGroup == NULL)
  8.     {
  9.         return ENOENT;
  10.     }

  11.     if (pGroup->count != 0)
  12.     {
  13.         return EBUSY;
  14.     }

  15.         pthread_mutex_lock(&mem_thread_lock);
  16.     if (pGroup->count != 0)
  17.     {
  18.         result = EBUSY;
  19.     }
  20.     else
  21.     {
  22.     result = tracker_mem_remove_group(g_groups.groups, pGroup);
  23.     if (result == 0)
  24.     {
  25.         result = tracker_mem_remove_group(g_groups.sorted_groups, pGroup);
  26.     }
  27.     }
复制代码

pGroup->count != 0   pGroup->count 还是等于1,所以直接返回了EBUSY
这个count 是组内stoage的个数,那我要怎么删除组??
跪求啊 求大牛啊

论坛徽章:
0
2 [报告]
发表于 2019-03-28 17:19 |只看该作者
fdfs_monitor /etc/fdfs/client.conf delete storegroup1 192.168.1.202这个命令有storage_id参数,

所以调用的是tracker_mem_delete_storage.

5.10的代码里:

    if (pStorageServer->status == FDFS_STORAGE_STATUS_ONLINE || \
        pStorageServer->status == FDFS_STORAGE_STATUS_ACTIVE || \
        pStorageServer->status == FDFS_STORAGE_STATUS_RECOVERY)
    {
        return EBUSY;
    }

所以删除之前需要把这个storegroup1 192.168.1.202置为以上三种之外的状态, 例如可以把192.168.1.202的storage停掉, 让状态变为OFFLINE后即可执行删除.


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP