Tag: Linux

Zmiana dysku na serwerze – GRUB (instalacja), przenosiny danych, itd

Nadeszła ta wiekopomna chwila - bojąc się o swój serwer - postanowiłem uporządkować go w sposób odpowiedni. O ile backupy były (i są) robione regularnie, o tyle sam dysk na którym stał root, nie cechował się stabilnością (swoje lata już miał). Nie bez znaczenia było też to, że 80GB to nie jest szczyt marzeń jeśli chodzi o pojemność dysku serwerowego. Tak więc, nowym dyskiem został 1TB Western Digital WD10EARS z 64MB Cache. Niedrogi a całkiem przyzwoity.

Dysk i jego partycje

Strukturę partycji na nowym dysku postanowiłem zachować taką samą jak na starym. Może nie jest idealna, ale dzięki temu szybciej mogłem wszystko przenieść. Tak więc na nowym dysku utworzyłem (odpowiednio duże) partycje:

  • swap
  • / (root)
  • /home
  • /var
  • /backup (nie - nie ten "zewnętrzny" - tutaj trafia synchro z lapkiem)

Ważne jest aby kojarzyć jakie mamy partycje i jaka jest ich kolejność (sudo fdisk -l).

Przenosiny danych

Wbrew pozorom przenosiny danych są bardzo proste. Wystarczy nam polecenie tar. Minusem mojego serwera jest to, że ma miejsce w obudowie tylko na jeden dysk, tak więc nie miałem jak skopiować danych bezpośrednio. Na szczęście mam jeszcze obudowę na dyski, do której można było je umieścić. Tak więc całość jest bajecznie prosta:

  1. Tarujemy
  2. Odtarowujemy
  3. ???
  4. Profit :)

Pakujemy:

sudo tar -pczf /var /gdziestam.tar

Wypakowujemy:

sudo tar -xvfz gdziestam.tar

Postępujemy tak dla wszystkich partycji na starym dysku.

GRUB

Pora na GRUBa. Z nim miałem małe problemy ale dzięki pomocy Arta (któremu serdecznie dziękuję), udało się je rozwiązać. Całość okazała się całkiem prosta:

  1. sudo mount -t ext4 /dev/sda2 /mnt - zamiast sda2 użyj partycji na której masz /boot
  2. sudo mount -o bind /dev /mnt/dev
  3. sudo mount none -t proc /mnt/proc
  4. sudo chroot /mnt
  5. sudo grub-install /dev/sda

Po ostatnim powinniśmy otrzymać taki oto komunikat:

Installation finished. No error reported

Odmontowujemy kolejno:

cd /
sudo umount /mnt/proc
sudo umount /mnt/dev
# /mnt zostawiamy, ponieważ przyda się w następnym punkcie

Fstab i grub.cfg

Zanim zrobimy reboot, musimy wyedytować jeszcze /etc/fstab oraz /boot/grub/grub.cfg.

Sprawa jest całkiem prosta - jeśli korzystamy z UUIDów - to wpisujemy nowe (pobieram je poleceniem blkid). Czynność tę wykonujemy dla obu plików, ponieważ i grub musi wiedzieć z czego odpalać OS i fstab musi wiedzieć co ma montować. Jeśli nie korzystamy z UUIDów to ew. poprawiamy ścieżki do danych partycji.

Reboot

cd /
sudo umount /mnt
sudo reboot

SSHFS, zdalne partycje oraz automontowanie

Każdy z was pewnie nie raz chciał mieć dostęp do swoich danych zgromadzonych w innym miejscu świata.

Ja postanowiłem dorwać się do mojej małej macierzy która (niestety) komunikuje się ze światem poprzez USB. Na szczęście nieopodal niej stoi całkiem poczciwy serwer deweloperski. Kilka linijek do /etc/fstab i już można cieszyć się dostępem do danych za pośrednictwem SSH.

Jak zwykle jest to jednak za mało. Czy nie byłoby fajniej mieć zamapowany z automatu każdy z dysków na np. laptopie? Pewnie że by było :) i tym się dzisiaj zajmiemy. Aby montować nasze zdalne partycje wykorzystamy sshfs oraz autofs.

Zainstalujmy najpierw to czego potrzebujemy:

sudo aptitude install sshfs autofs

Następnie dodajmy się do grupy fuse:

sudo gpasswd -a $USER fuse

Zamknijmy okno basha i otwórzmy nowe. W nim utworzymy parę kluczy publiczny-prywatny. Będą one potrzebne nam do uwierzytelniania się na serwerze bez potrzeby podawania hasła:

ssh-keygen -t dsa -f ~/.ssh/id_dsa_open

Passphrase musi pozostać puste, tak więc wciskamy 2 razy enter.

Dodajmy nasz klucz:

ssh-add ~/.ssh/id_dsa_open

Kopiujemy nasz klucz publiczny na serwer:

ssh-copy-id -i ~/.ssh/id_dsa_open.pub user@adres.naszego.serwera

Próbujemy się zalogować na serwerze wykorzystując klucz (bez potrzeby podawania hasła):

sudo ssh -i ~/.ssh/id_dsa_open user@adres.naszego.serwera

Edytujemy /etc/auto.master dopisując następującą linijkę:

/media/sshfs	/etc/auto.sshfs	--timeout=3600 --ghost --verbose

Powyższy wpis sprawi, że nasze zdalne katalogi montowane będą w katalogu /media/sshfs.

Dodajemy wpis w /etc/auto.sshfs:

nazwa_zasobu -fstype=fuse,rw,allow_other,noatime,IdentityFile=/home/user/.ssh/id_dsa_open :sshfs\#user@adres.naszego.serwera\:/sciezka/do/katalogu/zdalnego

Pamiętajcie żeby zamienić "user" na login ze zdalnego konta oraz podać prawidłowy adres serwera oraz ścieżkę do katalogu który chcemy sobie udostępnić.

Restartujemy autofs:

sudo restart autofs

Wchodzimy w /media/sshfs i korzystamy z naszych danych kiedykolwiek potrzebujemy.

Warto oczywiście pamiętać, że prędkość dostępu do danych zgromadzonych na zasobie zdalnym będzie zależna od łącza jakie posiadamy (my oraz druga strona), tak więc jeśli potrzebujemy przetransferować jakiś duży plik, może to chwilę potrwać.

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