Tag: ubuntu

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ć.

Ubuntu i “No init found. Try passing init= bootarg”

Nieprawidłowe wyłączanie komputera może być dość dramatyczne w skutkach. Część z was wie, że jestem właścicielem małego serwera (który tak naprawdę jest zwykłym komputerem ;) ), na którym wykonuję testy aplikacji oraz stawiam wersje developerskie (alfy, bety, itd). Oczywiście robię mu regularne backupy, jednak sami dobrze wiecie, że "pad" jakiegokolwiek komputera to po prostu masa pracy z postawieniem go na nowo. W przypadku serwerka dochodzi konfiguracja na nowo, itd.

Wczoraj w skutek nagłego spadku zasilania - zresetował mi się wspomniany wyżej serwer i niestety... już nie wstał. Dostawałem za to piękną wiadomość:

mount: mounting /dev/disk/uuid/***************************** on /root
failed: Invalid argument
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
Target file system doesn't have /sbin/init
No init found. Try passing init= bootarg

Busybox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu7) built-in shell (ash)
Enter 'help' for a list of built-in commands
(initramfs) _

Co się stało? Po prostu "padła" jedna z partycji. Naprawa tego typu problemów nie jest trudna (o ile wysypała się partycja a nie np. padł dysk). Musimy mieć bootowalną wersję Linuksa (na pendrivie lub na płycie CD). Odpalamy takie Live CD a następnie przechodzimy do terminala. Wpisujemy komendę:

sudo fdisk -l 

aby dowiedzieć się jakie partycje mamy na dysku i mamy (przykładowo):

Dysk /dev/sda: 80.0 GB, bajtów: 80026361856
głowic: 255, sektorów/ścieżkę: 63, cylindrów: 9729
Jednostka = cylindrów, czyli 16065 * 512 = 8225280 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Identyfikator dysku: 0x85f285f2

Urządzenie Rozruch   Początek      Koniec   Bloków   ID  System
/dev/sda1               1         125     1004031   82  Linux swap
/dev/sda2   *         126        1993    14999552   83  Linux
/dev/sda3            1993        3860    14999552   83  Linux
/dev/sda4            3860        9730    47145985    5  Rozszerzona
/dev/sda5            3860        5728    14998528   83  Linux
/dev/sda6            5728        9730    32146432   83  Linux

Następnie uruchamiamy program fsck na każdej z partycji (tak dla pewności), wykonując następujące polecenie:

# Zmieniamy kolejno na #sda1, sda2, sda3, itd
sudo fsck /dev/sda2

Po tym zabiegu restartujemy serwer i cieszymy się działającym systemem. Następnie zamawiamy UPSa aby taka sytuacja więcej się nie zdarzyła.

Dla pewności, możemy wymusić autouruchomienie fsck przy starcie systemu, wpisując:

sudo touch /forcefsck

Utworzoenie pliku forcefsck w głównym katalogu - spowoduje, że system wstając wykryje go i wykona jeszcze raz testy na partycjach. Po tych operacjach wszystko powinno wrócić do normy.

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