Atom feed of this document
  

 块存储配置的故障排查

多数引起块存储的错误是由于错误的卷配置,进而导致卷的创建失败。要解决这些问题,检阅这些日志:

  • cinder-api 日志 (/var/log/cinder/api.log)

  • cinder-volume 日志 (/var/log/cinder/volume.log)

cinder-api 日志对于是否有连接到端点的错误非常的有帮助。如果你发送了一个创建卷的请求,但是其失败了,检阅cinder-api 日志来判断请求是否到达了块存储服务。如果请求被记录而且你没有看到任何的错误或回溯信息,请检查cinder-volume的错误或回溯信息。

[注意]注意

cinder-api日志中会列出创建命令。

这些cinder.openstack.common.log文件中的项可用于块存储配置的故障排查。

# Print debugging output (set logging level to DEBUG instead
# of default WARNING level). (boolean value)
#debug=false

# Print more verbose output (set logging level to INFO instead
# of default WARNING level). (boolean value)
#verbose=false

# Log output to standard error (boolean value)
#use_stderr=true

# Default file mode used when creating log files (string
# value)
#logfile_mode=0644

# format string to use for log messages with context (string
# value)
#logging_context_format_string=%(asctime)s.%(msecs)03d %(levelname)s %(name)s [%(request_id)s %(user)s %(tenant)s] %(instance)s%(message)s

# format string to use for log mes #logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

# data to append to log format when level is DEBUG (string
# value)
#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d

# prefix each line of exception output with this format
# (string value)
#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s

# list of logger=LEVEL pairs (list value)
#default_log_levels=amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARNsages without context
# (string value)

# If an instance is passed with the log message, format it
# like this (string value)
#instance_format="[instance: %(uuid)s]"

# If an instance UUID is passed with the log message, format
# it like this (string value)
# A logging.Formatter log message format string which may use
# any of the available logging.LogRecord attributes. Default:
# %(default)s (string value)
#log_format=%(asctime)s %(levelname)8s [%(name)s] %(message)s

# Format string for %%(asctime)s in log records. Default:
# %(default)s (string value)
#log_date_format=%Y-%m-%d %H:%M:%S

# (Optional) Name of log file to output to. If not set,
# logging will go to stdout. (string value)
#log_file=<None>

# (Optional) The directory to keep log files in (will be
# prepended to --log-file) (string value)
#log_dir=<None>
#instance_uuid_format="[instance: %(uuid)s]"

# If this option is specified, the logging configuration file
# specified is used and overrides any other logging options
# specified. Please see the Python logging module
# documentation for details on logging configuration files.
# (string value) # Use syslog for logging. (boolean value)
#use_syslog=false

# syslog facility to receive log lines (string value)
#syslog_log_facility=LOG_USER
#log_config=<None>

这些常见的问题一般是发生在配置的时候,要更改它,使用这些建议的解决方案。

  • state_pathvolumes_dir 设置带来的错误。

    OpenStack块存储使用tgtd 作为默认的iSCSI 助手以及实现持久的目标。这意味着tgt重启的情况甚至是节点重启,原来节点上已存在的卷回自动的基于它们原来的IQN存储。

    为了使其成为可能,iSCSI target 信息需要在创建时保存在一个文件中,当重启 tgt 守护进程时它可以被查询到。默认情况下,块设备存储会使用 state_path 变量,它在用 YUM 或 APT 安装时会设置在 /var/lib/cinder/ 中。下一个部分是 volumes_dir 变量,默认情况下这仅仅追加一个 "volumes" 目录到 state_path 中。其结果是一个文件树 /var/lib/cinder/volumes/

    安装程序掌控了这一切的话,将会出错。如果你创建卷遇到了错误且此目录不存在,你须查看cinder-volume日志中的错误信息,其中有说volumes_dir不存在,然后就须提供关于寻找路径的信息。

  • 持久的tgt包括的文件。

    除了 volumes_dir 选项之外,iSCSI target 驱动也需要配置为在正确的地方寻找持久文件。这是 /etc/tgt/conf.d 文件中的一个简单入口,这是您在安装 OpenStack 时就设置好的。如果出现了问题,请检查您是否有 /etc/tgt/conf.d/cinder.conf 文件。

    加入文件不存在,使用此命令来创建:

    # echo 'include /var/lib/cinder/volumes/ *' >> /etc/tgt/conf.d/cinder.conf
  • cinder-api 日志中没有挂接调用的标志。

    这可能需要微调nova.conf文件。确保nova.conf有此项:

    volume_api_class=nova.volume.cinder.API
  • 在文件cinder-volume.log中有创建iscsi target失败的错误。

    2013-03-12 01:35:43 1248 TRACE cinder.openstack.common.rpc.amqp ISCSITargetCreateFailed: Failed to create iscsi target for volume volume-137641b2-af72-4a2f-b243-65fdccd38780.

    You might see this error in cinder-volume.log after trying to create a volume that is 1 GB. To fix this issue:

    更改/etc/tgt/targets.conf的内容,将其内容为include /etc/tgt/conf.d/*.conf改变为include /etc/tgt/conf.d/cinder_tgt.conf,如下所示:

    include /etc/tgt/conf.d/cinder_tgt.conf
    include /etc/tgt/conf.d/cinder.conf
    default-driver iscsi

    重启tgtcinder-* 服务,以应用新的配置。

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page


loading table of contents...