Zmena rozdelenia disku
Už som sa tu v jednom článku zamýšľal nad tým ako rozdeliť pevný disk na partície na domácom počítači. Dnes som sa rozhodol napísať ako postupovať, ak už je systém nainštalovaný a z nejakého dôvodu je treba rozdelenie partícií zmeniť. Konkrétne, budem súborový systém z jednej partície rozdeľovať na partícií viacero.
K tomuto „znovu rozdeleniu“ ma priviedli moje pokusy s notebookom
Acer Extensa 5635ZG a Ubuntu na ňom. Pôvodne, ako v článku píšem,
som neveľmi veril, že tento model notebooku bude s Linuxom fungovať,
ale realita je iná a až na pár drobností fungovalo všetko na prvú
inštaláciu. Keďže som bol pesimista, netrápil som sa rozdelením disku,
len som oddelil partíciu s /home
, pretože som predpokladal, že
inštaláciu systému budem robiť viac ako raz. Pri testovaní funkčnosti
som postupne pridával svoje nastavenia, až som sa dostal do stavu, že
sa mi nechcelo tieto nastavenia robiť znova po novej inštalácii. Lenže
zároveň som chcel aj niektoré samostatné partície, tak som sa rozhodol
urobiť prerozdelenie partícií bez reinštalácie systému.
Pôvodný stav partícii bol 40 GB pre koreň a 20 GB pre /home
,
10 GB pre swap a zvyšných cca 250 GB nepoužitých. Iste sami uznáte, že
je to dosť nehospodárne rozdelenie (hlavne ohľadom nevyužitého miesta),
takže poďme na to a prerozdeľme to tak, aby som dostal na samostatné
partície aj /usr
, /var
i /usr/src
. Hoci na internete
existuje mnoho postupov ako tieto čachry robiť z bežiaceho systému, dal som
prednosť použitiu záchranného CD, konkrétne System RescueCD. Táto záchranná
distribúcia obsahuje všetky nástroje, ktoré sú pre tieto naše manipulácie
potrebné.
Vytvorenie partícií
Tento krok popisovať nebudem do podrobností. Netrápil som sa
príkazovým riadkom, ale pomocou gparted z RescueCD som si pomenil
veľkosť partícií a pridal nové podľa potreby. Keďže mi pri tom
zavádzala partícia so swap, tak som ju odstránil, aby som mohol
posunúť (a následne zväčšiť) partíciu s /home
. Výsledkom týchto
mojich machinácií bolo, že pomenovanie (číslovanie) partícií nebolo v
poradí, v akom boli partície na disku čo sa prejavilo vo výpise
partícií pomocou fdisk -l riadkom:
fdisk -l /dev/sda
...
Partition table entries are not in disk order
Funkčnosti systému to nevadí, ale viem si živo predstaviť ako by som po nejakej dobe urobil chybu pri práci s partíciami, lebo ich často počítam z hlavy. Oprava poradia partícií nie je problém, dokáže to aj spomínaný fdisk:
fdisk /dev/sda
V okne programu (kto ho ešte nepoužil) ho ovládane pomocou jednoznakových príkazov, my použiteme tieto (v uvedenom poradí):
- x (prepnutie do pokročilého režimu);
- f (zoradenie premenovanie partícií podľa poradia);
- w (zápis tabuľky partícií).
V mojom prípade to má za následok hlavne zmenu označenia partície pre
/home, keďže však /etc/fstab
v Ubuntu používa na označenie disku
UUID, nájde pri štarte správnu partíciu, bez ohľadu na jej označenie.
Očakával som problém pre paertíciu so swap, lebo je zmazaním a vytvorením
novej sa zmenilo aj jej UUID, ale na moje prekvapenie partícia swap bola v
/etc/fstab
identifikovaná menom a nie UUID. Takže to bolo
vlastne jedno. UUID partície swap som si našiel pomocou:
ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Aug 2 15:36 03dfa5f4-2bf1-4d8d-8958-eb6a02aae911 -> ../../sda9
lrwxrwxrwx 1 root root 10 Aug 2 15:36 668a81e4-bd10-4d65-90a7-44aadcafb035 -> ../../sda6
lrwxrwxrwx 1 root root 10 Aug 2 15:36 bc43d1dc-9e40-475d-83c9-cac5ee62c5a8 -> ../../sda1
lrwxrwxrwx 1 root root 10 Aug 2 15:36 d65dd6b3-f8a4-4a32-a473-786d2a0d70c0 -> ../../sda5
lrwxrwxrwx 1 root root 10 Aug 2 15:36 d692d6e5-729b-449b-8ad4-b82ac9847740 -> ../../sda7
lrwxrwxrwx 1 root root 10 Aug 2 15:36 f9a55cca-504d-454b-94c5-1495fb58397a -> ../../sda8
Keďže môj swap je na partícii sda8
, tak som riadok pre swap v
/etc/fstab
zmenil na:
UUID=f9a55cca-504d-454b-94c5-1495fb58397a none swap sw 0 0
Pre istotu som sa reštartoval do systému notebooku, ale len pre kontrolu, že všetko funguje a fungovalo. Domovský adresár i swap boli pripojené na správnu partíciu, tak som sa zase reštartoval do prostredia záchranného CD a pokračoval.
Príprava presunu
Po vytvorení, zoradení partícií a malej úprave /etc/fstab
prichádza na
rad presun dát. Najprv však potrebujeme partície niekam pripojiť. Hoci
je na pripájanie partícii predpripravený adresár /mnt
(prípadne
/media
), na takéto dočasné pripojenia rád používam dočasný adresár,
pretože po reštarte sa vytvorené súbory stratia a mne odpadá potreba
čistenia… Aby som sa v tom nestratil, vytvoril som si v dočasnom
adresári adresáre pomenované tak, ako v reále:
mkdir /tmp/koren
mkdir /tmp/usr
mkdir /tmp/var
mkdir /tmp/src
Do týchto adresárov som si pripojil príslušné partície:
mount /dev/sda1 /tmp/koren
mount /dev/sda5 /tmp/usr
mount /dev/sda6 /tmp/var
mount /dev/sda7 /tmp/src
Pre istotu som si skontroloval vlastníctvo a práva originálnych
adresárov s pripojenými, a zistil som, že rozdiel je len pri src
.
ls -ld /usr/src/
drwxrwsr-x 13 root 40 544 2009-08-02 15:15 /usr/src/
Ako sami vidíte, adresár vlastní iná skupina, ktorá má GID (číslo
skupiny) 40 a keďže taká na záchrannom CD neexistuje, zobrazuju ako
číslo a nie ako meno skupiny. Trochu odlišné sú i práva. Náprava je
relatívne jednoduchá, najprv som si vytvoril skupinu s príslušným GID
a potom som zmenil vlastníctvo a práva adresára /tmp/src
tak, aby bolo
všetko zhodné s originálom:
groupadd -g 40 src
chown :src /tmp/src
chmod 2775 /tmp/src
Presun údajov
Keď sme si to takto pekne všetko pripravili, môžeme sa pustiť do presunu súborových systémov (respektíve ich častí). Nepoužil som v tomto prípade príkaz mv, ktorý je na presun určený, ale spoľahol som sa radšej na príkaz cp, ktorý má prepínač na zaistenie zachovania všetkých atribútov súboru, v mojom prípade mi išlo najmä o vlastníctvo a práva:
cd /tmp/koren
cp -af usr/src/* /tmp/src/
rm -rf usr/src/*
cp -af usr/* /tmp/usr/
cp -af var/* /tmp/var/
Keže sme dáta kopírovali, nie presúvali, je treba ešte obsah pôvodných
adresárov vymazať (src
už vymazaný máme, inak by sme ho prekopírovali
dva krát):
rm -rf usr/*
rm -rf var/*
Nastavenie pripájania
Po úspešnom presune dát ostáva už len nastavenie pripájania tak, aby
sa naše nové partície pripojili na správne miesto. Tento krok je veľmi
dôležitý, inak by sa pravdepodobne systém po reštarte ani nerozbehol,
prípadne aj rozbehol, ale s veľmými problémami. Takže potrebujeme
upraviť nastavenie v súbore /etc/fstab
, ktorý je práve na tieto
nastavenia určený. Pre moje potreby (teda partície a súborové systémy)
som do neho pridal tieto riadky:
# /usr na /dev/sda5
UUID=d65dd6b3-f8a4-4a32-a473-786d2a0d70c0 /usr reiserfs notail,noatime,relatime 0 0
# /var na /dev/sda6
UUID=668a81e4-bd10-4d65-90a7-44aadcafb035 /var reiserfs notail,noatime,relatime 0 0
# /usr/src na /dev/sda7
UUID=d692d6e5-729b-449b-8ad4-b82ac9847740 /usr/src reiserfs notail,noatime,relatime 0 0
UUID partícií som zistil z už spomínaného /dev/disk/by-uuid
. Ak
používate iný súborový systém, nezabudnite zameniť označenie reiserfs
za to správne pre váš súborový systém a určite aj nasledujúce
parametre pripojenia (napr. notail je len pre reiserfs).
Ostáva už len reštartovať do pôvodného systému a pre istotu skontrolovať, či je všetko v poriadku. V mojom prípade je!