正确的方法来重新分区到新的磁盘?

我目前运行一个运行Debian的networking服务器。 我有一个1GB的磁盘,一个ext4分区映射到/和一个8GB的磁盘,一个ext4分区映射到/var/www

1GB磁盘已满70%,没有安装数据库。 一旦我把psql,我/var可能会填满1GB的磁盘。

所以我想要做的是将8GB磁盘上的ext4大小调整为4GB,并使用可用空间创build另一个分区。

现在,在我看来,我提出了以下几个步骤:

  1. umount并使用resize2fs (或parted )来调整8GB磁盘上的分区大小。
  2. parted在可用空间上创build一个新的4 GB分区。
  3. mount新的parition说/media/new
  4. cp -a将我的/var从1GB分区复制到新的4GB分区。 (或者我应该使用tar呢?)
  5. fstab为新分区添加一个条目
  6. 从我的1GB磁盘中删除冗余的东西,如/var ,为新分区删除/var/www

我从来没有做过这样的事情,所以有人请validation我的步骤,看看我是否错过了什么?

PS。 我做了一个du --max-depth=1 ,它看起来像是/var占用的200MB,还有一个300MB分配给/usr和200MB到/lib 。 我应该移动这些吗?

您实际上不必重新分区您的磁盘来完成此操作。 另一种解决scheme是使用mount -o bind

  1. 停止服务器上运行的所有服务,并确认没有打开/ lsof | grep /var句柄 lsof | grep /var – 如果有的话,杀死持有它们的进程。
  2. 卸载你的8GB驱动器(/ var / www)并将其挂载到其他地方(例如/ mnt)
  3. 在您的8GB磁盘上,将整个内容移动到一个文件夹 – 我们称之为“www”。
  4. 将/ var /移动到你的8GB的驱动器(你可能想复制和重命名原来的一些安全)(所以,你现在有两个文件夹/ mnt / www和/ mnt / var)
    • (因为/ var / www在var中,所以在这里移动它就简单了(即mv /mnt/www /mnt/var/ ,但是我应该可以设置嵌套的坐标)
  5. 挂载/ var: mount -o bind /mnt/var /var
  6. 附加到fstab:

      / mnt / var / var绑定默认,noatime,绑定0 0 
  7. 检查一切正常,恢复正常操作

这种方法应该提供相同的function,而且风险小一些(不需要重新分区/调整文件系统的大小)和更大的灵活性 – 如果你想添加两个或三个以上的文件夹,你不需要继续创build新的分区。

另外,将整个/ var移动到第二个磁盘并不是我的第一select,我倾向于移动存储数据的目录而不是stored procedures的目录,如下所示:(您可能会发现/ var / log和/ var / lib使用/ var中的大部分空间)。

  • 在/ var /日志
  • 在/ var / lib中/ pgsql的
  • / var / spool / mail(和/或/ var / vmail)
  • / var / www(你已经移动了)

大多数目录可以应用相同的过程(除了/ boot之类的东西)。 此外,你可以考虑使用rsync而不是cp,如果某些文件被locking等等,你必须再次运行它,它可以更宽容。