当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题] /var 目录移动另一个分区 后碰到的问题 /var/run 和 /var/lock
帖子发表于 : 2008-07-24 21:40 

注册: 2008-07-24 21:33
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
参照 Linux下将/TMP和/Var移动到共享分区
将我的 /var目录移到了另一分区后碰到了网络不能用,有时进不了图形界面

后搜索到原来/ 不能少了 /var/run 和 /var/lock
看到有个文档介绍 用livecd启动机器创建 /var/run 和 /var/lock 但我原来分区已将有了/var这个符号链接到 另一分区了,怎么创建呢


附件:
文件注释: 网上找的解决方法,但不会用
Ubuntu 下移动 var 目录到单独分区后出现的一些问题.rar [2.98 KiB]
被下载 54 次
页首
 用户资料  
 
2 楼 
 文章标题 : [问题] /var 目录移动另一个分区 后碰到的问题 /var/run 和 /var/lock
帖子发表于 : 2008-07-24 21:41 

注册: 2008-07-24 21:33
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
/var 目录移动另一个分区 后碰到的问题 /var/run 和 /var/lock


附件:
文件注释: 参照学习 的文件
Linux下将 TMP和 Var移动到共享分区.rar [2.32 KiB]
被下载 34 次
页首
 用户资料  
 
3 楼 
 文章标题 : [转帖]Linux下将/TMP和/Var移动到共享分区
帖子发表于 : 2008-07-24 21:43 

注册: 2008-07-24 21:33
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
Linux下将/TMP和/Var移动到共享分区

整理数据

首先,必须创建一个新分区专门用于存储频繁修改的文件。您可能希望将这个分区置于单独的磁盘上以增强性能。
接下来,我将逐步说明将 /tmp 和 /var 移动到这个新分区上的各个步骤。

警告

下面的技术说明如何移动一个或多个分区。
尽管这项技术经过专门设计,使您能够“撤销”失败的分区移动,但它并不防止用户的错误。
换言之,只要进行格式化分区或复制大量文件的操作,就存在因输入错误而导致大量数据被破坏的可能性。
因此,强烈建议您 在行动之前采取适当的措施来备份所有的重要文件。

1. 在新分区上创建文件系统

这个过程的第一步是创建一个足以容纳 /var 和 /tmp 并有一点额外空间的新分区。
您需要另有一个硬盘驱动器或者一个备用的(未使用的)分区来存储经常修改的文件。
如果确实需要使用 fdisk 或 cfdisk 来创建分区,则必须重新启动一次系统。
现在就可以格式化新分区了,如下所示(完全可以在多用户模式下完成这一工作;我将提示您何时切换到单用户模式):  

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

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

  # mount /dev/***/mnt/rwstorage 

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

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

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

  # init 1

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

  # cd /mnt/rwstorage
  # mkdir var 

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

  # cd /var
  # cp -pr * /mnt/rwstorage/var #(cp -ax * /mnt/rwstorage/var)
6. 执行备份并创建符号链接
这个命令完成以后,/mnt/rwstorage/var 就成为 /var 的一个完全相同的副本。现在您可能会问,
如何让 Linux 正确使用 /mnt/rwstorage/var 和 /mnt/rwstorage/tmp 而不是根目录下的默认位置呢?
使用符号链接很容易实现这一点 -- 我们将创建新的符号链接 /tmp 和 /var,
它们指向 /mnt/rwstorage 中的正确目录。我们首先备份原来的目录:
  # cd /
  # mv var var.old
  # mv tmp tmp.old
最后一行可能没有必要,因为通常您不会将任何重要的文件放在 /tmp 中,但我们这样做更安全一些。现在开始创建符号链接:

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

7. 最后修改 /etc/fstab
现在,当任何用户或程序使用 /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 目录。
恭喜您 -- 为了获得最佳性能,您已经成功地对您的系统分区进行了重新配置。


页首
 用户资料  
 
4 楼 
 文章标题 : [转帖]Ubuntu 下移动 /var 目录到单独分区后出现的一些问题
帖子发表于 : 2008-07-24 21:43 

注册: 2008-07-24 21:33
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
Ubuntu 下移动 /var 目录到单独分区后出现的一些问题,如:mount: special device /var/run does not exist

2008年04月19日 下午 11:00 | 作者:littlebat

前几天,我的Ubuntu 6.06 LTS 的 / 分区空间紧张,于是把 /var 目录移动另一个分区。偶然一次,在没有挂载 /var 分区的情况下,发现原来根分区 / 下的 /var 目录仍然有 /var/run 和 /var/lock 目录,以为这是重复的,就顺手把根分区 / 下面的 /var/run 和 /var/lock 目录删除了。

后来,问题就出来了:包括网络不能启动,ADSL 不能自动连接;Wine 的 QQ 登录后停止响应;图形界面常常停止响应,像死机,只能 CTRL+ALT+BACKSPACE 重启图形界面,等等。然后是,启动信息里出现如下一些文字:
Can’t create directory “/var/run/network”
mount: special device /var/run does not exist
mount: wrong fs type, bad option, bad superblock on /dev/shm/var.run
等等

先还以为是移动 /var 目录到新的分区时,也许无意中把目录的权限修改了,对照机子上的 DeLi Linux检查了一下,移动后的目录权限应该没有什么问题。后来,甚至怀疑是用“sudo apt-get upgrade”命令更新了系统的原因。最后,上网在Google上用关键字“mount: special device /var/run does not exist”搜索资料,在 mount: special device /var/run does not exist 上找到答案,原来,不管你的 /var 目录在不在单独的分区里,/var/run 和 /var/lock 这两个目录一定要在根分区 / 里面!

然后,我从机子上的另一个 linux (Puppy Linux)启动系统,在 Ubuntu 6.06 LTS 根分区 / 下添上了两个目录: /var/run 和 /var/lock 就一切OK 了。

所以,我要把网络这个便利的工具充分运用起来,在一些实际的应用性问题上,自己经过适度的思考和尝试解决,失败后,就应该利用搜索引擎这个便利的工具了;如果还不能解决的话,就可以上论坛和等场所向别人请教了。当然,一些基础的知识平时就要主动的掌握。







===================================================
mount: special device /var/run does not exist

While P2V-ing an Ubuntu 6.06 server with my warm-cloning P2V method, I ran into a strange problem when booting:

Sceendump - click to enlarge

The exact text of the error is:

mount: special device /var/run does not exist
mount: special device /var/lock does not exist
mount: wrong fs type, bad option, bad superblock on /dev/shm/var.run,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

mount: wrong fs type, bad option, bad superblock on /dev/shm/var.lock,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

Everything seems to work, untill I found out that the extra IP addresses on secondary network interfaces were not able to carry any network traffic…
I had to cancel the virtualization and revert to the physical machine again.
The system in question has a separate /var partition (see booting picture, /dev/sda6 in my case).
I first mount the root filesystem, which holds on empty “var” directory, and then mount /dev/sda6 on that “var” directory. I had created empty “run” and “lock” directories in there to be able to mount /var/run and /var/lock. Wrong!

Turns out that the root filesystem needs to contain /var/run and /var/lock, even though the system has a separate /var partition.

:bonk: :bonk: :bonk:

Thanks to Chris Siebenmann for pointing this out on his wiki.

The solution thus is to boot from Ubuntu Live CD, mount ONLY the root filesystem, and create the /var/run and /var/lock directories.
They are only needed for mounting the tempfs partitions, and will be hidden by the real /var partition, which is mounted over it once the system has finished booting.

This entry was posted on Tuesday, July 24th, 2007 at 10:36 and is filed under VMware. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
One Response to “mount: special device /var/run does not exist”

1. Ali Sattari Says:
August 12th, 2007 at 07:58

Hi,
Really annoying problem! :|
I think same goes for /var/tmp (at least in my case).

Thanks for the Tip!




===============================================================

Another obnoxious discovery about Ubuntu's /var/run stuff

Today, I had the distinct pleasure of discovering that /var/run must exist on the root filesystem, even if you have a separate /var filesystem. If your root filesystem does not have such a hidden /var/run, you experience mysterious failures of various boot stuff, including an inability to bring up the network; for bonus points, nothing gives you any meaningful error messages.

(For bonus points, the default Ubuntu server startup sequence wipes out the console scroll buffer, so you can't scroll back to see many boot time messages anyways. And nothing captures them elsewhere.)

I find this incredibly obnoxious, because it means that if you move your root filesystem around, you must move it with something that peeks under mount points (effectively only dump or an equivalent will do) and you must not, on any account, move it to a place with a replacement /var already mounted in place. (Guess what we did, not knowing any better.)

If you started out without a separate /var filesystem and now want to move to one, apparently your life just sucks.

There are some comments in /etc/init.d/mountvirtfs that suggest that it should be recreating the root filesystem's /var/run if it doesn't exist. However, there are two problems:

* there is no actual code in mountvirtfs to do this, just comments saying that it should be done.
* trying to do it wouldn't help anyways, because the root filesystem is mounted read-only at this point.

(While /var/lock also exists on the root filesystem and is necessary, don't worry about it; LVM will helpfully create it for you in early startup as a side effect of making its /var/lock/lvm directory. So you only have to reboot twice to have everything working right with that.)


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-07-25 14:01 

注册: 2008-07-24 21:33
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
没人帮吗


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译