XCOPY เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Linux เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชธเช‚เช—เซเชฐเชน เชธเชฟเชธเซเชŸเชฎเซ‹เชฎเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชเชตเซเช‚ เชฌเชจเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชเช• เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฟเชธเซเชŸเชฎ (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

เชšเชพเชฒเซ‹ เชฅเซ‹เชกเซ€ เชคเชชเชพเชธ เช•เชฐเซ€เช! เชธเชพเชฐเซเช‚, เชจเชพเชจเซ€ เชคเชฐเซ€เช•เซ‡, 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 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Linux เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชธเช‚เช—เซเชฐเชน เชธเชฟเชธเซเชŸเชฎเซ‹เชฎเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช
เชšเชพเชฒเซ‹ 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