Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) upozorňuje na hrozbu spojenou s používáním mobilní aplikace WeChat a její čínské verze Weixin (dále jen WeChat). Ta sbírá velký objem uživatelských dat, a právě to by – v kombinaci se způsobem jejich sběru – mohlo sloužit k přesnému zacílení kybernetických útoků.
LibreQoS je svobodná aplikace vhodná pro poskytovatele internetové připojení pro rezervaci a řízení datových toků zákazníků (QoS - Quality of Service, QoE - Quality of Experience). Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv2. Aktuální verze je 1.4.
Byla vydána Beta 1 verze KDE 6 (Plasma, Frameworks a Gear) postavené na Qt 6. Testovat lze například v distribuci KDE Neon. Stabilní verze je plánována na konec února 2024. Předchozí velké vydání 5 vylo vydáno téměř před 10 lety (červenec 2014).
Open-source webmail Roundcube se připojil k balíku aplikací Nextcloudu. Převzetí firmou Nextcloud ale plánováno není, pouze integrace a podpoření vývoje.
Stability AI představila SDXL Turbo, tj. umělou inteligenci pro generování obrázků z textového popisu v reálném čase, viz ukázka na YouTube.
Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové major verzi 6. Přehled novinek i s náhledy a videi v oficiálním oznámení a na GitHubu (6.0.0, 6.0.1).
S eDoklady lze mít od ledna 2024 občanku v mobilní aplikaci [Digitální a informační agentura – DIA].
Google představil novou doménu nejvyššího řádu: .meme. Viz například knowyour.meme nebo find.meme.
IKEA představila 3 senzory pro chytrou domácnost: senzor na dveře a okna PARASOLL, bezdrátový pohybový senzor VALLHORN a senzor úniku vody BADRING. Budou kompatibilní s Home Assistant?
Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 13.0.0. Přehled novinek v oznámení.
mozno findom a roznymi atime ctime mtime najst to co potrebujes a to syncnut..ale to je len cisty vystrel do tmy.
ale tu by sa mozno uz oplatilo postavit tu webfarmu nad sharovanym storidzom
D.
$ inotifywait -m -e close_write -e delete . Setting up watches. Watches established. ./ CLOSE_WRITE,CLOSE cc ./ CLOSE_WRITE,CLOSE cc ./ DELETE ccZ toho pak to vyextrahovat a zkopirovat. Pokud hrozi vytavareni adreasaru, tak to lze, ale asi to chces nejaky skript nad inotify.
find source_dir -type d -exec mkdir -p '{}' /dest_dir/'{}' \; find source_dir -type f -cmin -1440 -exec cp -v '{}' /dest_dir/'{}' \;Samozrejmne si budes muset pohrat s cestou k source a dest adresari, aby se vse kopirovalo do spravnych adresaru, ale na 99,9% nic rychlejsiho nenajdes(pro spoustu malych souboru).
find
je samozřejmě z principu řádově pomalejší, navíc když ho tak neoptimálně pouštíte (10 000 000 procesů cp
mluví za vše). Ale chápu, že to děláte s ohledem na stav vašeho OS (D1), který má zjevně nějaký výkonnostní problém a nedokáže vyhovět požadavkům rsync
při práci s IO.
Pokud by se ovšem podařilo najít ten výkonnostní problém, tedy opravit D1, budete samozřejmě rychlejší s rsync
, který během kopírování žádnou jalovou práci nedělá a nezaměstnává procesor zbytečnostmi, které ovšem na rozbitém systému umožní jakž takž kopírovat. Ten výkonnostní problém jsem také dlouho míval, ale s novým jádrem a aktualizacemi díky bohu nějak vymizel, byl to opravdu osten v p...
bash$ time $(find source_dir -type d -exec mkdir -p '{}' dest_dir/'{}' \; ; find source_dir -type f -cmin -1440 -exec cp '{}' dest_dir/'{}' \;) real 8m11.393s user 0m4.963s sys 2m21.717s bash$ time rsync -a source_dir dest_dir/ real 0m11.774s user 0m1.600s sys 0m11.933sJe docela zoufalé, že na rozbitém systému se musí při kopírování většího množství dat vkládat různé cykly typu "find" a "verbose", ale je jasné že dokud systém nebude opraven, je to způsob, jak to alespoň jakž takž pomalu ale jistě překopírovat, aniž by se to cestou rozbilo. Jinak samozřejmě optimální by bylo odstranit problém a použít rsync.
find ... -exec cp
dělá to, že pro každý nalezený soubor, spustí extra proces cp
. Nemusí jich být 10M, ale bude prostě pro každý soubor jeden, a vytváření procesů je v linuxu prostě drahé a v tomto případě hlavně zbytečné. Chápte? Každý jeden modifikovaný soubor vezmete, vytvoříte pro něj proces cp, který ho zkopíruje, a zase zanikne. Neskutečné plýtvání. Pokud vám 2,5h stačí a zátěž stroje a účty za elektriku vás netrápí, budiž, ale musí to jít i efektivněji, pomocí rsync (ok, tam říkáte že je probl.), nebo tar, nebo lépe použít cp (ten také umí kopírovat víc než jeden soubor na jedno spuštění.
vytváření procesů je v linuxu prostě drahé
Od kdy?
find / cp
a co dělá rsync
. Víte jistě, jak rsync
interně pracuje. Pokud rsync
sáhne na všech 7M souborů i když by nemusel, tak je to čas asi 10 hodin v seek time (tak špatně to asi nebude). Pokud na těch 300 000 sáhne o jednou více než cp
(třeba proto, že tam může být nějaký sync pro cache, aby měl skutečně data, co jsou na disku) tak je to cca 50 minut jen na ten seek. V podstatě na žádném rotačním disku se nedá dostat moc výš než 100-150 IOPS. To jsou základní operace, tedy i čtení inode.
Možná že by se tazateli dalo najít úzké místo pomocí atop
, iotop
nebo pomocí technik Extreme Linux Performance Monitoring
Vytvoreni 1 milionu procesu, ktere hned skonci, v ramci jednoducheho c programu mi trvalo na X5650 @ 2.67GHz cca 45vterin tj. 45 microsekund na proces. Tj. rezie jen samotneho zalozeni/ukonceni 10mil. procesu je neco jako 8min.
To, co presne dela rsync se soubory jsem popsal nize, jde to videt v strace. Dela tech operaci vice, ale taky dava daleko vice zaruk nez jednoduchy cp. Zadne sync() rsync nevola. Find zase pochopitelne na kazdy soubor musi zavolat stat() [realne vola newfstatat()].
Jinak se to tady uz objevilo vicekrat, reaguji zde - inody na disku nejsou rozesety nahodne, ale jsou vzdy zdruzovane po skupinach, ktere nejsou zrovna male. Muj ext4 rika "8192" Inodes per group. Takze ty vypocety ohledne seeku je nutne brat s rezervou, zvlast kdyz se jedna o cteni pristupy, kde prvni cteni pravdepodobne natahne do pameti vsechny inody z dane skupiny.
Tak jsem si s tim inotify trochu pohral. Primarne mi slo o to, zda inotify lze/nelze pouzit pro miliony souboru. Vzal jsem zdrojak "inotify-tools", konkretne inotifywatch. Upravil jsem ho, aby pri volbe "-r" navesil sondy i na soubory a aby nevolal zbytecne stat() na kazdy soubor, coz predtim delal.
Pri cold cachi trvala inicializace na 1002524 souborech 55 vterin na SSD disku s ext4 a i5 procesoru. S hot cachi trvala inicializace 7.5 vteriny. Spotreba pameti pak byla na urovni ~280MiB.
Spotreba pameti by se dala navic hodne snizit vhodnym ukladanim jmen souboru - tato verze uklada cele jmeno bez vyuziti komprese stejnych prefixu apod.
Takze bych system inotify uplne nezatracoval, ale je potreba jej pouzivat "spravne". Vsechny inotify sw, ktery umi rekurzivne poslouchat, ktere jsem videl, maji z pohledu vykonu co dohanet.
cat /proc/sys/fs/inotify/max_user_watches
--size-only
bude to porovnavat podle velikosti, což by mohlo být rychlejší. Samozřejmě změna souboru se nemusí projevit na jeho velikosti a tim pádem můžeš prošvihnout nejaké aktualizace.
fam
(File Alteration Monitor). Nikdy jsem jej ale nepouzival, takze mozna je to uplne mimo misu :)
#!/bin/sh DATE=`date +%Y%m%d` TOUCH_OLD=/home/backuper/bin/touch.old TOUCH_NEW=/home/backuper/bin/touch.new FILELIST_FILE=/tmp/filelist-${DATE}.txt SRC_PATH=/var/nfs/ # 1. vytvorime novy docasny touch touch $TOUCH_NEW # 2. vytvorime zoznam suborov od predosleho touch find $SRC_PATH -newer $TOUCH_OLD ! -type d > $FILELIST_FILE # 3. vytvorime archiv podla zoznamu /bin/tar -czf - --files-from=$FILELIST_FILE --transform 's|^var/nfs/||' # 4. posunieme novy touch na stary mv $TOUCH_NEW $TOUCH_OLDTo vytvorí na pôvodnom serveri zoznam nových súborov a zbalí ho. Výstupný archív ide na STDOUT. To preto, že to potom volám z toho druhého servera:
secondary-server ~ # ssh backuper@primary-server ~/bin/tar-new-files.sh | tar -xz -C /var/zalohaTo vezme zmenené súbory od poslednej synchronizácie, zbalí ich, prenesie cez SSH a rozbalí ich potom na druhom serveri. Počiatočný stav je potrebné samozrejme vytvoriť pomocou plného rsyncu, alebo podobne. Taktiež to nerieši situáciu, keď sa súbory na pôvodnom serveri neskôr vymažú (sekundárny sa to nedozvie a ostanú tam).
--dry-run
)? 10M souborů mi nepřipadá tak moc.
--dry-run
? Jinak by se zrychlení díky přemountování s noatime projevilo až po úspěšné synchronizaci atimes na druhý stroj :)
-W, --whole-file With this option rsync’s delta-transfer algorithm is not used and the whole file is sent as-is instead. The transfer may be faster if this option is used when the bandwidth between the source and destination machines is higher than the bandwidth to disk (especially when the "disk" is actually a networked filesystem). This is the default when both the source and des‐ tination are specified as local paths, but only if no batch-writing option is in effect.
3090 1350825670.190272 lstat("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/board-zoom-debugboard.c", 0x7fff95b06940) = -1 ENOENT (No such file or directory) <0.001303> 3091 1350825691.894455 select(5, NULL, [4], [4], {30, 0}) = 1 (out [4], left {29, 999997}) <0.000012> 3091 1350825691.894515 write(4, ""..., 8) = 8 <0.000019> 3091 1350825691.894582 open("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/board-zoom-debugboard.c", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000547> 3091 1350825691.895178 open("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/.board-zoom-debugboard.c.BVJsNA", O_RDWR|O_CREAT|O_EXCL, 0600) = 1 <0.002558> 3091 1350825691.897779 fchmod(1, 0600) = 0 <0.002224> 3091 1350825691.900058 write(1, ""..., 3350) = 3350 <0.003614> 3091 1350825691.903712 close(1) = 0 <0.000015> 3091 1350825691.903759 lstat("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/.board-zoom-debugboard.c.BVJsNA", {st_mode=S_IFREG|0600, st_size=3350, ...}) = 0 <0.000025> 3091 1350825691.903837 utimes("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/.board-zoom-debugboard.c.BVJsNA", {{1350825691, 0}, {1350820690, 0}}) = 0 <0.000461> 3091 1350825691.904343 chmod("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/.board-zoom-debugboard.c.BVJsNA", 0644) = 0 <0.004003> 3091 1350825691.908391 rename("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/.board-zoom-debugboard.c.BVJsNA", "linux-3.4.9-gentoo.10/arch/arm/mach-omap2/board-zoom-debugboard.c") = 0 <0.003544>Na strane klienta pak:
32459 1350825662.709026 lstat("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/board-zoom-debugboard.c", {st_mode=S_IFREG|0644, st_size=3350, ...}) = 0 <0.000008> .... 32459 1350825681.527884 open("linux-3.4.9-gentoo.10/arch/arm/mach-omap2/board-zoom-debugboard.c", O_RDONLY) = 3 <0.000007> 32459 1350825681.527911 fstat(3, {st_mode=S_IFREG|0644, st_size=3350, ...}) = 0 <0.000005> 32459 1350825681.527942 read(3, ""..., 3350) = 3350 <0.000313> 32459 1350825681.528286 close(3) = 0 <0.000005>V pripade, ze soubor jiz existuje, je to jednodussi, ale z nejakeho duvoud dojde ke dvoum statum na strane serveru:
25558 1350830502.774044 lstat("linux-3.4.9-gentoo/arch/arm/mach-tegra/board-seaboard.c", {st_mode=S_IFREG|0644, st_size=7902, ...}) = 0 <0.002337> ..... 25558 1350830502.868738 lstat("linux-3.4.9-gentoo/arch/arm/mach-tegra/board-seaboard.c", {st_mode=S_IFREG|0644, st_size=7902, ...}) = 0 <0.000014>Na strane klienta:
32643 1350830500.817663 lstat("linux-3.4.9-gentoo/arch/arm/mach-tegra/board-seaboard.c", {st_mode=S_IFREG|0644, st_size=7902, ...}) = 0 <0.000006>Tj. na serveru se pro novy soubor dela paradoxne daleko vic metadata operaci. Na filesystemech, kde jsou metadata operace pomale, coz jsou typicky distribuovane FS , to pak jede velmi pomalu. Jestli jsem to pochopil spravne, tak je to prave Vas priklad? Jestli ano, jak dlouho trva projit tech 10M souboru findem pri COLD cachi (sync; echo 3 > /proc/sys/vm/drop_caches) na strane klientu a serveru? Navic rsync ve verzi < 3.0.0. nejdrive udela incremental list a pak az prochazi soubory, od verze 3.0.0 to uz dela naraz. Jakou mate verzi, jake mate OS, verzi jadra? A jaka je latence mezi klientem a serverem?
rsync --version rsync version 3.0.9 protocol version 30 Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, ACLs, xattrs, iconv, symtimes
Linux w12 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/LinuxLatence mezi serverem a klientem by měla být minimální, protože se oba nacházejí na stejném serveru.
Projití 10M souborů trvá několik hodin. Resp. dnes ráno jsem pustil find a ještě nedoběhl.s tím bych tedy pracovat nechtěl, když to srovnám s jednojádrem LE-1640 a 5400ot disky v mirror-u na LVM s ext3.
time find / | wc -l 1124504 real 2m55.660s user 0m0.576s sys 0m1.908sOpakovaně:
real 0m9.881s user 0m1.064s sys 0m1.724sTak mi to přijde jako moc velký rozdíl.
Diky za info. Kdyz jsem psal distribuovany FS, mel jsem na mysli i clusterovy FS - v tomto pripade je to celkem jedno, protoze v obou pripadech musite hlidat konzistenci dat a resit distribuovane zamky. OCFS2 skoro neznam, ale jelikoz pouziva DLM, metadata operace budou o rad drazsi.
Jestlize Vam samotny find jede takto dlouho, rsync na vine neni, ale taky tady neni moc co optimalizovat. Nenapada me moc, jak to pri stavajicim FS delat nejak vyrazne rychleji. Je otazka, jestli ma OCFS2 nejakou feature, ktera by se dala vyuzit (treba GPFS umi ten seznam zmenenych souboru generovat samo). Pokud ne, je treba hledat asi uplne jiny postup. Co takhle snapshoty? Nad LVM nebo mozna primo na urovni pole?
Je to asi rok, co jsem si hral s lsyncd, tj. na bazi inotify, ale taky jsem narazil na to, ze to neni uplne delane na takove mnozstvi souboru. Mozna bych inotify mechanismus ale uplne nezatracoval, treba jen v lsyncd delaji neco spatne.
root@web:~# time find /iscsi/home/ -type f |wc -l 10696002 real 619m58.719s user 1m26.397s sys 108m56.076s root@web:~# time find /iscsi/home/ |wc -l 12047276 real 42m20.375s user 0m27.078s sys 6m35.977sPokud nechám find běžet bez jakýchkoliv parametrů, tak mu projití cca 12M souborů trvá cca 42 minut.
root@web:~# sync; echo 3 > /proc/sys/vm/drop_caches root@web:~# time find /iscsi/home/ |wc -l 12052096 real 50m38.067s user 0m27.738s sys 7m14.467s root@web:~# time find /iscsi/home/ |wc -l 12052327 real 0m29.497s user 0m8.017s sys 0m22.129s root@web:~# time find /iscsi/home/ |wc -l 12052383 real 0m28.665s user 0m7.816s sys 0m21.513s
Zrovna jsem se na to chovani findu vcera dival. Kdyz se mu rekne -type f, zacne find stat()ovat vsechny soubory, na ktere saha. Je to trochu skoda, protoze typ souboru se da od nejake verze 2.6.4 kernelu (a pravdepodobne i v zavislosti na filesystemu) se drzi primo v dentry, tj. pro zjisteni typu souboru neni potreba delat volalni stat(). Kdyz se mu "-type f" nerekne, tak stat() na soubory nedela.
To ale prilis neresi problem s rsyncem, ktery stat() proste volat musi. Tj. OCFS2 je na stat() proste pomale, takze bud jiny FS, nebo uplne jiny pristup.
> time find / -type f | wc -l 913191 real 2m32.735s user 0m0.596s sys 0m1.640s
time find /mnt/zaloha_1 -type f | wc -l 181213 real 0m9.366s user 0m0.126s sys 0m0.760slokální disk 2TB/5400ot filesystem NTFS (společná data pro pracovní win instalaci)
time find /windows/zaloha_2 -type f | wc -l 368354 real 1m52.077s user 0m0.748s sys 0m3.349ssíťový disk 2,7TB na domácím serveru/NAS, připojení NFS4 fyzická realizace soft RAID5 4x1,5TB, procesor serveru úsporné dvoujádro Zacate s 4GB paměti.
time find /mnt/basic -type f | wc -l 762845 real 5m57.818s user 0m1.448s sys 0m11.628sJe zajímavé, že v průběhu find žádná komponenta nebyla na limitu, přesto hledání nebylo rychlejší. (zátěž sítě cca 1,5MB/s - 15%, CPU serveru cca 40% jednoho jádra, zátěž disků na serveru cca 10%, CPU klienta cca 5%)
Tiskni
Sdílej: