Ku koobiyaynta mugga nidaamka kaydinta iyada oo loo sii marayo server-ka Linux iyadoo la adeegsanayo XCOPY

Waxay dhacdaa inaad u baahato inaad hesho nuqul buuxa oo mugga gudaha hal nidaamka kaydinta xogta (DSS), ma aha sawir-qaadis, clone, laakiin mug buuxa. Laakiin nidaamka kaydinta mar walba ma ogola in tan lagu sameeyo gudaha iyada oo la adeegsanayo awooddeeda. Waxay u muuqataa in ikhtiyaarka kaliya uu yahay in lagu koobi karo server-ka, laakiin kiiskan oo dhan mugga xogta ayaa lagu wadi doonaa iyada oo loo marayo server-ka laftiisa, shabakadda nidaamka kaydinta iyo dekedaha kaydinta, oo ku raran dhammaan qaybahaas. Laakiin waxaa jira amarro SCSI ah oo kuu oggolaanaya inaad sameyso wax kasta oo ku jira nidaamka kaydinta laftiisa, iyo haddii nidaamkaagu uu ka taageero VAAI ka VMware, markaa waxay ku dhowdahay 100% in amarka XCOPY (EXTENDED COPY) la taageero, kaasoo u sheegaya array waxa iyo halka laga koobi karo, iyada oo aan lagu lug lahayn nidaamka server iyo network.

Waxay u muuqataa in wax walba ay fudud yihiin, laakiin ma helin wax qoraal ah oo diyaarsan isla markaaba, markaa waa inaan dib u soo nooleeyaa giraangiraha. Linux waxaa loo doortay server-ka OS, iyo amarka ddpt (http://sg.danny.cz/sg/ddpt.html) ayaa loo doortay qalab koobiyeyneed. Isticmaalka isku-dhafkan, waxaad koobi kartaa wax kasta oo mugga OS kasta ah, maadaama koobiyeyntu ay ku dhacdo xannibaad-by-block dhinaca nidaamka kaydinta. Maadaama ay lagama maarmaan tahay in la koobiyeeyo block by block, iyo tirada blocks waa in la tiriyaa, amarka blockdev ayaa loo isticmaalay in lagu tiriyo tirada soo noqnoqda sida. Cabbirka ugu badan ee xannibaadda ayaa lagu helay si tijaabo ah; ddpt dhab ahaantii kuma shaqayn block weyn. Natiijadu waxay ahayd qoraalka soo socda oo fudud:

#!/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

Aan wax yar hubinno! Hagaag, sida mid yar, faylka 1TB si dhakhso ah uma abuurin oo ma hubiyay 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

Maxaa ka dhacayay nidaamka kaydinta wakhtigaas:

Ku koobiyaynta mugga nidaamka kaydinta iyada oo loo sii marayo server-ka Linux iyadoo la adeegsanayo XCOPY
Aynu sii wadno 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#

Wax walba waa ay shaqeeyeen, laakiin tijaabi oo isticmaal khatartaada! Sida mugga isha, waxa fiican in la qaado sawir-qaadista, bilawga.

Source: www.habr.com

Add a comment