XCOPY āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Linux āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻ•āĻĒāĻŋ āĻ•āĻ°āĻž

āĻāĻŸāĻŋ āĻ˜āĻŸā§‡ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° (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 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