rsync po prostu się zawiesza, budując listę plików

20
[root@centos /]# rsync -av --exclude thumbs /storage [email protected]:/storage
[email protected]'s password: 
building file list ... 

Siedzę od około godziny ... to 135 GB zdjęć i folderów

/storage to zamontowany dysk ext3 scsi.

Czy to normalne, że rsync siedzi tak długo, obliczając pliki / katalogi?

Andrew Fashion
źródło
Ile plików? Przy bardzo dużej liczbie plików zajmie to trochę czasu.
Helvick,
prawdopodobnie tysiące ... katalog zdjęć przesyłanych przez użytkowników ...
Andrew Fashion
Widziałem, że ta część rsync zajmuje dużo ponad godzinę, gdy są tysiące, tysiące plików. Jeśli uruchomisz „top”, czy widzisz, że I / O czeka?
troyengel,
Tylko dlatego, że jestem ciekawy, czy możesz uruchomić df -ii powiedzieć nam, co masz do IUsedprzechowywania / przechowywania? Daje nam to przybliżony obraz liczby posiadanych plików i folderów.
Zoredache,
1383641, czy to ilość plików?
Andrew Fashion,

Odpowiedzi:

24

rsync 2.x tworzy z góry pełną listę plików.

Dodaj -Popcję, a zobaczysz wskaźnik postępu.

Jeśli uważasz, że to naprawdę wisi, w innym terminalu znajdź pid rsync, a następnie

  1. Uruchom strace -p PIDi zobacz, co robi. (Naciśnij ^ C, aby zatrzymać.)

  2. Uruchom, ps -o wchan PIDaby zobaczyć, gdzie jest w jądrze.

poolie
źródło
Wow stracejest super! Prawdopodobnie okaże się, że dzieje się coś okrągłego: jak łącze, które odnosi się do jednego z katalogów przodków. W moim przypadku korzystałem z wirtualnego systemu plików, który nie miał ograniczeń co do głębokości, tj. Miał „nieskończenie” wiele podkatalogówtagfs/books/+/books/+/books/+/ ...
Zaz
@Zaz Mam również ogromną liczbę podkatalogów. Ale to jest w moim projekcie systemu. Czy istnieje sposób na rozwiązanie tego problemu?
user1641443
@ user1641443: Przepraszam, to mnie przerasta.
Zaz
@ user1641443: 1: Spróbuj rsync> 3.0, jak mówi Martin . 2: Uruchom wiele procesów rsync, każdy na mniejszym sub-drzewie. 3: Otwórz swoje własne pytanie.
poolie
15

Powinieneś uaktualnić do rsync 3.0.x, gdzie uzyskasz korzyści z przyrostowych list plików, wyjaśnionych tutaj . Synchronizuję miliony obrazów (łącznie ~ 200 GB) i zobaczyłem ogromne przyspieszenie, gdy przechodziłem z rsync 2.x do 3.x.

Mimo to przejrzenie wszystkich tych danych prawdopodobnie potrwa długo. W moim przypadku nadal trwa ponad godzina między dwoma dość mocnymi serwerami DL380 G5.

Jaskółka oknówka
źródło
Zauważ też, że niektóre flagi wymuszą stare zachowanie; dla mnie tak było --delay-updates.
Xiong Chiamiov
1
@XiongChiamiov Jedyne opcje, których używam, to „-a” i „--progress”, a wersja 3.1.x wciąż tworzy przyrostową listę plików. Czemu?
Michael
3

Zauważyłeś wcześniej, że duto również wisiało. Coś jest nie tak z tym systemem plików i rsyncuderza to, co dubyło.

Jedną szybką rzeczą, którą można sprawdzić, są komunikaty o błędach jądra wskazujące na problem z dyskiem. Wpisz dmesgi zobacz, co jest na dole.

mattdm
źródło
1

Zawieszenie po komunikacie „budowanie listy plików ...” może być spowodowane niedopasowaniem MTU, np. Jeśli skonfigurowałeś interfejsy sieciowe z MTU 9000, ale nie przełączasz między małymi pakietami (jak połączenie z serwerem rsync) przejdzie, ale nie większe (jak wysyłanie listy plików).

Mutator
źródło
po wielu poszukiwaniach natknąłem się na to, co skłoniło mnie do pójścia i sprawdzenia - uruchomiłem rsync na sieci VPN ze standardowym 1450 mtu, ale nie kontroluję sprzętu pomiędzy stronami - zmieniłem vpn mtu na 1430 i viola rsync działa w 100% (i nagle inna dziwność sieci również zniknęła!) dzięki!
l0ft13
0

Na tej podstawie a drugie kwestia du /storagezawieszania sprawia, że myślę, że ani duczy rsyncjest to problem, ale raczej są pewne problemy z /storage.

Mark Wagner
źródło