前言

前言

Openstack 是一款开源的软件平台,能够让你搭建在商用硬件上运行的基础设施即服务(IaaS)的云系统。

OpenStack简介

OpenStack 信奉开源以及开放式的设计和开发模式,它的一切都基于开源社区,人人都能参与其中。OpenStack 的长期愿景是提供普适的开源云计算平台,满足各种规模的公有云和私有云的需求。OpenStack 服务通过数据中心控制着大量的计算、存储以及网络资源。

OpenStack 技术的背后是一系列相互关联的项目,它们为云基础架构解决方案提供了不同的组件。每一项组件服务都提供了开放的应用程序编程接口(API),这样所有的资源都可以通过控制面板(dashboard)进行管理。在给予管理员控制的同时也给予普通用户分配资源的能力,用户可以通过 Web 界面、命令行客户端或者通过支持 API 的软件开发工具分配资源。很多 OpenStack API 都是可扩展的,你可以在保持核心调用兼容性的同时,通过调用 API 扩展访问更多的资源。OpenStack 项目是全球开发者与云计算专家合作的成果,它提供了开放标准的公有云和私有云计算平台。专注于易实施、能大规模扩展、功能丰富且极具扩展能力这些特性,项目的目标是向各种组织提供实用且可靠的云计算解决方案。

开始OpenStack之旅

作为一项开源项目,OpenStack 独特的一点就是你可以从各种级别开始参与其中,而无需亲自去做每一件事。

使用OpenStack

你可能会问 :“我是不是得自己搭建一套云系统?”如果你只是想刷刷信用卡,并因此用到计算和存储服务,那么大可以使用 eNovance、惠普、RackSpace 以及其他组织的 OpenStack 公有云。使用他们的 OpenStack 云资源与访问 Amazon Web Services Elastic Compute Cloud(EC2)或 Simple Storage Solution(S3)极为类似。

即插即用OpenStack

然而,OpenStack 的迷人之处是可以用来建设你自己的私有云,而且你可以通过很多种方式来完成这个目标。也许最简单的就是软硬件一体机式的解决方案。你买来软硬件一体机,拆封并接入电源和网络,看着它在最小配置的情况下转变成 OpenStack 云系统。很少(如果有的话)有其他开源云产品有这样的全权承包的方式,如果你对这种全权承包式解决方案感兴趣,可以看一看 Nebula One。

然而,对于很多应用程序而言硬件的选择十分重要,如果你也面临这种情况,可以考量多种可用的软件发行版,让它们运行在你所选择的服务器、存储和网络产品上。Canonical(2011 年 OpenStack 代替了 Eucalyptus 成为其默认的云系统)、Red Hat 和 SUSE 都提供了企业级的 OpenStack 解决方案和支持。你也许还想看一些特殊的发行版,例如那些来自 Rackspace、Piston、SwiftStack 或者 Cloudscaling 的版本。另外也要向 Apache CloudStack 表示敬意,在两亿美元购得 Cloud.com 后,Citrix 将 CloudStack 捐赠给了 Apache 基金会。还有一些程序目前未在任何版本中打包发行,比如 Eucalyptus,它是用一种类开源的方式开发的可供选择的私有云软件。

如果你想找人帮忙指导,从底层硬件一直到应用程序帮你做一些决策,在这个过程中添加一些功能或者集成组件,那么可以考虑联系具有 OpenStack 经验的系统集成商,例如 Mirantis 或者 Metacloud。

