Mac OS nie może połączyć się z udziałami SMB po uśpieniu

15

Kiedyś bez problemu uzyskiwałem dostęp do udziałów SMB lokalnego serwera plików Windows 2008 na moim ostatnim (3 tygodniowym) MacBooku Pro. Jednak od kilku dni nie łączy się (ponownie) z serwerem po przebudzeniu z trybu uśpienia.

Finder pokazuje tylko „łączenie ...” i zawiesza się bez końca. To samo dzieje się, gdy próbuję z wiersza poleceń ( mount -t smbfs). Dzieje się tak zarówno przez Wi-Fi, jak i kablowe. Próbowałem także wyłączyć i włączyć sieć. Jedyne, co pomaga, to restart.

Jakieś wskazówki?

Edytuj w celu wyjaśnienia: uśpienie komputera Mac, a nie serwera. Dowiedziałem się również, że jeśli rozłączę udziały, zanim uśpię, będzie mógł połączyć się ponownie po przebudzeniu.

Kolejna edycja:

Zrobiłem trochę więcej dochodzeń i powąchałem ruch w sieci. Mac wysyła zapytania o nazwę NetBIOS i żądanie statusu (NBSTAT) na serwer, serwer odpowiada, wszystko wydaje się w porządku. Następnie komputer Mac powinien otworzyć połączenie SMB, ale nic nie robi. Nie ma więcej pakietów.

Potem odkryłem, że prawdziwy problem leży głębiej. Wygląda na to, że nie otwiera nowego połączenia, ponieważ uważa, że ​​stare połączenie, które oczywiście przekroczyło limit czasu po stronie serwera, nadal jest aktywne. Jednak każdy program, który próbuje uzyskać dostęp do punktu podłączenia lub po prostu katalog / Volumes, zawiesza się i nawet nie można go zabić. umount /Volumes/share- zawiesza się. ls /Volumes- zawiesza się. kill -9którykolwiek z nich - nie pomaga. Również otwarcie okna dialogowego otwierania pliku w dowolnej aplikacji powoduje również zawieszenie się!

Jedyne, co pomaga, to twardy restart. Wydaje mi się, że jest coś zasadniczo złego w implementacji SMB OSX, jeśli przekroczenie limitu czasu połączenia może wyzwolić coś takiego.

Andreas
źródło

Odpowiedzi:

6

Mam ten sam problem z moim MacBookiem Pro. Postępowałem zgodnie z instrukcjami tutaj - http://blog.djmnet.org/2009/02/09/macs-needing-unix-network-geekery/ i moje problemy wydają się rozwiązane.

ddbailie
źródło
1
Wow, dzięki! Wydaje się, że tak się stało. Wyłączyłem darwin_streams w smb.conf i dodałem to do mojego sysctl.conf: net.inet.tcp.delayed_ack=0 net.inet.tcp.mssdflt=1440 kern.ipc.maxsockbuf=500000 net.inet.tcp.sendspace=250000 net.inet.tcp.recvspace=250000 Po ponownym uruchomieniu połączyłem się z moimi udziałami SMB (które zajęły już o wiele mniej czasu niż kiedyś) i po kilku snach później nadal mogę uzyskać dostęp je idealnie.
Andreas,
Właściwie nadal napotykałem problemy po zastosowaniu tych zmian. Wydaje się jednak, że OSX Lion rozwiązał ten problem.
Andreas,
4

Hej, ostatnio miałem ten sam problem z moim MBP 2010, znalazłem rozwiązanie, które jest kombinacją dwóch rzeczy.

Pierwszym z nich jest ulepszenie jądra (zasadniczo TCP_NODELAYna połączeniach), które można wykonać w Terminalu:

sudo sysctl -w net.inet.tcp.delayed_ack=0

Po drugie, zajmuje się uprawnieniami do plików / plikami DS_Store. Zwykle podczas konfigurowania udziałów systemu Windows komputer Mac będzie miał dostęp tylko do odczytu. Finder próbuje je utworzyć w każdym przeglądanym folderze i może w końcu się zawiesić. Istnieją więc dwie opcje rozwiązania tego problemu - włącz wystarczające uprawnienia do plików na komputerze z systemem Windows lub powstrzymaj Findera przed tworzeniem tych plików w udziałach sieciowych. Wolę wyłączyć tworzenie Findera, co można zrobić, uruchamiając następującą komendę w terminalu:

defaults write com.Apple.desktopservices DSDontWriteNetworkStores true

Musisz uruchomić ponownie po ich uruchomieniu.

dantheman
źródło
W moim systemie Mac OS 10.7.2 wartością domyślną (należy ją przywrócić) jest „net.inet.tcp.delayed_ack: 3” (wartość domyślną można uzyskać, uruchamiając polecenie „sudo sysctl -a”).
Per Noalt
@PerNoalt: Odpowiadanie na ten wątek, ponieważ miałem również do czynienia z takimi problemami. Domyślne ustawienie net.inet.tcp.delayed_ackto 310,6, 1,7 i 1,8. Ustawienie 0rozwiązania problemów. Ale 2powinno również działać.
JakeGould
2

Nie mogę pomóc rozwiązać problemu, ale mogę dodać trochę więcej szczegółów. Dzieje się tak również w systemie Windows 7 i urządzenie OS X musi być nadal podłączone, gdy udział Windows zostanie uśpiony. Po odłączeniu lub uśpieniu systemu OS X, a następnie gotowości systemu Windows nie występuje ten problem.

Naprawdę też chciałbym to rozwiązać.

Edycja: Po kilku poszukiwaniach wiele innych osób miało podobne problemy:

Jazradel
źródło