Назад | Перейти на главную страницу

Изменить размер раздела debian / tmp

В моем разделе / ​​tmp не хватает места для выполнения очень большого SQL-запроса. Как я могу увеличить раздел / tmp?

Спасибо Том

РЕДАКТИРОВАТЬ:

Вот результаты запрошенных команд

blkid
/dev/sda1: UUID="e8604436-53ea-4a05-9459-6c498cf19a1a" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda5: UUID="21bd6739-89c8-4196-986d-bec9474a4b1a" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda6: UUID="1a80f7c6-d524-4974-82ee-c5bd734802b9" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda7: TYPE="swap" 
/dev/sda8: UUID="edee40d5-9337-4705-b152-7bc2b9b35336" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda9: UUID="5c586547-8d78-4dd1-86c9-92f83b4d8fb5" SEC_TYPE="ext2" TYPE="ext3"

fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000504d7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1           18663       19201     4329517+  83  Linux
/dev/sda2              35       18662   149629410    5  Extended
/dev/sda5              35         642     4883728+  83  Linux
/dev/sda6             643        1007     2931831   83  Linux
/dev/sda7            1008        1337     2650693+  82  Linux swap / Solaris
/dev/sda8            1338        1386      393561   83  Linux
/dev/sda9            1387       18662   138769438+  83  Linux

Partition table entries are not in disk order

cat /etc/mtab
/dev/sda1 / ext3 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
procbususb /proc/bus/usb usbfs rw 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev,size=1000m 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
/dev/sda9 /home ext3 rw 0 0
/dev/sda5 /usr ext3 rw 0 0
/dev/sda6 /var ext3 rw 0 0
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
//192.168.254.12/SHARE1 /mnt/archive cifs rw,mand 0 0
/dev/sda8 /tmp ext3 rw 0 0


pvs
-su: pvs: command not found
pvs
-su: pvs: command not found
lvs
-su: lvs: command not found

Возможно, будет проще заменить / tmp простым файлом.

dd if=/dev/zero of=/var/mytmp bs=1024 count=<desired size in K>

mkfs -t ext3 /var/mytmp

umount /tmp

mount -o loop /var/mytmp /tmp

Затем создайте соответствующую строку монтирования в файле / etc / fstab.

Почему не просто скажите MySQL выполнять свою работу в другом месте? Либо установить TMPDIR в среде MySQL или установите tmpdir = /some/non/tmp/path в my.cnf.

Как именно это сделать, зависит от того, как в настоящее время устроены ваши диски. Если вы добавите в свой вопрос вывод следующих команд, это поможет:

fdisk -l
cat /etc/mtab
pvs
vgs
lvs

(последние три команды могут отсутствовать, если вы не используете LVM)

В качестве альтернативы вы можете попробовать переместить место, которое ваш SQL-сервер использует в качестве временного рабочего пространства. Вам нужно будет предоставить нам более подробную информацию о настройке базы данных (т.е. какой сервер базы данных вы используете? MySQL / Postgres / ...?), Чтобы получить помощь по этому поводу.

Если ваши базы данных находятся на том же диске, что и ваш раздел / tmp, вы можете обнаружить, что перенос рабочей области на другой диск значительно увеличит скорость таких сложных запросов.

Возможно, также стоит опубликовать SQL-запрос (и информацию о структурах, которые он запрашивает) в StackOverflow, чтобы увидеть, видит ли проходящий эксперт по SQL какие-либо очевидные части, которые требуют легкой оптимизации.

Изменить (после публикации информации о разделе

Поскольку вы вообще не используете LVM, и это изменение не повлияет на ваш / или /boot, если вы можете позволить себе некоторое время простоя во время выполнения операций, я бы предложил gparted "живой компакт-диск". Загрузитесь с этим, скажите:

  1. сокращаться sda9 (ваш /home) немного
  2. переместите его вверх по диску, чтобы между ним и /sda8 (ваш /tmp)
  3. расти sda8 чтобы заполнить новое место после него

Если вы можете позволить себе потерять немного места, тогда это будет быстрее (так как на /home, просто операция изменения размера и любые необходимые для этого перемещения данных):

  1. сокращаться /home на столько, сколько вы хотите нового /tmp быть
  2. создать новый раздел в пространстве сейчас после /home
  3. затем вы можете установить это как /tmp
  4. вы на самом деле не теряете пространство sda8 использует, так как вы можете установить его как что-то еще, но это может быть не так удобно в использовании.

Еще один вариант - уменьшить пространство подкачки, которое живет впереди sda8, и переместите, чем измените размер sda8 в дополнительное пространство. Насколько хороша эта идея, зависит от количества имеющейся у вас оперативной памяти и от того, что вы используете на компьютере. Этот вариант будет быстрее, так как вы не двигаетесь и не меняете размер /home. На самом деле это будет безопаснее, так как вы не прикасаетесь /home - gparted будет просто действовать на /tmp и пространство подкачки, так что ничего важного, если операция изменения размера пойдет не так, и все в затронутых разделах окажется поврежденным.

Я несколько раз возился с такими разделами с gparted и не имел абсолютно никаких проблем, но само собой разумеется, что перед его использованием вы должны сделать полную резервную копию всех ваших важных файлов и текущей таблицы разделов. Я слышал сообщения о проблемах, если вы позволите gparted возиться с вашим разделом, содержащим /boot но я всегда держал /boot в собственном разделе в начале диска, так что мне никогда не приходилось рисковать.

В этом случае, вероятно, проще всего просто размонтировать / tmp, удалить / dev / sda8 с помощью fdisk, создать новый sda8 большего размера, mkfs на нем и снова смонтировать. Однако это может стоить вам времени простоя (приложения).

В следующий раз создайте свои файловые системы на LVM, что сделает это в миллионы раз проще.

В зависимости от того, какой у вас бокс, вы можете смонтировать / tmp в оперативной памяти, погуглить. Solaris делает это по умолчанию, и я делал это в Linux (и OS / 2, по сути), если у вас есть оперативная память, это действительно может ускорить процесс. Разумеется, вытолкнет на свопинг. Это, вероятно, исправит это для вас, поскольку ваш своп составляет 2,6 ГБ против 400 МБ для / tmp, верно?

Черт возьми, вот как установить его на лету поверх существующего / tmp! http://www.funtoo.org/en/articles/linux/ffg/3/

Это был быстрый гугл, раньше при загрузке могли быть проблемы (нужны вещи в вашем initrd, чтобы он работал).

Возможно, потребуется перезагрузка, чтобы затем размонтировать, так как у вас, вероятно, будут открытые файлы в / tmp на диске и в / tmp при свопинге (хотя вы можете использовать lsof, чтобы найти их и убить процессы, которые их открывают, чтобы вы могли его размонтировать ).

Просто используйте это для строки в вашем / etc / fstab

tmpfs / tmp tmpfs по умолчанию, noatime, mode = 1777 0 0

Я бы сказал, что вы можете удалить noatime или заменить его relatime