Drukuj
Nadrzędna kategoria: Ubuntu
Kategoria: Gotowe rozwiązania
Odsłony: 7972
Shellowe narzędzia dyskowe - 5.0 out of 5 based on 3 votes

Ocena użytkowników: 5 / 5

Gwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywna
 
Obsługa dysków w Linuksie jest bardzo rozbudowana. Linux posiada w swoim asortymencie wiele narzędzi do tego zadania. Dziś pokaże kilka z nich oraz kilka trików z nimi związanymi. 
To co lubię w Linuksie to że każde urządzenie blokowe (w tym dyski) jest traktowane jak plik, a co za tym idzie z tym urządzeniem można robić to samo co z plikiem. Katalog /dev jest pełen plików urządzeń blokowych i najbardziej znane to /dev/sdX gdzie X to kolejna literka dysku (prawie jak w Windowsie face wink ). Do tego dochodzą numerki partycji czyli /dev/sdXY, gdzie Y to właśnie ten numer. Czyli urządzenie blokowe /dev/sda3 to trzecia partycja pierwszego dysku w systemie (pierwszego wg tego co zgłasza BIOS).
Potraktowanie dysku jak pliku daje wiele możliwości. Aby zrobić np. obraz płyty do pliku ISO wystarczy skopiować zawartość pliku /dev/sr0 do pliku i już mamy plik ISO. Ale o tym za chwilę. Pierwszym narzędziem którym się zajmę jest smartclt.
Smartctl
SMART to skrót od Self-Monitoring, Analysis and Reporting Technology. To program, który zaszyty jest w firmware dysku, dzięki któremu dysk dokonuje samodiagnozy i wyniki przedstawia do systemu operacyjnego. Jeżeli są włączone testy SMARTa co jakiś czas się same wykonują i na raportują zmiany w "zdrowiu" dysku. Monituruje się między innymi:
  • Raw Read Error Rate - ilość błędów odczytu, które się pojawiały podczas całej pracy dysku
  • Spin Up Time - ilość milisekund/sekund jakie potrzebuje dysk do pełnej gotowości po włączeniu
  • Start / Stop Count - ilość włączeń/wyłączeń dysku
  • Reallocated Sector Count - ilość realokowanych sektorów dysku. Gdy SMART napotka błąd na dysku, oznacza go jako podejrzanego, a dane z tego sektora są przenoszone w specjalne zarezerwowane miejsce. Jeśli błąd się powtarza sektor zostaje oznaczony jako zrealokowany i nie jest używany. Im większa wartość tym szybciej się trzeba zastanawiać nad zmianą dysku. Zarezerwowane miejsce na zrealokowane dane kiedyś się skończy, a każda taka realokacja źle wpływa na wydajność dysków.
  • Spin Retry Count - ilość prób po nieudanym rozkręceniu dysku. Im większa wartość może oznaczać problemy z mechaniką dysku.
  • Temperature - temperatura dysku.
  • Reallocation Event Count - ilość udanych i nieudanych prób przeniesienia danych do zarezerowanego miejsca, po oznaczeniu sektora jako podejrzanego.
  • Current Pending Sector Count - ilość podejrzanych sektorów. Ilość ta może wzrastać bądź spadać jeżeli sektor uda się odczytać następnym razem bez problemów.
  • Offline Uncorrectable - ilość błędów nienaprawialnych napotkanych podczas testów, które dysk sam co jakiś czas wykonuje, tzw. offline test.
Aby podejrzeć te wartości należy zainstalować pakiet smartmontools. Jeżeli nie masz go jeszcze zainstalowanego kliknij poniższy link.
Smartmontools
Polecenie
$ sudo smartctl -a /dev/sda
przedstawia informacje na temat dysku, możliwości systemu SMART, statystyki zebrane przez ten system oraz ilość testów offline przeprowadzonych przez dysk. Nas interesują wartości w kolumnie RAW VALUE.
Aby wyłączyć całkiem system SMART:
$ sudo smartctl -s off /dev/sda
 Włączenie z powrotem razem z testami i logowaniem błędów:
