hdparm - pobiera/ustawia parametry dysku SATA/IDE
hdparm [opcje] [urządzenie ...]
Program hdparm udostępnia interfejs wiersza
poleceń do różnych interfejsów jądra,
obsługiwanych przed linuksowy podsystem SATA/PATA/SAS
"libata" i starszy podsystem sterownika IDE. Wiele nowszych (z
roku 2008 i nowszych) urządzeń USB obsługuje
również "SAT" (SCSI-ATA Command Translation) i
dlatego może również działać z hdparm.
Dotyczy to na przykład nowszych modeli dysków
zewnętrznych WD "Passport" i NexStar-3.
Część opcji może działać poprawnie
tylko z najnowszymi jądrami.
Gdy nie podano opcji, zakłada się acdgkmur. W
przypadku opcji "pobiera/ustawia", odpytanie bez opcjonalnego
parametru (np. -d) odpyta (pobierze) stan urządzenia, a z parametrem
(np. -d0) ustawi stan urządzenia.
- -a
- Pobiera/ustawia wskaźnik odczytu z wyprzedzeniem (read-ahead)
systemu plików. Jest to używane do zwiększania
wydajności w sekwencyjnych odczytach dużych plików
poprzez pobieranie dodatkowych bloków, w nadziei, że
będą potrzebne danemu zadaniu. Wiele sterowników IDE
ma także wbudowane oddzielne funkcje tego typu, które w
wielu sytuacjach niwelują potrzebę odczytu z wyprzedzeniem
przez system plików.
- -A
- Pobiera/ustawia właściwość odczytu
wyprzedzającego (read-lookahead) napędu IDE (zwykle
domyślnie ON -- włączoną). Użycie:
-A0 (wyłącza) lub -A1
(włącza).
- -b
- Pobiera/ustawia stan magistrali.
- -B
- Pobiera/ustawia właściwości zaawansowanego
zarządzania energią (APM), o ile napęd ją
obsługuje. Mała wartość oznacza agresywne
zarządzanie energią, a duża - wyższą
wydajność. Możliwe wartości obejmują
zakres od 1 do 127 (która pozwala na zatrzymanie talerzy -
"spin-down") i wartości od 128 do 254 (która na to
nie pozwala). Najwyższy stopień zarządzania
energią jest ustawiany wartością 1, a
najwyższa wydajność wejścia/wyjścia
wartością 254. Wartość 255 nakazuje hdparm
wyłączyć zaawansowane zarządzenia
energią (nie wszystkie dyski potrafią ją
wyłączyć, ale większość
tak).
- -c
- Pobiera/ustawia obsługę 32-bitowego
wejścia/wyjścia w (E)IDE. Można użyć
numerycznego parametru
włączającego/wyłączającego
obsługę. Obecnie obsługiwane wartości
obejmują 0 dla wyłączenia obsługi
32-bitowego I/O, 1 dla włączenia 32-bitowej
transmisji danych, 3 dla włączenia 32-bitowej
transmisji danych ze specjalną sekwencją sync
wymaganą przez wiele chipsetów. Wartość
3 działa z prawie wszystkimi 32-bitowymi chipsetami IDE,
lecz naraża na dodatkowe koszty. Zauważ, że
"32-bit" odnosi się do transmisji poprzez
magistralę PCI lub VLB, ale tylko do karty interfejsu; wszystkie
napędy (E)IDE mają wciąż tylko 16-bitowe
połączenie z kartą interfejsu.
- -C
- Sprawdza obecny stan trybu zasilania IDE. Jest on zawsze jednym z:
unknown (dysk nie obsługuje tego polecenia),
active/idle (normalne działanie), standby (tryb
oszczędzania energii, dysk się zatrzymał), lub
sleeping (najniższy tryb oszczędzania energii, dysk
jest całkowicie wyłączony). Za pomocą opcji
-S, -y, -Y, i -Z można
manipulować trybami zasilania IDE.
- -d
- Pobiera/ustawia flagę "using_dma"
(używający DMA) dla tego napędu. Opcja ta
działa tylko z kilkoma kombinacjami napędów i
interfejsów, które obsługują DMA, i
które są znane sterownikowi IDE. Dobrym pomysłem jest
również użycie odpowiedniej opcji -X w
połączeniu z -d1 aby zapewnić, że sam
napęd jest zaprogramowany odpowiedni tryb DMA, choć wiele
BIOS-ów powinno zrobić to za użytkownika podczas
uruchamiania komputera. Używanie DMA prawie zawsze powoduje
zwiększenie wydajności i przepustowości oraz
zmniejsza zużycie procesora. Lecz jest co najmniej kilka
zestawień chipsetów i dysków, dla których
użycie DMA nie zrobi większej różnicy, lub
nawet spowolni dysk (na naprawdę spapranym sprzęcie). Ale to
zależy.
- --dco-freeze
- DCO to skrót od Device Configuration Overlay (nakładka
konfiguracji urządzeń), sposobu, w jaki dostawcy selektywnie
wyłączają określone funkcje napędu.
Opcja --dco-freeze zamraża/blokuje
bieżącą konfigurację napędu,
uniemożliwiając w ten sposób oprogramowaniu (lub
malware), zmieniać ustawienia DCO po następnym ponownym
uruchomieniu urządzenia.
- --dco-identify
- Odpytuje i zrzuca informacje na temat ustawień konfiguracji
urządzenia, które mogą być
wyłączone przez dostawcę lub instalatora OEM. Te
ustawienia pokazują możliwości napędu,
które mogły zostać wyłączone przez
dostawcę, w celu "rozszerzonej kompatybilności".
Gdy są wyłączone, są one ukryte nie
będą pokazywane w wyniku polecenia -I. Na
przykład, dostawcy systemu czasami wyłączają
48-bitowe adresowanie na dużych napędach, z powodów
kompatybilności (lub jej utraty) z określonym BIOS-em. W
takich przypadkach --dco-identyfy pokaże, że
napęd posiada opcję 48_bit, ale -I nie pokaże
jej, ani napęd nie będzie akceptować poleceń
48_bit.
- --dco-restore
- Resetuje wszystkie ustawienia, funkcje i dostępne
możliwości napędu do wartości fabrycznych i
pełnych możliwości. Polecenie zawiedzie, jeśli
DCO zostało zamrożone/zablokowane, lub gdy ustawiono
również maksymalne ograniczenie rozmiaru -Np. Jest to
NIEZWYKLE NIEBEZPIECZNE i prawdopodobnie spowoduje
poważną utratę danych. Proszę NIE
UŻYWAĆ TEGO POLECENIA.
- --direct
- Używa flagi "O_DIRECT" jądra podczas
przeprowadzania pomiarów czasów -t. W ten
sposób ominięta jest pamięć podręczna
strony, powodując bezpośredni odczyt z napędu do
buforów hdparm, używając tzw. "surowego"
wejścia/wyjścia. W wielu przypadkach może to
dać znacznie szybsze odczyty niż zwykła metoda
stronicowanej pamięci podręcznej, dając lepszy
wskaźnik surowej wydajności urządzenia i
sterownika.
- --drq-hsm-error
- BARDZO NIEBEZPIECZNE, PROSZĘ NAWET NIE MYŚLEĆ O
UŻYWANIU TEJ OPCJI. Opcja powoduje wydanie przez hdparm do
jądra, niepoprawnie oznaczonego jako "non-data",
polecenia IDENTIFY. Powoduje to pozostawienie sterownika z jego wierszem
dataReQuest(DRQ) w stanie "utknięcia". Dezorientuje to
sterowniki jądra i może spowodować
natychmiastową awarię systemu łącznie z
poważną utratą danych. Opcja istnieje w celu pomocy w
testowaniu i zabezpieczaniu jądra przed rzeczywistymi
błędami napędów. BARDZO NIEBEZPIECZNE,
NIE UŻYWAĆ!
- -D
- Włącza/wyłącza wbudowaną w napęd
właściwość zarządzania uszkodzeniami,
za pomocą której jego firmware próbuje automatycznie
zarządzać uszkodzonymi sektorami, przenosząc je na
sektory "zapasowe", zarezerwowane fabrycznie do tego celu.
Kontrolowanie tej funkcji za pomocą opcji -D nie jest
obsługiwane przez większość
współczesnych napędów od ATA-4; w
związku z tym, to polecenie może się nie
powieść.
- -E
- Ustawia szybkość napędu CD/DVD. NIE jest to konieczne
do normalnego działania, gdyż napęd automatycznie sam
przełącza prędkości. Jednak jeśli
chcesz się nim bawić, podaj po tej opcji
wartość szybkości, zwykle liczbę taką
jak 2 lub 4. Może być to niekiedy przydatne, np. aby
odtwarzanie filmów z DVD stało się
płynniejsze.
- -f
- Synchronizuje (sync) i opróżnia (flush) bufory
podręczne urządzenia przy wyjściu. Operacja ta jest
również wykonywana jako część
pomiarów -t, -T i innych opcji.
- --fallocate
- Opcja działa obecnie jedynie w systemach plików ext4 i xfs.
Gdy zostanie użyta, musi być jedyną podaną
opcją. Wymaga dwóch parametrów: oczekiwanej
wielkości pliku w kilobajtach (liczba bajtów podzielona
przez 1024), a po niej ścieżki nowego pliku. Utworzy ona
nowy plik o określonym rozmiarze, bez zapisywania jakichkolwiek
danych do pliku. Jest to zwykle bardzo szybkie i nie obciąża
urządzenia dyskowego.
- Przykładowo: utworzenie pliku o rozmiarze 10 kB: hdparm
--fallocate 10 plik_tymczas
- --fibmap
- Gdy zostanie użyta, musi być jedyną podaną
opcją. Wymaga ścieżki pliku jako parametru i powoduje
wypisanie listy ekstentów (zakresów sektorów)
bloków zajętych przez plik na dysku. Numery sektorów
są podane jako absolutne numery LBA, odnoszące się do
sektora 0 fizycznego urządzenia, a nie do partycji czy systemu
plików. Ta informacja może być następnie
użyta do wielu celów, takich jak sprawdzanie stopnia
fragmentacji większych plików, czy określanie
poprawnych sektorów w celu rozmyślnego uszkodzenia podczas
procedur testowych wstrzykiwania błędów.
- Opcja używa nowej FIEMAP (file extent map - mapy ekstentów
pliku) ioctl(), jeśli jest dostępna lub wykorzystuje
starszą FIBMAP (file block map - mapa bloków pliku) ioctl()
w przeciwnym wypadku. Proszę zauważyć, że z
powodu wykorzystywania 32-bitowego interfejsu liczb bloków, FIBMAP
nie działa powyżej 8 TB lub 16 TB. FIBMAP jest
również bardzo wolna i nie działa dobrze z
zaalokowanymi wstępnie ekstentami w systemach plików
ext4/xfs, chyba że wykonano sync() przed użyciej tej
opcji.
- --fwdownload
- Gdy zostanie użyta, powinna być jedyną podaną
opcją. Wymaga podania bezpośrednio po opcji
ścieżki pliku, z której powinno być odczytane
nowe firmware napędu. Zawartość pliku zostanie
wysłana do napędu przy użyciu polecenia DOWNLOAD
MICROCODE (S)ATA, używając albo protokołu
transferu 7 (cały plik na raz), albo, jeśli napęd to
obsługuje, protokołu transferu 3 (pobieranie we
fragmentach). Polecenie to jest NIEZWYKLE NIEBEZPIECZNE i
może zniszczyć zarówno napęd, jak i jego
wszystkie dane. Proszę NIE UŻYWAĆ TEGO
POLECENIA. Odmiany --fwdownload-mode3 ,
--fwdownload-mode3-max i --fwdownload-mode7 pozwalają
na przesłonięcie automatycznie wykrytego protokołu,
wymuszając na hdparm użycie określonego
protokołu transferu (jedynie do celów testowych).
- -F
- Opróżnia bufory zapisu dysku (starsze napędy
mogą nie implementować tej funkcji).
- -g
- Pokazuje geometrię dysku (cylindry, głowice, sektory),
rozmiar (w sektorach), a także przesunięcie (w sektorach)
początku urządzenia, poczynając od początku
napędu.
- -h
- Pokazuje krótką informację o użyciu
(pomoc).
- -H
- Odczytuje temperaturę niektórych dysków
(głównie Hitachi). Informuje również, czy
temperatura znajduje się w zalecanym przedziale wartości
(może nie być to wiarygodne). Nie powoduje to
rozkręcenia talerzy napędu, jeśli znajduje się
w stanie bezczynności.
- -i
- Pokazuje informacje identyfikacyjne, które sterowniki jądra
(IDE, libata) pobrały z napędu podczas startu/konfiguracji,
o ile są one dostępne. Rezultaty mogą się
różnić od bieżących informacji
pozyskiwanych bezpośrednio ze sterownika opcją -I.
Zwracane dane mogą nie być aktualne, zależnie od
czynności wykonanych po uruchomieniu systemu. Dla
dokładniejszej interpretacji informacji identyfikacyjnych,
odsyłamy do AT Attachment Interface for Disk Drives
(ANSI ASC X3T9.2 working draft, revision 4a, April 19/93 i
późniejsze edycje).
- --idle-immediate
- Wykonuje polecenie ATA IDLE_IMMEDIATE, powodując przejście
napędu w niższy stan zasilania. Z reguły talerze
napędu nie ulegają zatrzymaniu.
- --idle-unload
- Wykonuje polecenie ATA IDLE_IMMEDIATE_WITH_UNLOAD, powodując
odłączenie lub zaparkowanie głowic i przejście
napędu w niższy stan zasilania. Z reguły talerze
napędu nie ulegają zatrzymaniu.
- -I
- Żąda informacji identyfikacji bezpośrednio od
napędu. Informacja jest wyświetlana w nowym, rozszerzonym
formacie z większą ilością
szczegółów, niż przy starszej opcji
-i.
- --Istdin
- Jest to specjalna odmiana opcji -I, która akceptuje blok
identyfikacyjny dysku jako standardowe wejście zamiast
używania parametru /dev/hd*. Format tego bloku musi być
dokładnie taki sam jak w "plikach"
/proc/ide/*/hd*/identify lub utworzony za pomocą opcji
--Istdout opisanej poniżej. Ta odmiana jest przeznaczona do
użytku z "bibliotekami" informacji identyfikacyjnych
dysku, oraz z dyskami ATAPI, dla których standardowe mechanizmy
mogą działać błędnie. Gdy
używana jest opcja --Istdin, musi być ona *jedynym*
podanym parametrem.
- --Istdout
- Opcja zrzuca informacje identyfikacyjne dysku w zapisie szesnastkowym na
standardowe wyjście, w formacie podobnym do /proc/ide/*/identify i
odpowiednim do późniejszego użycia z opcją
--Istdin.
- -J
- Pobiera/ustawia wartość czasu oczekiwania "idle3"
dysków Western Digital (WD) Green Drive. Czas ten kontroluje
częstość parkowania głowic dysku i
przejścia w niższy stan zasilania. Ustawieniem fabrycznym
jest osiem (8) sekund, co jest bardzo kiepskim wyborem do systemu Linux.
Pozostawienie wartości domyślnej, powoduje setki lub
tysiące cykli ładowania/odłączenia
głowic w bardzo krótkim czasie. Mechanizm dysku
został zaprojektowany na 300 000 do 1 000 000
cykli, tak więc pozostawienie wartości domyślnej
może spowodować przedwczesne zużycie dysku, nie
wspominając o wpływie na wydajność, gdy
napęd często musi się wybudzić przed
wykonaniem operacji wejścia/wyjścia.
- Firma WD dostarcza DOS-owe narzędzie WDIDLE3.EXE do zmiany tego
ustawienia i powinno się go użyć zamiast hdparm, gdy
tylko to możliwe. Implementacja w hdparm, uzyskana za pomocą
inżynierii wstecznej nie jest tak kompletna jak oryginalny i
oficjalny program, nawet jeśli wygląda na
działającą na przynajmniej kilku sztukach tych
dysków. Aby zmiana w ustawieniach zadziałała,
potrzebny jest pełny cykl zasilania (włączenie i
wyłączenie), niezależnie od tego, który
program zostanie użyty do zmiany ustawień.
- Zaleca się ustawienie wartości 30 sekund do użycia z
Linuksem. Dozwolonymi wartościami jest 8 do 12 sekund, a
następnie 30 do 300 sekund w 30 sekundowych odstępach.
Podanie wartości zero (0) wyłączy całkowicie
czas idle3 dysków WD (NIE ZALECANE!).
- -k
- Pobiera/ustawia flagę "keep_settings_over_reset"
(zachowaj ustawienia po resecie). Gdy ta flaga jest ustawiona, sterownik
będzie chronił opcje -dmu po miękkim resecie
(wykonanym np. podczas sekwencji odzyskiwania po błędzie).
Flaga ta domyślnie jest wyłączona, aby
uchronić napęd przed pętlami resetowań,
które mogłyby być spowodowane kombinacjami
ustawień -dmu Opcja -k powinna więc być
ustawiana tylko gdy jest się przekonanym, że to co robisz
jest dobre. Praktycznie, wszystko co trzeba zrobić aby
przetestować konfigurację (przed użyciem -k) to
sprawdzenie czy napęd daje się
odczytać/zapisać i czy proces nie generuje
błędów w logach (komunikaty jądra) (w
większości systemów należy zajrzeć do
/var/log/messages).
- -K
- Ustawia flagę "keep_features_over_reset" (zachowaj
właściwości po resecie). Jej ustawienie powoduje,
że napęd odzyskuje po miękkim resecie ustawienia dla
-APSWXZ. Nie wszystkie napędy obsługują
tę właściwość.
- -L
- Ustawia flagę blokowania drzwiczek (doorlock flag).
Wartość 1 spowoduje zablokowanie drzwiczek
niektórych wymiennych dysków twardych (np. Syquest, ZIP,
Jazz...). Z kolei wartość 0 spowoduje odblokowanie
drzwiczek. Normalnie Linux automatycznie zarządza mechanizmem
blokowania drzwiczek, w zależności od eksploatacji dysku
(zablokowane, gdy system plików jest zamontowany). Lecz podczas
zamykania systemu może być to uciążliwe, gdy
główna partycja znajduje się na dysku wymiennym,
gdyż partycja ta pozostaje zamontowana (w trybie tylko-do-odczytu)
po zamknięciu systemu. Dzięki użyciu tej opcji
po przemontowaniu głównego systemu plików w
trybie tylko-do-odczytu możliwe jest wyjęcie kasety ze
stacji po zamknięciu systemu.
- -m
- Pobiera/ustawia licznik sektorów dla wielosektorowego I/O w
napędzie. Ustawienie 0 wyłącza tę
właściwość. Tryb ten (inaczej znany jako IDE
Block Mode) jest właściwością
większości nowoczesnych dysków twardych IDE,
zezwalającą na transfer wielu sektorów na przerwanie
I/O, w przeciwieństwie do tradycyjnego jednego sektora. Gdy
włączona jest ta właściwość,
zazwyczaj obciążenie I/O przez system zmniejsza się o
30-50%. W wielu systemach powoduje to także zwiększenie
przepływu danych o 5% do 50%. Mimo to, niektóre
napędy (najbardziej zauważalnie seria WD Caviar),
wydają się działać wolniej w tym trybie.
Różnie to jednak bywa. Większość
napędów wspiera minimalny zestaw ustawień
obejmujący 2, 4, 8 i 16 (sektorów). Dla niektórych
dysków możliwe są także większe
wartości. Ustawienie 16 lub 32 wydaje się optymalnym dla
wielu systemów. Western Digital zaleca niższe ustawienia od
4 do 8 na wielu z ich dysków, a to z powodu małych (32KB)
buforów w napędach i niezoptymalizowanych algorytmów
buforowania. Opcja -i może służyć do
znajdywania maksymalnej wspieranej wartości zainstalowanego
napędu (szukaj MaxMultSect na wyjściu). Niektóre
napędy twierdzą, że wspierają ten tryb, lecz
tracą dane przy niektórych ustawieniach. W rzadkich
wypadkach, takie błędy mogą spowodować
poważne uszkodzenie systemu plików.
- --make-bad-sector
- Celowo tworzy uszkodzony sektor (bad sector, media error) na dysku.
NIEZWYKLE NIEBEZPIECZNE, NIE UŻYWAĆ TEJ OPCJI!.
Może być to przydatne przy testowaniu mechanizmów
odzyskiwania błędów urządzenia/RAID. Numer
sektora jest podany jako (dziesiątkowy) parametr po opcji. W
zależności od urządzenia, hdparm wybierze jedno z
dwóch dostępnych poleceń ATA do uszkodzenia sektora.
WRITE_LONG działa w przypadku większości
urządzeń, lecz jedynie do granicy 28-bitów.
Część najnowszych napędów (2008)
może obsługiwać nowe polecenie
WRITE_UNCORRECTABLE_EXT, które działa na wszystkich
sektorach LBA48. Jeśli jest ono dostępne, hdparm
użyje go zamiast WRITE_LONG. Samo polecenie WRITE_UNCORRECTABLE_EXT
prezentuje wybór jak nowy uszkodzony sektor powinien się
zachowywać. Domyślnie, wygląda on jak każdy
inny uszkodzony sektor i napędowi może zająć
nieco czasu aby wykonać kolejne ponowne i nieudane próby
odczytu (READ) sektora. Jeśli jednak poda się
pojedynczą literę f bezpośrednio przed
pierwszą cyfrą parametru numeru sektora, to hdparm wykona
"flagowane" WRITE_UNCORRECTABLE_EXT, które powoduje,
że napęd oznacza sektor jako uszkodzony (zamiast
rzeczywiście go uszkadzać), dzięki czemu próby
odczytu (READ) sektora natychmiast się nie powiodą (zamiast
po kilku kolejnych próbach). Proszę zauważyć,
że opcja --repair-sector może być użyta
aby odzyskać (każdy) uszkodzony sektor, gdy nie jest on
dłużej potrzebny, włączając w to
również sektory rzeczywiście uszkodzone (napęd
prawdopodobnie przemapuje je do przestrzeni zapasowej dysku).
- -M
- Pobiera/ustawia wartość Automatycznego Zarządzania
Głośnością (Automatic Acoustic Management -
AAM). Większość nowych dysków ma
możliwość zwolnienia obrotów głowicy
aby zredukować poziom hałasu. Wartości mogą
być z przedziału od 0 do 254. 128 jest najcichszym (a zatem
najwolniejszym) ustawieniem, a 254 najszybszym (i
najgłośniejszym). Niektóre dyski mają tylko
dwa poziomy (cichy / szybki), a inne mogą przyjmować
wszystkie wartości od 128 do 254. W tej chwili,
większość napędów obsługuje
jedynie 3 opcje: wyłączone, cichy i szybki. Można im
przypisać obecnie, odpowiednio, wartości 0, 128 i 254, ale
pozostałe wartości zostały przeznaczone do
przyszłych rozszerzeń, więc może to ulec
zmianie.
- -n
- Pobiera lub ustawia flagę "ignore_write_errors" (ignoruj
błędy zapisu) w sterowniku. NIE baw się tym bez
uprzedniego zapoznania się z kodem źródłowym
sterownika.
- -N
- Pobiera/ustawia maksymalną widzialną liczbę
sektorów, znaną również jako ustawienie
Host Protected Area. Bez parametru, -N wyświetla
bieżące ustawienie, które jest wyświetlane
jako dwie wartości: pierwsza określa bieżące
maksymalne ustawienie sektorów, druga pokazuje natywny
(rzeczywisty) limit sprzętowy dysku. Różnica
pomiędzy tymi dwiema wartościami wskazuje na liczbę
sektorów, które są aktualnie ukryte dla systemu
operacyjnego w formie Host Protected Area (HPA). Obszar ten jest
często używany przez osoby składające komputer
do przechowania oprogramowania diagnostycznego i/lub kopii oryginalnego
systemu operacyjnego w celach odzyskiwania. Innymi możliwymi
powodami mogą być ukrycie rzeczywistej pojemności
bardzo dużego dysku dla BIOS-u/systemu, który nie
może normalnie funkcjonować z dyskami tego rozmiaru (np.
obecnie (2010) BIOS-y nie potrafią poradzić sobie z dyskami
o rozmiarze przekraczającym 2 TB, a HPA może być
użyte do raportowania przez dysk o pojemności 3 TB,
że ma 2 TB). Aby zmienić bieżące maksimum
(BARDZO NIEBEZPIECZNE, UTRATA DANYCH JEST NIEZWYKLE PRAWDOPODOBNA), nowa
wartość powinna być dostarczona (dziesiątkowo)
zaraz po opcji -N. Wartość ta jest określona
jako liczba sektorów, zamiast "maksymalny adres sektora"
dysku. Napędy korzystają z pomysłu tymczasowych
(ulotnych) ustawień, które są tracone przy
następnym resecie sprzętowym oraz bardziej stałej
(nieulotnej) wartości, która nie jest zmieniana w czasie
resetów i kolejnych cykli zasilania. Domyślnie, -N
zmienia jedynie ustawienie tymczasowe (ulotne). Aby zmienić
wartość stałą (nieulotną),
proszę poprzedzić pierwszą cyfrę
wartości początkowym znakiem p. Napędy
są zaprojektowane na pozwolenie na tylko jedną zmianę
wartości stałem w sesji. Przed kolejną,
permanentną operacją -N konieczny jest reset
sprzętowy (lub wyłączenie i włączenie).
Proszę zauważyć, że każda próba
zmienienia tej wartości może zawieść,
jeśli dysk jest dostępny dla innego programu w tym samym
czasie. Jest tak, ponieważ ustawienie wartości wymaga
wymiany pary poleceń dyskowych, ale nie ma sposobu na
zapobiegnięcie wstawienia pomiędzy nie innych poleceń
przez jądro. Jeśli więc zmiana początkowo
się nie powiedzie, proszę po prostu spróbować
ponownie. Obsługa opcji -N przez jądro jest
błędna dla wielu typów adapterów przez w wielu
wersjach jądra. Raportowana jest wówczas niekiedy
nieprawidłowa (zbyt mała) wartość maksymalnego
rozmiaru. Obecnie (jądro 2.6.27) wygląda na to, że w
końcu działanie powinno być poprawne w przypadku
większości sprzętu.
- --offset
- Przesuwa (offset) do podanego numeru GiB (1024*1024*1024), podczas
przeprowadzania pomiarów czasu -t odczytu urządzenia.
Szybkość zmienia się (około dwukrotnie) w
przypadku wielu dysków mechanicznych. Z reguły, choć
nie zawsze, największa jest na początku dysku. Napędy
solid-state drive (SSD) powinny wykazywać podobne czasy
niezależnie od przesunięcia.
- -p
- Próbuje przeprogramować chipset interfejsu IDE na
określony tryb PIO, lub próbuje automatycznie
dostosować się do "najlepszego" trybu PIO
obsługiwanego przez napęd.
Właściwość ta jest obsługiwana w
jądrze tylko dla kilku "znanych" chipsetów i nawet
ta obsługa jest co najwyżej niepewna. Niektóre
chipsety IDE nie są w stanie zmienić trybu PIO dla
pojedynczego napędu; wówczas opcja ta może
spowodować ustawienie trybu PIO dla obydwu
napędów. Wiele chipsetów IDE wspiera albo mniej, albo
więcej niż standardowe 6 (od 0 do 5) trybów PIO,
więc dokładne ustawienie szybkości, które
właściwie jest zaimplementowane, będzie
różnić się zależnie od wyrafinowania
chipsetu/sterownika. Używaj z wielką
ostrożnością!
Właściwość ta nie chroni przed
nierozwagą, a niepomyślne działanie może
spowodować poważne uszkodzenie systemu
plików!
- -P
- Ustawia maksymalny licznik sektorów dla wewnętrznych
mechanizmów preodczytu napędu. Nie wszystkie napędy
obsługują tę właściwość i
została ona usunięta z oficjalnej specyfikacji od
ATA-4.
- --prefer-ata12
- W czasie używania protokołu SAT (SCSI
ATA Translation), hdparm zwykle preferuje użycie
poleceń 16-bajtowych gdzie to tylko możliwe.
Część napędów zewnętrznych USB
nie działa poprawnie z poleceniami 16-bajtowymi. Opcja może
zostać użyta do wymuszenia mniejszego, 12-bajtowego formatu
poleceń do takich napędów. Program hdparm
wciąć będzie używał poleceń
16-bajtowym do rzeczy, które nie mogą być wykonane
przy użyciu formatu 12-bajtowego (np. sektory wykraczające
poza format 28-bajtowy).
- -q
- Obsługuje następną opcję cicho, nie
wydając zwykłych komunikatów (nie dotyczy do
komunikatów o błędach) na wyjście. Jest to
przydatne do zmniejszenia zamieszania na ekranie w wypadku uruchamiania ze
skryptów startowych. Nie można stosować do opcji
-i, -v, -t, oraz -T.
- -Q
- Pobiera lub ustawia queue_depth poleceń urządzenia,
jeśli jest to obsługiwane przez sprzęt. Opcja
działa tylko z jądrami 2.6.xx (i nowszymi) i jedynie z
kombinacją urządzeń i sterownika, która
obsługuje zmianę queue_depth. W przypadku dysków SATA
jest to głębokość kolejki Native Command
Queuing (NCQ).
- -r
- Pobiera/ustawia flagę read-only (tylko do odczytu)
urządzenia. Gdy jest ustawiona, Linux nie pozwala na operacje
zapisu na tym urządzeniu.
- -R
- Pobiera/ustawia funkcję Write-Read-Verify, jeśli
napęd ją obsługuje. Użycie: -R0
(wyłączone) lub -R1 (włączone). Funkcja
przeznaczona jest do automatycznego ponownego odczytania przez firmware
dysku danych, które zostały zapisane przez oprogramowanie, w
celu weryfikacji, czy zapis odbył się poprawnie.
Ogólnie rzecz biorąc jest to zachowanie przesadne,
które może spowolnić zapis na dysk dwukrotnie (lub
jeszcze bardziej).
- --read-sector
- Odczytuje z określonego numera sektora i zrzuca jego
zawartość w zapisie szesnastkowym na standardowe
wyjście. Sektor wiersza musi być podany (dziesiętnie)
po opcji. Program hdparm wykona niskopoziomowy odczyt (kompletnie
omijając zwykłą warstwę blokową
mechanizmów odczytu/zapisu) podanego sektora. Można
użyć tej opcji do definitywnego rozstrzygnięcia czy
dany sektor jest uszkodzony (bad sector, media error) czy też nie
(uczynienie tego za pomocą zwykłych mechanizmów
może niekiedy dać fałszywe alarmy).
- --repair-sector
- Jest to alias BARDZO NIEBEZPIECZNEJ opcji
--write-sector.
- -s
- Włącza/wyłącza funkcję zasilania w
trybie gotowości, jeśli jest obsługiwana przez
napęd. BARDZO NIEBEZPIECZNE. Proszę jej nie
używać, chyba że jest się absolutnie pewnym,
że zarówno systemowy BIOS (lub firmware) jak i jądro
systemu operacyjnego (Linux >=2.6.22) obsługuje
próbkowanie urządzenia w celu użycia tej funkcji. Gdy
jest włączona, napęd jest zasilany w trybie
standby (gotowości), pozwalając kontrolerowi na
uruchomienie urządzeń po kolei, redukując chwilowy
pobór energii, gdy wiele napędów jest
podłączonych do tego samego zasilacza. Przydatne
głównie do dużych zestawów RAID. Funkcja jest
zwykle wyłączona, a napęd jest zasilany, gdy jest w
trybie active - aktywnym (patrz powyżej, opcja -C).
Proszę zauważyć, że napęd może
również pozwalać na włączenie tej opcji
za pomocą zworki. Część dysków SATA
obsługuje kontrolę tej funkcji za pomocą pinu 11. w
złączu zasilania SATA. W takich przypadkach, polecenie
może nie być obsługiwane, lub może być
ignorowane.
- -S
- Ustawia napęd w trybie idle (niższego niskiego poboru
energii), ustawia również czas oczekiwania standby
(zatrzymania dysku). Wartość ta jest używana przez
napęd w celu uzyskania informacji o tym, jak długo
oczekiwać (bez aktywności dyskowych) przed
wyłączeniem silnika w celach oszczędności
mocy. W takich warunkach, dysk może potrzebować do 30 sekund
aby odpowiedzieć na nagłe odwołanie, choć
większość napędów robi to znacznie
szybciej. Odczytanie wartości czasu oczekiwania jest nieco
osobliwe. Wartość 0 oznacza "czasy oczekiwania
są wyłączone": napęd nie przejdzie do
trybu standby w sposób automatyczny. Wartości od 1 do 240
określają wielokrotności 5 sekund, czyli dają
czasy oczekiwania od 5 sekund do 20 minut. Wartości od 241 do 251
określają od 1. do 11. jednostki po 30 minut dla
czasów od 30 minut do 5,5 godzin. Wartość 252 oznacza
czas oczekiwania 21 minut, 253 ustawia czas oczekiwania zdefiniowany przez
dostawcę, zamykający się między 8 a 12
godzinami, a wartość 254 jest zarezerwowana. 255 jest
interpretowane jako 21 minut plus 15 sekund. Proszę
zauważyć, że część starszych
napędów może intepretować te wartości w
całkowicie inny sposób.
- -t
- Dokonuje pomiarów czasu odczytów z urządzenia dla
celów porównawczych i testów wydajnościowych.
Aby uzyskać miarodajne wyniki, operacja ta powinna być
powtarzana 2-3 razy na nieaktywnym pod innymi względami systemie
(bez innych aktywnych procesów) z przynajmniej kilkoma megabajtami
wolnej pamięci. Wyświetlana jest szybkość
odczytu poprzez bufory cache z dysku, bez wcześniejszego
cache'owania danych. Wartość ta jest miarą
szybkości, z jaką napęd jest w stanie
obsługiwać liniowe odczyty danych pod Linuksem bez
obciążenia związanego z systemem plików. Aby
zapewnić dokładne pomiary, cache jest
opróżniany za pomocą ioctl BLKFLSBUF.
- -T
- Dokonuje pomiarów czasu odczytów z cache dla celów
porównawczych i testów wydajnościowych. Aby
uzyskać miarodajne wyniki, operacja ta powinna być
powtarzana 2-3 razy na nieaktywnym pod innymi względami systemie
(bez innych aktywnych procesów) z przynajmniej kilkoma megabajtami
wolnej pamięci. Wyświetlana jest szybkość
odczytu bezpośrednio z linuksowych buforów cache, bez
dostępu do dysku. Wartość ta jest wskaźnikiem
przepływu danych między procesorem, cache i
pamięcią systemu.
- --trim-sector-ranges
- Do napędów Solid State Drive (SSD). NIEZWYKLE
NIEBEZPIECZNE. NIE UŻYWAĆ TEJ OPCJI! Nakazuje
firmware dysku odrzucać niepotrzebne sektory danych,
niszcząc wszelkie dane, które mogą one
zawierać. W tej sposób sektory te są dostępne
do natychmiastowego użycia przez mechanizm odśmiecania
pamięci (garbage collection) firmware, w celu poprawy
równomiernego poziomu zużycia komórek flash. Opcja
oczekuje podania jednego lub więcej par zakresów zaraz po
niej w formie: początek adresu LBA, dwukropek i liczba
sektorów (maksymalnie 65535) bez spacji w pojedynczym zapisie.
NIEZWYKLE NIEBEZPIECZNE. NIE UŻYWAĆ TEJ
OPCJI!
- Przykład: hdparm --trim-sector-ranges 1000:4 7894:16
/dev/sdz
- --trim-sector-ranges-stdin
- Identyczne do --trim-sector-ranges powyżej, z
wyjątkiem tego, że lista par lba:liczba jest czytana ze
standardowego wejścia, zamiast być podaną w wierszu
poleceń. Można wykorzystać tę opcję do
uniknięcia problemów z wyjątkowo długimi
wierszami polecenia. Pozwala to również na skumulowanie
wielu więcej zakresów sektorów w jedno polecenie,
aż do aktualnie skonfigurowanego limitu transferu
(max_sectors_kb).
- -u
- Pobiera/ustawia flagę interrupt-unmask napędu. Ustawienie
1 zezwala sterownikowi na niemaskowanie innych przerwań
podczas przetwarzania przerwania dyskowego, co w znaczącym stopniu
zmniejsza czas reakcji na Linuksa na polecenia użytkownika i
eliminuje błędy "serial port overrun".
Używając tej opcji nleży zachować
ostrożność: niektóre kombinacje
napędu/kontrolera nie radzą sobie dobrze z tą
właściwością, co może spowodować
poważne uszkodzenie systemu plików. W
szczególności, interfejsy CMD-640B i RZ1000
(E)IDE mogą być niestabilne (z powodu usterek
sprzętowych) gdy opcja ta jest używana z wersjami
jądra wcześniejszymi niż 2.0.13.
Wyłączenie właściwości IDE
prefetch tych interfejsów (zwykle ustawienie BIOS/CMOS) daje
bezpieczne rozwiązanie tego problemu dla wcześniejszych
jąder.
- -v
- Wypisuje niektóre podstawowe ustawienia, tak jak -acdgkmnru dla
IDE. Jest to też domyślne zachowanie, kiedy nie poda
się żadnych opcji.
- --verbose
- Wyświetla dodatkowe informacje diagnostyczne w przypadku
niektórych poleceń.
- -w
- Resetuje urządzenie (NIEBEZPIECZNE). NIE używaj tej
opcji. Jest ona tylko do użytku w nieoczekiwanych sytuacjach, gdy
dla przywrócenia dysku do stanu używalności i tak
może być konieczne przeładowanie systemu.
- --write-sector
- Zapisuje zera do podanego numeru sektora. BARDZO NIEBEZPIECZNE.
Numer sektora musi zostać podany (dziesiątkowo) po opcji.
Program hdparm wykona niskopoziomowy zapis (całkowicie
omijając zwykłą warstwę blokową
mechanizmów odczytu/zapisu) do określonego sektora.
Może to zostać wykorzystane do wymuszenia na napędzie
naprawę uszkodzonego sektora (bad sector, media error).
- -W
- Pobiera/ustawia funkcję pamięci podręcznej zapisu
(write-caching) napędów IDE/SATA.
- -X
- Ustaw tryb transferu IDE dla nowszych napędów (E)IDE/ATA.
Jest to zazwyczaj używane łącznie z -d1 gdy
włącza się DMA do/z napędu na wspieranym
chipsecie interfejsu, przy czym -X mdma2 służy do
wyboru trybu transferów multiword DMA mode2 a -X sdma1 do
wyboru prostego trybu mode1 transferów DMA. Na systemach,
które wspierają UltraDMA użycie -X udma2
służy do ustawiania trybu transferów UltraDMA mode2
(będziesz musiał przygotować wcześniej chipset
do użycia UltraDMA). Poza tym, użycie tej opcji jest
rzadko potrzebne gdyż
większość/wszystkie nowoczesne napędy IDE
domyślnie ustawiają się w najszybszym ze swoich
trybów PIO przy włączaniu. Manipulowanie tym
może być bezcelowe i ryzykowne. Na dyskach, które
wspierają alternatywne tryby transferu, -X może
służyć do przełączania tylko
trybu napędu. Przed zmianą trybu transferu, interfejs IDE
powinien być ustawiony za pomocą zworek lub zaprogramowany
(zobacz opcję -p) do nowego trybu, aby zapobiec utracie
i/lub zniszczeniu danych. Używaj tego ze
szczególną uwagą! Dla trybów transferu PIO
(Programmed Input/Output), używanych przez Linuksa,
wartość ta jest zwyczajnie oczekiwanym numerem trybu PIO
plus 8. Dlatego wartość 09 ustawia tryb PIO mode1, 10 PIO
mode2, a 11 wybiera PIO mode3. Ustawienie 00 odtwarza
"domyślny" tryb PIO dysku, a 01 wyłącza
IORDY. W przypadku trybu multiword DMA, używaną
wartością jest oczekiwany tryb DMA plus 32. Dla UltraDMA
wartością jest oczekiwany numer trybu UltraDMA plus 64.
- -y
- Zmusza napęd IDE do natychmiastowego przejścia w tryb
mniejszego zużycia energii: standby. To
najczęściej powoduje zwolnienie pracy dysku. aktualny tryb
może być sprawdzony dzięki opcji -C.
- -Y
- Zmusza napęd IDE do natychmiastowego przejścia w tryb
najmniejszego zużycia energii: sleep. To kompletnie
wyłącza napęd. Aby napęd był
dostępny ponownie potrzebny jest twardy lub miękki reset
(sterownik IDE Linuksa automatycznie wykona reset gdy będzie
potrzebny). Aktualny tryb może być sprawdzony dzięki
opcji -C.
- -z
- Zmusza jądro do ponownego odczytu tablicy partycji podanych
urządzeń.
- -Z
- Wyłącza automatyczne funkcje oszczędzania energii w
niektórych napędach Seagate (modelach ST3xx?), aby
uchronić je od wyłączania się w
nieoczekiwanych momentach.
Eksperymenty z poniższymi przełącznikami
są NIEBEZPIECZNE i mogą nie działać z
niektórymi jądrami. UŻYCIE NA WŁASNE
RYZYKO.
- --security-help
- Wyświetla krótką informację o użyciu na
temat wszystkich opcji --security-*.
- --security-freeze
- Zamraża ustawienia bezpieczeństwa napędu.
Napęd nie akceptuje żadnych poleceń
bezpieczeństwa do kolejnego resetu przy podłączeniu
zasilania. Proszę użyć tę funkcję w
kombinacji z --security-unlock do zabezpieczenia dysku przed jakimikolwiek
próbami ustawienia nowego hasła. Może
również zostać użyta samodzielnie. Z tą
opcją nie można podać w wierszu poleceń
żadnych innych opcji.
- --security-unlock
HASLO
- Odblokowuje napęd, używając hasła HASLO.
Hasło jest podane jako łańcuch ASCII i jest
uzupełniane znakami NUL do wielkości 32 bajtów.
Odpowiednie hasło napędu jest wybierane
przełącznikiem --user-master (domyślnie jest to
hasło użytkownika - "user"). Z tą
opcją w wierszu poleceń nie można podać
żadnych innych.
- --security-set-pass
HASLO
- Blokuje napęd, używając hasła HASLO (ustawia
hasło) (NIEBEZPIECZNE). Hasło jest podane jako
łańcuch ASCII i jest wyrównany znakami NUL do
wielkości 32 bajtów. Użycie hasła specjalnego
NULL ustawia puste hasło. Odpowiednie hasło
napędu jest wybierane przełącznikiem --user-master
(domyślnie jest to hasło użytkownika -
"user"), a odpowiedni tryb bezpieczeństwa jest wybierany
przełącznikiem --security-mode. Z tą opcją w
wierszu poleceń nie można podać żadnych
innych.
- --security-disable
HASLO
- Wyłącza blokowanie napędu, używając
hasła HASLO. Hasło jest podane jako łańcuch
ASCII i jest uzupełniane znakami NUL do wielkości 32
bajtów. Odpowiednie hasło napędu jest wybierane
przełącznikiem --user-master (domyślnie jest to
hasło użytkownika - "user"). Z tą
opcją w wierszu poleceń nie można podać
żadnych innych.
- --security-erase
HASLO
- Wykasowuje (zablokowany) napęd, używając hasła
HASLO (NIEBEZPIECZNE). Hasło jest podane jako
łańcuch ASCII i jest wyrównany znakami NUL do
wielkości 32 bajtów. Użycie hasła specjalnego
NULL reprezentuje puste hasło. Odpowiednie hasło
napędu jest wybierane przełącznikiem --user-master
(domyślnie jest to hasło użytkownika -
"user"). Z tą opcją w wierszu poleceń nie
można podać żadnych innych.
- --security-erase-enhanced
HASLO
- Wykonuje rozszerzone kasowanie (zablokowanego) napędu,
używając hasła HASLO (NIEBEZPIECZNE).
Hasło jest podane jako łańcuch ASCII i jest
uzupełniane znakami NUL do wielkości 32 bajtów.
Odpowiednie hasło napędu jest wybierane
przełącznikiem --user-master (domyślnie jest to
hasło użytkownika - "user"). Z tą
opcją w wierszu poleceń nie można podać
żadnych innych.
- --user-master
UŻYTKOWNIK
- Określa które hasło wybrać (użytkownika
- user lub główne - master). Domyślnym wyborem
jest hasło użytkownika. Użyteczne jedynie w
połączeniu z --security-unlock, --security-set-pass,
--security-disable, --security-erase lub --security-erase-enhanced.
u hasło użytkownika - user
m hasło główne - master
- --security-mode
TRYB
- Określa który tryb bezpieczeństwa (wysoki - high lub
maksymalny - maximum) ustawić. Domyślnym wyborem jest
wysoki. Użyteczne tylko w połączeniu z
--security-set-pass.
h wysokie (high) bezpieczeństwo
m maksymalne (maximum) bezpieczeństwo
TA FUNKCJA JEST EKSPERYMENTALNA I NIEZBYT DOBRZE
PRZETESTOWANA. UŻYCIE NA WŁASNE RYZYKO.
Jak zauważono powyżej, opcje -m sectcount i
-u 1 powinny być używane z
ostrożnością, najlepiej na systemie plików tylko
dla odczytu. Większość napędów pracuje z
tymi właściwościami dobrze, lecz zdarzają
się wyjątki. System plików może wtedy ulec
zniszczeniu. Pamiętaj o backupie przed takimi eksperymentami!
Niektóre opcje (np. -r do SCSI) mogą nie
działać ze starszymi jądrami, w których
potrzebne ioctl()'e nie były obsługiwane.
Chociaż to narzędzie jest skierowane przede
wszystkim do użytku z napędami dysków twardych
SATA/IDE, to część opcji jest również
prawidłowa (i dozwolona) w użyciu z dyskami twardymi SCSI oraz
z dyskami MFT/RLL z interfejsem XT.
Jądro Linux aż do wersji 2.6.12 (i prawdopodobnie
późniejszych) nie obsługuje prawidłowo
odblokowania opcji bezpieczeństwa i wyłączania
poleceń, co może powodować naruszenie ochrony
pamięci, a w niektórych przypadkach nawet panikę
jądra. Polecenia bezpieczeństwa mogą być jednak
wykonane przez napęd. To nieprawidłowe zachowanie jądra
czyni w tej chwili polecenia bezpieczeństwa związane z danymi
PIO raczej bezużyteczne.
Proszę zauważyć, że polecenia
"security erase" i "security disable" zostały
zaimplementowane jako dwa kolejne polecenia danych PIO i nie powiodą
się na zablokowanym napędzie, ponieważ drugie polecenie
nie zostanie wydane po naruszeniu ochrony pamięci. Proszę
zapoznać się z kodem, aby uzyskać wskazówki jak
je załatać, aby ominąć ten problem.
Niezależnie od naruszenie ochrony pamięci, zawsze
możliwe jest uruchomienie dwóch kopii hdparm
jednocześnie i wydanie dwóch potrzebnych poleceń w ten
sposób.
hdparm został napisany przez Marka Lorda
<mlord@pobox.com>, głównego twórcę i
opiekuna sterownika (E)IDE do Linuksa, obecnie zajmującego się
podsystemem libata; wraz z uwzględnieniem sugestii i łatek od
wielu innych osób.
Kod wyłączający automatyczne
oszczędzanie energii w Seagate został napisany przez Tomiego
Leppikangasa <tomilepp@paju.oulu.fi>.
Polecenie zamrażania ustawień bezpieczeństwa
dodał Benjamin Benz w roku 2005.
Polecenia bezpieczeństwa związane z pozyskaniem
danych PIO napisał Leonard den Ottolander w roku 2005.
Niektóre inne części - Benjamin Benz i inni.
http://www.t13.org/ Technical Committee T13 AT Attachment
(ATA/ATAPI) Interface.
http://www.serialata.org/ Serial ATA International
Organization.
http://www.compactflash.org/ CompactFlash Association.
Ze względu na specyfikę tego programu, proszę
korzystać z oryginalnej, angielskojęzycznej
dokumentacji, dostępnej po wydaniu polecenia man --locale=C 8
hdparm, aby uniknąć konsekwencji wynikających z
możliwych błędów w tłumaczeniu.
Jeśli to niemożliwe, proszę upewnić się,
że podręcznik jest aktualny i dotyczy używanej
wersji programu.
Autorami polskiego tłumaczenia niniejszej strony
podręcznika man są: Przemek Borys (PTM)
<pborys@p-soft.silesia.linux.org.pl>, Andrzej M. Krzysztofowicz (PTM)
<ankry@green.mf.pg.gda.pl>, Grzegorz Goławski (PTM)
<grzegol@pld.org.pl> i Michał Kułach
<michal.kulach@gmail.com>.
Polskie tłumaczenie jest częścią
projektu manpages-pl; uwagi, pomoc, zgłaszanie
błędów na stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją
9.43 oryginału.