Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92506570
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-02 18:32:56

文章分类:

在这篇关于在正在运行的系统上更改分区的技巧(第二篇)中,Daniel Robbins 说明了如何将 /tmp 和 /var 移动到它们自己的共享分区上。同时,他还介绍了几个诀窍,从而使您可将停机时间缩到最短,并可避免犯严重错误。

在我的 上一篇技巧 中,我们已成功地将 /home 移动到一个新分区上。现在是学习如何将经常修改的文件整理到一个新分区上的时候了。为什么要这样做呢?下面是一个例子。经常修改的文件会产生大量的碎片。包含碎片的最佳方式之一就是将经常修改的文件存储在它们自己的分区上。这样,其他分区就不会受经常修改的文件所产生的碎片的影响。这在概念上不难理解,但实际上该如何操作呢?

首先,必须创建一个新分区专门用于存储频繁修改的文件。您可能希望将这个分区置于单独的磁盘上以增强性能。接下来,我将逐步说明将 /tmp 和 /var 移动到这个新分区上的各个步骤。
警告
下面的技术说明如何移动一个或多个分区。尽管这项技术经过专门设计,使您能够“撤销”失败的分区移动,但它并不防止用户的错误。换言之,只要进行格式化分区或复制大量文件的操作,就存在因输入错误而导致大量数据被破坏的可能性。因此,强烈建议您 在行动之前采取适当的措施来备份所有的重要文件

正如在我的前一篇技巧中那样,应该用刚创建的空分区的设备名替换 --?。意外键入错误的名称将破坏现有分区上的数据,所以一定要小心!键入这个命令以后,您就在新分区上创建了一个新的 ext2 文件系统。现在几乎就可以挂载这个分区了,但我们首先要创建一个挂载点。


# mkdir /mnt/rwstorage

我选择名称 "rwstorage" 是为了提醒我们,这个特殊的分区将专用于存储频繁读写的文件系统。要挂载分区,请键入:


# mount /dev/--? /mnt/rwstorage

分区已经挂载好,现在就可以创建新的 /tmp 目录了:


# cd /mnt/rwstorage
# mkdir tmp
# chmod 1777 tmp





回页首


我们的新目录 /mnt/rwstorage/tmp 具有临时目录应该具有的权限。现在,请进入单用户模式,因为我们必须复制整个 /var。像往常一样,我们将进入单用户模式推迟到最后一刻进行。从现在起我们不希望任何程序读写 /var 中的文件,所以必须停止所有守护程序,断开所有用户,执行一些快速的维护,为此请键入以下命令:


# init 1

如果提示您输入口令来进行系统维护,请按指示操作。您现在应该在 root shell 中,所有不必要的守护进程已被停止。键入以下命令为 /var 中的文件创建一个新位置:


# cd /mnt/rwstorage
# mkdir var

在我们的新 /mnt/newstorage/var 目录上的默认权限应该是正确的,现在就可以将原来的全部 /var 数据复制到新分区上了:


# cd /var 
# cp -ax * /mnt/rwstorage/var

这个命令完成以后,/mnt/rwstorage/var 就成为 /var 的一个完全相同的副本。现在您可能会问,如何让 Linux 正确使用 /mnt/rwstorage/var 和 /mnt/rwstorage/tmp 而不是根目录下的默认位置呢?使用符号链接很容易实现这一点 -- 我们将创建新的符号链接 /tmp 和 /var,它们指向 /mnt/rwstorage 中的正确目录。我们首先备份原来的目录:


# cd /
# cp var var.old
# cp tmp tmp.old

最后一行可能没有必要,因为通常您不会将任何重要的文件放在 /tmp 中,但我们这样做更安全一些。现在开始创建符号链接:


# cd /
# ln -s /mnt/rwstorage/var /var
# ln -s /mnt/rwstorage/tmp /tmp

现在,当任何用户或程序使用 /var 时,他们将被自动转移到 /mnt/rwstorage/var!对于 /tmp 也一样。我们还有一个步骤要做;但是这一步可以安全地在多用户模式下执行。现在可以让 apache 恢复运行了,也可以让您的所有用户重新登录了。请按 CTRL-D 退出 runlevel 1。系统应该正常启动。请以 root 身份登录。

我们必须完成的最后一个步骤是配置 /etc/fstab 文件,以便将 /dev/--? 挂载到 /mnt/rwstorage。必须在 /etc/fstab 中添加这样一行:


/dev/--?        /mnt/rwstorage  ext2    defaults       1     2

重要说明:如果您使用的内核版本属于 2.3+,则在您的 /etc/fstab 文件中很可能有这样一行:


none            /var/shm        shm     defaults       0     0   

该行在系统中启用共享内存,默认情况下它挂载在 /var 中。为了使该行正常工作,它必须出现在您刚添加的那一行的下一行。这样,当 Linux 启动时,/mnt/rwstorage 将首先被挂载(启用 /var)。然后,并且仅当在此以后,shm 设备将被挂载在 /var/shm,而后者实际上是 /mnt/rwstorage/var/shm。确保这两行的次序为:


/dev/--?        /mnt/rwstorage  ext2    defaults       1     2
none            /var/shm        shm     defaults       0     0

在保存了对 /etc/fstab 的更改以后,您的系统已经成功升级了!在证实一切工作正常以后,您可删除所备份的 /tmp.old 和 /var.old 目录。恭喜您 -- 为了获得最佳性能,您已经成功地对您的系统分区进行了重新配置。

原文链接:http://www-128.ibm.com/developerworks/cn/linux/l-tip-prompt/tip04/index.html

阅读(273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~