• Linux服务器挂载windows共享文件夹和nas存储


    需求:  

      公司有3.4T多的小文件需要copy到公司内部的nas存储中,由于小文件太多,数据量太大,整盘copy时速度极慢;只能人工对3.4T多的数据分批次的导入,这对于搞计算机的来说是不能忍受的,于是产生了一个想法,把公司的nas存储和原始文件主机的盘都挂载到linux服务器上,系统为CentOS7,通过for循环遍历文件夹实现copy,理论存在,开始实施;

    环境:

    1、windows10电脑,上面有3.4T多的原始数据
    2、公司内部的一套阿里nas存储
    3、公司内部的CentOS系统的服务器

    实施:

    1、将存有原始数据的windows10文件夹共享,权限为完全控制

     2、将windows10共享的文件夹挂载到CentOS主机上

    vim /etc/fstab
    //192.168.12.171/f /move-source cifs defaults,username=web1,password=123!@ 0 0

    再执行mount -a命令,将其挂载
    [root@movtile_com ~]# mount -a
    [root@movtile_com ~]# df -h # 通过命令可以看出共享文件夹已经挂载
    文件系统 容量 已用 可用 已用% 挂载点
    devtmpfs 7.8G 0 7.8G 0% /dev
    tmpfs 7.8G 0 7.8G 0% /dev/shm
    tmpfs 7.8G 326M 7.5G 5% /run
    tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
    /dev/mapper/centos-root 472G 20G 428G 5% /
    /dev/sda1 5.0G 168M 4.9G 4% /boot
    /dev/sr0 4.4G 4.4G 0 100% /run/media/k8s/CentOS 7 x86_64
    //192.168.12.171/f 11T 3.4T 7.6T 31% /move-source

    3、将公司的nas存储目标文件夹挂载到CentOS主机上

    vim /etc/fstab
    //192.168.8.10/elements /move cifs defaults,username=server1,password=123!@ 0 0
    再执行mount -a命令,将其挂载
    [root@movtile_com ~]# mount -a
    [root@movtile_com ~]# df -h  # 通过命令可以看出共享文件夹已经挂载
    文件系统 容量 已用 可用 已用% 挂载点
    devtmpfs 7.8G 0 7.8G 0% /dev
    tmpfs 7.8G 0 7.8G 0% /dev/shm
    tmpfs 7.8G 326M 7.5G 5% /run
    tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
    /dev/mapper/centos-root 472G 20G 428G 5% /
    /dev/sda1 5.0G 168M 4.9G 4% /boot
    /dev/sr0 4.4G 4.4G 0 100% /run/media/k8s/CentOS 7 x86_64
    //192.168.12.171/f 11T 3.4T 7.6T 31% /move-source   # windows10 原始数据
    //192.168.8.10/elements 240T 16T 225T 7% /move    # 公司nas文件夹

    现在可以看到windows10的3.4T多的共享文件夹和nas存储都挂载到了CentOS主机上;

    4、开始copy  

      具体是这么做的,统计了下需要上传nas系统的文件夹共有300个之多;找了三台CentOS主机,通过上述方式将盘都挂载上;每台设备分配100个文件夹,再将每台设备的100个文件夹分成3份,这样每台设备上可以跑3个copy程序,3台设备9个copy程序同时开始工作;

    CentOS服务器1执行的for循序
    for i in `cat 42-1.txt`;do rsync -av $i /move/Work/010/;done for i in `cat 42-2.txt`;do rsync -av $i /move/Work/010/;done for i in `cat 42-3.txt`;do rsync -av $i /move/Work/010/;done CentOS服务器2执行的for循环 for i in `cat 43-1.txt`;do rsync -av $i /move/Work/010/;done for i in `cat 43-2.txt`;do rsync -av $i /move/Work/010/;done for i in `cat 43-3.txt`;do rsync -av $i /move/Work/010/;done CentOS服务器3执行的for循环 for i in `cat 44-1.txt`;do rsync -av $i /move/Work/010/;done for i in `cat 44-2.txt`;do rsync -av $i /move/Work/010/;done for i in `cat 44-3.txt`;do rsync -av $i /move/Work/010/;done 上面循环的txt文件里面存放的是分配好的需要copy的目标文件夹的名称;

      然后将循环挂后台就开始copy了;

      copy升级版本:可以先用split -l  20   A.txt  将目录平均分割通过多进程一块跑,速度更快了;每个分割的目录数量可以根据CPU的核心数确定,否则过多会导致服务器负载巨高;

    #!/bin/bash
    
    src_route=/move-source/data/A_ShotWork
    dest_route=/move/A_ShotWork
    
    for i in `cat xaa`
    do
    (
      rsync -av -P $src_route/$i $dest_route/ &>> $i.log;
      if [ $? -eq 0 ];then
        echo $i is copy Complete!!!
      fi
    ) &
    done
    wait
    
    for i in `cat xab`
    do
    (
      rsync -av -P $src_route/$i $dest_route/ &>> $i.log;
      if [ $? -eq 0 ];then
        echo $i is copy Complete!!!
      fi
    ) &
    done
    
    wait
  • 相关阅读:
    团队作业(二):项目选题
    今天准备正式开博了!专注于Silverlight!
    ORA01033:ORACLE initialization or shutdown in progress 错误的解决办法
    寻找正在应用和准备学习XNAor3D技术的志同道合的伙伴,大家能够互帮互助,共同探讨,最好能够组成较固定的小团队!
    TNS: could not resolve the connect identifier specified
    今天连接字符串出现了“ORA01008: 并非所有变量都已绑定”错误
    选择HttpHandler还是HttpModule?
    jQuerymenuaim.js
    MVP解读
    揭秘Amazon反应速度超快的下拉菜单
  • 原文地址:https://www.cnblogs.com/zhangzhide/p/15821716.html
Copyright © 2020-2023  润新知