XCOPY рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░ рдорд╛рд░реНрдлрдд рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рднреЛрд▓реНрдпреБрдорд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрджреИ

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

рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╕рд░рд▓ рд╣реБрдиреБрдкрд░реНрдЫ, рддрд░ рдореИрд▓реЗ рддреБрд░реБрдиреНрддреИ рдХреБрдиреИ рдкрдирд┐ рддрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рди, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рд╡реНрд╣реАрд▓ рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред Linux рд▓рд╛рдИ рд╕рд░реНрднрд░ OS рдХреЛ рд▓рд╛рдЧрд┐ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд░ ddpt рдЖрджреЗрд╢ (http://sg.danny.cz/sg/ddpt.html) рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреЗ рдЙрдкрдХрд░рдгрдХреЛ рд░реВрдкрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдпреЛ рд╕рдВрдпреЛрдЬрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ OS рдмрд╛рдЯ рдХреБрдиреИ рдкрдирд┐ рднреЛрд▓реНрдпреБрдорд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдХрд┐рдирдХрд┐ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдп рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реА рдкрдХреНрд╖рдорд╛ рдмреНрд▓рдХ-рджреНрд╡рд╛рд░рд╛-рдмреНрд▓рдХ рд╣реБрдиреНрдЫред рдХрд┐рдирдХрд┐ рдпреЛ рдмреНрд▓рдХрджреНрд╡рд╛рд░рд╛ рдмреНрд▓рдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЧрдиреНрдиреБ рдкрд░реНрдЫ, blockdev рдЖрджреЗрд╢ рддреНрдпрд╕реНрддрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЧрдгрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдЕрдзрд┐рдХрддрдо рдмреНрд▓рдХ рд╕рд╛рдЗрдЬ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ; 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

рдПрдХ рд╕рд╛рдиреЛ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ! рдареАрдХ рдЫ, рд╕рд╛рдиреЛрдХреЛ рд░реВрдкрдорд╛, 1TB рдлрд╛рдЗрд▓ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди рд░ md5sum рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди :)

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 рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░ рдорд╛рд░реНрдлрдд рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рднреЛрд▓реНрдпреБрдорд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрджреИ
рд▓рд┐рдирдХреНрд╕рдХреЛ рд╕рд╛рде рдЬрд╛рд░реА рд░рд╛рдЦреМрдВред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди