ITPUB

修改Linux存储挂载点时遇到的离奇问题

先把好友打个广告Image,19C OCM课程由大佬“尹海文”主讲

Image
尹海文 Oracle ACE、某科技公司DBA总监
拥有Oracle ACE 、OCM 11g/12c/19c,MySQL 8.0 OCP、Exadata、CDP等认证。墨天轮MVP、认证技术专家、年度墨力之星、ITPUB认证专家。
目前主要从事通讯运营商行业相关数据库工作,
10年数据库行业从业经验,擅长Oracle数据库包括运维管理、架构设计与实施、性能调优等;丰富的Oracle Exadata数据库一体机实战经验;熟悉其他数据库,如MySQL、Redis、MongoDB、ES等。

有需要的小伙伴按下图报名
👇👇👇

Image

下面开始正文

1、说说问题的场景

朋友有个服务器A通过ISCSI多路径挂载了一个存储,多路径共合并成8块磁盘,每块磁盘58T,通过LVM合并成1个大的VG,划成了XFS文件系统挂载到主机的/var/www目录下。

现在要把映射给A服务器的这些个存储卸载,映射给B服务器。

2、说说操作步骤

这个整体上来说不难,总的来说几步

1、在A服务器关闭应用

2、fuser -ck /var/www 彻底杀死目录进程

3、umount /var/www

4、断开所有ISCSI连接

iscsiadm -m node -U all

5、刪除所有 node 信息 :
iscsiadm -m node --op delete
6、登录到B服务器,安装multipath,安装open-iscsi,把A主机的multipath.conf拷贝过来到/etc下
7、把ISCSI连线接到B服务器,修改存储端映射的IQN启动器名称
8、使用以下命令重新建立链接

iscsiadm -m discovery -t st -p <存储Ip>iscsiadm -m node -p  <存储Ip> -lsystemctl enable iscsi.serviceiscsiadm -m node -o update -n node.startup -v automatic

9、识别到磁盘后,重启multipathd服务,识别LUN
10、lvscan重新扫描,不出意外,lv会自动激活,再检查下vgs/pvs/lvs状态。
11、修改fstab,添加挂载点,再mount -a挂即可恢复。

3、说说问题的现像

这里就奇怪了,朋友说B主机识到别磁盘都对、LVM也正常,但是如果执行mount -a就会返回文件系统有超级块错误。

Image

Image

但是手动挂载mount /dev/mapper/datavg-datalv  /mnt
这都没毛病,而且cd /mnt也可以进行读写操作,这就离谱了!

4、排错解决

即然是提示超级块有错误,于是让他执行检查命令

xfs_repair -n /dev/mapper/datavg-datalv

Image
看了下结果,没什么毛病,为啥会报这个超级块有错呢,整体检查下来没发现啥错误呢。
于是尝试让他再执行下mount -a
然后按提示dmesg |taill 查看有什么报错,结果。。。
提示unknow mount option [defautls]

Image
再看看他发来的配置文件/etc/fstab,问题很明显了,就是写错了个单词!defaults 写成了defautls,一字之差,就报错,哈哈。

Image

5、总结

一个本不复杂的变更,结果搞了半天,最后就是单词写错了。
类似这种问题在Linux上很容易出现,比如你配置文件里多写了个空格、少个{或者'、明明看着一样的配置文件重新粘贴就好用。这些细微差距有时候很难发现。
建议大家修改前做好配置备份、仔细检查核对配文件,以免小错误造成大麻烦。

Image