ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

处理OSS上传失败一例

2019-01-30 08:54:02  阅读:530  来源: 互联网

标签:UTC BIOS 一例 OSS clock 系统 etc 时间 上传


问题描述:

上传oss云存储,无法成功,报错:

2019-01-29 17:44:59,552 oss2.api [ERROR] 140080008111872 : Exception: {'status': 404, 'x-oss-request-id': '5C50209BAE509FEEA16D753E', 'details': {'Code': 'NoSuchKey', 'Message': 'The specified key does not exist.', 'RequestId': '5C50209BAE509FEEA16D753E', 'HostId': 'dsideal-yy.oss-cn-qingdao.aliyuncs.com', 'Key': 'AreaBackup/6C:92:BF:A4:E6:5E/Mysql/mysql-2019-01-29_17-10-31.tar.gz'}}   思路: 一直怀疑是因为系统时间不对,导致与OSS时间对比失败,但查看 date -R,一切正常,蒙逼一天。   后续办法:是不是系统时间除了date -R看到的时区,还有一个硬件的概念,就着手将硬件的时间、时区一并修改。
针对中国时区,修改操作如下
1. 修改文件 /etc/sysconfig/clock内容: ZONE=Asia/Shanghai UTC=false ARC=false 2. (针对同步时区不成功,执行下面步骤就行!!!) rm -rf /etc/localtime ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

补充:

系统时间变化原因分析

Linux的时间有两种,一是系统时间,另外是硬件时间(BIOS时间)。

系统每次启动时会读出BIOS时间,将之赋给系统时间。之后系统时间将独立运行,而BIOS时间不会变化。

在BIOS时间中,有两种表示形式。一种是以localtime表示的,一种是以UTC表示的。具体查看的方式可以通过hwclock –debug,该命令可以输出当前硬件时间的表示形式。

 
下面例举各种情况下系统时间的变化:

1.当hwclock设定为localtime,/etc/sysconf/clock 中的 UTC=true时,重启后系统时间后相对于BIOS时间被提前8个小时。

2.当hwclock设定为localtime,/etc/sysconf/clock中的 UTC=false时,重启后系统时间相对于BIOS时间没有变化

3.当hwclock设定为UTC,/etc/sysconf/clock 中的 UTC=true时,重启后系统时间后相对于BIOS时间无变化

4.当hwclock设定为UTC,/etc/sysconf/clock 中的 UTC=false时,重启后系统时间后相对于BIOS时间被推后8个小时。

如下图所示:

/etc/sysconf/clock中UTC=true
   
/etc/sysconf/clock中UTC=false

硬件时间 localtime
   
重启后系统时间后相对于BIOS时间被提前8个小时   

系统时间无变化

硬件时间 UTC   

系统时间无变化   

重启后系统时间后相对于BIOS时间被推后8个小时


可见,当BIOS时间设置的类型和 /etc/sysconf/clock中的设置不一致时,就会导致系统启动时的系统时间错误。

如果有脚本实现时间同步,但是系统启动之后运行的。虽然时间同步可以将系统时间同步到正确时间,但是由于之前的系统时间错误设定,将会出现一个错误的时间间隔,这个时间间隔可能会对依赖系统时间的程序产生影响。

对策:出现这种问题的根本原因是硬件时间的类型和 /etc/sysconf/clock中的设置不一致。所以我们将在时间同步脚本中增加对硬件时间的同步,这样可以解决这种问题。

注:

UTC时间:世界协调时间(Universal Time Coordinated,UTC) ,也就是0时区的时间

CST时间:CST China Standard Time UTC+8:00 中国沿海时间(北京时间),这是我们所属时区的localtime。

2.关于时区的设置:

为保证时间的正确,应该把时区设置正确。设置正确仅是为了使得时间更好理解和其他方面的维护。

设置方法:

1.       手动设置时区:

例如:设置东八区的时间

                ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

                编辑/etc/sysconfig/clock中 ZONE="Asia/Shanghai"

2.        使用图形化命令设置

system-config-date (大部分情况仅限于RedHat和CentOS)或者使用 tzselect,按照命令提示进行即可。

标签:UTC,BIOS,一例,OSS,clock,系统,etc,时间,上传
来源: https://www.cnblogs.com/littlehb/p/10336609.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有