$ sudo smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda
Testy offline można wykonać na nasze zlecenie. Są różne rodzaje testów, oto kilka z nich: short (szybki i pobieżny test, wykrywający poważne błędy), long (trwający nawet kilka godzin, w zależności od wielkości dysku), conveyance (krótki test sprawdzający stan dysku po transporcie).
Aby wykonać któryś z testów dajemy zaklęcie:
$ sudo smartctl -t short /dev/sda
Aby sprawdzić jakie testy możemy przeprowadzić dajemy polecenie:
$ sudo smartctl -c /dev/sda
W wierszu Offline data collection capabilities jest lista testów, które obsługuje nasz dysk. Wszystkie testy można wykonywać podczas normalnej pracy, nie spowolni to pracy dysku. Możemy również wykonać testy w trybie captive (z przełącznikiem -C), wtedy test zajmuje cały czas dysku i system nie może korzystać z niego. Nie wykonywać na dyskach z zamontowanymi systemami plików! Aby spradzić wyniki testów dajemy:
$ sudo smartctl -l selftest /dev/sda
Jeżeli interesują nas tylko błędy:
$ sudo smartctl -l error /dev/sda
Przerwanie zwykłego testu dysku wydajemy poleceniem:
$ sudo smartctl -X /dev/sda
 Jeżeli wolimy GUI od konsoli polecam program GSmartControl.
GSmartControl
 gsmartcontrol
