XCOPY рд╡рд╛рдкрд░реВрди рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдХреЙрдкреА рдХрд░рдгреЗ

рдЕрд╕реЗ рд╣реЛрддреЗ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо (DSS) рдордзреАрд▓ рд╡реНрд╣реЙрд▓реНрдпреВрдордЪреА рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдд рдорд┐рд│рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд╕реНрдиреЕрдкрд╢реЙрдЯ, рдХреНрд▓реЛрди рдирд╡реНрд╣реЗ рддрд░ рд╕рдВрдкреВрд░реНрдг рд╡реНрд╣реЙрд▓реНрдпреВрдо. рдкрд░рдВрддреБ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рдиреЗрд╣рдореАрдЪ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдорд╛рдзреНрдпрдорд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдЖрдВрддрд░рд┐рдХрдкрдгреЗ рд╣реЗ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдд тАЛтАЛтАЛтАЛрдирд╛рд╣реА. рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рдХреЙрдкреА рдХрд░рдгреЗ рд╣рд╛ рдПрдХрдореЗрд╡ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ, рдкрд░рдВрддреБ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдбреЗрдЯрд╛рдЪрд╛ рд╕рдВрдкреВрд░реНрдг рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ, рдиреЗрдЯрд╡рд░реНрдХрджреНрд╡рд╛рд░реЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рдкреЛрд░реНрдЯрд╡рд░ рдЪрд╛рд▓рд╡рд┐рд▓рд╛ рдЬрд╛рдИрд▓, рд╣реЗ рд╕рд░реНрд╡ рдШрдЯрдХ рд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓. рдкрд░рдВрддреБ SCSI рдХрдорд╛рдВрдбреНрд╕ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗрдЪ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд рдЖрдгрд┐ рдЬрд░ рддреБрдордЪреА рд╕рд┐рд╕реНрдЯрдо VMware рд╡рд░реВрди VAAI рд▓рд╛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдд рдЕрд╕реЗрд▓, рддрд░ рдЬрд╡рд│рдЬрд╡рд│ 100% XCOPY (рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХреЙрдкреА) рдХрдорд╛рдВрдб рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ, рдЬреЗ рдЕреЕрд░реЗрд▓рд╛ рдХрд╛рдп рдЖрдгрд┐ рдХрд╛рдп рдЖрд╣реЗ рд╣реЗ рд╕рд╛рдВрдЧрддреЗ. рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рди рдХрд░рддрд╛ рдХреБрдареЗ рдХреЙрдкреА рдХрд░рд╛рдпрдЪреА.

рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЕрд╕рд╛рд╡реЗ, рдкрд░рдВрддреБ рдорд▓рд╛ рд▓рдЧреЗрдЪ рдХреЛрдгрддреАрд╣реА рддрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдкрдбрд▓реА рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдорд▓рд╛ рдЪрд╛рдХ рдкреБрдиреНрд╣рд╛ рд╢реЛрдзреВрди рдХрд╛рдврд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рд╕рд░реНрд╡реНрд╣рд░ OS рд╕рд╛рдареА Linux рдирд┐рд╡рдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрдгрд┐ ddpt рдХрдорд╛рдВрдб (http://sg.danny.cz/sg/ddpt.html) рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рдореНрд╣рдгреВрди рдирд┐рд╡рдбрд▓реЗ рдЧреЗрд▓реЗ. рд╣реЗ рд╕рдВрдпреЛрдЬрди рд╡рд╛рдкрд░реВрди, рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛рд╣реА OS рд╡рд░реВрди рдХреЛрдгрддреЗрд╣реА рдЦрдВрдб рдХреЙрдкреА рдХрд░реВ рд╢рдХрддрд╛, рдХрд╛рд░рдг рдХреЙрдкреА рдХрд░рдгреЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдмреНрд▓реЙрдХ-рдмрд╛рдп-рдмреНрд▓реЙрдХ рд╣реЛрддреЗ. рдмреНрд▓реЙрдХрджреНрд╡рд╛рд░реЗ рдмреНрд▓реЙрдХ рдХреЙрдкреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдгрд┐ рдмреНрд▓реЙрдХреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдореЛрдЬрд▓реА рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЕрд╢рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдЪреА рд╕рдВрдЦреНрдпрд╛ рдореЛрдЬрдгреНрдпрд╛рд╕рд╛рдареА рдмреНрд▓реЙрдХрджреЗрд╡ рдХрдорд╛рдВрдбрдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХрд░рд┐рддреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛; ddpt рдореЛрдареНрдпрд╛ рдмреНрд▓реЙрдХрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА. рдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЦрд╛рд▓реАрд▓ рдЕрдЧрджреА рд╕реЛрдкреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддрд╛:

#!/bin/bash
# first parameter = input device
# second parameter = output device
# device size must be the same
# changing bs variable can reduce speed, max speed should be at bs=32768. 32768 is max setting, lower settings should be calculated dividing by 2

set -o nounset
bs=32768
s=`blockdev --getsz $1`
i=0
while [ $i -le $s ]
do
ddpt of=$2 bs=512 oflag=xcopy,direct if=$1 iflag=xcopy,direct count=$bs verbose=-1 skip=$i seek=$i
i=$(( $i+$bs ))
done

рдЪрд▓рд╛ рдереЛрдбреЗ рддрдкрд╛рд╕реВрдпрд╛! рдмрд░рдВ, рдПрдХ рд▓рд╣рд╛рди рдореНрд╣рдгреВрди, md1sum рджреНрд╡рд╛рд░реЗ 5TB рдлрд╛рдЗрд▓ рдкрдЯрдХрди рддрдпрд╛рд░ рдЖрдгрд┐ рддрдкрд╛рд╕рд▓реА рдЧреЗрд▓реА рдирд╛рд╣реА :)

