我有一个分区/dev/sdb1和一个分区/dev/sdb2
它们都在/etc/fstab ,并带有适当的UUID并挂载为/opt和/home
我想合并它们而不会丢失任何文件
这可以从命令行完成,而不必移动所有的文件?
不是我意识到,虽然你可以删除一个分区,并调整其他: http : //www.howtoforge.com/linux_resizing_ext3_partitions
显然,为了工作,你必须有足够的空间将数据存储在其他地方的分区。
不,你必须移动文件。
即使如此,你仍然有一个问题:你必须挂载分区为“/ home”,并将“/ home / opt”符号链接到/ opt。
当你说合并时,我把它想要一个文件系统,可以使用所有的空间,当前分配给/ opt和/ home? 我知道如何做到这一点的唯一“正确”方式是重新创build分区,使其成为LVM物理卷的一部分,并在其上创build逻辑卷。
你只需要借用分配给一个空间的空间并在另一个空间中使用它呢? 如果你不想使用符号链接,你可以使用mount --bind 。
你确定它是/ dev / sdb和/ dev / sdc吗? 按照惯例,/ dev / sdb和/ dev / sdc是单独的磁盘,而不是磁盘上的分区。 磁盘分区通常有一个与它们关联的数字(即/ dev / sdb1,/ dev / sdb2,/ dev / sdc1等)。 您不能将分区合并到单独的物理硬盘驱动器上,您必须将数据从一个移到另一个。
正如其他人已经说过的,把它们合并是不可能的。 您必须移动数据并适当调整分区大小。
你不能合并/opt和/home而没有另一个。
例如/home – > /opt/home 。
那么你可以做ls -s / home / opt / home。
或更好: mount --bind /opt/home /home
或fstab条目是: /opt/home /home none bind
我实际上已经将以下内容添加到我的/etc/fstab文件中。 (实际上我真正使用的是部分的UUID而不是[ /dev/sdb1 ])
/etc/fstab / dev / sdb1 / share ext3 noatime,errors = remount-ro 0 1 / share / home / home没有绑定
这可以工作:
# 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
你将需要追加sudo到每一行,或作为root [ sudo bash ]运行。
合并是不可行的,因为一些数据,如inode,预计在文件系统中是唯一的,但有一些数据会在你有两个时重复。 内部文件系统结构将以相同的方式冲突。
将文件系统吸收到另一个文件系统在理论上是可行的,但是我不认为它已经被尝试过,因为迎合罕见用例的工具具有较高的错误风险,这可能具有致命的后果。 您将需要进行备份,现在您有备份,您不需要就地转换。 如果你想实现这一点,最接近的工具是btrfs-convert,它通过保持两个文件系统在同一个分区上来使一个ext4文件系统变得模糊,其中btrfs结构指向ext4结构和copy-on-write确保新文件是btrfs -只要。