Skocz do zawartości
ritchey

Pominięcie cache w poleceniu mv

Polecane posty

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

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

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

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

@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

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

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 przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×