[ADU] cvičení 6

Odpovědět
Uživatelský avatar
Maple
VCKLAN TEAM
Příspěvky: 676
Registrován: úte 01. zář 2009 7:40:17
Bydliště: Babákova 2152, Praha 4
Kontaktovat uživatele:

cvičení 6

Příspěvek od Maple » ned 22. bře 2015 13:29:14

1/ UFS snapshot

Kód: Vybrat vše

 newfs /dev/rdsk/c7t0d0s7						#vytvoření filesystemu
fstyp /dev/rdsk/c7t0d0s7						#kontrola, že se vytvořil ufs filesystem
#    ufs
mkdir /data										#vytvoření adresáře pro mount
mount /dev/dsk/c7t0d0s7 /data/					#mount disku
cat /dev/urandom > /data/file					#random file pro pozdější porovnávání
fssnap -o bs=/var/tmp/souborvpozadi$$ /data     #vytvoření snapshotu ;; $$ vypíše PID aktuálního shellu
#  /dev/fssnap/0
fssnap –i										  #vypíše stav snapshotů
#   0    /data
mkdir /datasnapshot								#vytvoření adresáře pro mount
mount -o ro /dev/fssnap/0 /datasnapshot/		#mount snapshotu
ls -l /var/tmp
du -sk /datasnapshot/ /data  					#vypsání disk-usage (-s summarize, -k block-size=1K) -> mělo by se rovnat 
cat /dev/urandom > /data/file   				#přepíšeme soubor
du -sk /datasnapshot/ /data  					#rozdílné velikosti
tar -cvfz backup.tgz /datasnapshot/				#archivace
umount /datasnapshot/							#odmountování snapshotu
fssnap -d /dev/fssnap/0 						#zrušení snapshotu
#    Deleted snapshot 0.
rm /var/tmp/souborvpozadi 

2/ Napište skript na automatickou archivaci filesystému (UFS) pomocí snapshotu.
Skript z Fit-Wiki (rozsáhlejší, včetně logu)...

Kód: Vybrat vše

 #!/bin/bash
 
VERBOSE=1
 
clean () {
log "Cleaning..."
umount "$TMP_MOUNT"
fssnap -d "$SNAPFILE" >/dev/null
rm -rf "$TMP_FILE" "$TMP_MOUNT"
}
 
#Displays error messages
err () {
printf "%s [Error]: %s\n" "$0" "$*" >&2
exit 1
}
 
#Displays log messages if VERBOSE >= 1
log () {
((VERBOSE)) && printf "%s [Info]: %s\n" "$0" "$*"
}
 
#Directory tests
[[ -d "$1" ]] || err "'$1' is not a directory!"
[[ -w "$1" ]] || err "Cannot write to '$1' directory!"
log "Checking for '/backup' directory..."
[[ -d "/backup" ]] || mkdir "/backup" || err "Cannot create '/backup' directory!"
[[ -w "/backup" ]] || err "Cannot write to '/backup' directory!"
 
#Cleanup at script exit
trap 'clean' EXIT

#Resources 
TMP_FILE="backing_store$$"
TMP_MOUNT=$(mktemp -d) || err "Cannot create temporary directory!"
BACKUP_NAME=snapshot_$(date +"%y-%m-%d_%H-%M-%S")
 
#Snapshot
log "Creating snapshot..."
SNAPFILE=$(fssnap -o bs="$TMP_FILE" "$1") || err 'fssnap'
 
#Mount filesystem
mount -o ro "$SNAPFILE" "$TMP_MOUNT" || err "Cannot mount '$SNAPFILE' to '$TMP_MOUNT'!"
 
#Create backup to /backup
log "Creating backup..."
(
cd /tmp/
tar -cvzf /backup/"$BACKUP_NAME".tgz "${TMP_MOUNT##*/}" >/dev/null
)
 
printf "$0 [SUCCES]: Backup stored in: '%s'\n" "/backup/$BACKUP_NAME.tgz" 
Zkrácený skript na nejnutnější.

Kód: Vybrat vše

#!/bin/bash

#Testy adresaru a moznosti zapisu:
[[ -d "$1" ]] || exit 1 
[[ -w "$1" ]] || exit 2 
[[ `df -h | grep '/data' | wc -l` -eq 1 ]] || exit 3
[[ -d "/backup" ]] || mkdir "/backup" || exit 4
[[ -w "/backup" ]] || exit 5
         
#Priprava promennych:
TMP_FILE="backing_store$$"
SNAPFILE=$(fssnap -o bs="$TMP_FILE" "$1")
TMP_MOUNT=$(mktemp -d)
BACKUP_NAME=snapshot_$(date +"%y-%m-%d_%H-%M-%S")
         
