磁盘问题和解决: fsck,gdisk,fdisk等

错误: Resize inode not valid

对于gpt分区的硬盘一般fsck只能检查分区, 不能用于检查整个硬盘, 但是如果对硬盘设备运行时遇到这样的错误

$ sudo fsck -n /dev/sdc
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
GW1.5T was not cleanly unmounted, check forced.
Resize inode not valid.  Recreate? no

用 gdisk检查一下分区表, 可能会提示下面的信息

$ sudo gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.8

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. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.

对于这种情况, 需要清空GPT和MBR, 命令 x -> z -> y * 2

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sdc. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Blank out MBR? (Y/N): y

之后再看就正常了

$ sudo gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.8

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

用gdisk分区

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-2813066894, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-2813066894, default = 2813066894) or {+-}size{KMGTP}: 
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'
Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

分区之后, 会显示GPT信息

$ sudo gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.8

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

Found valid GPT with protective MBR; using GPT.

错误: Bad magic number in super-block

如果用fsck直接检查GPT分区的硬盘时就会报这个错误

$ sudo fsck -n /dev/sdc
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/sdc

需要指定文件系统对应的分区进行检查

$ sudo fsck -n /dev/sdc1
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
1T4B: clean, 11/87908352 files, 5800552/351633105 blocks

如果需要检查硬盘, 用 gdisk /dev/sdc, 然后在里面用 v 命令

错误 ata1: irq_stat 0x00400000, PHY RDY changed

在N2 NS-1 (CPU:hi3798mv200)上挂载一块 SanDisk ECO 1.92T SSD 时, 在dmesg中每隔100秒出现如下错误

[  360.673489] ata1: exception Emask 0x10 SAct 0x0 SErr 0x10000 action 0xe frozen
[  360.679463] ata1: irq_stat 0x00400000, PHY RDY changed
[  360.683343] ata1: SError: { PHYRdyChg }
[  360.685977] ata1: hard resetting link
[  370.720684] ata1: softreset failed (device not ready)
[  370.724476] ata1: hard resetting link
[  375.681723] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[  375.684718] ata1.00: configured for UDMA/133
[  375.684745] ata1: EH complete

根据网上搜索到的结果, 大部分原因为: 供电问题, 硬盘硬件问题, 以及文件格式错误. 参考 https://forums.gentoo.org/viewtopic-t-815278.html
将整块SSD重新格式化为ext4后, 未再报错.

查看硬盘是否格式化以及格式类型, 可以用blkid -o list

# blkid -o list
device             fs_type   label      mount point            UUID
----------------------------------------------------------------------------------------------------
/dev/sda1          ext4      360G       /mnt/sda1              94e2db08-8982-4773-9045-5bc53a02d723
/dev/mmcblk0p7     ext4                 (not mounted)          57f8f4bc-abf4-655f-bf67-946fc0f9f25b
/dev/mmcblk0p8     ext4                 (not mounted)          57f8f4bc-abf4-655f-bf67-946fc0f9f25b
/dev/mmcblk0p9     ext4                 /                      d0d1a4c4-bf42-4d2f-9b94-b52b92d253d9

或者lsblk -f

# lsblk -f
NAME        FSTYPE LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda                                                                          
└─sda1                                                                       
mmcblk0                                                                      
├─mmcblk0p1                                                                  
├─mmcblk0p2                                                                  
├─mmcblk0p3                                                                  
├─mmcblk0p4                                                                  
├─mmcblk0p5                                                                  
├─mmcblk0p6                                                                  
├─mmcblk0p7 ext4         57f8f4bc-abf4-655f-bf67-946fc0f9f25b                
├─mmcblk0p8 ext4         57f8f4bc-abf4-655f-bf67-946fc0f9f25b                
└─mmcblk0p9 ext4         d0d1a4c4-bf42-4d2f-9b94-b52b92d253d9    1.4G    50% /

posted on 2023-07-28 14:48  Milton  阅读(1194)  评论(0编辑  收藏  举报

导航