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.