Przenoszenie /home na osobną partycję

Może wydawać się proste, a tak naprawdę nie jest - szczególnie, iż w Googlach można spotkać przy każdym wyszukaniu inny sposób.

Ale od początku…

Instalując pierwszy raz Ubuntu, wydzieliłem tylko skrawek mojego dysku (12GB), na którym to utworzyłem partycję wymiany (SWAP 1GB) i systemowy punkt montowania "/". Po dłuższym czasie użytkowania, okazało się, iż stał się on moim podstawowym systemem, który używam na codzień, obok MS Windows Visty, którego używam z przymusu, do aplikacji, których niestety w Linuxie nie ma i tak szybko nie będzie (Płatnik, Podpis elektroniczny).

W związku z tym, zapisując dane w moim katalogu domowym, zaczęło brakować mi miejsca. W związku z tym, przy pomocy GParted z LiveCD pakietu System Rescue CD, postanowiłem zmniejszyć partycje windowsowe i wydzielić wolną przestrzeń na końcu dysku (50GB). Przestrzeń tą, docelowo przeznaczył bym na partycję z katalogami domowymi użytkowników systemu (/home).

Na szczęście, Linux to nie Windows, można w nim wykonać zaawansowane zmiany, bez konieczności reinstalowania systemu. Niestety, jak zacząłem szukać w internecie metod, na przeniesienie “poprawne” partycji, to zaczął się problem. W tym momencie, zacząłem się zastanawiać, która metoda przeniesie dane poprawnie, wraz z prawami dostępu, ukrytymi plikami, miękkimi i twardymi dowiązaniami.

Zwykła metoda kopiowania, na nie wiele się zda, aż w końcu znalazłem rozwiązanie:
http://embraceubuntu.com/2006/01/29/move-home-to-its-own-partition/

Oczywiście po Angielsku, ale poniżej postanowiłem je wytłumaczyć “po naszemu”.

Po co to wszystko?

Oprócz samego zwiększenia miejsca, wydzielenie partycji /home, ma podstawową przewagę w przypadkach awaryjnych. Jeżeli zepsujemy naszego Ubunciaka, możemy bez obaw przeinstalować system, bez obawy o utratę własnych danych. W tym wypadku jedyną partycją, która będzie zmieniana, to "/" bez "/home/". Po prostu, podczas instalacji, wskazujemy tylko miejsce naszej partycji z folderami domowymi i pozostawiamy bez zmian.

Po pierwsze.

Należy utworzyć partycję, którą będziemy wykorzystywali jako /home. Najlepiej wydzielić sobie wolne miejsce, korzystając z System Rescue CD i GParted, po czym przejść do naszego systemu i bezpośrednio w nim, korzystajac z lokalnego GParted, sformatować partycję na odpowiedni system plików (u mnie ext4).

Dlaczego nie stworzyć partycji od razu przy wydzielaniu miejsca? Gdyż w moim przypadku, zwykły użytkownik nie miał praw zapisu, tylko root. Można to by było zmienić, bawiąc się komendą chown, ale w moim przypadku, nadal, mimo że byłem właścicielem partycji i wszystkiego co jest na niej, wyskakiwało Permision denied.

Akurat, ja utworzyłem partycję z poziomu LiveCD, więc musiałem ją usunąć w Ubuntu i utworzyć (sformatować) na nowo w systemie ext4.

No dobra, ale zacznijmy robotę.

Jeżeli mamy już naszą partycję przygotowaną, musimy ją zmontować.

Utwórzmy katalog, w którym będzie ona zmontowana i dokonajmy tego.

sudo mkdir /media/newhome
sudo mount -t auto /dev/sda6 /media/newhome

Oczywiście, z miejsce auto, można wpisać system plików, jaki zastosowaliśmy dla naszej partycji (ext4), w przypadku, gdy system nie rozpozna prawidłowo. Dodatkowo, sda6 zmieniamy na oznaczenie naszej partycji, przeznaczonej na nowy /home. Można to sprawdzić odpalając GParted.

Na tym etapie warto wejść do naszego zmontowanego dysku i utworzyć dowolny katalog poleceniem mkdir w celu zweryfikowania, czy nie wyskakuje nam błąd Permision denied, o którym pisałem wcześniej. Jeżeli mimo wcześniejszych zabiegów, problem występuje, należy wykonać następujące polecenie:

sudo chown -R user:user /media/newhome

Należy pamiętać, aby zmienić user:user na swoją nazwę np.: darek:darek.

Dalej, przechodzimy do katalogu nadrzędnego nad domowym, gdzie przechowywane są katalogi użytkowników i rozpoczynamy kopiowanie.j

cd /home/
find . -depth -print0 | cpio --null --sparse -pvd /media/newhome/

Ważne! Ponieważ /home zawiera miękkie i twarde dowiązania plików, kroku cd /home/ nie możemy pod żadnym względem pominąć.

Następnie przechodzimy do katalogu z nową partycją /home (/media/newhome), i sprawdzamy czy wszystko się skopiowało prawidłowo.

Dalej, odmontowujemy naszą nową partycję

sudo umount /media/newhome

Przenosimy aktualny /home w inne miejsce i tworzymy nowy katalog home (bo aktualnie nie ma żadnego), do którego będzie podmontowana nowa partycja. Dalej podmontowujemy nową partycję.

sudo mv /home /old\_home
sudo mkdir /home
sudo mount /dev/sda6 /home

Sprawdzamy, czy wszystko działa prawidłowo.

Puki system jest uruchomiony, wszystko działa. Musimy jeszcze dodać odpowiednią linijkę do pliku /etc/fstab, tak, aby system automatycznie podpiął partycję /home w odpowiednie miejsce.

Aby dodać odpowiedni wpis, wydajemy następującą komendę w terminalu:

sudo su -c 'echo "/dev/sda6 /home ext4 nodev,nosuid 0 2" >> /etc/fstab'

W tym momencie, warto uruchomić ponownie system, sprawdzając, czy wszystko rzeczywiście działa.

Jeżeli jest ok, możemy usunąć naszą starą lokalizację home, /old_home

sudo rm -r /old\_home

I tyle.

Powodzenia.

Dołącz do dyskusji