無法在來自 USB 機箱的硬碟上掛載分區
我將執行在 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
這是以防萬一。