我有一个 Linux 系统,磁盘/dev/sda1
上只有一个带有挂载点的分区。安装后可以创建分区吗?/dev/sda
/
/dev/sda2
例如使用挂载点创建/home/
我怎样才能从命令行实现它?它在物理上是如何实现的? (如果我稍后删除,/dev/sda1
它会删除我的/home/
目录,因为它是 的子目录吗/
?我希望这个分区能够保留下来,并且有一天我可以安装新系统。
答案1
要在已经分区的系统中创建新分区,您应该从 livecd 开始,然后使用gparted
收缩sda1
分区(我假设占用磁盘上的所有空间,不包括交换),然后在创建的可用空间中创建一个新分区。
当然可以在命令行上完成,但是格帕特处理许多难以追踪的细节。
创建分区后,您应该将当前主目录的内容移动到新分区上,然后修改/etc/fstab
以将新分区挂载到 上/home
。
这是将文件从 sda1 实际移动到 sda2 的一种方法。所有这些都是以 root 身份完成的:
- 进行备份。您是否尝试过恢复备份?在您这样做之前,它们不是备份。并确保它们存储在另一台计算机(未安装)上,或存储在已安装的外部驱动器上目前已分离。重点是,
rm -Rf /
不应该删除它们。也不应该mkfs
放在错误的分区上。 - 在开始之前,请阅读所有步骤并确保您完全理解它们。除了备份。如果您还没有这样做,您应该立即这样做。
- 在 sda2 上创建一个文件系统。类似于
mkfs.ext4 /dev/sda2
(假设您对 ext4 没问题,这可能是您当前在 sda1 上使用的)。 - 安装
sda2
到 /home 以外的地方。例如,您可以mkdir /mnt/new_home
然后mount -text4 /dev/sda2 /mnt/new_home
- 确保没有用户登录,否则他们可能会在您执行此操作时尝试更改其文件。
- 复制文件。首先,通过执行确认 /home 没有任何隐藏内容(只有点条目应该是
.
和) 。如果是这样,您需要单独复制(不会匹配它们,并且不会执行您想要的操作):..
ls -l /home
*
.*
cp -a /home/* /mnt/new_home/
- 如果复制有任何错误,请立即停止。
- 卸载 sda2:
umount /mnt/new_home
.现在就这样做,以确保您不会意外地用核武器攻击错误的目标。 - 这就是不归路了。
rm -Rf /home/*
。绝对地、积极地、不要在这里试试/home/.*
。另外,请确保不要意外地在该路径中添加空格。在输入此命令时,您至少应该有点害怕,这是一个可怕的命令,您应该三次检查您是否已正确输入它(否则,您将需要该备份)。 - 如果 /home 中有任何点文件或文件夹,请按名称删除它们。请记住,你必须不是曾经跑过
rm -Rf .*
。这会匹配..
,这意味着父目录,最终导致文件系统完全破坏(尽管某些版本rm
可能拒绝这样做,但您不应该依赖于此)。 - 编辑
/etc/fstab
并添加新的 sda2 分区的条目,如下所示:/dev/sda2 /home ext4 relatime,user_xattr,errors=remount-ro 0 2
。如果您愿意,您可以使用不同的标志,这些是我使用的。另外,该pass
数字 (2) 假设您在 sda 上只有两个文件系统,这似乎很可能,因为这是 sda2。 - 最后,安装你的新家
mount /home
。这应该运行没有错误,并且您的文件应该在那里。如果出现错误,请检查 fstab 行。如果您收到有关挂载点下的文件被隐藏的警告,则说明您没有在最后几个步骤中删除所有内容:卸载/home
并删除其余部分。如果文件丢失,请参阅第一步。
答案2
每个分区都是磁盘的一个单独区域。
如果您留下了一些未分区的空间,您可以使用fdisk
、cfisk
或parted
任何其他分区管理器在其中创建一个新分区。否则,您将需要缩小现有文件系统以为新文件系统腾出空间。当今的文件系统不支持挂载时收缩),因此您需要在从 Live CD/USB(例如分手现场CD)。
创建单独的分区后/home
:
- 在其上创建一个文件系统。此操作可以与一些工具的分区创建结合起来。
- 手动将新文件系统挂载到空目录位置,例如
mount /dev/sda2 /media/new_home
. 将文件从新
/home
的文件系统移至新的文件系统:mv /home/* /media/new_home
您应该在未登录帐户的情况下执行此操作:无论是通过文本模式下的 root 登录提示,还是通过 Live CD。
- 卸载新的文件系统:
umount /media/new_home
编辑该文件
/etc/fstab
以添加新分区的条目。类似于(位于 的条目下方/
):/dev/sda2 /home ext4 errors=remount-ro,acl 0 2
/dev/sda2
您应该使用 UUID 或标签,而不是在添加第二个磁盘时可能会发生变化。看删除分区后分区标签会发生什么变化?- 如果在 Live CD 上,请重新启动。否则,运行
mount /home
.
典型的 Linux 系统上存在哪些挂载点?可能是有用的背景。