Mój problem: Uczę się Service Fabric i robię proste samouczki, a lokalny klaster zapełnia mój dysk C. Prowadzę projekty w Visual Studio. Najpierw tworzy klaster w folderze SfDevCluster. Zajmuje to 842 MB miejsca. Następnie wdraża serwisy i serwisy internetowe. Pamiętaj, że są to trywialne samouczki, w których prawie nic nie ma. Teraz zauważam, że mam folder o rozmiarze = 1,22 TB i rozmiarze na dysku 9,4 GB. Nie jestem pewien, jak to zinterpretować. Ale zużywa pozostałą przestrzeń na moim dysku C i uruchamia alarmy. Mam inne dyski z dużą ilością miejsca. Chciałbym powiedzieć, że należy je wykorzystać. Czy istnieje sposób, aby to zrobić z klastrem usług usług używanych przez Visual Studio? A może istnieje sposób na ograniczenie nadmiernie ambitnego podziału wielkości? A jeśli to rozumiesz, możesz wyjaśnić, co oznaczają te nietypowe rozmiary folderów? W dawnych czasach miałbym dysk twardy z dużą ilością miejsca. Ale teraz, mój komputer programisty ma znacznie szybszy, ale droższy dysk SSD, a przestrzeń jest na wagę złota. Potrzebuję więc większej kontroli nad lokalizacją klastra.Jak określić, w którym miejscu tworzony jest klastor struktury usługi lokalnego programisty?
Odpowiedz
Można skonfigurować klaster lokalny wskazujący na dysk niesystemowy, uruchamiając skrypt DevClusterSetup w PowerShell. Możesz znaleźć skrypt pod %programfiles%\Microsoft SDKs\Service Fabric\ClusterSetup\
. Linia komend chcesz to:
.\DevClusterSetup.ps1 -PathToClusterDataRoot <desired_app_and_data_location> -PathToClusterLogRoot <desired_tracelog_location>
Jeśli masz już uruchomiony klastra, ten skrypt będzie go usunąć i utworzyć nowy (zauważ, że spowoduje to usunięcie wszystkich wdrożonych aplikacji i ich danych). Po uruchomieniu nowego klastra program Visual Studio automatycznie go użyje po wdrożeniu lokalnie.
Jeśli chodzi o rozmiary plików - wynika to głównie z pliku dziennika używanego do replikacji stanu przechowywanego w wiarygodnych kolekcjach. Duży, sparse file jest uprzednio przydzielany z góry, dlatego na dysku widać różnicę między rozmiarem i rozmiarem. Planujemy, aby te wartości były konfigurowalne, aby można było je wybierać w lokalnych klastrach.
W folderze SDK usługi Service Fabric (C: \ Program Files \ Microsoft SDK \ ServiceFabric) znajduje się folder ClusterSetup.
Tutaj znajdziesz pliki ClusterManifestTemplate.json dla różnych konfiguracji klastra lokalnego. Są to pliki konfiguracyjne json używane przez skrypty powershell, które tworzą klaster usług lokalnych i zarządzają nim.
U dołu tych plików w "fabricSettings" ustawiane są wartości FabricDataRoot i FabricLogRoot, w oparciu o "% systemDrive%". Jeśli zastąpisz to przez "D:", powinno to spowodować lokalny klaster na dysku D.
Po wprowadzeniu tych zmian zatrzymałem lokalny materiał, usunąłem foldery bieżącego materiału z dysku C i zrestartowałem komputer. Kiedy rozpocznę sesję debugowania w VS.2017, tworzy ona lokalną strukturę dev na moim dysku D i wdraża aplikację do tej lokalizacji. (Zauważyłem, że niektóre puste foldery są tworzone na dysku C, ale te nie są używane.)
Aby pomóc każdemu, kto właśnie zrobił to, co zrobiłem, musi to być uruchamiane w powłoce shells x64 jako admin –
Działa dobrze, ale w końcu wraca do domyślnego folderu. Czemu? –
Mam to zresetować z powrotem do mojego dysku C, @RaulKist. Dzieje się tak, ponieważ użyłem Service Cluster Manager Service Fabric (to znaczy elementu circle na pasku zadań, który można kliknąć prawym przyciskiem myszy), aby zresetować, a nie powyższy skrypt, jak sądzę. Zawsze, gdy resetujesz, zawsze powinieneś używać powyższego polecenia. – rrreee