XCOPY เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจตเจพเจฒเฉ€เจ…เจฎ เจ•เจพเจชเฉ€ เจ•เจฐเจจเจพ

เจ…เจœเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจธเจฟเจธเจŸเจฎ (DSS) เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจตเฉŒเจฒเจฏเฉ‚เจฎ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจ•เจพเจชเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ‡เฉฑเจ• เจธเจจเฉˆเจชเจธเจผเจพเจŸ, เจ‡เฉฑเจ• เจ•เจฒเฉ‹เจจ เจจเจนเฉ€เจ‚, เจชเจฐ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจตเจพเจฒเฉ€เจ…เจฎเฅค เจชเจฐ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจธเจฟเจธเจŸเจฎ เจนเจฎเฉ‡เจธเจผเจพ เจ†เจชเจฃเฉ‡ เจธเจพเจงเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจจเจ•เจฒ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจนเฉˆ, เจชเจฐ เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจนเฉ€ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ, เจจเฉˆเจŸเจตเจฐเจ• เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจธเจฟเจธเจŸเจฎ เจ…เจคเฉ‡ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจชเฉ‹เจฐเจŸเจพเจ‚ เจคเฉฑเจ•, เจ‡เจนเจจเจพเจ‚ เจธเจพเจฐเฉ‡ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจเจพ. เจชเจฐ เจ‡เฉฑเจฅเฉ‡ SCSI เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจนเจจ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจนเฉ€ เจธเจญ เจ•เฉเจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเจพ เจธเจฟเจธเจŸเจฎ VMware เจคเฉ‹เจ‚ VAAI เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจฒเจ—เจญเจ— 100% เจนเฉˆ เจ•เจฟ XCOPY (เจเจ•เจธเจŸเฉ‡เจ‚เจกเจก เจ•เจพเจชเฉ€) เจ•เจฎเจพเจ‚เจก เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆ, เจœเฉ‹ เจเจฐเฉ‡ เจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจ…เจคเฉ‡ เจ•เจฟเฉฑเจฅเฉ‡ เจ•เจพเจชเฉ€ เจ•เจฐเจจเฉ€ เจนเฉˆ, เจฌเจฟเจจเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡เฅค

เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจญ เจ•เฉเจ เจธเจงเจพเจฐเจจ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจ•เฉ‹เจˆ เจตเฉ€ เจคเจฟเจ†เจฐ-เจ•เฉ€เจคเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเฉ€เจ†เจ‚, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจจเฉ‚เฉฐ เจชเจนเฉ€เจ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจฃเจพ เจชเจฟเจ†เฅค เจฒเฉ€เจจเจ•เจธ เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ OS เจฒเจˆ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ 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

เจ†เจ“ เจฅเฉ‹เฉœเฉ€ เจœเจฟเจนเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ! เจ–เฉˆเจฐ, เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจœเจฟเจนเฉ€ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