Uwaga:
Oryginalna wersja tego artykułu została opublikowana w IBM developerWorks i
jest własnością Westtech Information Services. Poniższy dokument jest
poprawioną przez zespół GDP wersją oryginalnego tekstu i nie jest już
aktualizowany.
|
Dzielenie dysku na partycje, przenosiny /tmp i /var
1.
Łączenie danych
Wprowadzenie
W mojej ostatniej
wskazówce, z powodzeniem przenieśliśmy katalog /home na
nową partycję. Teraz nadszedł czas, aby się nauczyć jak przenieść często
modyfikowane pliki na nową partycję. Często modyfikowane pliki znacznie się
przyczyniają do fragmentacji. Jedną z najlepszych możliwości, aby temu
zapobiec jest przechowywanie ich na osobnej partycji. W ten sposób
fragmentacja wywołana przez często modyfikowane pliki nie ma wpływu na inne
partycje. Jako sam pomysł, jest to łatwe do zrozumienia, ale jak to się ma do
wykonania?
Po pierwsze należy stworzyć nową partycję dla naszego konkretnego celu --
przechowywania często modyfikowanych plików. W celu zwiększenia wydajności
można umieścić tę partycję na osobnym dysku. Następnie wykonamy kilka kroków
wymaganych, aby przenieść /tmp i /var na tę nową
partycję.
Ostrzeżenie:
Omawiana technika opisuje sposób przeniesienia partycji. Jest ona tak
zaprojektowana, aby użytkownik mógł wycofać się w każdym momencie, ale
nie chroni ona przed błędem użytkownika. Innymi słowy w dowolnym momencie,
kiedy formatujemy partycje lub kopiujemy duże ilości plików, istnieje
możliwość, że wpiszemy złe polecenie, powodując tym samym zniszczenie
dużej ilości danych. Z tego powodu gorąco się zaleca, aby podjąć
odpowiednie kroki i przed przejściem dalej stworzyć kopię zapasową wszystkich
niezbędnych plików.
|
Tworzymy system plików na nowej partycji
W pierwszym kroku stworzymy nową partycję, która będzie dostatecznie duża,
aby pomieścić /var i /tmp. Będziemy potrzebowali
dodatkowy dysk lub wolną (nieużywaną) partycję, na której umieścimy często
modyfikowane pliki. Jeśli stworzymy partycję za pomocą fdisk lub
cfdisk, wtedy konieczne będzie ponowne uruchomienie systemu. Następnie
formatujemy nową partycję (możemy to wykonywać w trybie multiuser; dam
znać kiedy należy przejść do trybu single-user):
Listing 1.1: Tworzenie systemu plików |
# mkfs.ext2 /dev/???
|
2.
Montujemy to do /mnt/rwstorage
Tak jak w mojej poprzedniej wskazówce ??? należy zastąpić nazwą
urządzenia nowej, pustej partycji. Przypadkowo wpisując złą nazwę zniszczymy
istniejące dane, więc należy być ostrożnym! Po wpisaniu tego polecenia,
otrzymamy system plików ext2 na zupełnie nowej partycji. Jesteśmy prawie
gotowi, aby go zamonotować, ale najpierw stwórzmy punkt montowania.
Listing 2.1: Tworzenie punktu montowania |
# mkdir /mnt/odczytzapis
|
Wybrałem nazwę odczytzapis, aby przypomnieć, że ta partycja
została stworzona szczególnie po to, aby przechowywać często modyfikowane
pliki. Montujemy partycję wpisując:
Listing 2.2: Montowanie partycji |
# mount /dev/??? /mnt/odczytzapis
|
3.
Tworzenie nowego /tmp
Partycja jest już zamontowana i jesteśmy gotowi, aby stworzyć nowy katalog
/tmp:
Listing 3.1: Tworzenie nowego /tmp |
# cd /mnt/odczytzapis
# mkdir tmp
# chmod 1777 tmp
|
4.
Przejście do trybu single-user
Nowy katalog w /mnt/odczytzapis/tmp posiada odpowiednie prawa
dostępu dla katalogu tymczasowego. Teraz przechdzimy do trybu single-user,
ponieważ musimy skopiować /var. Jak zwykle maksymalnie opóźniłem
przejście do trybu single-user. Nie chcemy, aby żaden program odczytywał lub
zapisywał pliki w /var, więc należy zatrzymać wszystkie demony,
odłączyć wszystkich użytkowników i wpisać:
Listing 4.1: Wejście w tryb single-user |
# init 1
|
W razie potrzeby wpisujemy hasło. Teraz powinniśmy znajdować się w
powłoce roota i wszystkie niepotrzebne demony powinny być zatrzymane.
Tworzymy nowy katalog dla naszych plików z /var poprzez wpisanie:
Listing 4.2: Tworzenie nowego katalogu |
# cd /mnt/odczytzapis
# mkdir var
|
5.
Kopiujemy /var
Domyślne uprawnienia dla katalogu /mnt/newstorage/var powinny
być poprawne, więc jesteśmy gotowi, aby skopiować wszystkie dane z
/var na nową partycję:
Listing 5.1: Kopiowanie danych |
# cd /var
# cp -ax * /mnt/odczytzapis/var
|
6.
Kopia zapasowa i tworzenie dowiązań symbolicznych
Po wykonaniu tego polecenia, będziemy posiadali dokładną kopię katalogu
/var w /mnt/odczytzapis/var. Pewnie jesteśmy ciekawi
jak zmusić Gentoo, aby używało /mnt/odczytzapis/var i
/mnt/odczytzapis/tmp zamiast domyślnych w katalogu systemowym.
Wykonamy to bardzo łatwo poprzez stworzenie dowiązań symbolicznych --
stworzymy nowe dowiązania symboliczne, /tmp i /var,
które będą wskazywały na odpowiednie katalogi w /mnt/odczytzapis.
Najpierw, stwórzmy kopię zapasową oryginalnych katalogów:
Listing 6.1: Kopia zapasowa katalogów |
# cd /
# cp var var.old
# cp tmp tmp.old
|
Ostatnia linia prawdopodobnie nie jest konieczna, ponieważ jest bardzo
prawdopodobne, że w /tmp nie znajduje się nic istotnego. Teraz
tworzymy dowiązania symboliczne:
Listing 6.2: Tworzenie dowiązań symbolicznych |
# cd /
# ln -s /mnt/odczytzapis/var /var
# ln -s /mnt/odczytzapis/tmp /tmp
|
7.
Kończące zmiany w /etc/fstab
Teraz kiedy którykolwiek z programów zechce skorzystać z katalogu
/var, będzie automatycznie przeniesiony do
/mnt/odczytzapis/var! Podobnie dla /tmp. Został nam
ostatni krok. Jednakże może on być bezpiecznie wykonany w trybie multiuser.
Nadszedł czas, aby uruchomić ponownie Apache i pozwolić wszystkim użytkownikom
na zalogowanie się. Wychodzimy z poziomu uruchamiania 1 poprzez wciśnięcie
CTRL-D. Po uruchomieniu systemu logujemy się jako root.
W ostatnim kroku konfigurujemy /etc/fstab, żeby
/dev/??? był automatycznie montowany w
/mnt/odczytzapis. Dodajemy następującą linię do
/etc/fstab:
Listing 7.1: Konfiguracja fstab |
/dev/??? /mnt/odczytzapis ext2 defaults 1 2
|
Ważne:
Jeśli używamy jądra w okolicach 2.3+, bardzo prawdopodobne, że w
/etc/fstab będzie się znajdowała następująca linia:
|
Listing 7.2: Pamięć współdzielona |
none /var/shm shm defaults 0 0
|
Ta linia włącza pamięć współdzieloną w systemie i domyślnie jest montowana w
/var. W celu właściwego działania tej linii, należy ją umieścić
pod dodaną przez nas linią. W ten sposób, podczas włączania Gentoo,
/mnt/odczytzapis zostanie najpierw zamonotowane (włączając /var).
Wtedy i tylko wtedy urządzenie shm zostanie zamontowane w katalogu
/var/shm, którym jest tak naprawdę
/mnt/odczytzapis/var/shm. Należy się upewnić, że obie linie są w
następującym porządku:
Listing 7.3: Włączanie pamięci współdzielonej |
/dev/??? /mnt/odczytzapis ext2 defaults 1 2
none /var/shm shm defaults 0 0
|
Po zapisaniu zmian w /etc/fstab, nasz system został pomyślnie
rozbudowany! Po sprawdzeniu czy wszystko działa poprawnie, będziemy mogli
bezpiecznie usunąć katalogi kopii zapasowych /tmp.old i
/var.old. Gratulacje -- pomyślnie skonfigurowaliśmy partycje w
systemie, uzyskując optymalną wydajność.
Zasoby
O autorze
Daniel Robbins lives in Albuquerque, New Mexico. He was the President/CEO of
Gentoo Technologies Inc., the Chief Architect of the Gentoo Project and is a
contributing author of several books published by MacMillan: Caldera OpenLinux
Unleashed, SuSE Linux Unleashed, and Samba Unleashed. Daniel has been involved
with computers in some fashion since the second grade when he was first exposed
to the Logo programming language and a potentially lethal dose of Pac Man. This
probably explains why he has since served as a Lead Graphic Artist at SONY
Electronic Publishing/Psygnosis. Daniel enjoys spending time with his wife Mary
and his new baby daughter, Hadassah. You can contact Daniel at
Daniel Robbins.
|