แแก แฎแแแแ, แ แแ แแฅแแแ แฃแแแ แแแแฆแแ แแแชแฃแแแแแก แกแ แฃแแ แแกแแ แแแแแชแแแแ แจแแแแฎแแแก แแ แ แกแแกแขแแแแจแ (DSS), แแ แ แกแแแแจแแขแ, แแแแแ, แแ แแแแ แกแ แฃแแ แแแชแฃแแแแ. แแแแ แแ แจแแแแฎแแแก แกแแกแขแแแ แงแแแแแแแแก แแ แแซแแแแ แแแแก แกแแจแฃแแแแแแก, แ แแ แแแฎแแแก แจแแแ, แกแแแฃแแแ แ แกแแจแฃแแแแแแแแก แแแแแงแแแแแแ. แ แแแแ แช แฉแแแก, แแ แแแแแ แแ แแแ แแแแขแแ แกแแ แแแ แแก แกแแจแฃแแแแแแ แแแแแ แแแ, แแแแ แแ แแ แจแแแแฎแแแแแจแ แแแแแชแแแแ แแแแแ แแแชแฃแแแแ แแแแแแแแชแแแแแก แแแแแ แกแแ แแแ แแก, แฅแกแแแแก แกแแจแฃแแแแแแ แจแแแแฎแแแก แกแแกแขแแแแจแ แแ แจแแแแฎแแแก แแแ แขแแแจแ, แแขแแแ แแแแ แงแแแแ แแก แแแแแแแแแขแ. แแแแ แแ แแ แกแแแแแก SCSI แแ แซแแแแแแแ, แ แแแแแแแช แกแแจแฃแแแแแแก แแแแชแแแ แแแแแแแแ แงแแแแแคแแ แ แแแแแ แจแแแแฎแแแก แกแแกแขแแแแจแ แแ แแฃ แแฅแแแแ แกแแกแขแแแ แแฎแแ แก แฃแญแแ แก VAAI-แก VMware-แแแ, แแแจแแ แแแแฅแแแก 100%-แแ แแ แแก แแฎแแ แแแญแแ แแแ XCOPY (EXTENDED COPY) แแ แซแแแแแ, แ แแแแแแช แแฃแแแแแ แแแกแแแก แ แ แแ แกแแ แแแแแ แแแ, แแ แแชแแกแแก แกแแ แแแ แแกแ แแ แฅแกแแแแก แฉแแ แแแแก แแแ แแจแ.
แ แแแแ แช แฉแแแก, แงแแแแแคแแ แ แแแ แขแแแ แฃแแแ แแงแแก, แแแแ แแ แแแ แกแแ แแแขแแแ แแแจแแแแ แแแ แแแแแแ, แแแแขแแ แแแ แแแแก แฎแแแแฎแแ แแแแแแแแแแ แแแแแฌแแ. แกแแ แแแ แแก 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
แ แ แฎแแแแแแ แจแแแแฎแแแก แกแแกแขแแแแจแ แแ แแแแแแขแจแ:
แแแแแแ แซแแแแ 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