Przechodzimy na Malinie z karty SD na dysk HDD/SSD…

Nadeszła pora…

Pora na zmianę głównego miejsca systemu Raspberry Pi. Wiele dobrego mogę powiedzieć o Raspberry Pi, ale na pewno nie to, że używanie kart pamięci (szczególnie przy wielu zapisach do loga, bazy danych, itp.) pozwala na bezstresową pracę. Ostatnio odzyskiwałem backup karty praktycznie co tydzień.

Jakoś tak się stało, że leżał mi mały dysk talerzowy 80GB ze starej PS3. Gdzieś, kiedyś w promocji kupiłem również aktywny hub USB. Niestety, napięcie na portach USB z Raspberry (nie chciałem modyfikować zmiennej max_usb_current) niby zasilało dysk, ale bardzo niestabilnie. Podłączyłem dysk do huba, hub do USB, podpiąłem zasilanie, ruszyło. Pierwszy sukces.

Na początku warto sprawdzić jak nasz dysk przestawia się w systemie, żeby przez przypadek nie sformatować czego, czego zdecydowanie nie chcemy 😉

sudo fdisk -l

Ok, jak widać mój dysk 80GB znalazł się pod /dev/sdb/. Pod /sda/ jest pendrive na którego zapisywane są backupy i leży część danych, na przykład z bajkami dla dzieci. Tak w sumie to warto będzie to niedługo przenieść na dysk, a backupy wypchnąć albo na FTP, albo w chmurę. Może kiedyś…

Skoro wiemy jaki dysk mamy sformatować, bierzemy się do pracy.

sudo fdisk /dev/sdb

I teraz po kolei komendy (po każdej literze Enter):

d – wyczyść dysk

n – new

 p – utwórz domyślną partycję

 1 – podaj numer partycji

w – zapisz zmiany

Po kolei (dinozaury może jeszcze pamiętają to wszystko ze starych komputerów, kiedy jeszcze nie było Windows i dyski trzeba było formatować z linii poleceń 😀 ):
1. Wymazaliśmy partycje z dysku, jeżeli jakieś były
2. Utworzyliśmy partycję domyślną
3. Podaliśmy dane domyślne – dla uproszczenia, oczywiście partycji można zrobić więcej, zmienić ich rozmiar…
4. Zapisaliśmy zmiany

Pora sformatować dysk.

sudo mkfs.ext4 /dev/sdb

Póżniej musimy dysk sparować z Raspberry Pi:

sudo mount /dev/sdb /mnt

I teraz sedno, synchronizacja naszej karty SD z dyskiem. rsync zachowuje wszystkie uprawnienia, restrykcje, itp.

sudo rsync -axv / /mnt

Kilka minut i mamy kopię karty na dysku.

Wypadałoby również powiadomić Raspberry Pi, że karta SD jest potrzebna tylko i wyłącznie do 'bootowania’, cały system jest już na dysku twardym.

To ważna różnica! Raspberry Pi 3 ma opcję jednorazowego przeprogramowania bitu OTP, aby bootowanie odbywało się bez użycia karty SD, ale osobiście się na to jeszcze nie zdecydowałem – po kilku tygodniach testów możliwe, że tak zrobię. Obciążenie karty SD jest jednak teraz minimalne i znacznie zwiększa bezawaryjność systemu.

Najpierw kopia

sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak

I zmieniamy plik cmdline.txt

sudo nano /boot/cmdline.txt

Zmieniamy wartość przy root i dodajemy na końcu rootdelay

root=/dev/sdb i na końcu rootdelay=5

Efekt:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sdb rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5

Brawo! Teraz pora wyedytować fstab, aby nasz dysk zawsze się mapował i system wiedział, że 'rootfs’ jest na HDD. Czyli używamy karty tylko na moment startu Raspberry Pi, później już wszystko odbywa się na HDD.

sudo nano /mnt/etc/fstab

Zamieniamy wpis przy karcie SD na nasz HDD, stary komentujemy:

/dev/sdb       /               ext4    defaults,noatime  0       1

U mnie wygląda to tak:
proc            /proc           proc    defaults          0       0
/dev/sdb       /               ext4    defaults,noatime  0       1
PARTUUID=376f54aa-01  /boot           vfat    defaults          0       2
#PARTUUID=376f54aa-02  /               ext4    defaults,noatime  0       1
Cudnie! Teraz 
sudo reboot
Chwila stresu i powinniśmy wystartować z dysku. Jak to informatycy piszą: 'U mnie działa’.
Mam nadzieję, że teraz żadnych rozjazdów w systemie nie będę już miał.
W przyszłości przejdę na dysk SSD, gdy uda mi się kupić coś fajnego, małego w dobrej cenie.

