IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Linux下解决同一硬盘因为连接设备不一样导致扇区大小不一致的问题

Kxn's eXercise Notes 2021-05-26 22:50:13 累计浏览 1,971 次
本机暂存

我有块硬盘放进了我家云盒子里面,前段时间想把这个硬盘拿出来插到电脑上面拷贝数据,结果发现分区表完全是乱的,分区变小了很多,在电脑上调整了分区表以后大小对了,放回我家云盒子,分区表又变得不合法了。

仔细研究了一下,发现硬盘直接接在电脑上面时候,扇区大小是 512 字节的,但是接在我家云盒子上面,扇区的大小是 4096 字节。之前有人说有些 USB 硬盘线也会造成这样的效果,大概也是相同的情况。分区表里面的单位都是按照扇区大小来计算的,所以分区大小自然也就不一样了

知道了这个原因就是想解决方式了。Linux 下面解决起来倒是简单,loop 设备设置的时候可以用 -sector-size 来设置大小,因此我们只要先不着急 mount 硬盘,用 losetup 设置一个扇区大小是 512 字节的 loop 设备。之后在 loop 设备上面再分区和格式化,就可以让这个硬盘在电脑上也可以正常读取了。

需要注意的是,不同的设备有可能导致最终看到的扇区数也是不一样的,我实测电脑比我家云盒子多看到几KB的大小,因此在 losetup 时候通常需要手动加上 -sizelimit 的值。

例如

losetup -P -sector-size 4096 -sizelimit 3000591892480 -f /dev/sda

之后直接对 loop 设备分区啥的就都很正常了

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. 我的 RHCA 之路 (累计阅读 14,011)
  3. Linux内存点滴 用户进程内存空间 (累计阅读 13,228)
  4. 给程序员新手的一些建议 (累计阅读 13,088)
  5. Linux 性能监控、测试、优化工具 (累计阅读 13,010)
  6. 关于linux内存free的一些事情 (累计阅读 12,866)
  7. ps - 按进程消耗内存多少排序 (累计阅读 12,685)
  8. Google怎么用linux (累计阅读 12,580)
  9. Linux Used内存到底哪里去了? (累计阅读 11,866)
  10. find命令的一点注意事项 (累计阅读 11,863)