2018年4月10日星期二

分区与文件系统问题两例


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的日志盘。

解决方案:使用ddlv上的头部残留信息归0
dd if=/dev/zero of=/dev/vgdata/volume1 bs=1M count=10
然后继续 mkfs.ext4 -m 1 /dev/vgdata/volume2,成功。

参考:




没有评论:

发表评论