40 komentarzy do “Przechodzimy na Malinie z karty SD na dysk HDD/SSD…”

  1. Bardzo się przydał opis .Zrobiłem to samo u siebie na rpi zero w.Pytanie mam tego typu : Mam 2 partycje na dysku i chciałbym aby kopia bazy raz zapisywała sie na 2 partycji .Posiada pan gdzieś skrypt lub opis jak to wykonać?Mam nadzieje że teraz nie będzie się wysypywać raspbian z domoticzem.

    Odpowiedz
  2. pytanie mam takie .poprzednio przezuciłem na dysk hdd a w jaki sposób zrobic to z hdd na ssd (swiezo kupiony)?Dodam ze domoticz chodzi teraz z dysku hdd 500gb i szkoda go teraz do tego celu.

    Odpowiedz
  3. Pokrętne pytanie – chodzi Ci wyłącznie o Domoticz? Bo jeżeli tak, to wystarczy przekopiować folder. Jeżeli nie – rsync z HDD na SSD powinien sobie z tym poradzić, jeżeli zamontujesz oba naraz. Będę miał ten sam problem w przyszłości, bo teraz też mam HDD. Szukam jakiegoś małego SSD (max 40GB) a teraz wszystko minimum 120GB.

    Odpowiedz
  4. zrobiłem na nowo na starszym backupie .W kradł Ci się chochlik w"sudo fdisk /dev/sdb/" Nie powinno być ostatniego slasha :sudo fdisk /dev/sdb . Pozdrawiam

    Odpowiedz
  5. Bardzo się przydał opis .Zrobiłem to samo u siebie na rpi zero w.Pytanie mam tego typu : Mam 2 partycje na dysku i chciałbym aby kopia bazy raz zapisywała sie na 2 partycji .Posiada pan gdzieś skrypt lub opis jak to wykonać?Mam nadzieje że teraz nie będzie się wysypywać raspbian z domoticzem.

    Odpowiedz
  6. Cześć

    Przy skopiowaniu na dysk coś mi się zapętliło:
    Po wpisaniu sudo rsync -axv / /mnt

    kups/daily/backup-day-16-Domoticz.db
    mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/home/pi/domoticz/bac kups/daily/backup-day-16.db
    mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/home/pi/domoticz/bac kups/daily/backup-day-17-Domoticz.db
    mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/mnt/home/pi/domoticz/bac kups/daily/backup-day-17.db

    Odpowiedz
  7. Znalazłem coś takiego:
    With –exclude option users’ can specify folders that has not to be copied to destination; usually this string contains /dev, /sys, /run, /tmp, /proc. Could be necessary to add also /mnt or /media if they’ll not be used as backup destination folder, otherwise could start an infinite loop.

    Odpowiedz
  8. Odświeżę stary temat bo i u mnie przyszedł chyba czas na przesiadkę z karty na dysk. I takie pytanie: ma znaczenie co to będzie za dysk, czy HDD czy SSD? On i tak jest podłączony pod USB 2.0 więc raczej SSD nie ma sensu? Ale z drugiej strony, jak mam niepotrzebny dysk SSD to nie ma przeciwwskazań aby go użyć?
    No i jak podłączyć dysk do RPi? Wystarczy zwykła kieszeń na dysk czy lepiej kupić jakieś "inne" przejściówki?

    Jak po przejściu z systemem na dysk, wygląda dalej użytkowanie? Jestem "amatorem" jeśli chodzi o linuxa, i wszystko co robię z Domoticzem opiera się na tutorialach z netu (m.in. dużo z Twojej strony:)). Rozumiem, że wtedy wszędzie będzie trzeba uwzględniać inne położenie katalogu z Domoticzem, tak?

    Odpowiedz
  9. Już odpowiadam: nie ma żadnych przeszkód co do SSD, jest nawet szansa, że nie będziesz przy nim potrzebował aktywnego huba USB. Ja przy HDD musiałem podać dodatkowe zasilanie. Kieszeń nie gra żadnej roli praktycznie – tak jak piszesz – jest i tak wyłącznie USB 2.0.

    Co do zmiany – nie zauważysz żadnej różnicy, rsync robi kopię 1:1, wyłącznie robi się boot z karty i później dysk wyglada identycznie jak na karcie SD.

    Odpowiedz
  10. Ja ciągle mam problem ze robieniem backupu na zewnętrzny USB. Po porostu nie wykrywa mi go w mailinie, albo nie potrafię tego zrobić. Całość barfba ładnie się spisuje, prawie rok bez wiewiększ problemów, kilkafziekilk urządzeń, kilka scen. Dzięki za bliga

    Odpowiedz
  11. Z tego co pisałeś powyżej, wydawało się, że zakończyłeś sukcesem. Jeżeli df -h nie pokazuje dysku, może to znaczyć, że potrzebujesz aktywnego huba USB

    Odpowiedz
  12. witam.
    wszystko za pierwszym razem ruszyło ale jak teraz rozszerzyć partycje dysku? jak na sd.
    czy tego nie trzeba robić ?

    Odpowiedz
    • Ostatnio musiałem wgrać cały obraz systemu na SSD pytanie mam jak zmienić wielkość partycji? Zgłasza mi domoticz że ma za malo pamięci. Więc nie wykorzystuje wszystkiego. Df -h wyświetla że mam 3gb i zajęte 100 %

      Odpowiedz
  13. Nie musisz, ale dobrze by było jednak skorzystać z tego, że masz 120GB zamiast 16 na ten przykład 😉 Raspi-config załatwi wszystko za Ciebie.

    Odpowiedz
  14. A przepraszam, za szybko poszedłem myślami. Jeżeli sformatowałeś dysk przed zrobieniem rsync to już nie musisz robić. Rsync nie robi przecież kopii karty 1:1, tylko przenosi wszystkie pliki zachowując uch atrybuty. Zresztą – sprawdź co pokazuje df -h

    Odpowiedz
  15. Jeszcze jedno pytanie (teraz na właściwym wątku 🙂 przed przystąpieniem do przejścia na HDD. Aktualnie system mam SD 32 GB i trochę będzie mi jej szkoda, aby służyła tylko do odpalenia systemu – czy można umieścić np. czystego raspbiana na 16 albo 8 GB? (takie tez mam na stanie).

    Odpowiedz
  16. Oczywiście, bez problemu. Bo to jest tak: w sumie potrzebna nam jest wyłącznie partycja boot, tam deklarujemy skąd uruchamiamy. To jest jednak trochę naokoło, bo docelowo lepiej przeprogramować bit OTP, aby uruchamiać system wyłącznie z poziomu nośnika na USB (co jednak NIE wyklucza użycia karty SD w razie problemów, po prostu dodaje kolejną możliwość do 'kolejki'. Coś jak w BIOS – najpierw sprawdza kartę SD, później porty USB w poszukiwaniu bootowalnej partycji FAT). W Raspberry 3B+ ten bit jest już domyślnie zapisany. W sumie, to jak tylko znajdę chwilę to przeprogramuję go u siebie.

    Odpowiedz
  17. Ja w sumie dziurę logiczną zrobiłem. Bo tym moim sposobem to nie zadziała, bo nie ma partycji boot na HDD. Rsync'iem nie, ale zgranie obrazu na kartę i konfiguracja powinny pomóc. Tylko że diabelnie nie chce mi się stawiać wszystkiego od nowa (albo chociaż instalować nowe komponenty w stosunku do karty sprzed roku).

    Odpowiedz
  18. Zrobiłem wszystko jak w opisie. Działa ale tylko po wpisaniu sudo ./domoticz i otwartym połączeniu ssh
    Po reboot domoticz sam się nie ładuje i nie można się do niego dostac na porcie 8080 (na karcie śmigał bez problemu).

    sudo cp domoticz.sh /etc/init.d
    sudo chmod +x /etc/init.d/domoticz.sh
    sudo update-rc.d domoticz.sh defaults

    Nie pomaga. Mam wrazenie jakby brakowało jakiejś ścieżki dostępu (albo była inna inie wskazywała na sda).
    Jakieś pomysły ? sugestie ? powoli zaczynam sie poddawać

    Odpowiedz
  19. Dzisiaj robiłem migracje na ssd i po restarcie z domoticza malina kilka razy się resetuje, ale w końcu wstaje. Nie wiem o co biega. Dysk mam wpięty prosto pod malinę.

    Odpowiedz
  20. Jeśli chodzi o mnie, to czasami mam tylko jeden restart, a czasami dwa czy trzy po restarcie z domoticz. Niekiedy po restarcie bramka mysensors pod usb nie inicjuje się i bramka zigbee2mqtt (też usb) jest offline. Dioda zasilania od rpi nie sygnalizuje zmniejszonego napięcia. Faktycznie może zasilanie nie wyrabia.

    Odpowiedz
  21. wszystko zrobione wedle poradnika.
    system wstaje, ale przy probie zrobienia czegokolwiek, nawet zwykle uruchomienie mc, pokazuje ze brak dostepu do tmp.
    przy probie skopowania jakiegokolwiek pliku nawet do katalogu /home/pi tez gada ze brak uprawnien:(

    Odpowiedz

Dodaj komentarz