Polski
benchmark.pl
Windows 7
NTFS
Windows
Polski artykuł
x86
OS
Spis treści | |
Redakcja benchmark.pl przygotowała artykuł "Skonfiguruj Windows 7 - 14 przydatnych wskazówek dla początkujących". W odpowiedzi na związany z nim konkurs przygotowałem swoją odpowiedź, czyli poradnik dotyczący partycji NTFS i obsługi dysków w Windows.
Większość moich uwag dotyczy systemów XP/Vista/7, niektóre są związane tylko z tym ostatnim.
Na tym prawdopodobnie zakończę tę tematykę. Przedstawione porady jej oczywiście nie wyczerpują. Mamy przecież chociażby śledzenie zmian (tzw. USN journal) albo transakcyjność (możliwe jest wykonanie szeregu operacji w systemie plików i "pokazanie" zmian aplikacjom po fizycznym wykonaniu ostatniej operacji). Obawiam się jednak, iż pisanie o nich mogłoby być interesujące tylko dla programistów - wydaje mi się natomiast, iż nie taki jest cel mini-recenzji.
Jeżeli któreś z moich wskazówek były przydatne/źle przedstawione, proszę o dodanie odpowiedniego komentarza - tylko w ten sposób będę mógł uzyskać pewność, iż jest sens pisać podobne poradniki/będę mógł poprawić jakość. Z góry dziękuję za taką pomoc, jak również za wystawione oceny.
Artykuł jest przewidziany raczej dla użytkowników mniej początkujących :)
Linki i sznurki na NTFS
Na partycjach NTFS możemy przechowywać nie tylko pliki i katalogi. Przykładem dodatkowych obiektów są odnośniki do prawdziwych plików czy katalogów:
- połączenie (junction point) między katalogami na dysku lokalnym dostępne od czasów Windows 2000 - po wykasowaniu "prawdziwego" katalogu połączenie pozostaje na dysku, wykasowanie połączenia nie kasuje "prawdziwego" katalogu. W ten sposób jest obecnie tworzony katalog "Documents and Settings".
- łącze stałe (hard link) między plikami na dysku lokalnym dostępne od czasu Windows 2000 - po jego utworzeniu na dysku zapisany będzie fizycznie jeden plik widoczny jako dwa pliki o tej samej wielkości, fizyczna zawartość pliku zostanie wykasowana po usunięciu obu
- łącze symboliczne (symbolic link) między katalogami dostępne od czasu Windows Vista - po wykasowaniu "prawdziwego" katalogu połączenie pozostaje na dysku, wykasowanie połączenia nie kasuje "prawdziwego" katalogu. W ten sposób jest obecnie tworzony katalog "All Users" w "Documents and Settings".
- łącze symboliczne (symbolic link) między plikami dostępne od czasu Windows Vista - po jego utworzeniu na dysku zapisany będzie fizycznie jeden plik widoczny jako dwa pliki (gdzie łącze będzie mieć wielkość 0 bajtów), po wykasowaniu "prawdziwego" pliku łącze pozostaje na dysku, wykasowanie łącza nie kasuje "prawdziwego" pliku
Poniżej przedstawiłem komendy służące do ich tworzenia (gdzie katalog/plik.txt to źródło, a link/link.txt to stworzone odnośniki)
Typ | Łączone obiekty | Komenda |
---|---|---|
połączenie |
katalogi |
mklink link katalog /j junction link katalog |
łącze stałe |
pliki |
mklink link.txt plik.txt /h fsutil hardlink create link.txt plik.txt |
łącze symboliczne |
katalogi |
mklink link katalog /d |
pliki |
mklink link.txt plik.txt |
Obecność łączy symbolicznych na partycji możemy sprawdzać i kontrolować stosując fsutil, np.
fsutil behavior query SymlinkEvaluation
służy do sprawdzenia, czy opcja jest aktywna.
Aby sprawdzić, czy do danego pliku są dołączane łącza stałe (znów w Vista/7), należy z kolei wykonać
fsutil hardlink list plik.txt
Pewną bardzo specyficzną formą odnośników są nazwy plików w formacie 8 znaków + 3 znaki rozszerzenia (pozostałość zachowana w celu uzyskania zgodności z DOS - oprócz długiej nazwy pliku tworzona jest też krótka). Możemy zmienić wygenerowaną nazwę na inną stosując
fsutil file setshortname plik.txt krotka.txt
Potwierdzenie zmiany możemy uzyskać wykonując np. komendę
dir /x
Tworzenie skróconych nazw plików można kontrolować na poszczególnych partycjach stosując znowu komendę fsutil (wersja dla Vista/7 dla partycji c:):
- fsutil behavior query Disable8dot3 c: w celu sprawdzenia
- fsutil behavior set Disable8dot3 c: 1 w celu wyłączenia
- fsutil behavior set Disable8dot3 c: 0 w celu włączenia
Z kolei w Windows XP ustawienie jest globalne (dotyczy wszystkich partycji) i należy użyć odpowiednio:
- fsutil behavior query Disable8dot3
- fsutil behavior set Disable8dot3 1
- fsutil behavior set Disable8dot3 0
Możliwe jest również podłączanie partycji pod określone katalogi. Należy na dysku stworzyć standardowo katalog, a następnie użyć komendy mountvol. Pokaże ona szeregi ciągów znaków
\\?\Volume{numer}\
dla każdej partycji. Wybieramy jeden z nich, wykonujemy komendę
mountvol katalog \\?\Volume{numer}\
i od tej pory partycja jest już podłączona. Aby to odwołać, wystarczy wykonać
mountvol katalog /d
Alternatywne strumienie na NTFS
Większość z nas jest przyzwyczajona, iż plik ma jedną zawartość. W przypadku NTFS tak nie jest - z jednym plikiem mogą być powiązane dane z wielu niezależnych od siebie tzw. alternatywnych strumieni. Żeby uzyskać do nich dostęp, należy podać nazwę pliku połączoną z dwukropkiem i nazwą strumienia. Przykładowo komenda
notepad plik.txt:strumien
będzie edytować strumień o nazwie "strumien" połączony z plikiem plik.txt.
Niestety Eksplorator nie pokaże poprawnie wielkości pliku na dysku (tj. wielkości podstawowej zawartości + wielkości alternatywnych strumieni). Aby je odczytać (również z konta bez podwyższonych uprawnień), należy użyć np. komendy
dir /r
(przełącznik /r dostępny jest w Windows Vista/7) albo darmowego narzędzia Streams Microsoftu (poniższa komenda pokaże informacje o pliku plik.txt):
streams plik.txt
Błędy na NTFS
Załóżmy, że chcemy sprawdzić partycję c: pod względem błędów (np. mieliśmy zanik prądu). Standardowa opcja
chkdsk c: /f
może nie zadziałać (np. w tle działa program antywirusowy, który na to nie pozwala albo chcemy sprawdzić partycję systemową). Aby nakazać systemowi sprawdzenie partycji c: przy starcie, należy ustawić tzw. "bit zanieczyszczenia" przez wykonanie komendy
fsutil dirty set c:
Jeżeli pomimo jej zastosowania partycja nie została sprawdzona, należy wykonać
chkntfs /c c:
albo alternatywnie
chkntfs /d
(wtedy system będzie sprawdzał wszystkie dyski po ustawieniu na nich "bitu zanieczyszczenia").
Możemy skrócić czas oczekiwania na uruchomienie chkdsk przy starcie ze standardowych 10 sekund np. na 2 sekundy stosując
chkntfs /t:2
Począwszy od Visty mamy też opcje "samonaprawiania" - w przypadku wykrycia uszkodzeń jakiegoś pliku dostęp do niego jest blokowany, a system dokonuje poprawek. Funkcjonalność ta powinna być standardowo włączona. Aby to sprawdzić dla partycji c: należy wykonać
fsutil repair query c:
Włączenie uzyskamy przez
fsutil repair set c: 1
W obecnych systemach Microsoftu możemy również wymusić, aby system wygenerował "niebieski ekran", gdy wykryje błąd na danej partycji NTFS. Wykorzystujemy w tym celu przynajmniej dwie komendy:
fsutil behavior set BugCheckOnCorrupt 1
fsutil repair set c: 0x10
(drugą komendę powtarzamy po restarcie systemu dla wszystkich partycji, dla których ma to działać)
Kompresja plików na NTFS
Pliki i katalogi na dyskach NTFS mogą być kompresowane, co wydłuża czas dostępu do nich, ale zmniejsza zajmowane przez nie miejsce (plik jest zapisany w postaci spakowanej na dysku, przed dostarczeniem go aplikacjom jego zawartość jest rozpakowywana przez system operacyjny). I tak komenda
compact /s /a /c *.*
wymusza kompresję wszystkich plików (również z atrybutem ukrytym i systemowym) w katalogu bieżącym i podkatalogach, zaś
compact /s /a /u *.*
to wycofuje. Możliwe jest wyłączenie funkcji kompresji na wszystkich partycjach
fsutil behavior set DisableCompression 1
Czas ostatniego dostępu na NTFS
NTFS oprócz czasu modyfikacji pliku/katalogu przechowuje również informację o czasie ostatniego dostępu do niego. Aby go zobaczyć, można użyć np. komendy
dir /t:a
albo dodać odpowiednią kolumnę w Eksploratorze Windows. Opcja jest globalna i musi być uaktywniona (jej włączenie może nieznacznie spowolnić system):
fsutil behavior set DisableLastAccess 0
Pliki z pustą zawartością na NTFS
Tym razem dwie ciekawostki dotyczące plików z bajtami o kodzie 0x00. Żeby "wyczyścić" w ten sposób dowolny plik, należy użyć komendy
fsutil file setzerodata offset=0 length=100 plik.txt
gdzie zamiast 0 i 100 wstawiamy odpowiednio numer pierwszego czyszczonego bajtu i długość obszaru.
Możemy zaoszczędzić miejsce na dysku w przypadku tzw. plików rozszedzonych (ich pusta część nie jest tam fizycznie zapisywana). Wpierw zaznaczamy plik jako wykorzystujący tę funkcję (działa w Windows Vista/7):
fsutil sparse setflag plik.txt
Następnie informujemy system, że określony obszar (w przykładzie 100 bajtów począwszy od pierwszego bajtu w pliku) może być wyczyszczony (zostanie wypełniony bajtami o kodzie 0x00, miejsce poprzednio zajmowane przez nie na dysku zostaną zwolnione)
fsutil sparse setrange plik.txt 0 100
TRIM
Windows 7 obsługuje komendę TRIM. O ile jest ona zaimplementowana w firmware dysku SSD, pozwala w określonych przypadkach na zwiększenie prędkości jego działania (więcej można przeczytać np. tutaj).
Sprawdzenie, czy jest włączona w systemie, uzyskamy przez wykonanie
fsutil behavior query DisableDeleteNotify
(wartość 0 oznacza, że działa). Możemy ją włączyć komendą
fsutil behavior set DisableDeleteNotify 0
Nazwy plików i katalogów z uwzględnianiem małych i wielkich liter
Przyzwyczailiśmy się, że w Windows wielkość liter w nazwach plików i katalogów nie ma znaczenia (w przeciwieństwie np. do Linuxa, gdzie pliki "PLIK" i "plik" to dwa różne zbiory). W tym punkcie chciałbym zmienić to przeświadczenie i pokazać, jak uzyskać efekt widoczny na obrazku:
Opiszę to na przykładzie Windows 7 Ultimate:
- Przechodzimy do Panelu Sterowania
- Klikamy na ikonę Programy i funkcje
- Klikamy na odnośnik Włącz albo wyłącz funkcje systemu Windows
- Instalujemy Podsystem aplikacji systemu Unix
- Z menu Start klikamy na odnośnik Wszystkie Programy\Subsystem for UNIX-based Applications\Download utilities for Subsystem for UNIX-based Applications
- Pobieramy 32-bitową lub 64-bitową wersję (oczywiście bezpłatną :))
- Instalujemy pobrane narzędzia (wybieramy "Change the default behavior to case sensitive" w trakcie instalacji)
- Z menu Start klikamy na Wszystkie Programy\Subsystem for UNIX-based Applications\Korn Shell
- Przechodzimy do odpowiedniego katalogu komendami cd .. i cd nazwa_katalogu
- Możemy teraz stworzyć kolejne pliki np. komendą cp (przykład użycia: cp PLIK.txt plik.txt) oraz kolejne katalogi np. komendą mkdir (przykład użycia: mkdir KATALOG)
Cała sztuczka polega na tym, iż partycje NTFS są "wrażliwe" na wielkość znaków w nazwach, standardowo w Windows brak jest natomiast narzędzi, które potrafią tworzyć odpowiednie pliki/katalogi. Wykonując opisane wyżej komendy zainstalowaliśmy w "okienkach" kolejny subsystem (tzw. Interix lub SUA, czyli Subsystem for Unix-based Applications) zawierający odpowiednie programy. Jego różne wersje były dostępne również dla wcześniejszych Windows (np. 2003 Server), ma on w sobie dużo typowych unixowych narzędzi. Więcej można poczytać np. tutaj.
Należy pamiętać o tym, iż próba działania na takich plikach/katalogach przez aplikacje windowsowe (chociażby Notatnik) może skończyć się nieprzywidywalnie (np. wybierany będzie inny plik niż tego będziemy chcieć).
Szyfrowanie pliku wymiany
Obecne wersje Windows (Vista/7) mają opcję szyfrowania pliku wymiany. Wystarczy wykonać:
fsutil behavior set EncryptPagingFile 1
Analogicznie opcja zostanie wyłączona po użyciu komendy
fsutil behavior set EncryptPagingFile 0
Partycje w pliku
Można mówić o powrocie do korzeni - starsi Czytelnicy na pewno pamiętają takie programy jak Stacker/DoubleSpace czy DriveSpace. Pozwalały one stworzyć pliki, które były następnie "montowane" jako oddzielne dyski.
Windows 2008/7 zawierają podobne możliwości - tym razem użytym formatem pliku jest VHD wykorzystywany przez Virtual PC. Co więcej - ich droższe edycje (np. Windows 7 Ultimate) nie mają ograniczeń licencyjnych i pozwalają na takim "dysku" zainstalować sam system (przykład procedury jest podany np. tutaj). Należy jednak pamiętać o tym, iż pewne funkcje mogą być wtedy niedostępne (chociażby hibernacja).
Możemy zamontować plik VHD z poziomu okna Zarządzanie komputerem, ale też używając komendy diskpart. Wystarczy wykonać dwa polecenia:
select vdisk file=plik.vhd
attach vdisk
Z kolei zabezpieczenie takiego dysku przed zapisem uzyskamy wykonując w diskpart:
select volume 4
attributes volume set readonly
(w przykładzie wybraliśmy wolumin numer 4 - aby dobrać właściwy numer, wystarczy wykonać list volume). Takie zabezpieczanie możemy również wykonać dla części partycji, alternatywą jest tutaj oczywiście ustawienie (czy raczej usunięcie) odpowiednich praw dostępu np. z poziomu Eksploratora.
Na cofnięcie tej blokady pozwolą:
select volume 4
attributes volume clear readonly
Kolejną opcją jest przypisanie wybranej litery:
select volume 4
assign letter=Z
Możliwe jest zapisanie wymienionych powyżeń poleceń w pliku i wywołanie ich przez diskpart w trybie wsadowym:
diskpart /s plik
Dodanie takiego skrótu do Autostartu może spowodować, iż Windows będzie automatycznie montował dyski również przy starcie.
Uprawnienia
Zdarza się, że nawet będąc administratorem systemu, nie mamy dostępu do jakiegoś katalogu (przykładem jest np. System Volume Information). W takich wypadkach najczęściej wystarcza oczywiście wybranie właściwości katalogu w Eksploratorze i dodanie pełnych praw dostępu w zakładce Zabezpieczenia. Czasem jednak jest z tym problem (np. w Windows XP Home). Jak sobie z tym poradzić ?
Wyświetlamy nazwę zalogowanego użytkownika korzystając z polecenia
whoami
Następnie dodajemy sobie uprawnienia z linii komend wykonując
cacls "katalog" /E /G nazwa_uzytkownika:F
(zamiast katalog wpisujemy w cudzysłowie nazwę katalogu, zamiast nazwa_uzytkownika ciąg znaków podanych przez whoami)
Uprawnienia możemy usunąć wykonując
cacls "katalog" /E /R nazwa_uzytkownika
Co jest teraz otwarte ?
Załóżmy, że chcielibyśmy zobaczyć, które pliki są otwarte przez konkretny proces. Pozwala na to sam system Windows. Wpierw należy włączyć tę opcję:
openfiles /local ON
Następnie trzeba zrestartować system i użyć
openfiles
Minusem jest to, iż komenda nie pokazuje zawsze pełnej ścieżki do plików. Plusem, iż mamy również od razu informację o plikach otwartych z innych komputerów.
Na koniec można opcję wyłączyć:
openfiles /local OFF
Alternatywą może być użycie np. bezpłatnego Process Explorera od Microsoftu.