我们最近决定将操作系统从 Debian 8.7.1 更改为 Debian 9.x。 (注意:这不是传统的升级过程)为了在我们的产品中实现这一点,我们基本上使用分区和 grub 引导交换来交换整个操作系统。
从 Debian 8 -> Debian 8 开始时,这一切都有效。但是,当我们使用 Debian 9 尝试执行此操作时,结果是目标分区上的文件系统为空。
从另一个分区运行时,我们使用以下命令提取基于 Debian 9 的映像
dd if=/dev/sda2 bs=1M | gzip --best - > /mnt/image/image.gz
然后我们获取 image.gz,这就是我们新的完整操作系统映像。
Debian 8系统获取image.gz文件并运行以下命令
gunzip -c /tmp/image.gz | dd of=/dev/sda3 bs=1M
一切正常,但是当我们更改 grub 以引导到该分区时,不存在任何文件。果然,切换到一个已知良好的分区并挂载该分区,文件系统为空。
我尝试了 dd 和 partclone.ext4 来尝试看看它是否会改变任何东西,但它会产生相同的结果。
到目前为止,我们唯一发现的是,在 Debian 9 上,日志是 64 位的,而在 Debian 8 上,当您运行以下命令时,没有提及这一点
file -sL /dev/sda3
编辑:kern.log 的输出
Oct 22 22:05:34 machine kernel: [280285.531140] EXT4-fs (sda3): error count since last fsck: 3 Oct 22 22:05:34 machine kernel: [280285.531159] EXT4-fs (sda3): initial error at time 1508450313: htree_dirblock_to_tree: 914: inode 2: block 8774 Oct 22 22:05:34 machine kernel: [280285.531177] EXT4-fs (sda3): last error at time 1508450339: htree_dirblock_to_tree:914 : inode 2: block 8774 Oct 23 14:05:01 machine kernel: [337855.006072] EXT4-fs error (device sda3): htree_dirblock_to_tree:914: inode #2: block 8774: comm ls: bad entry in directory: rec_len is smaller than minimal - offset=0(0), inode=0, rec_len=0, name_len=0
是否无法在 Debian 8 系统上挂载在 Debian 9 上创建的 ext4 分区?