驱动器报告错误的可用空间

驱动器报告错误的可用空间

所以我将闪亮的 SATA SSD 换成了更闪亮的 PCI-E SSD。我将核心操作系统运行在 SSD 上,因为它的速度快得惊人。我在旧 SSD 上执行了此操作,因此我创建了一个新的 EXT4 分区,然后dd将数据移到该分区(抱歉,我不再记得我运行的确切命令),重新安装 grub 后,我启动了 PCI-E SSD。乍一看,一切都运行正常,运行速度比以往更快。

但随后我注意到新的、更大的驱动器上的可用磁盘空间:它几乎与另一个磁盘上的完全相同......一个只有其一半大小的磁盘。

因此看起来好像我错误地复制了文件并且它也复制了一些文件系统元数据。

和磁盘使用情况分析器等工具du返回了正确的数字。查看分区(而不是文件)的工具似乎认为驱动器是 120GB

我已经使用这个驱动器一个星期了,所以它与旧的 SSD 不同步,所以转储数据并重新开始不是一件让我高兴的工作,但有两个问题:

  1. 有没有办法修复我的文件系统,以便它知道它真正在做什么?fsck e2fsck并且badblocks所有人似乎都能够扫描它而没有发现问题。

  2. 如果我确实重新插入旧 SSD,将数据从 PCI-E 复制到它,然后将其复制回新的文件系统(例如,处理数据),最好的方法是什么?我显然希望保留所有权限和软链接。

答案1

您使用的工具dd不是文件复制工具,而是磁盘复制工具,它会逐字节复制。这意味着每条信息(包括驱动器分区空间量的元数据)都已被复制。

您需要对文件进行完整备份,格式化驱动器(包括完整的分区格式),创建一个新的 ext4 根分区和交换驱动器,然后复制文件。

复制文件后,您需要chroot转到新系统并运行update-grub命令在新驱动器上安装启动系统。

或者您可以运行全新安装的 Ubuntu,然后将您的文件放回去。


Oli 做了什么来解决这个问题

  1. 启动 LiveCD 并选择“试用 Ubuntu”
  2. 安装我的 SSD 和另一个磁盘(用于复制)
  3. sudo rsync -ax /media/ssd /media/backup-drive/ssd-backup
    

    这需要很长时间。我在复制之前做了一些清理工作,但仍然有 35GB,虽然我的写入速度达到约 120MB/s,但还是花了一段时间。默认情况下,rsync 不会为您提供输出,但--progress如果您想要大量详细信息,您可以添加(尽管它移动得太快,我根本无法真正读取它 - 可能只是减慢了速度)。

  4. 我试图删除驱动器,但 palimpsest(磁盘实用程序)出现“设备繁忙”问题,因此我运行了安装程序!在安装程序中,我只是告诉它使用整个 SSD 驱动器创建一个良好的文件系统,然后killall ubiquity在它开始复制文件后运行。
  5. 然后我删除了安装程序复制的所有文件,然后我复制回备份文件:

    sudo rm -rf /media/ssd/*
    sudo rsync -ax /media/backup-drive/ssd-backup /media/ssd
    
  6. 然后我重新启动,发现我的 UUID 已经改变(仔细想想就很明显了),所以 grub2 不知道从哪里启动,然后崩溃了,所以我回到了 LiveCD。如果您按照此指南操作,我建议您跳过此步骤 ;)
  7. 重新安装 grub!我按照帮助文档并遵循了 chroot 选项。您可能会发现您需要/etc/fstab在那里编辑您的。
  8. 重启后就大功告成了。我回来了,我得到了“一大堆”可用空间。好极了。

答案2

实际上将整个磁盘放入另一个磁盘是可以的dd。但随后您需要调整分区大小以填充新的更大磁盘。您可以使用超棒的gparted磁盘分区工具来执行此操作。他们也有自己的 LiveCD。

答案3

我假设你正在做类似的事情:

sudo dd if=/dev/sda98 of=/dev/sda99

其中 /dev/sda98 大小为 12GB,/dev/sda99 大小为 25GB。

显然这些名字是错误的,但你明白我的意思。

您所做的不仅是将数据,还将整个文件系统(包括描述哪些可用和哪些已使用的所有元数据)移动到新分区。它有很多可用空间,但这些可用空间尚未纳入 /dev/sda99 上的文件系统,因此它隐藏在分区的末尾,完全无法使用。

解决方案是调整分区中的文件系统的大小:

sudo resize2fs /dev/sda99

它适用于 EXT2、EXT3 和 EXT4 文件系统。

您应该先进行备份。

这将告诉文件系统扩展到分区上的所有可用空间,将新空间合并到文件系统的元数据中,以便文件可以在其中存储。

dd除非您使用 count 参数告诉它只复制一定量的内容,否则您无法将较大的分区复制到较小的分区。dd将源分区中的所有内容逐位复制到目标分区,在这种情况下,它会尝试将所有隐藏/不可见空间连同原始内容一起复制到较小的分区。它不知道也不关心它正在复制什么——它根本不需要是有效的文件系统。

答案4

我在 Windows 中使用 Paragon Partition Manager 调整 Linux EX2 分区大小时遇到​​了这个问题。幸运的是,我有两个 EX2 Linux 分区,每个分区上都有 Linux 发行版。我能够启动到尚未调整大小的 Linux 分区,然后使用 Gparted 缩小并再次扩展未正确将可用空间分配给文件系统的分区。这很完美!

相关内容