Mahtude kopeerimine salvestusseadmest Linuxi serverisse kasutades XCOPY

Juhtub, et on vaja saada tĂ€ielik koopia mahust ĂŒhe andmesalvestussĂŒsteemi (SAN) raames, mitte lihtsalt hetkefoto, vaid just tĂ€isfunktsionaalne maht. Kuid mitte alati ei vĂ”imalda SAN seda ise teha. Tundub, et ainus variant on kopeerida serveri kaudu, kuid sel juhul liigub kogu andmemaht lĂ€bi serveri, vĂ”rgu SAN-ini ja SAN-i portide, koormates kĂ”iki neid komponente. Kuid on olemas SCSI kĂ€sklused, mis vĂ”ivad lubada kĂ”ike teha SAN-i raames ning kui teie sĂŒsteem toetab VMware'i VAAI-d, siis on praktiliselt 100%, et toetatakse kĂ€sku XCOPY (EXTENDED COPY), mis ĂŒtleb massiivile, mida ja kuhu kopeerida, kaasamata sellesse protsessi. server ja vĂ”rku.

Tundub, et kĂ”ik peaks olema lihtne, kuid kohe valmis skripte ma ei leidnud, pidin ratast uuesti leiutama. OperatsioonisĂŒsteemiks serverilt valiti Linux ja kopeerimisvahendiks kĂ€sk ddpt (http://sg.danny.cz/sg/ddpt.html). Sellise kombinatsiooniga saab kopeerida igasuguseid mahte mis tahes opsĂŒsteemist, kuna kopeerimine toimub plokkide kaupa SAN-i poolel. Kuna tuleb kopeerida plokkide kaupa ja plokkide arvu tuleb lugeda, kasutati selleks kĂ€sku blockdev. Maksimaalne ploki suurus saadi katse-eksitusmeetodil, suurema plokiga ddpt ei töötanud. LĂ”pptulemusena sai valminud jĂ€rgmine ĂŒsna lihtne skript:

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

Teeme vĂ€ikese kontrolldi! No hĂ€sti, 1TB faili loomine ja md5sum'i kontrollimine ei olnud just kiirusest pungil 🙂

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: vale tĂŒĂŒp vale, halb valik, halvaks superblokk /dev/mapper/mpathfs, puuduv koodileht vĂ”i abiprogramm vĂ”i muu viga.
root@sales-demo-05:/home/vasilyk# mkfs /dev/mapper/mpathfs
mke2fs 1.44.1 (24-Mar-2018)
Seadmest blokeerimine: tehtud
Loome failisĂŒsteemi 314572800 4k ploki ja 78643200 inoodiga
FailisĂŒsteemi UUID: bed3ea00-c181-4b4e-b52e-d9bb498be756
Superbloki varukoopiad salvestatud plokkides:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848

RĂŒhmate tabelite eraldamine: tehtud
Inooditabelite kirjutamine: tehtud
Superblokkide ja failisĂŒsteemi arvestusteabe kirjutamine: tehtud

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  /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: vale tĂŒĂŒp vale, halb valik, halvaks superblokk /dev/mapper/mpathfr, puuduv koodileht vĂ”i abiprogramm vĂ”i muu viga.
root@sales-demo-05:/home/vasilyk# cat xcopy.sh
#! /bin/bash
# esimene parameeter = sisendi seade
# teine parameeter = vÀljundi seade
# seadme suurus peab olema sama
# bs muutuja muutmine vÔib kiirus vÀhendada, maksimaalne kiirus peaks olema bs=32768. 32768 on maksimaalne seade, madalamad seaded tuleks arvutada, jagades 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

Mis sel ajal SÄHD-s toimus:

Mahtude kopeerimine salvestusseadmest Linuxi serverisse kasutades XCOPY
JĂ€tkame Linuxiga.

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#

KÔik lÀks hÀsti, kuid katsetage ja kasutage omal vastutusel! Algse mahuna on parem vÔtta snapshot'e.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster