Zmiana rozmiaru partycji /tmp (/usr/tmpDSK)


W niektórych dystrybucjach można się spotkać z sytuacją, w której partycja /tmp ma postać pliku, który jest „podmontowany”. Szczególnie można to spotkać np. w połączeniu dystrybucji Centos i panelu administracyjnego cPanel. W wielu przypadkach standardowa partycja ma postać od 400 do 512 MB. Co przy większych serwisach może zakończyć się komunikatem, że partycja /tmp jest zapełniona. Może to powodować wiele problemów np. MySQL będzie miał problem z wykonaniem dłuższych zapytań i wiele innych. W jaki sposób rozszerzyć (powiększyć) tą partycję?

Przedstawione przez Nas poniżej rozwiązanie to praca na 10-15 minut. Możemy ją wykonać w następujących etapach.
Po pierwsze należy zatrzymać wszystkie usługi, które korzystają lub mogą skorzystać z partycji /tmp. My na początek zatrzymujemy MySQL, Apache (httpd) oraz tailwatchd.


/etc/init.d/mysql stop

następnie

/etc/init.d/httpd stop

oraz

pstree -p | grep tailwatchd

Uzyskamy coś takiego:

root@s1 ~ # pstree -p | grep tailwatchd
|-tailwatchd(13500)
root@s1 ~ #

Liczba 13500 wskazuje na nr procesu. Teraz wystarczy wydać polecenie kill -9

kill -9 13500

Oczywiście w miejscu 13500 należy wstawić numer swojego procesu.

Teraz należy sprawdzić, czy są jeszcze jakieś procesy, które korzystają z partycji /tmp. Można tego dokonać za pomocą polecenia:

lsof | grep /tmp

Wyświetli się Nam lista procesów, które korzystają z partycji /tmp lub nic się nie wyświetli jeśli faktycznie wszystkie takie procesy zostały zatrzymane. Jeśli dalej jakiś proces w dalszym ciągu korzysta z partycji /tmp, to jeśli możliwość, należy go zatrzymać lub w ostateczności „zabić” poleceniem kill -9 nr_procesu.

Jeśli nic się nie wyświetla pozostaje Nam wykonanie kopii bezpieczeństwa:

cp -prf /tmp /tmp.bak

Zostanie utworzony katalog tmp.bak,w którym będzie kopia wszystkich plików znajdujących się w /tmp.

Następnie tworzymy naszą nową partycję /tmp. Tutaj warto ją umieścić w miejscu, gdzie mamy dużą ilość wolnego miejsca np. na partycji /home. Tutaj pierwotna wersja jest umieszczona w /usr/tmpDSK. My zmienimy lokalizację pliku na /home/tmpDSK.

Wykonujemy polecenie:

dd if=/dev/zero of=/home/tmpDSK bs=1024k count=2048

W naszym przykładzie zostanie utworzony plik tmpDSK w folderze /home który będzie miał wielkość 2GB (parametr 2048). To będzie oznaczało, że nasza partycja /tmp będzie miała wielkość 2GB.

Po wydaniu powyższego polecenia trzeba chwilę poczekać. Oczywiście w zależności od wielkości tworzonego pliku (i szybkości dysku) może to trwać dłużej lub krócej.

Jeśli wszystko przebiegło bez problemów powinniśmy ujrzeć:

root@debian:/home/trustcom# dd if=/dev/zero of=/home/tmpDSK bs=1024k count=2048
2048+0 przeczytanych recordów
2048+0 zapisanych recordów
skopiowane 2147483648 bajtów (2,1 GB), 56,9086 s, 37,7 MB/s
root@debian:/home/trustcom#

Oznacza to nic innego, że nasz plik tmpDSK został utworzony w katalogu /home i ma wielkość 2GB. Teraz należy utworzyć system plików ext3.

mkfs -t ext3 /home/tmpDSK

W pierwszym pytaniu należy odpowiedzieć yes (y) lub tak (t) w zależności od lokalizacji naszego systemu:

