为MySQL服务器划盘经常会遇到各种各样的问题,究其原因还是重装主机的时候,盘并没有进行完整彻底的格式化,记录下今天遇到的两例问题.
1)分区删除
为了解决装机时偶尔有分区信息残留导致后续初始化失败,脚本中加入了如下代码进行前置操作,无脑清理:
fdisk ${device} <<EOF d
w
EOF
今天某台机器处理时开始报这样的问题:
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): Selected partition 1
Partition 1 is deleted
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
可以看出意思是分区表更新后需要重读,内核信息没有更新。同时也给出了解决方案(很棒!):重启或者运行partprobe或者kpartx。
了解了一下partprobe命令,目标很明确,就是用来通知OS分区表了变化。
partprobe ${device} 即能解决设备分区表更新后的信息同步问题。
2)创建文件系统报错
mkfs.ext4 -m 1 /dev/vgdata/volume2
mke2fs 1.43.5 (04-Aug-2017)Discarding device blocks: done Creating filesystem with 937500672 4k blocks and 234381312 inodes
Filesystem UUID: 0b7bf05c-92cf-42ea-9028-a053753ea1ed
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544
Allocating group tables: done Writing inode tables: done ext2fs_update_bb_inode: Cannot iterate data blocks of an inode containing inline data while setting bad block inode
最后的报错也导致无法进行挂载。报错信息看,应该是块损坏之类的报错,因为是服务器初始化,理论上因为完全是空白盘才对。(/dev/vgdata/volume2是划出一个LV作为MySQL的日志盘。)
解决方案:使用dd将lv上的头部残留信息归0
dd if=/dev/zero of=/dev/vgdata/volume1 bs=1M count=10
然后继续 mkfs.ext4 -m 1 /dev/vgdata/volume2,成功。
参考:
没有评论:
发表评论