Centos

無法在來自 USB 機箱的硬碟上掛載分區

  • November 10, 2020

我將執行在 ESXI 5 上的 Linux Centos 客戶機和 Windows 客戶機的大量數據備份到安裝在 USB 機箱內的 1TB 硬碟上。USB 外殼通過 ESXI 5 管理程序直接連接到客人。

完成數據複製後,我正確地斷開了 USB 磁碟的連接,重新格式化了伺服器併升級到在 Centos 發行版上執行的 KVM 虛擬機管理程序。

然後我創建了一個 Linux Centos 來賓並通過 KVM 管理程序將 USB 磁碟直接連接到它。將數據從 linux 分區複製回來賓沒有問題。複製後我正確斷開了磁碟。

現在,一段時間後,我將相同的磁碟原封不動地放在帶有 LSI RAID 控制器的 IBM x3200 M3 伺服器中,以便從原始 linux 備份中檢索一些數據。磁碟配置為單個設備,沒有 RAID。

IBM 上執行的 Centos Linux 可以正確看到該磁碟。

fdisk 正確顯示了 2 個分區:

fdisk -l /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7ca397d5

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63   128005919    64002928+   7  HPFS/NTFS/exFAT
/dev/sda2       128006144   244190645    58092251   83  Linux

gdisk 也是如此:

gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
 MBR: MBR only
 BSD: not present
 APM: not present
 GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************

Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 8AE1EC87-71EF-4340-8D94-E0EFC30FB4E4
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 1709334742 sectors (815.1 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
  1              63       128005919   61.0 GiB    0700  Microsoft basic data
  2       128006144       244190645   55.4 GiB    8300  Linux filesystem

儘管如此,我無法掛載第二個分區(這裡沒有 Windows,所以我不嘗試第一個分區)。

錯誤資訊是:

mount /dev/sda2 /mnt/usb/
mount: /dev/sda2 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/sda2,
      missing codepage or helper program, or other error

      In some cases useful info is found in syslog - try
      dmesg | tail or so.

嘗試使用 -o ro 選項以只讀方式掛載不會改變結果。

嘗試 fsck 會得到以下結果:

[root@localhost ~]# fsck -N /dev/sda2
fsck from util-linux 2.23.2
[/sbin/fsck.ext2 (1) -- /dev/sda2] fsck.ext2 /dev/sda2

[root@localhost ~]# fsck.ext4 -n /dev/sda2
e2fsck 1.42.9 (28-Dec-2013)
ext2fs_open2: Bad magic number in super-block
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/sda2

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
   e2fsck -b 8193 <device>

這可能幾乎是另一個問題的重複。請在那裡閱讀我的答案以了解可能發生的情況。幾乎,因為我不會懷疑磁碟報告 512 作為其物理扇區大小的類似問題。

所以也許 RAID 控制器現在扭曲了值;也許USB外殼像另一個問題一樣受到干擾;也許 ESXI 做了一些翻譯。我不知道。

無論如何,我懷疑它大約是 512 與 4096。在這種情況下,您應該嘗試在 4096 字節扇區中計算偏移量(起始扇區)是否有效。

在我們開始實際命令之前,請注意最後一個分區的結束扇區是一個巨大的線索。磁碟現在報告 1953525168 個 512 字節的邏輯扇區,但如果這些扇區是 4096 字節,那麼您有 244190646 個(即少 8 倍)扇區,編號從 0 到 244190645。244190645 正是最後一個分區的結束扇區,所以很可能是這個分區表中的條目對 4096 字節扇區有效。

嘗試這個:

mount -o ro,offset=$((128006144*4096)) /dev/sda /some/mountpoint

ro這是以防萬一。

引用自:https://unix.stackexchange.com/questions/618964