如果你倾向于培养自己的 OpenStack 专长,参加或者安排一次培训就是很好的开始。OpenStack 基金会最近启动了 Training Marketplace(http://opsgui.de/NPH6JZ),在那里你可以找到附近的活动。另外,OpenStack 社区也在制作开源的培训材料(http://opsgui.de/1eLCyio)。

亲手部署OpenStack

然而,这本指南面向另外一些读者,这些读者希望通过 DIY 的方式,从 OpenStack 框架中获得最大的灵活性。

OpenStack 的设计充分考虑到了扩展性,因此随着时间的推移你很容易添加计算、网络和存储资源来壮大你的云系统。除了几个大规模的 OpenStack 公有云,还有很多其他的组织(例如 Paypal、英特尔和 Comcast)都建造了大规模的私有云。OpenStack 不仅仅是提供了软件包这么简单,它使你整合大量的不同技术来建造一个云环境。这种方式提供了巨大的灵活性,但是大量的配置选项也可能让你一开始感到迷茫。

目标读者

本书面向那些着手构建 OpenStack 云系统的人,还有那些刚刚接手了一个运行中的 Openstack 云系统,并希望它能够良好运行的人。也许你来自一个 DevOps 团队,也许你是一名刚刚涉足云系统的系统管理员,又或者你想要在公司内部组建一支 OpenStack 云团队,那么这本书就是为你准备的。

这份指南假定你已经熟悉支持 OpenStack、SQL 数据库和虚拟化技术的 Linux 发行版,并且可以轻松地管理和配置多台 Linux 网络主机。你必须会安装和维护 MySQL 数据库,偶尔也需要对其运行查询命令。

OpenStack 云系统的复杂性之一在于网络配置。你应当熟悉动态主机配置协议(DHCP)、Linux 网桥、虚拟局域网(VLAN)以及 iptables 的基本概念。你还得认识一位能够配置 Openstack 云系统交换机和路由器的网络硬件专家。

 由于云计算是一个相对前沿的主题,阅读本书需要大量的背景知识。如果你在这方面是个新手,我们建议你查阅本书后面的术语表、OpenStack 在线文档以及本书附录 E 中提到的其他资源。

延伸阅读

OpenStack 文档网站(http://docs.openstack.org)上有其他参考资源可以为你提供帮助。

  • OpenStack Installation Guides《OpenStack安装指南》

    介绍了手动安装步骤,对基于封装系统的多种发行版进行安装。

    • “Installation Guide for Debian 7.0”(“Debian 7.0 下的 OpenStack 安装指南”,参见 http://opsgui.de/1eLBGtX)。

    • “OpenStack Installation Guide for openSUSE and SUSE Linux Enterprise Server”(“openSUSE 和 SUSE Linux Enterprise Server 下的 OpenStack 安装指南”,参见 http://opsgui.de/1eLBI50)。

    • “OpenStack Installation Guide for Red Hat Enterprise Linux, CentOS, and Fedora”(“Red Hat Enterprise Linux、CentOS 和 Fedora 下的 OpenStack 安装指南”,参见 http://opsgui.de/NPGvrs)。

    • “OpenStack Installation Guide for Ubuntu 12.04 (LTS)”(“Ubuntu 12.04 (LTS) Server 下的 OpenStack 安装指南”,参见 http://opsgui.de/NPGunp)。

  • OpenStack Configuration Reference《OpenStack配置参考》,参见http://opsgui.de/1eLCDTf

    包含 OpenStack 核心组件及集成组件的完整配置选项的参考清单,按发行版本分类。

  • OpenStack Cloud Administrator Guide《OpenStack云管理员指南》,参见http://opsgui.de/1eLBL0N

    为管理 OpenStack 云系统,如存储、计算或者软件定义网络等用例需要提供操作指导。

  • OpenStack High Availability Guide《OpenStack高可用性指南》http://opsgui.de/1eLCEGD

    描述了一些可能的策略,使你的 OpenStack 服务与相关的控制器和数据存储具有高可用性。

  • OpenStack Security Guide《OpenStack安全指南》http://opsguid.de/NPG4NW

    提供了能让 OpenStack 云系统更加安全的最佳实践方法和概念信息。

  • OpenStack Virtual Machine Image Guide《OpenStack虚拟机镜像指南》,http://opsgui.de/1eLCHlR

    向你展示了如何获得、创建和修改 OpenStack 所兼容的虚拟机镜像。

  • OpenStack End User Guide《OpenStack终端用户指南》http://opsgui.de/NPHaJI

    向 OpenStack 终端用户展示了如何使用 OpenStack 控制面板和 OpenStack 客户端命令,在 OpenStack 云系统中创建和管理资源。

  • OpenStack Admin User Guide《OpenStack管理员指南》http://opsgui.de/1eLBkDJ

    向 OpenStack 管理员展示了如何使用 OpenStack 控制面板和 OpenStack 客户端命令,在 OpenStack 云系统中创建和管理资源。

  • OpenStack API Quick Start《OpenStack API快速入门》http://opsgui.de/NPHdVO

    简要介绍了如何向 OpenStack 服务端点发送 REST API 请求。

本书内容

本书分为两部分,架构部分讲解如何设计 OpenStack 云系统,第二部分则讲解运行 OpenStack 云系统的日常操作。

第一部分

第 1 章 由于其他各章会特定于组件部分探讨相应的决策,这一章将从整体上说一说本书所特有的决策,并给出架构示例的说明。

第 2 章 本书并不详细介何安装,我们强烈建议进行自动部署和配置;我们会在这章进行讨论。

第 3 章 云控制器描述了哪些节点运行哪些服务。这一章将会讨论硬件和网络方面的注意事项,同时谈谈如何设计云控制器来兼顾性能以及服务的分隔。

第 4 章 这一章介绍专门用于运行虚拟机的计算节点。我们会讨论硬件的选择,还有日志和网络系统。

第 5 章 这一章将会探讨如何通过扩展和隔离来应对云系统的增长。

第 6 章 同其他那些架构选择一样,OpenStack 的存储系统也需要全面考量,这一章将会向你展示这些选择。

第 7 章 你的 OpenStack 云网络不仅需要能够适应现有网络,还要为用户和管理员提供最好的设计,这章将深度解析有关网络的决策。

第二部分

第 8 章 这一章将会教你使用命令行工具与 OpenStack 进行交互,了解云系统中的哪些部分已经被设置妥当。

第 9 章 这一章梳理了管理员必须处理的用户授权工作:管理用户、分配资源配额及其他。

第 10 章 这一章展示如何使用 OpenStack 云资源和培训用户。

第 11 章 这一章介绍一些作者在生产环境中运行云系统时经常遇到的一些故障,并给出解决方式。

第 12 章 鉴于虚拟资源的网络故障诊断与维修相当困难,这一章讲了很多小技巧和窍门,帮助你跟踪网络流量、查找网络故障的根本原因,并对 DHCP 和 DNS 等服务故障进行排查。

第 13 章 这一章告诉您 OpenStack 将日志放在何处,以及如何以最佳的方式读取和管理日志以便执行监控。

第 14 章 这一章介绍 OpenStack 中需要备份的资源,以及恢复备份的最佳实践。

第 15 章 你有时会需要添加一些特殊的功能到 OpenStack 中,这一章描述了如何利用 DevStack 编写定制化的中间件或定制化调度程序来实现资源的再平衡。

第 16 章 由于 OpenStack 的开放性,这一章专门帮你寻找社区,找到可以寻求帮助或为他人提供帮助的地方。

第 17 章 OpenStack 中的很多部分都是以驱动为基础的,对于它的那些基础服务,你可以添加不同的解决方案。这一章介绍了这样一些高级配置主题。

第 18 章 本章提供了针对书中所用架构的升级信息。

补充资料

附录 A 这里有来自 OpenStack 社区的一小部分用例,包含一些技术细节及其他资源。

附录 B 这里分享一些传奇的故事,例如镜像消失、VM 大规模损坏以及一些疯狂的排障技术,分享诸如此类惨痛的教训和应对智慧。

附录 C 介绍如何通过开放和透明的开发流程来追踪 OpenStack 的路线图。

附录 D OpenStack Icehouse 版本新特性预览。

附录 E 由于 OpenStack 项目的飞速发展,网络上现存有大量的可用资源。这里也列出了一些作者们在学习过程中发现的有用资源。

术语表 这里列出本书中使用的术语,它们只是网上 OpenStack 庞大术语资源中的一部分。

关于本书

之所以要写这本书,这是因为我们部署和维护 OpenStack 云系统已经一年多了,我们希望能够把这些知识传播给大家。在成为 OpenStack 云系统核心成员几个月后,我们也想准备一份文档交给我们的系统管理员们,让他们知道如何进行云系统的日常管理(包括被动管理和主动管理)。我们想为部署决策提供更多详细的技术信息。

我们写作这本书是想在以下几个方面为你提供帮助。

  • 设计和创建你的第一份至关重要的 OpenStack 云系统架构。在阅读这本指南之后,你会知道要问哪些问题,知道如何组织你的计算、网络、存储资源,以及那些相关的软件包。

  • 执行管理云系统所需的日常维护工作。

我们用“图书速成法”(book sprint)写了这本书,这是一种简便快捷的出书方式。想了解更多信息,请访问 Book Sprint 站点(www.booksprints.net)。2013 年 2 月,我们在咖啡因和得克萨斯奥斯汀所能提供最好外带食物的激励下,于 5 天之内创作出了这本书。

第一天,我们用彩色便利贴粘满了白板,来构思这本还在朦胧中的关于如何架构和运维云系统的书(参见下图)。

{%}

基于自身经验和彼此观点碰撞出的火花,我们奋笔疾书,定期复审它的框架和结构,并进一步予以完善,最终辛苦写成。

本书的写作团队由以下成员构成。

  • Tom Fifield

    从粒子物理实验(例如欧洲核子研究中心的大型强子对撞机的超环面仪器)中学习了计算的扩展性知识后,Tom 曾经从事支持澳大利亚公共研究部门的 OpenStack 云生产系统工作。目前,Tom 负责 OpenStack 社区管理,并且在闲暇时间致力于 OpenStack 文档的编制。

  • Diane Fleming

    Diane 不知疲倦地为 OpenStack API 文档编制努力工作,她在这个项目中一直努力尽其所能。

  • Anne Gentle

    Anne 是 OpenStack 的文档管理协调员。2011 年,她作为一名独立贡献者参加了该年的谷歌文档峰会,与“开放街景地图项目”团队一起工作。Anne 曾经在 FLOSS Manuals 的 Adam Hyde 机构从事图书速成项目。她住在得克萨斯州的奥斯汀。

  • Lorin Hochstein

    作为一位学者转型的软件开发和运维人员,Lorin 曾经是 Nimbis Services 公司的云服务首席架构师,在那里他为技术计算应用程序部署了 OpenStack。从 Cactus 版本发行起,他就已经开始参与 OpenStack 项目。此前,他在南加州大学信息科学研究所(USC-ISI)从事 OpenStack 的高性能运算扩展组件工作。

  • Adam Hyde

    Adam 促成了这本书的速成。他创建了图书速成方法学,是最富经验的图书速成推动者。你可以浏览 http://www.booksprints.net 网站了解更多信息。Adam 创建了 FLOSS Manuals —— 一个拥有约 3000 名为自由软件开发自由手册的工作者的社区。他也是 Booktype 的创建者和项目经理,那是一个撰写、编辑和发布在线图书和纸质图书的开源项目。

  • Jonathan Proulx

    在麻省理工学院计算机科学和人工智能实验室,因为研究员需要足够多的计算资源,Jonathan 作为高级技术架构师已经试用过 OpenStack 云。他向 OpenStack 贡献文档并做文档审查,以加速他的学习。

  • Everett Toews

    Everett 是 Rackspace 公司的一名开发人员和倡导者。Rackspace 公司致力于 OpenStack 和 RackSpace 云系统的易用性。作为开发人员、倡导者和运维人员,他构建 Web 应用程序,在讲习班授课,在世界各地演讲,并且为学术和商业机构部署生产用途的 OpenStack。

  • Joe Topjian

    Joe 已经在 Cybera 设计和实施了多套云系统。在 Cybera 这个非营利性组织中,他们正在建造网络基础设施,为加拿大阿尔伯塔市的企业家和当地的研究人员提供帮助。作为系统架构师,他也积极地维护和操作着这些云系统,他的经历为云环境的排障积累了很多宝贵经验。

  • OpenStack社区成员

    作为一本社区图书,它离不开众多个人贡献者的帮助。我们的社区成员全年都在对本书内容进行更新。另外,在初次成书的一年后,Jonathan Proulx 在麻省理工学院组织了第二次为期两天的小型冲刺式编写,目标是将本书针对最新版本进行更新。从这本书诞生之日开始,有超过 30 名贡献者提供了帮助。我们有一条审校、持续构建和翻译的工具链。作者和开发者不断地审校补丁、报告文档 bug、编辑内容并修复文档 bug。对于他们的贡献,我们表示真挚的感谢!

    以下各位均为本书做出了贡献:Akihiro Motoki、Alejandro Avella、Alexandra Settle、Andreas Jaeger、Andy McCallum、Benjamin Stassart、Chandan Kumar、Chris Ricker、David Cramer、David Wittman、Denny Zhang、Emilien Macchi、Gauvain Pocentek、Ignacio Barrio、James E. Blair、Jay Clark、Jeff White、Jeremy Stanley、K Jonathan Harker、KATO Tomoyuki、Lana Brindley、Laura Alves、Lee Li、Lukasz Jernas、Mario B. Codeniera、Matthew Kassawara、Michael Still、Monty Taylor、Nermina Miller、Nigel Williams、Phil Hopkins、Russell Bryant、Sahid Orentino Ferdjaoui、Sandy Walsh、Sascha Peilicke、Sean M. Collins、Sergey Lukjanov、Shilla Saebi、Stephen Gordon、Summer Long、Uwe Stuehler、Vaibhav Bhatkar、Veronica Musso、Ying Chun“Daisy”Guo、Zhengguang Ou 和 ZhiQiang Fan。

为本书做贡献

本书的诞生源于个人行为,但是现在既然已经出版面市,我们希望大家也可以参与进来。OpenStack 的文档遵循了迭代的编码原则,有 bug 记录、调查以及修复这样的过程。我们也把源码内容放到了 Github 网站上,并通过 OpenStack Gerrit 工具邀请协作者帮助审校。

对于本书的 O'Reilly 版本,我们使用了该公司的 Atlas 系统,同样也是将源码内容放到了 Github 网上,使参与者们能进行协助。

欲了解更多关于向 OpenStack 文档做贡献的内容,请参考“Documentation How to”(http://opsgui.de/1eLCK10)。

如果你发现了 bug 并且无法修复它,或者并不确定它是否是文档 bug,请在 OpenStack Manuals(http://opsgui.de/NPHdoC)中记录一个 bug。请在 Extra options(额外选项)中用 ops-guide 标签来标记这个 bug,以指示此 bug 出现在这本指南中。如果你知道如何修复 bug,可以将这个 bug 指派给自己。另外,OpenStack 文档核心团队的成员可以对文档 bug 进行鉴别分类。

排版约定

本书使用了下列排版约定。

  • 楷体

    表示新术语。

  • 等宽字体(constant width

    表示程序代码,也用于在正文中表示程序中使用的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

  • 等宽粗体(constant width bold

    表示应该由用户逐字输入的命令或者其他文本。

  • 等宽斜体(constant width italic

    表示应该由用户输入的值或根据上下文决定的值替换的文本。

  • 命令提示符

    # 提示符为前缀的命令需要 root 用户权限来执行。如果支持,这些例子也可以使用 sudo 命令来执行。以 $ 提示符为前缀的命令可以由任意用户执行,包括 root 用户。

 这个图标表示提示或建议。

 这个图标表示一般性说明。

 这个图标表示警告或提醒。

使用代码示例

读者可以在这里下载本书的相关资料(代码示例、练习题等):https://github.com/openstack/openstack-manuals

本书的目的是帮助你完成工作。一般而言,你可以在自己的程序或文档中使用本书中的代码示例。除非大段大段地复制,否则你不必与我们联系以取得许可。例如,无需请求许可,你就可以用本书中的几段代码写成一个程序。但是销售或者发布 O'Reilly 图书中代码的光盘则必须事先获得许可。引用书中的内容或代码来回答问题也无需许可。将大段的示例代码整合到你自己的产品文档中则必须经过许可。

使用我们的代码时,我们希望你能指明它的出处,但不强求。出处一般包括书名、作者、出版商和 ISBN,例如:OpenStack Operations Guide by Tom Fifield, Diane Fleming, Anne Gentle, Lorin Hochstein, Jonathan Proulx, Everett Toews, and Joe Topjian (O'Reilly). Copyright 2014 OpenStack Foundations, 978-1-491-94695-4。

如果还有关于使用代码的未尽事宜,请随时通过电子邮件与我们联系:permissions@oreilly.com。

Safari® Books Online

{%}

Safari Books Online(http://www.safaribooksonline.com)是按需获取的数字图书馆。它同时以图书和视频的形式出版世界顶级的技术和商务作家的专业作品。

Safari Books Online 是技术专家、软件开发人员、Web 设计师、商务人士和创意人士开展调研、解决问题、学习和认证培训的第一手资料。

对于组织团体、政府机构和个人,Safari Books Online 提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问 O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解 Safari Books Online 的更多信息,我们网上见。

联系我们

请把对本书的意见和疑问发送给出版社。

美国:

 O'Reilly Media, Inc.

 1005 Gravenstein Highway North

 Sebastopol, CA 95472

中国:

 北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

 奥莱利技术咨询(北京)有限公司

本书有一个专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。网页地址是:

http://bit.ly/openstack-ops-guide

对于本书的评价或技术性问题,请发送电子邮件到:

bookquestions@oreilly.com

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

http://www.oreilly.com

我们在 Facebook 的网址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频网址如下:http://www.youtube.com/oreillymedia

致谢

OpenStack 基金会为本书的创作提供了支持,包括前往奥斯汀的机票、住宿(包括一次因为风暴而导致停电的“冒险之夜”)、可口的食物。为了大概 10 000 美元,我们在 Racksapce 奥斯汀办事处的一个房间里紧密合作了一个星期。作者们都是 OpenStack 基金会的成员,我们也期待着你的加入。基金会网站:http://opsgui.de/1eLCVcx

我们想对出色的东道主,即 Rackspace 公司奥斯丁办事处的员工们表示感谢。

  • Rackspace 公司客户关系部门的 Emma Richards 周到地为我们订午餐,甚至帮我们把从墙上掉落的便利贴在旁边摆成一排。

  • Betsy Hagemeier,热心的行政助理,帮忙整理房间并将我们在那个星期里安顿妥帖。

  • 奥斯汀 Rackspace 的不动产团队,也被誉为“胜利者们”,他们有求必应。

  • IT 部门的 Adam Powell 为我们提供了带宽服务和额外需要的显示器。

  • 星期三晚上我们在 Austin OpenStack 小组见面会上玩得很开心,Rackspace 的 Katie Schmidt 帮了我们大忙。

我们也想对来自其他方面的贡献表示感谢。

  • 来自 CERN 的 Tim Bell 在我们开始和中期回顾之前对本书的大纲提出了宝贵建议。

  • Sebastien Han 写了一些极好的博文,并且慷慨地允许我们可以重用。

  • Oisin Feeley 读了本书之后做了一些修改,并在我们征求其意见的时候及时提供邮件反馈。

Adam Hyde 作为我们的图书冲刺推进者,每天在这间图书冲刺的屋子里陪伴着我们。如果没有他的鼓励和不知疲倦的支持,很难想象我们可以在五天内完成本书。Adam 一次又一次地证明图书冲刺是种行之有效的方法。他在网站 http://www.booksprints.net 上提供了协作写书的工具和信念。

没有这些帮助和鼓励,我们无法完成本书。

关于封面图

本书封面动物是凤头刺鼠(Dasyprocta cristata),一种在南美洲国家圭亚那和苏里南发现的啮齿类动物。cristata 一词来源于葡萄牙语的 crista,意思是“羽冠”(crest)。据推测,这是指动物脖子周围厚厚的衣领状皮毛。然而,它的分类存疑:在 1978 年,科学 家 A.M. 哈森推理凤头刺鼠与红尾刺鼠(Dasyprocta leporina)为同一物种,与其分布在相同的地理区域。由于此事尚未明确解决,我们很难确定物种的丰度和范围,因此它被国际自然与自然资源保护联合会(IUCN)分类到数据缺失类别。

刺鼠与豚鼠相似,但是刺鼠通常来说体型较大并有更长的腿。它们都有很短的无毛尾巴以及粗糙皮毛。它们的食物包括水果、坚果、树根和树叶;它们坐在后腿上,由前爪抓住食物进食。刺鼠是少有的可以无需工具打开巴西坚果的物种(包括金刚鹦鹉)。使用锋利的牙齿,它们可以咬开坚硬的外壳拿到里面的果实。

O'Reilly 图书封面上的很多动物都是濒危物种,它们对我们所生活的世界非常重要。想要了解更多有关如何提供帮助的信息,请访问 http://animals.oreilly.com

目录