#Mount snapshotu:
mount -o ro "$SNAPFILE" "$TMP_MOUNT"
         
#Vytvoreni zalohy:
tar -cvzf /backup/"$BACKUP_NAME".tgz "${TMP_MOUNT}/" >/dev/null
         
#Vycisteni:
umount "$TMP_MOUNT"
fssnap -d "$SNAPFILE" >/dev/null
rm -rf "$TMP_FILE" "$TMP_MOUNT"

3/ Rozdělení disku na slices

Kód: Vybrat vše

dfshares sol_uc									#info o sol_uc
df -k /dev/rdsk/c7t0d0							#file-system disk space usage (-k block-size=1K)
prtvtoc /dev/rdsk/c7t0d0s2						#info o disku
cp /net/sol_uc/share/disk.vtoc  .				#zkopírování souboru k sobě
fmthard -s disk.vtoc /dev/rdsk/c7t0d0s2 		#DANGER: Chyba nejspíše povede k nutnosti reinstalace image. 

4/ Nainstalujte „Solaris Volume Manager“

Kód: Vybrat vše

# Oracle stránka k tomu – dá se třeba podívat, co to vypisuje… https://blogs.oracle.com/mandalika/entry/solaris_volume_manager_svm_on
export http_proxy=http://10.0.1.13:3128
pkg info svm
pkg info -r svm     # -r remote
pkg install svm     # instalace
update_drv -f md    # update atributu instalovanych driveru, md - metadevice

5/ + 6/

Kód: Vybrat vše

#Metadatabáze:
metadb -a -f -c3 c7t0d0s5			# add, force, numb_of_replicas=3
metadb								#stav metadatabaze
metastat							#stav vsech vytvorenych metadevice… umount vsechno !

#Concat virtual disk, Stripe virtual disk:
metainit d0 2 1 c7t0d0s4 1 c7t0d0s6		#toto je concat (device d0)
metainit d1 1 2 c7t0d0s3 c7t0d0s7		#toto je stripe
metastat								# stav vsech vytvorenych metadevice
newfs /dev/md/rdsk/d0 					#vytvoreni filesystemu na device, ktery vznikl
newfs /dev/md/rdsk/d1 					#vytvoreni filesystemu na device, ktery vznikl
mkdir /concat 							#vytvoreni adresáře pro mount
mkdir /stripe							#vytvoreni adresáře pro mount
mount /dev/md/dsk/d1 /stripe
mount /dev/md/dsk/d0 /concat

#První část příkladu 6/
time dd if=/dev/zero of=/concat/file bs=1024 count=1024000
#real    0m11.276s
#user    0m0.275s
#sys    0m3.658s
time dd if=/dev/zero of=/stripe/file bs=1024 count=1024000
#real    0m15.304s
#user    0m0.282s
#sys    0m3.942s

#Zrušení předchozího pro možnost pokračování – vytvoření RAID1
df -h
umount /concat
umount /stripe
metaclear d0 d1
#d0: Concat/Stripe is cleared
#d1: Concat/Stripe is cleared
metastat

#Zrcadlený disk (RAID1):
metainit d11 1 1 c7t0d0s6		# nelze primo, musi se nad metadevice
metainit d12 1 1 c7t0d0s7
metainit d10 -m d11				# vytvoreni RAID 1 (degenerovane, zatim pouze 1 komponenta)
metattach d10 d12				# pripojení 2. komponenty
metastat
newfs /dev/md/rdsk/d10
mkdir /mirror
mount /dev/md/dsk/d10 /mirror
df -h

#Druhá část příkladu 6/
time dd if=/dev/zero of=/mirror/file bs=1024 count=1024000
#real    0m31.417s
#user    0m0.282s
#sys    0m3.746s

metadb							#vypise metadatabase
metaclear d0 d1 d11 d12
metadb -d -f /dev/dsk/c7t0d0s5
metadb							#melo by to byt prazdne 

Uživatelský avatar
Destroyer
VCKLAN TEAM
Příspěvky: 812
Registrován: čtv 13. srp 2009 13:50:15
Bydliště: Praha 12
Kontaktovat uživatele:

Re: cvičení 6

Příspěvek od Destroyer » úte 24. bře 2015 4:25:24

prezije to zfs?

Kód: Vybrat vše

for x in {1..10000000}; do     mkdir ./$x 2>/dev/null; done 
You're pro or you're a noob. That's life

Odpovědět