posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
问题描述
周末办公楼电力系统维护停电3小时,服务器关机,电力恢复后服务器启动失败,现象是启动报错,提示让输入密码进入紧急模式。
看到主要的错误描述是:
CIFS VFS: ioctl error in smb2_get_dfs_refer rc=-5
怀疑和mount有关。
输入密码进入紧急模式,输入命令mount -a,即根据配置文件/etc/fstab进行挂载(正常启动时也是根据此文件进行挂载)
其中/etc/fstab的内容如下
省略若干
/dev/md126p1    /data   ext4    defaults 0      0
/dev/sdd1       /data2        ext4    defaults 0      0
省略若干

执行后看到了具体的挂载错误条目是找不到设备 /dev/sdd1
使用命令
fdisk -l
可以看到存在/dev/sdd和/dev/sdd1
Disk /dev/sdd: 3.7 TiB, 4000787030016 bytes, 7814037168 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
Disklabel type: gpt
Disk identifier: 737D5D12-456A-414A-86DC-0F8279EDA29B

Device     Start        End    Sectors Size Type
/dev/sdd1   2048 4294969343 4294967296   2T Linux filesystem

使用lsblk,看到
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0  99.4M  1 loop  /snap/core/11993
loop1         7:1    0  99.5M  1 loop  /snap/core/11798
sda           8:0    0 931.5G  0 disk
├─sda1        8:1    0   512M  0 part
└─sda2        8:2    0   931G  0 part
sdb           8:16   0   1.8T  0 disk
├─sdb1        8:17   0   512M  0 part  /boot/efi
└─sdb2        8:18   0   1.8T  0 part  /
sdc           8:32   0   1.8T  0 disk
└─sdc1        8:33   0   1.8T  0 part  /data2
sdd           8:48   0   3.7T  0 disk
└─md126       9:126  0   3.7T  0 raid0
  └─md126p1 259:0    0     2T  0 md    /data
sr0          11:0    1  1024M  0 rom

发现sdd下面是md126 md126p1,想起来有一块盘做成了raid0,挂载时不能按照sda、sdb、sdc的命名方式挂载,需要用/dev/md126p1,但这不是问题,因为fstab文件中确实使用了/dev/md126p1,但不应该挂载/dev/sdd1了啊,其实是这次重启之后原来的sdd1变成了现在的sdc1,可能因为上次的磁盘是热插入的,重启之后根据插入口的顺序重新分配了设备名,把fstab文件中的sdd1改成sdc1,重新mount -a成功,进入/data2查看文件,确实是之前sdd1上的。

重启会重新分配设备名导致挂载失败的问题,根据linux下磁盘sda,Linux下磁盘设备文件(sda,sdb,sdc….)变化问题_林声飘扬的博客-CSDN博客这篇博文的说法,目前没有办法直接解决,但是可以通过指定id和uuid的方式挂载而不使用sda、sdb这种名称来绕过这个问题
使用
ls -la /dev/disk/by-id
ls -la /dev/disk/by-uuid
可以看到这些id和uuid就是指向sda、sdb之类的软连接,而id和uuid每次启动是固定的,那么这些软连接应该是在启动过程中生成的。
最后保险起见,我将fstab文件中的挂载设备改成了id表示
# /dev/sdc1       /data2        ext4    defaults 0      0
/dev/disk/by-id/ata-ST2000NM0055-1V4104_ZC20W9TN-part1 /data2            ext4    defaults 0      0
只有注册用户登录后才能发表评论。