我有一台服务器,分区之间的空间分布如下:
GSSJMB02:~ # df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p5 25G 5.9G 18G 25% /
udev 3.9G 144K 3.9G 1% /dev
/dev/cciss/c0d0p9 64G 129M 61G 1% /apps
/dev/cciss/c0d0p1 244M 12M 219M 6% /boot
/dev/cciss/c0d0p10 16G 129M 15G 1% /home
/dev/cciss/c0d0p7 5.0G 618M 4.1G 13% /opt
/dev/cciss/c0d0p8 9.9G 228M 9.2G 3% /var
GSSJMB02:/gsn/sw 25G 5.9G 18G 25% /mnt/nfs/gsn/sw
GSSJMB02:/gsn/nodes 25G 5.9G 18G 25% /mnt/nfs/gsn/nodes
这里文件系统/dev/cciss/c0d0p5
的空间比我需要的要少。并且文件系统/dev/cciss/c0d0p9
有大量无法使用的空间。我可以/dev/cciss/c0d0p5
通过从 中取出一些来增加 的空间/dev/cciss/c0d0p9
吗?
答案1
并非没有备份、重新分区、mkfs 和恢复至少c0d0p[56789](假设分区根据磁盘布局按顺序编号)。
如果您要竭尽全力做到这一点,请多花一点精力来安装和配置 lvm 并使用逻辑卷而不是分区 - 这将为您下次需要扩大或缩小卷时提供更大的灵活性。文件系统(或者如果您添加第二个磁盘)。
(另外,很难理解为什么现在有人会费心在一个小磁盘上创建很多小分区。这曾经是常见的做法,但磁盘过去也很小。现在,它造成的麻烦和不便超过了超过了次要的好处)
因此,简短的回答是“不”。
但是,您可以在 /apps 上创建一个目录(例如 /apps/stuff)并将+符号链接文件从 / 移动到 /apps/stuff。例如:
mkdir /apps/stuff
mv /usr/share/doc /apps/stuff
ln -s /apps/stuff/doc/ /usr/share/
只要您不移动启动时所需的任何文件或目录(包括所有 /etc、/bin、/sbin),一切都会继续工作(尽管您可能必须重新启动或至少杀死并重新启动某些文件或目录)如果您移动的任何文件被某个进程保持打开状态,则进程)
顺便说一句,只要保留所有者、组和权限,复制文件通常比 mv 更好。例如,使用cp -a
或rsync
甚至是“然后”的旧主力,cd /path/to/src ; tar cf - . | (cd /path/to/dest ; tar xf -)
当文件被复制时,删除它们(或暂时将它们移开)并创建符号链接。完成后,测试一切是否正常工作 - 如果是,则从根文件系统中删除原始文件。例如
mkdir /apps/stuff
rsync -ax /usr/share/doc /apps/stuff
mv /usr/share/doc /usr/share/doc.bak
ln -s /apps/stuff/doc/ /usr/share
# do your testing now
rm -rf /usr/share/doc.bak
请注意,重要的是在 rsync 中保留尾随 / 离开此处的源参数(即使用/usr/share/doc
而不是/usr/share/doc/
),否则 rsync 会认为您想要将 /usr/share/doc/ 中的所有内容复制到 /apps/stuff 而不是 /apps /东西/文档