# copy files preserving attributes
cp -Rp /home /opt # --recursive --preserve
# comment out old /home entry
perl -pie'$_ = "#$_" if m[/home]' /etc/fstab
# add a bind entry to the end of fstab
echo /opt/home /home none bind >> /etc/fstab
# unmount both partitions
umount /home
umount /opt
# remove original /home partition
# resize /opt partition to use the freed space
# could also just restart here
mount /opt
mount /home
不,您必须移动文件。
即使那样你仍然有一个问题:你必须将分区挂载为“/home”并将“/home/opt”符号链接到/opt。
当您说合并时,我认为您希望拥有一个可以使用当前分配给 /opt 和 /home 的所有空间的文件系统?我知道如何做到这一点的唯一“正确”方法是重新创建分区,使它们成为 LVM 物理卷的一部分,并在其之上创建一个逻辑卷。
您是否只需要借用分配给其中一个的空间并在另一个中使用它?
mount --bind
如果您不想使用符号链接,可以使用 。尽管您可以删除一个分区并调整另一个分区的大小,但我并不知道:http: //www.howtoforge.com/linux_resizing_ext3_partitions
显然,要使其工作,您必须有足够的空间将数据存储在其他地方的一个分区中。
你确定是 /dev/sdb 和 /dev/sdc 吗?按照惯例 /dev/sdb 和 /dev/sdc 是单独的磁盘,而不是磁盘上的分区。磁盘分区通常有一个与之相关的编号(即 /dev/sdb1、/dev/sdb2、/dev/sdc1 等)。您不能合并单独物理硬盘上的分区,您必须将数据从一个移动到另一个。
正如其他人已经说过的那样,合并它们是不可能的。您必须移动数据并适当调整分区大小。
你不能合并
/opt
,/home
也不能在另一个内部有一个。例如
/home
->/opt/home
。然后你可以做 ln -s /home /opt/home。
或者更好:
mount --bind /opt/home /home
或 fstab 条目是:
/opt/home /home none bind
我实际上已将以下内容添加到我的
/etc/fstab
文件中。(实际上我真正的使用partion的UUID而不是[/dev/sdb1
])/etc/fstab
这可以工作:
您将需要附加
sudo
到每一行,或者作为root
[sudo bash
] 运行。合并是不可行的,因为某些数字(例如 inode)在文件系统中是唯一的,但是当您有两个时,有些数字会重复。内部文件系统结构也会以同样的方式发生冲突。
将一个文件系统吸收到另一个文件系统在理论上是可行的,但我认为没有尝试过,因为迎合罕见用例的工具有更高的错误风险,这可能会产生致命的后果。您将需要进行备份,现在您有了备份,您不需要就地转换。如果你想实现这个,最接近的工具是 btrfs-convert,它通过将两个文件系统保持在同一个分区上来吞噬 ext4 文件系统,btrfs 结构引用 ext4 结构和写时复制确保新文件是 btrfs -只要。