Warto jednak zapoznać się z tym poleceniem bo czasem może nam przyjść pracować bez środowiska graficznego, bądź zdalnie po SSH, a GUI korzystać gdy opanujemy narzędzie shellowe.
Udiskctl
Zazwyczaj montowanie i bardziej zaawansowane operacje z dyskiem wymagają uprawnień roota. Polecenie udiskctl działa z uprawnieniami zwykłego użytkownika i pozwala na montowanie dysków i obrazów, montowanie szyfrowanych woluminów czy monitorowanie zmian dotyczących dysków. Zacznijmy od zbierania danych.
$ udisksctl status
Powyższe polecenie pokazuje ogólne informacje na temat napędów i dysków w systemie wraz z nazwami i numerami seryjnymi.
$ udisksctl dump
To wypluwa mnóstwo informacji na temat urządzen blokowanych, które są dyskami lub mogą być wykorzystane jako dyski, np. urządzenia /dev/loopX, które służą do montowania obrazów dysków czy /dev/ramX do montowania ramdysków.
Aby zamontować urządzenie wystaczy:
$ udisksctl mount -b /dev/sdb2
Aby odmontować:
$ udisksctl unmount -b /dev/sdb2
Aby zamontować obraz płyty ISO:
$ udisksctl loop-setup -f ~/ISOs/ubuntu1410.iso
Polecenie zwróci pod którym urządzeniem blokowym zostało zamontowane, jeśli to pierwszy obraz zamontowany w systemi to pewnie /dev/loop0.
Aby odmontować urządzenie dajemy jak w powyższym przypadku:
$ udisksctl unmount -b /dev/loop0
Jeżeli chcemy się całkiem pozbyć urządzenia loop:
$ udisksctl loop-delete -b /dev/loop0
Montować za pomocą udisksctl możemy również szyfrowane dyski LUKS (o tym zaraz). Najpierw odblokowujemy urządzenie:
$ udisksctl unlock -b /dev/sdc1
Polecenie zwróci nam urządzenie blokowe, które reprezentuje odblokowane dysk. Teraz montujemy to urządzenie:
$ udisksctl mount -b /dev/dm-4
Jeżeli chcemy je zablokować, wcześniej odmontowujemy i blokujemy poleceniem:
$ udisksctl lock -b /dev/sdc1
Jeżeli chcemy monitorować na bierząco podłączane bądź odłączane dyski dajemy:
$ udisksctl monitor
No i sam koniec wyłączanie dysków. Dotyczy to szczególnie przenośnych dysków:
$ udisksctl power-off -b /dev/sdb
Wszystkie te powyższe polecenia mają swój graficznych odpowiednik - menedżer dysków dostarczany razem z systemem (polecenie gnome-disks).
dyski
Szyfrowanie pendrivów
Do szyfrowania przenośnych pamięci będziemy używać LUKSa. Z Linuksami generalnie nie ma z tym problemów, istnieje również wersja na Windowsa o nazwie FreeOTFE, dzięki czemu będziemy mogli zapewnić wymianę danych.
LUKS odpowiada za stworzenie kontenera na dysku który będzie pomiędzy fizyczną pamięcią flash a systemem plików. Na początek musimy stworzyć partycję, ale bez tworzenia żadnego systemu plików. Możemy do tego użyć fdisk czy gparted. Nie formatujemy tej partycji tylko przygotowujemy pod LUKSa (w poniższych przykładach będę używał /dev/sdb jako pendriva):
$ sudo cryptsetup -v luksFormat /dev/sdb1
Program zapyta się nas czy na pewno chcemy przygotować dysk pod LUKSa, wiąże się to oczywiście z wymazaniem wszystkich danych. Odpowiadamy pisząć z dużych liter YES i następnie podajemy hasło do odblokowywania szyfrowania.
Gdy już przygotowaliśmy teraz otwieramy kontener zaszyfrowany:
$ sudo cryptsetup luksOpen /dev/sdb1 cryptpen
Podajemy hasło, które daliśmy podczas przygotowywania. Zamiast cryptpen możemy wpisać cokolwiek, to poprostu nazwa pod którą zostanie zmapowane zaszyfrowane urządzenie LUKS. To utworzy nam kolejne urządzenie blokowe w ścieżce /dev/mapper/cryptpen, z którym teraz możemy robić to samo co ze zwykłą partycją. Czyli zakładamy system plików (jaki chcemy):
$ sudo mkfs.ext4 -m 0 -L Test /dev/mapper/cryptpen
W tym przypadku utworzyliśmy system plików ext4, z zerową liczbą zarezerwowanych bloków, o nazwie Test. Wykorzystując wcześniej zdobytą więdzę montujemy nowe urządzenie:
$ udisksctl mount -b /dev/mapper/
I już mamy dostępny dysk zaszyfrowany. Gdy kończymy zabawę z pendrivem, trzeba go odmontować:
$ udisksctl unmount -b /dev/mapper/cryptpen
i zablokować:
$ sudo cryptsetup luksClose cryptpen
Do odblokowania i zablokowania wcześniej przygotowanych dysków możemy użyć udisksctl z parametrami unlock/lock tak jak pokazałem to wcześniej. I na koniec podpowiedź: to wszystko można wykonać w GUI za pomocą gnome-disks, ale jak już wcześniej pisałem na początek lepiej poznać zaklęcia konsolowe, a potem gdy się je opanuje można używać GUI. Dzięki temu wiemy jak coś działa i w razie gdy coś pójdzie nie tak z konsoli możemy naprawić. Samo podłączenie szyfrowanego pendriva w Ubuntu i korzystanie z niego jest megaproste. Wkładamy go do USB, klikamy ikonkę pendrive na launcherze i system zapyta o hasło. Jeżeli będzie poprawne od razu zamontuje odblokowany wolumin.
DD i postęp kopiowania
Polecenie dd służy do kopiowania bajt po bajcie z urządzeń blokowych bądź plików na inne urządzenia blokowe i pliki. Dzięki temu bez żadnego dodatkowego oprogramowania możemy zrobić obraz płyty DVD czy dysku twardego. Wadą tego programu jest brak jakiejkolwiek informacji ile zostało skopiowane.
Przypuśćmy że robimy obraz płyty DVD:
$ sudo dd if=/dev/sr0 of=image.iso
Aby uzyskać taką informację musimy uruchomić oddzielną konsolę i zdobyć PID procesu dd, który własnie kopiuje dane.
$ pidof dd
To zwróci numer procesu dd (oczywiście jeżeli mamy uruchomiony tylko jeden taki proces). Następnie musimy puścić sygnał USR1 do procesu dd.
$ sudo kill -USR1 29767
29767 to numer procesu zwrócony przez polecenie pidof. Polecenie kill wysyła sygnał USR1 do procesu dd, a w konsoli której jest uruchomiony dd pojawia się komunikat o ilości skopiowanych i zapisanych danych.
No i tradycyjnie na koniec przedstawie bardziej wygodne rozwiązanie. Aby mieć na bieżąco stan ilości skopiowanych danych polecam program dcfldd.
dcfldd
Ma taką samą składnie co zwykły dd, tyle że w trakcie kopiowania na bieżąco wyświetla statystyki.
Mam nadzieje, że poznane tutaj programy przydadzą się. A jakby były jakieś pytania to pytajcie w komentarzach.
Spodobało Ci się? Udostępnij, przypnij, podziel się z innymi:

Simple Disqus Comments