root@sales-demo-05:/home/vasilyk# blockdev --getsz /dev/mapper/mpathfs
2516582400
root@sales-demo-05:/home/vasilyk# blockdev --getsz /dev/mapper/mpathfr
2516582400
root@sales-demo-05:/home/vasilyk# mount /dev/mapper/mpathfs /xcopy_source/
mount: /xcopy_source: wrong fs type, bad option, bad superblock on /dev/mapper/mpathfs, missing codepage or helper program, or other error.
root@sales-demo-05:/home/vasilyk# mkfs /dev/mapper/mpathfs
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done
Creating filesystem with 314572800 4k blocks and 78643200 inodes
Filesystem UUID: bed3ea00-c181-4b4e-b52e-d9bb498be756
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

root@sales-demo-05:/home/vasilyk# mount /dev/mapper/mpathfs /xcopy_source/
root@sales-demo-05:/home/vasilyk# ls -l /xcopy_source/
total 16
drwx------ 2 root root 16384 Aug 19 15:35 lost+found
root@sales-demo-05:/home/vasilyk# head -c 1T </dev/urandom > /xcopy_source/1TB_file
root@sales-demo-05:/home/vasilyk# ls -l /xcopy_source/
total 1074791444
-rw-r--r-- 1 root root 1099511627776 Aug 19 17:25 1TB_file
drwx------ 2 root root         16384 Aug 19 15:35 lost+found
root@sales-demo-05:/home/vasilyk# umount /xcopy_source
root@sales-demo-05:/home/vasilyk# mount /dev/mapper/mpathfr /xcopy_dest/
mount: /xcopy_dest: wrong fs type, bad option, bad superblock on /dev/mapper/mpathfr, missing codepage or helper program, or other error.
root@sales-demo-05:/home/vasilyk# cat xcopy.sh
#!/bin/bash
# first parameter = input device
# second parameter = output device
# device size must be the same
# changing bs variable can reduce speed, max speed should be at bs=32768. 32768 is max setting, lower settings should be calculated dividing by 2

bs=32768
s=`blockdev --getsz $1`
i=0
while [ $i -le $s ]
do
ddpt of=$2 bs=512 oflag=xcopy,direct if=$1 iflag=xcopy,direct count=$bs verbose=-1 skip=$i seek=$i
i=$(( $i+$bs ))
done
root@sales-demo-05:/home/vasilyk# time ./xcopy.sh /dev/mapper/mpathfs /dev/mapper/mpathfr
real    11m30.878s
user    2m3.000s
sys     1m11.657s

рддреНрдпрд╛ рдХреНрд╖рдгреА рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдХрд╛рдп рдШрдбрдд рд╣реЛрддреЗ:

XCOPY рд╡рд╛рдкрд░реВрди рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдХреЙрдкреА рдХрд░рдгреЗ
рдЪрд▓рд╛ Linux рд╕рд╣ рд╕реБрд░реВ рдареЗрд╡реВрдпрд╛.

root@sales-demo-05:/home/vasilyk# mount /dev/mapper/mpathfr /xcopy_dest/
root@sales-demo-05:/home/vasilyk# ls -l /xcopy_dest/
total 1074791444
-rw-r--r-- 1 root root 1099511627776 Aug 19 17:25 1TB_file
drwx------ 2 root root         16384 Aug 19 15:35 lost+found
root@sales-demo-05:/home/vasilyk# mount /dev/mapper/mpathfs /xcopy_source/
root@sales-demo-05:/home/vasilyk# md5sum /xcopy_source/1TB_file
53dc6dfdfc89f099c0d5177c652b5764  /xcopy_source/1TB_file
root@sales-demo-05:/home/vasilyk# md5sum /xcopy_dest/1TB_file
53dc6dfdfc89f099c0d5177c652b5764  /xcopy_dest/1TB_file
root@sales-demo-05:/home/vasilyk#

рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХреЗрд▓реЗ, рдкрд░рдВрддреБ рдЪрд╛рдЪрдгреА рдХрд░рд╛ рдЖрдгрд┐ рдЖрдкрд▓реНрдпрд╛ рд╕реНрд╡рдд: рдЪреНрдпрд╛ рдЬреЛрдЦрдореАрд╡рд░ рд╡рд╛рдкрд░рд╛! рд╕реНрддреНрд░реЛрдд рд╡реНрд╣реЙрд▓реНрдпреВрдо рдореНрд╣рдгреВрди, рд╕реНрдиреЕрдкрд╢реЙрдЯ рдШреЗрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рд╕реБрд░реБрд╡рд╛рддреАрд╕рд╛рдареА.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