调整debian / tmp分区

我的/ tmp分区在非常大的SQL查询中空间不足。 我怎样才能使/ tmp分区更大?

谢谢Tom

编辑:

这里是请求命令的输出

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 

用纯文件replace/ 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文件中创build一个匹配的安装行。

为什么不告诉MySQL在其他地方工作呢? 在MySQL环境中设置TMPDIR ,或者在my.cnf中设置tmpdir = /some/non/tmp/path

究竟如何做到这一点取决于你的驱动器目前如何安排。 如果您将以下命令的输出添加到您的问题将有助于:

 fdisk -l cat /etc/mtab pvs vgs lvs 

(如果您不使用LVM,最后三个命令可能不存在)

作为替代,您可以尝试移动您的SQL服务器用于其临时临时空间的位置。 你必须给我们更多关于数据库设置的细节(例如,你使用哪个数据库服务器?mySQL / Postgres / …?)来获得帮助。

如果你的数据库与你的/ tmp分区在同一个驱动器上,那么你可能会发现把scratch区移到另一个驱动器上会大大增加这个复杂查询的速度。

在StackOverflow上发布SQL查询(以及查询结构的信息)也是值得的,以查看传递的SQL专家是否可以看到任何显而易见的部分,这些部分都为了简化优化而大声疾呼。

编辑(分区信息发布后

由于您根本没有使用LVM,所做的更改不会影响您的//boot ,如果您在执行操作时能承受大量的停机时间,那么我会build议使用gparted “live CD”。 用这个引导,告诉它:

  1. 缩小sda9 (你的/home )一点
  2. 将其移动到磁盘上以便与/sda8 (您的/tmp
  3. 成长sda8后填补新的空间

如果你可以承受失去一点空间,那么这将是更快(因为没有移动完全在/home操作,只是一个resize操作和任何数据移动所需的):

  1. 收缩/home ,就像你想要新的/tmp
  2. /home之后的空间中创build一个新的分区
  3. 你可以把它挂载为/tmp
  4. 你实际上并没有失去sda8使用的空间,因为你可以把它安装成其他的东西,但是使用它可能并不是那么方便。

还有另外一个select是缩小在sda8之前的交换空间,而不是将sda8调整到额外的空间。 这个想法有多好取决于你拥有的RAM的数量和你在机器上运行的内容。 此选项将更快,因为您不移动或调整/home 。 它会更安全,因为你没有触及/home – gparted只会在/tmp和swap空间上运行,所以如果resize操作出错并且受影响的分区中的内容最终损坏,那么没有任何问题。

我已经用gparted多次分割过这样的分区,并且完全没有问题,但是不用说,在使用它之前,您应该对所有重要文件和当前分区表进行完整备份。 我听说过有关问题的报告,如果你让你的分区包含/boot但是在磁盘开始的时候,我一直在自己的分区保存/boot ,所以从来没有冒险自己。

在这种情况下,只需卸载/ tmp,使用fdisk删除/ dev / sda8,创build一个更大的新sda8,mkfs并重新安装它可能是最简单的。 虽然(应用)停机时间可能会花费你一点时间。

下一次,build立你的文件系统在LVM,这使得这个kazillion倍更容易。

取决于你的盒子是什么,你可以在RAM里挂载/ tmp,谷歌它。 Solaris默认情况下是这样做的,而且我已经在Linux上完成了(实际上是OS / 2),如果你有内存的话,它可以加快速度。 当然它会推出交换。 这可能会为你解决,因为你的swap是2.6GB,而对于/ tmp是400mb,对不对?

哎呀,这里是如何在现有的/ tmp的基础上安装它! http://www.funtoo.org/en/articles/linux/ffg/3/

这是一个快速的谷歌,它曾经是有可能在启动问题(需要在你的initrd的东西,使其工作)。

可能需要重新启动才能卸载,因为你可能会在磁盘上的/ tmp和swap上的/ tmp文件中打开文件(虽然你可以使用lsof来find它们并杀死已经打开的进程,所以你可以卸载它)。

只需在/ etc / fstab中使用此行即可

tmpfs / tmp tmpfs defaults,noatime,mode = 1777 0 0

我会说,你可以删除noatime,或更换与relatime