作者Vdragon (V字龙)
看板Linux
标题Re: [问题] 跳attempt to access beyond end of devi
时间Tue Sep 27 11:55:11 2016
抱歉都吃完隔天早餐了才上来回,以下为试图理解作业系统在说什麽仅供参考
另外很抱歉的事情是我看错数字所以也不知道问题是出在哪里,以下是分析资料
※ 引述《junorn (威廉华勒斯)》之铭言:
: 在/var/log/message里面纪录是每五分钟左右跳一次
: localhost kernel: sda: sda
: localhost kernel: attempt to access beyond end of device
: localhost kernel: sdc1: rw=0, want=3907027088, limit=3907027087
作业系统核心:「/dev/sdc1的地址只有到3907027087,那个叫我读3907027088地址的程式是在叫三小。」
: 爬Google是有看到说partition有问题,所以用fdisk -l
: sdc部分显示如下
: Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
磁碟有3907029168个磁区(定址从0到3907029167)
: Units = sectors of 1 * 512 = 512 bytes
: Sector size (logical/physical): 512 bytes / 4096 bytes
: I/O 大小 (最小/最佳化):4096 位元组 / 4096 位元组
: Disk label type: gpt
: # Start End Size Type Name
: 1 2048 3907029134 1.8T Linux filesyste Linux filesystem
1. (八成是由 libparted 所切出之)第0~2047磁区前1MiB的空间为保护用MBR(Protective MBR)、主GUID分区表表头(Primary GPT Header)、与磁区对齐(sector alignment)之用
2. 第2048~3907029134磁区为/dev/sdc1分区
* 第2048磁区为/dev/sdc1分区的第0磁区
* 分区最後一磁区为第3907029134-2048+1=3907027087磁区
3. 第3907029135~3907029167磁区为GUID分区表的次GUID分区表表头(Secondary GPT Header),
* 此区域大小为3907029167-3907029135+1=33个磁区,与次GUID分区表表头应该要有的大小吻合
原本我以为作业系统核心的讯息是针对/dev/sdc而非/dev/sdc1,而3907029134>3907027088代表磁碟分割表登录之/dev/sdc1分区的边界超出/dev/sdc的磁碟有效磁区范围造成系统在试图存取/dev/sdc1时触发错误讯息
但是实际上磁区编号是从分区开头算(要扣掉2048再加一)所以是完全错误的推论
个人推测可能造成错误讯息的原因:
* 有有权限可直接存取磁碟的程式试图读取超过分区有效磁区范围的磁区
* 解决方式:找到它,干掉它
* 作业系统核心有程式缺陷造成误存取错误的磁区(范例:
https://github.com/stec-inc/EnhanceIO/issues/9 )
* 解决方式
* 试试看用更新版本的 Linux 作业系统核心启动看看还会不会触发相同的问题
* 如果有使用 Linux 作业系统核心来源码树外的第三方作业系统核心模组请试着停用看看能不能重现该问题
* /dev/sdc1 档案系统(的 superblock?)设定有问题让档案系统误以为其范围有超过分区有效磁区范围
* 检查方式:EXT 档案系统应有工具可以检查 EXT 档案系统的详细状态
※本文章由 Creative Commons BY-SA 4.0 授权条款或其任意更近期版本释出供大众在授权范围内自由使用
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.17.177
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1474948515.A.6B5.html
※ 编辑: Vdragon (61.230.17.177), 09/27/2016 12:04:50
1F:推 junorn: 感谢您提供的资料:-),昨天重割磁区之後那讯息是没有了 09/27 13:59
2F:→ junorn: 但因为您这边提供的资料所以我去查了一下似乎是有程式在 09/27 14:00
3F:→ junorn: 存取的样子没错。 09/27 14:01
4F:→ junorn: 用journalctl去看发现那几个讯息出来前都会有这一行 09/27 14:02
5F:→ junorn: CROND[23954]: (root) CMD (/usr/lib64/sa/sa1 1 1) 09/27 14:03
6F:→ junorn: 爬Google似乎是Sysstat,还不知道这是甚麽研究中冏> 09/27 14:04
7F:推 junorn: 喔喔应该是无关,不是每一次都有而且产生时间也有落差应该 09/27 14:25
8F:→ junorn: 是两个不同事件0rz... 09/27 14:26
※ 编辑: Vdragon (118.166.92.253), 09/27/2016 14:26:51
9F:推 Debian: 推荐文章与CC授权。 09/28 10:16