XCOPY เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเดฟเดจเด•เตเดธเต เดธเต†เตผเดตเตผ เดตเดดเดฟ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดตเต‹เดณเตเดฏเด™เตเด™เตพ เดชเด•เตผเดคเตเดคเตเดจเตเดจเต

เด’เดฐเต เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ (เดกเดฟเดŽเดธเตเดŽเดธเต) เด’เดฐเต เดตเต‹เดณเดฟเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเด•เตผเดชเตเดชเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด’เดฐเต เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต‹ เด•เตเดฒเต‹เดฃเต‹ เด…เดฒเตเดฒ, เด’เดฐเต เดชเต‚เตผเดฃเตเดฃ เดตเต‹เดณเดฟเดฏเด‚. เดŽเดจเตเดจเดพเตฝ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดธเตเดตเดจเตเดคเด‚ เดฎเดพเตผเด—เด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เด†เดจเตเดคเดฐเดฟเด•เดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดธเต†เตผเดตเดฑเดฟเดฒเต‚เดŸเต† เดชเด•เตผเดคเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดเด• เดชเต‹เด‚เดตเดดเดฟเดฏเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดฎเตเดดเตเดตเตป เด…เดณเดตเตเด‚ เดธเต†เตผเดตเดฑเดฟเดฒเต‚เดŸเต†เดฏเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเด‚ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดจเดฏเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚, เดˆ เด˜เดŸเด•เด™เตเด™เดณเต†เดฒเตเดฒเดพเด‚ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต† เดŽเดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ SCSI เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดฃเตเดŸเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเดฟเดธเตเดฑเตเดฑเด‚ VMware-เตฝ เดจเดฟเดจเตเดจเต VAAI-เดฏเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, XCOPY (เดŽเด•เตโ€Œเดธเตเดฑเตเดฑเต†เตปเดกเดกเต เด•เต‹เดชเตเดชเดฟ) เด•เดฎเดพเตปเดกเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเต เดเด•เดฆเต‡เดถเด‚ 100% เด†เดฃเต, เด…เดคเต เด…เดฑเต‡เดฏเต† เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเต‹เดธเดธเตเดธเต เดธเต†เตผเดตเดฑเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด‚ เด‰เตพเดชเตเดชเต†เดŸเดพเดคเต† เดŽเดตเดฟเดŸเต† เดชเด•เตผเดคเตเดคเดฃเด‚.

เดŽเดฒเตเดฒเดพเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดŽเดจเดฟเด•เตเด•เต เด‰เดŸเดจเดŸเดฟ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดŽเดจเดฟเด•เตเด•เต เดšเด•เตเดฐเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเต. เดธเต†เตผเดตเตผ OS-เดจเดพเดฏเดฟ Linux เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต, เดชเด•เตผเดคเตเดคเตฝ เด‰เดชเด•เดฐเดฃเดฎเดพเดฏเดฟ 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•