root@debian:/home/trustcom# mkfs -t ext3 /home/tmpDSK
mke2fs 1.41.12 (17-May-2010)
/home/tmpDSK nie jest specjalnym urządzeniem blokowym.
Kontynuować mimo to? (t,n) t
uwaga: nie udało się odczytać geometrii urządzenia dla /home/tmpDSK
Etykieta systemu plików=
Typ OS: Linux
Rozmiar bloku=4096 (log=2)
Rozmiar fragmentu=4096 (log=2)
Stride=0 bloków, szerokość Stripe=0 bloków
131072 i-węzłów, 524288 bloków
26214 bloków (5.00%) zarezerwowanych dla superużytkownika
Pierwszy blok danych=0
Maksymalna liczba bloków systemu plików=536870912
16 grup bloków
32768 bloków w grupie, 32768 fragmentów w grupie
8192 i-węzłów w grupie
Kopie zapasowe superbloku zapisane w blokach:
32768, 98304, 163840, 229376, 294912
Zapis tablicy i-węzłów: zakończono
Tworzenie kroniki (16384 bloków): wykonano
Zapis superbloków i podsumowania systemu plików: wykonano
Ten system plików będzie automatycznie sprawdzany co każde 21 montowań lub co 180 dni, zależnie co nastąpi pierwsze. Można to zmienić poprzez tune2fs -c lub -i.
root@debian:/home/trustcom#

System plików ext3 został utworzony. Można to sprawdzić wydając polecenie:

root@debian:/home/trustcom# file /home/tmpDSK
/home/tmpDSK: Linux rev 1.0 ext3 filesystem data, UUID=69fcb6a4-fcd9-4a09-9953-2d6272071852 (large files)
root@debian:/home/trustcom#

Odmontowujemy partycję /tmp

umount /tmp

i montujemy naszą nową partycję:

mount -o loop,noexec,nosuid,rw /home/tmpDSK /tmp

Nadajemy uprawnienia:

chmod 1777 /tmp

Poleceniem df -h sprawdzamy czy wszystko jest ok

root@debian:/home/trustcom# df -h
System plików rozm. użyte dost. %uż. zamont. na
/dev/sda1 143G 19G 117G 14% /
tmpfs 1009M 0 1009M 0% /lib/init/rw
udev 1004M 204K 1004M 1% /dev
tmpfs 1009M 0 1009M 0% /dev/shm
/dev/sdb1 2,0G 1,4G 556M 72% /mnt
/home/tmpDSK 2,0G 68M 1,9G 4% /tmp
root@debian:/home/trustcom#

Jak widać partycja /tmp ma wielkość 2GB

Przywracamy zawartość tmp.bak do naszej nowej partycji:

cp -rpf /tmp.bak/* /tmp

I uruchamiamy po kolei zatrzymane usługi

/etc/init.d/mysql start
/etc/init.d/httpd start
/scripts/restartsrv_tailwatchd

Oczywiście tak samo należy postąpić dla innych zatrzymanych usług.

Edytujemy plik fstab w /etc i wpisujemy:

/home/tmpDSK /tmp ext3 loop,noexec,nosuid,rw 0 0

Jeżeli istnieje wpis odnośnie wcześniejszej partycji /tmp to należy go zastąpić powyższym.

Montujemy wszystko:

mount -a

I sprawdzamy czy wszystko się zgadza:

root@debian:/home/trustcom# df -h
System plików rozm. użyte dost. %uż. zamont. na
/dev/sda1 143G 19G 117G 14% /
tmpfs 1009M 0 1009M 0% /lib/init/rw
udev 1004M 204K 1004M 1% /dev
tmpfs 1009M 0 1009M 0% /dev/shm
/dev/sdb1 2,0G 1,4G 556M 72% /mnt
/home/tmpDSK 2,0G 68M 1,9G 4% /tmp
root@debian:/home/trustcom#

To wszystko. Możemy się cieszyć z powiększonej partycji /tmp.

Tags: , , , ,

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Comments are closed.