ritchey 91 Zgłoś post Napisano Styczeń 9, 2015 Witam, Standardowe wywołanie w Linuxie polecenia przeniesienia plików (mv) używa systemowego cache. Czy można jakoś wywołać polecenie mv, aby pomijało systemowe cachowanie zapisu na dysk ? Z tego co sprawdzałem argumenty wywołania tego polecenia to nie ma tam takich opcji. Z góry dzięki za informacje. Udostępnij ten post Link to postu Udostępnij na innych stronach
Bartosz Z 236 Zgłoś post Napisano Styczeń 9, 2015 Z ciekawości - dlaczego chcesz tak zrobić? Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Styczeń 9, 2015 Aby mieć pewność że po zakończeniu polecenia MV dane są FIZYCZNIE w docelowym miejscu. Udostępnij ten post Link to postu Udostępnij na innych stronach
blfr 225 Zgłoś post Napisano Styczeń 9, 2015 Jak już poprzenosisz to sync Udostępnij ten post Link to postu Udostępnij na innych stronach
Bartosz Z 236 Zgłoś post Napisano Styczeń 9, 2015 To bufor dysku też musiałbyś chyba wyłączyć? Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Styczeń 9, 2015 Jak już poprzenosisz to sync Dzięki za podpowiedź. Polecenie sync opróżnia bufor - ale CAŁY bufor, na wszystkich napędach. Jak mam w systemie kilka dysków, łącznie z dużymi bazami danych to sync mi opróżni cały bufor dla wszystkich dysków. A ja potrzebuję wyłączyć buforowanie zapisu tylko dla konkretnej komendy MV. Da się coś takiego zrobić ? Z góry dzięki za odpowiedź. Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Styczeń 9, 2015 mv przy przenoszeniu plików w obrębie tej samej partycji (mount pointa) zmienia tylko wskaźnik, inode pozostaje bez zmian, tak więc żadne dane plikowe nie są buforowane. Tak więc błąd, mv nie używa żadnego cache'a. W przypadku przenoszenia w obrębie różnych partycji (mount pointów), mamy tutaj typowe wywołanie cp, czyli utworzenie nowego inode'a i przekopiowanie danych. Dopóki nie powiesz jaki jest cel tego co robisz to nikt ci nie pomoże. Jak tak bardzo zależy ci na synchronizacji, a nie chcesz callować sync()'a, to pozostaje Ci dd z opcją fsync. Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Styczeń 9, 2015 @Archi - dobrze o tym wiem Oczywiście nie chodzi o tą samą partycję. Tu chodzi o zupełnie różne dyski Polecenie sync w sumie mnie zadowala - ale gdyby dało się jeszcze takiego sync-a uruchomić TYLKO dla konkretnego napędu - to było by idealnie. A chodzi o przeniesienie danych w związku z wymianą dysków w serwerze. Po prostu chcę mieć pewność że dane zostały fizycznie skopiowane Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Styczeń 9, 2015 mount -o remount /sciezka powinno wywołać synca tylko na konkretnym mount poincie. Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Styczeń 9, 2015 Dzięki @Archi - właśnie o to mi chodziło, chociaż chyba jeszcze brakuje opcji sync w Twoim poleceniu: mount -o remount,sync /mountpoint mount -o remount,async /mountpoint Wziąłem to stąd: http://unix.stackexchange.com/questions/28554/is-there-a-way-to-sync-only-one-partition (ale to Ty mnie naprowadziłeś na mount/remount) Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Styczeń 9, 2015 (edytowany) Nie, to remontuje mount point z konkretnymi parametrami. Sam remount z powodu tego, że odmontowuje i montuje filesystem powinien wykonać pierw sync() na konkretnym nośniku danych. To co ty robisz to bawisz się opcjami synchronizacji, czyli mówisz kernelowi jak ma się obchodzić z danym filesystemem, a to co chcesz uzyskać to call sync() na danym mount poincie. Ale tak, zremontowanie fsu z synciem i ponownie z asynciem jest już 100% pewniakiem, kernel musi dokonać sync() przy montowaniu partycji z tą opcją. Tyle, że samo odmontowanie/zamontowanie partycji powinno wymusić flush wszystkiego związanego z danym mount pointem zanim komenda się skończy. Unmount robi tak na 100%, remount też powinien. EDIT: Znalazłem! Buffers are also flushed when filesystems are unmounted or remounted read-only, for example prior to system shutdown. To mnie akurat średnio zadowala, ale wygląda lepiej niż zabawa z opcjami synchronizacji. mount -o remount,ro /sciezka mount -o remount,rw /sciezka Można sobie wrzucić np. do /bin/syncmnt #!/bin/bash set -e if [[ ! -z "$1" && -d "$1" ]]; then mount -o remount,ro "$1" mount -o remount,rw "$1" else echo "ERROR: Zla sciezka!" exit 1 fi exit $? chmod 755 na /bin/syncmnt i voila. Usage: syncmnt /sciezka. Edytowano Styczeń 9, 2015 przez Archi (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Styczeń 10, 2015 Dokładnie tak jak piszesz Dzięki wielkie za pomoc Udostępnij ten post Link to postu Udostępnij na innych stronach