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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM