Ubuntu Linux 来到 IBM 大型机

Summary: 最终来到了。在 LinuxCon 上，IBM 和 Canonical 宣布 Ubuntu Linux 不久就会运行在 IBM 大型机 LinuxONE 上，这是一种只支持 Linux 的大型机，现在也可以运行 Ubuntu 了。 这个 IBM 发布的最大的 LinuxONE 系统称作Emperor，它可以扩展到 8000 台虚拟机或者上万台容器，这可能是单独一台 Linux 系统的记录。 LinuxONE 被 IBM 称作游戏改变者，它释放了 Linux 的商业潜力。  很快你就可以在你的 IBM 大型机上安装 Ubuntu Linux orange 啦 根据 IBM z 系统的总经理 Ross Mauri 以及 Canonical 和 Ubuntu 的创立者 Mark Shuttleworth 所言，

# Ubuntu Linux 来到 IBM 大型机

最终来到了。在 [LinuxCon](http://events.linuxfoundation.org/events/linuxcon-north-america) 上，IBM 和 [Canonical](http://www.canonical.com/) 宣布 [Ubuntu Linux](http://www.ubuntu.comj/) 不久就会运行在 IBM 大型机 [LinuxONE](http://events.linuxfoundation.org/events/linuxcon-north-america) 上，这是一种只支持 Linux 的大型机，现在也可以运行 Ubuntu 了。

这个 IBM 发布的最大的 LinuxONE 系统称作‘Emperor’，它可以扩展到 8000 台虚拟机或者上万台容器，这可能是单独一台 Linux 系统的记录。

LinuxONE 被 IBM 称作‘游戏改变者’，它‘释放了 Linux 的商业潜力’。

<img src="content_image/album_201508_23_220828vzmwm3cc6y064b68.jpg" alt="" title="">

*很快你就可以在你的 IBM 大型机上安装 Ubuntu Linux orange 啦*

根据 IBM z 系统的总经理 Ross Mauri 以及 Canonical 和 Ubuntu 的创立者 Mark Shuttleworth 所言，这是因为客户需要。十多年来，IBM 大型机只支持 [红帽企业版 Linux (RHEL)](http://www.redhat.com/en/technologies/linux-platforms/enterprise-linux) 和 [SUSE Linux 企业版 (SLES)](https://www.suse.com/products/server/) Linux 发行版。

随着 Ubuntu 越来越成熟，更多的企业把它作为企业级 Linux，也有更多的人希望它能运行在 IBM 大型机上。尤其是银行希望如此。不久，金融 CIO 们就可以满足他们的需求啦。

在一次采访中 Shuttleworth 说 Ubuntu Linux 在 2016 年 4 月下一次长期支持版 Ubuntu 16.04 中就可以用到大型机上。而在 2014 年底 Canonical 和 IBM 将 [Ubuntu 带到 IBM 的 POWER](http://www.zdnet.com/article/ibm-doubles-down-on-linux/) 架构中就迈出了第一步。

在那之前，Canonical 和 IBM 差点签署了协议 [在 2011 年实现 Ubuntu 支持 IBM 大型机](http://www.zdnet.com/article/mainframe-ubuntu-linux/)，但最终也没有实现。这次，真的发生了。

Canonical 的 CEO Jane Silber 解释说 “[把 Ubuntu 平台支持扩大](https://insights.ubuntu.com/2015/08/17/ibm-and-canonical-plan-ubuntu-support-on-ibm-z-systems-mainframe/)到 [IBM z 系统](http://www-03.ibm.com/systems/uk/z/) 是因为认识到需要 z 系统运行其业务的客户数量以及混合云市场的成熟。”

**Silber 还说：**

>
> 由于 z 系统的支持，包括 [LinuxONE](http://www.zdnet.com/article/linuxone-ibms-new-linux-mainframes/)，Canonical 和 IBM 的关系进一步加深，构建了对 POWER 架构的支持和 OpenPOWER 生态系统。正如 Power 系统的客户受益于 Ubuntu 的可扩展能力，我们的敏捷开发过程也使得类似 POWER8 CAPI (Coherent Accelerator Processor Interface，一致性加速器接口)得到了市场支持，z 系统的客户也可以期望技术进步能快速部署，并从 [Juju](https://jujucharms.com/) 和我们的其它云工具中获益，使得能快速向端用户提供新服务。另外，我们和 IBM 的合作包括实现扩展部署很多 IBM 和 Juju 的软件解决方案。大型机客户对于能通过 Juju 将丰富‘迷人的’ IBM 解决方案、其它软件供应商的产品、开源解决方案部署到大型机上感到高兴。
>
>
>

Shuttleworth 期望 z 系统上的 Ubuntu 能取得巨大成功。它发展很快，由于对 OpenStack 的支持，希望有卓越云性能的人会感到非常高兴。

---

via: <http://www.zdnet.com/article/ubuntu-linux-is-coming-to-the-mainframe/>

via: <http://www.omgubuntu.co.uk/2015/08/ibm-linuxone-mainframe-ubuntu-partnership>

作者：[Steven J. Vaughan-Nichols](http://www.zdnet.com/meet-the-team/us/steven-j-vaughan-nichols/)，[Joey-Elijah Sneddon](http://www.zdnet.com/meet-the-team/us/steven-j-vaughan-nichols/) 译者：[ictlyh](https://github.com/ictlyh)，[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Tickr：一个开源的 Linux 桌面 RSS 新闻速递应用

Summary: 最新的！最新的！阅读关于它的一切！ 好了，我们今天要推荐的应用程序可不是旧式报纸的二进制版本它会以一种漂亮的方式将最新的新闻推送到你的桌面上。 Tickr 是一个基于 GTK 的 Linux 桌面新闻速递应用，能够以横条方式滚动显示最新头条新闻以及你最爱的RSS资讯文章标题，当然你可以放置在你桌面的任何地方。 请叫我 Joey Calamezzo；我把它放在底部，就像电视新闻台的滚动字幕一样。 （LCTT 译注： Joan Callamezzo 是 Pawnee Today 的主持人，一位 Pawnee 的本地新闻/脱口秀主持人。而本文作者是 Joey。） 到你了，副标题。 RSS -还记

不支持https协议，搞毛啊……还真是没怎么维护啊……

# Tickr：一个开源的 Linux 桌面 RSS 新闻速递应用

**最新的！最新的！阅读关于它的一切！**

好了，我们今天要推荐的应用程序可不是旧式报纸的二进制版本——它会以一种漂亮的方式将最新的新闻推送到你的桌面上。

Tickr 是一个基于 GTK 的 Linux 桌面新闻速递应用，能够以横条方式滚动显示最新头条新闻以及你最爱的RSS资讯文章标题，当然你可以放置在你桌面的任何地方。

请叫我 Joey Calamezzo；我把它放在底部，就像电视新闻台的滚动字幕一样。 （LCTT 译注： Joan Callamezzo 是 Pawnee Today 的主持人，一位 Pawnee 的本地新闻/脱口秀主持人。而本文作者是 Joey。）

“到你了，副标题”。

### RSS -还记得吗？

“谢谢，这段结束了。”

在一个充斥着推送通知、社交媒体、标题党，以及哄骗人们点击的清单体的时代，RSS看起来有一点过时了。

对我来说呢？恩，RSS是名副其实的真正简单的聚合（RSS ： Really Simple Syndication）。这是将消息通知给我的最简单、最易于管理的方式。我可以在我愿意的时候，管理和阅读一些东西；没必要匆忙的去看，以防这条微博消失在信息流中，或者推送通知消失。

tickr的美在于它的实用性。你可以不断地有新闻滚动在屏幕的底部，然后不时地瞥一眼。

你不会有“阅读”或“标记所有为已读”的压力。当你看到一些你想读的东西，你只需点击它，将它在Web浏览器中打开。

### 开始设置

尽管虽然tickr可以从Ubuntu软件中心安装，然而它已经很久没有更新了。当你打开笨拙的不直观的控制面板的时候，没有什么能够比这更让人感觉被遗弃的了。

要打开它：

1. 右键单击tickr条
2. 转至编辑>首选项
3. 调整各种设置

选项和设置行的后面，有些似乎是容易理解的。但是详细了解这些你才能够掌握一切，包括：

* 设置滚动速度
* 选择鼠标经过时的行为
* 资讯更新频率
* 字体，包括字体大小和颜色
* 消息分隔符（“delineator”）
* tickr在屏幕上的位置
* tickr条的颜色和不透明度
* 选择每种资讯显示多少文章

有个值得一提的“怪癖”是，当你点击“应用”按钮，只会更新tickr的屏幕预览。当您退出“首选项”窗口时，请单击“确定”。

想要得到完美的显示效果， 你需要一点点调整，特别是在 Unity 上。

按下“全宽按钮”，能够让应用程序自动检测你的屏幕宽度。默认情况下，当放置在顶部或底部时，会留下25像素的间距（应用程序以前是在GNOME2.x桌面上创建的）。只需添加额外的25像素到输入框，来弥补这个问题。

其他可供选择的选项包括：选择文章在哪个浏览器打开；tickr是否以一个常规的窗口出现；是否显示一个时钟；以及应用程序多久检查一次文章资讯。

#### 添加资讯

tickr自带的有超过30种不同的资讯列表，从技术博客到主流新闻服务。

你可以选择很多你想在屏幕上显示的新闻提要。如果你想添加自己的资讯，你可以：—

1. 右键单击tickr条
2. 转至文件>打开资讯
3. 输入资讯网址
4. 点击“添加/更新”按钮
5. 单击“确定”（选择）

如果想设置每个资讯在ticker中显示多少条文章，可以去另一个首选项窗口修改“每个资讯最大读取N条文章”

### 在Ubuntu 14.04 LTS或更高版本上安装Tickr

这就是 Tickr，它不会改变世界，但是它能让你知道世界上发生了什么。

在Ubuntu 14.04 LTS或更高版本中安装，点击下面的按钮转到Ubuntu软件中心。

* [点击此处进入Ubuntu软件中心安装tickr](apt://tickr)

---

via: <http://www.omgubuntu.co.uk/2015/06/tickr-open-source-desktop-rss-news-ticker>

作者：[Joey-Elijah Sneddon](https://plus.google.com/117485690627814051450/?rel=author) 译者：[xiaoyu33](https://github.com/xiaoyu33) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 终端中知道你的公有 IP

Summary: 公有地址由 InterNIC 分配并由基于类的网络 ID 或基于 CIDR 的地址块构成（被称为 CIDR 块），并保证了在全球互联网中的唯一性。当公有地址被分配时，其路由将会被记录到互联网中的路由器中，这样访问公有地址的流量就能顺利到达。访问目标公有地址的流量可经由互联网抵达。比如，当一个 CIDR 块被以网络 ID 和子网掩码的形式分配给一个组织时，对应的  也会同时作为路由储存在互联网中的路由器中。目标是 CIDR 块中的地址的 IP 封包会被导向对应的位置。 在本文中我将会介绍在几种在 Linux 终端中查看你的公有 IP 地址的方法。这对普通用

curl ip.cn

这个很赞啊！

# 如何在 Linux 终端中知道你的公有 IP

<img src="content_image/album_201508_23_231234m0cc94nn09efzo7d.png" alt="" title="">

公有地址由 InterNIC 分配并由基于类的网络 ID 或基于 CIDR 的地址块构成（被称为 CIDR 块），并保证了在全球互联网中的唯一性。当公有地址被分配时，其路由将会被记录到互联网中的路由器中，这样访问公有地址的流量就能顺利到达。访问目标公有地址的流量可经由互联网抵达。比如，当一个 CIDR 块被以网络 ID 和子网掩码的形式分配给一个组织时，对应的 [网络 ID，子网掩码] 也会同时作为路由储存在互联网中的路由器中。目标是 CIDR 块中的地址的 IP 封包会被导向对应的位置。

在本文中我将会介绍在几种在 Linux 终端中查看你的公有 IP 地址的方法。这对普通用户来说并无意义，但 Linux 服务器（无GUI或者作为只能使用基本工具的用户登录时）会很有用。无论如何，从 Linux 终端中获取公有 IP 在各种方面都很意义，说不定某一天就能用得着。

以下是我们主要使用的两个命令，curl 和 wget。你可以换着用。

### Curl 纯文本格式输出:

```
curl icanhazip.com
curl ifconfig.me
curl curlmyip.com
curl ip.appspot.com
curl ipinfo.io/ip
curl ipecho.net/plain
curl www.trackip.net/i

```

### curl JSON格式输出:

```
curl ipinfo.io/json
curl ifconfig.me/all.json
curl www.trackip.net/ip?json (有点丑陋)

```

### curl XML格式输出:

```
curl ifconfig.me/all.xml

```

### curl 得到所有IP细节 （挖掘机）

```
curl ifconfig.me/all

```

### 使用 DYDNS （当你使用 DYDNS 服务时有用）

```
curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0-9\.]*\).*/\1/g'
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"

```

### 使用 Wget 代替 Curl

```
wget http://ipecho.net/plain -O - -q ; echo
wget http://observebox.com/ip -O - -q ; echo

```

### 使用 host 和 dig 命令

如果有的话，你也可以直接使用 host 和 dig 命令。

```
host -t a dartsclink.com | sed 's/.*has address //'
dig +short myip.opendns.com @resolver1.opendns.com

```

### bash 脚本示例:

```
#!/bin/bash

PUBLIC_IP=`wget http://ipecho.net/plain -O - -q ; echo`
echo $PUBLIC_IP

```

简单易用。

我实际上是在写一个用于记录每日我的路由器中所有 IP 变化并保存到一个文件的脚本。我在搜索过程中找到了这些很好用的命令。希望某天它能帮到其他人。

---

via: <http://www.blackmoreops.com/2015/06/14/how-to-get-public-ip-from-linux-terminal/>

译者：[KevinSJ](https://github.com/KevinSJ) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 下使用 RAID（一）：介绍 RAID 的级别和概念

Summary: RAID 的意思是廉价磁盘冗余阵列（Redundant Array of Inexpensive Disks），但现在它被称为独立磁盘冗余阵列（Redundant Array of Independent Drives）。早先一个容量很小的磁盘都是非常昂贵的，但是现在我们可以很便宜的买到一个更大的磁盘。Raid 是一系列放在一起，成为一个逻辑卷的磁盘集合。  在 Linux 中理解 RAID 设置 RAID 包含一组或者一个集合甚至一个阵列。使用一组磁盘结合驱动器组成 RAID 阵列或 RAID 集。将至少两个磁盘连接到一个 RAID 控制器，而成为一个逻辑卷，也可以将多个驱动器放在一个组中。一组磁盘只能使用一个 R

一直分不清 RAID 10 和 01 ，但我觉得先条带后镜像肯定比先镜像后条带要好点吧，如果是先镜像再条带，那如果镜像的那一组有一个条带挂了，那镜像的那组数据就全挂。

是不是说反了？从图上看我一直认为 RAID 10 是先条带后镜像......汗！

图是肯定没错的，图来自维基百科。

raid10先镜像在条带，

来自上海的 Internet Explorer 8.0|Windows 7 用户

# 在 Linux 下使用 RAID（一）：介绍 RAID 的级别和概念

RAID 的意思是廉价磁盘冗余阵列（Redundant Array of Inexpensive Disks），但现在它被称为独立磁盘冗余阵列（Redundant Array of Independent Drives）。早先一个容量很小的磁盘都是非常昂贵的，但是现在我们可以很便宜的买到一个更大的磁盘。Raid 是一系列放在一起，成为一个逻辑卷的磁盘集合。

*在 Linux 中理解 RAID 设置*

RAID 包含一组或者一个集合甚至一个阵列。使用一组磁盘结合驱动器组成 RAID 阵列或 RAID 集。将至少两个磁盘连接到一个 RAID 控制器，而成为一个逻辑卷，也可以将多个驱动器放在一个组中。一组磁盘只能使用一个 RAID 级别。使用 RAID 可以提高服务器的性能。不同 RAID 的级别，性能会有所不同。它通过容错和高可用性来保存我们的数据。

这个系列被命名为“在 Linux 下使用 RAID”，分为9个部分，包括以下主题：

* 第1部分：[介绍 RAID 的级别和概念](/article-6085-1.html)
* 第2部分：[在Linux中如何设置 RAID0（条带化）](/article-6087-1.html)
* 第3部分：[在Linux中如何设置 RAID1（镜像化）](/article-6093-1.html)
* 第4部分：[在Linux中如何设置 RAID5（条带化与分布式奇偶校验）](/article-6102-1.html)
* 第5部分：[在Linux中如何设置 RAID6（条带双分布式奇偶校验）](/article-6121-1.html)
* 第6部分：[在Linux中设置 RAID 10 或1 + 0（嵌套）](/article-6122-1.html)
* 第7部分：[扩展现有的 RAID 阵列和删除故障的磁盘](/article-6123-1.html)
* 第8部分：[在 RAID 中恢复（重建）损坏的驱动器](/article-6448-1.html)
* 第9部分：[在 Linux 中管理 RAID](/article-6463-1.html)

这是9篇系列教程的第1部分，在这里我们将介绍 RAID 的概念和 RAID 级别，这是在 Linux 中构建 RAID 需要理解的。

### 软件 RAID 和硬件 RAID

软件 RAID 的性能较低，因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前，操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。

硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时，即使出现电源故障，它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。

硬件 RAID 卡如下所示：

*硬件 RAID*

#### 重要的 RAID 概念

* **校验**方式用在 RAID 重建中从校验所保存的信息中重新生成丢失的内容。 RAID 5，RAID 6 基于校验。
* **条带化**是将切片数据随机存储到多个磁盘。它不会在单个磁盘中保存完整的数据。如果我们使用2个磁盘，则每个磁盘存储我们的一半数据。
* **镜像**被用于 RAID 1 和 RAID 10。镜像会自动备份数据。在 RAID 1 中，它会保存相同的内容到其他盘上。
* **热备份**只是我们的服务器上的一个备用驱动器，它可以自动更换发生故障的驱动器。在我们的阵列中，如果任何一个驱动器损坏，热备份驱动器会自动用于重建 RAID。
* **块**是 RAID 控制器每次读写数据时的最小单位，最小 4KB。通过定义块大小，我们可以增加 I/O 性能。

RAID有不同的级别。在这里，我们仅列出在真实环境下的使用最多的 RAID 级别。

* RAID0 = 条带化
* RAID1 = 镜像
* RAID5 = 单磁盘分布式奇偶校验
* RAID6 = 双磁盘分布式奇偶校验
* RAID10 = 镜像 + 条带。（嵌套RAID）

RAID 在大多数 Linux 发行版上使用名为 mdadm 的软件包进行管理。让我们先对每个 RAID 级别认识一下。

#### RAID 0 / 条带化

条带化有很好的性能。在 RAID 0（条带化）中数据将使用切片的方式被写入到磁盘。一半的内容放在一个磁盘上，另一半内容将被写入到另一个磁盘。

假设我们有2个磁盘驱动器，例如，如果我们将数据“TECMINT”写到逻辑卷中，“T”将被保存在第一盘中，“E”将保存在第二盘，'C'将被保存在第一盘，“M”将保存在第二盘，它会一直继续此循环过程。（LCTT 译注：实际上不可能按字节切片，是按数据块切片的。）

在这种情况下，如果驱动器中的任何一个发生故障，我们就会丢失数据，因为一个盘中只有一半的数据，不能用于重建 RAID。不过，当比较写入速度和性能时，RAID 0 是非常好的。创建 RAID 0（条带化）至少需要2个磁盘。如果你的数据是非常宝贵的，那么不要使用此 RAID 级别。

* 高性能。
* RAID 0 中容量零损失。
* 零容错。
* 写和读有很高的性能。

#### RAID 1 / 镜像化

镜像也有不错的性能。镜像可以对我们的数据做一份相同的副本。假设我们有两个2TB的硬盘驱动器，我们总共有4TB，但在镜像中，但是放在 RAID 控制器后面的驱动器形成了一个逻辑驱动器，我们只能看到这个逻辑驱动器有2TB。

当我们保存数据时，它将同时写入这两个2TB驱动器中。创建 RAID 1（镜像化）最少需要两个驱动器。如果发生磁盘故障，我们可以通过更换一个新的磁盘恢复 RAID 。如果在 RAID 1 中任何一个磁盘发生故障，我们可以从另一个磁盘中获取相同的数据，因为另外的磁盘中也有相同的数据。所以是零数据丢失。

* 良好的性能。
* 总容量丢失一半可用空间。
* 完全容错。
* 重建会更快。
* 写性能变慢。
* 读性能变好。
* 能用于操作系统和小规模的数据库。

#### RAID 5 / 分布式奇偶校验

RAID 5 多用于企业级。 RAID 5 的以分布式奇偶校验的方式工作。奇偶校验信息将被用于重建数据。它从剩下的正常驱动器上的信息来重建。在驱动器发生故障时，这可以保护我们的数据。

假设我们有4个驱动器，如果一个驱动器发生故障而后我们更换发生故障的驱动器后，我们可以从奇偶校验中重建数据到更换的驱动器上。奇偶校验信息存储在所有的4个驱动器上，如果我们有4个 1TB 的驱动器。奇偶校验信息将被存储在每个驱动器的256G中，而其它768GB是用户自己使用的。单个驱动器故障后，RAID 5 依旧正常工作，如果驱动器损坏个数超过1个会导致数据的丢失。

* 性能卓越
* 读速度将非常好。
* 写速度处于平均水准，如果我们不使用硬件 RAID 控制器，写速度缓慢。
* 从所有驱动器的奇偶校验信息中重建。
* 完全容错。
* 1个磁盘空间将用于奇偶校验。
* 可以被用在文件服务器，Web服务器，非常重要的备份中。

#### RAID 6 双分布式奇偶校验磁盘

RAID 6 和 RAID 5 相似但它有两个分布式奇偶校验。大多用在大数量的阵列中。我们最少需要4个驱动器，即使有2个驱动器发生故障，我们依然可以更换新的驱动器后重建数据。

它比 RAID 5 慢，因为它将数据同时写到4个驱动器上。当我们使用硬件 RAID 控制器时速度就处于平均水准。如果我们有6个的1TB驱动器，4个驱动器将用于数据保存，2个驱动器将用于校验。

* 性能不佳。
* 读的性能很好。
* 如果我们不使用硬件 RAID 控制器写的性能会很差。
* 从两个奇偶校验驱动器上重建。
* 完全容错。
* 2个磁盘空间将用于奇偶校验。
* 可用于大型阵列。
* 用于备份和视频流中，用于大规模。

#### RAID 10 / 镜像+条带

RAID 10 可以被称为1 + 0或0 +1。它将做镜像+条带两个工作。在 RAID 10 中首先做镜像然后做条带。在 RAID 01 上首先做条带，然后做镜像。RAID 10 比 01 好。

假设，我们有4个驱动器。当我逻辑卷上写数据时，它会使用镜像和条带的方式将数据保存到4个驱动器上。

如果我在 RAID 10 上写入数据“TECMINT”，数据将使用如下方式保存。首先将“T”同时写入两个磁盘，“E”也将同时写入另外两个磁盘，所有数据都写入两块磁盘。这样可以将每个数据复制到另外的磁盘。

同时它将使用 RAID 0 方式写入数据，遵循将“T”写入第一组盘，“E”写入第二组盘。再次将“C”写入第一组盘，“M”到第二组盘。

* 良好的读写性能。
* 总容量丢失一半的可用空间。
* 容错。
* 从副本数据中快速重建。
* 由于其高性能和高可用性，常被用于数据库的存储中。

### 结论

在这篇文章中，我们已经了解了什么是 RAID 和在实际环境大多采用哪个级别的 RAID。希望你已经学会了上面所写的。对于 RAID 的构建必须了解有关 RAID 的基本知识。以上内容可以基本满足你对 RAID 的了解。

在接下来的文章中，我将介绍如何设置和使用各种级别创建 RAID，增加 RAID 组（阵列）和驱动器故障排除等。

---

via: <http://www.tecmint.com/understanding-raid-setup-in-linux/>

作者：[Babin Lonston](http://www.tecmint.com/author/babinlonston/) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Summary: RAID 即廉价磁盘冗余阵列，其高可用性和可靠性适用于大规模环境中，相比正常使用，数据更需要被保护。RAID 是一些磁盘的集合，是包含一个阵列的逻辑卷。驱动器可以组合起来成为一个阵列或称为（组的）集合。 创建 RAID 最少应使用2个连接到 RAID 控制器的磁盘组成，来构成逻辑卷，可以根据定义的 RAID 级别将更多的驱动器添加到一个阵列中。不使用物理硬件创建的 RAID 被称为软件 RAID。软件 RAID 也叫做穷人 RAID。  在 Linux 中创建 RAID0 使用 RAID 的主要目的是为了在发生单点故障时保存数据，如果我们使用单个磁盘来存储数据，如果它

我想了解一下，有哪位在生产环境中用 “软RAID” 的？

使用软 RAID5 的不少吧。

扯犊子，软raid依赖于操作系统，系统一崩溃，直接丢数据

以前建 RAID5 时，重启后 /dev/md0 名字就变了，也不知道怎么改回来，后面才知道是 /etc/mdadm.conf 的问题

1.数据已分成数据块写入硬盘了，不会丢失。

2.系统崩溃，重新装系统及软raid，可以正常读写。

以上个人观点

当然系统崩溃时，数据写入时丢失是不避免的，这是软件raid缺点。使用软raid,就是追求低成本。

系统崩溃时，输出的数据没准都是错误的，硬件 RAID 卡也无法防范这点。只是避免了在 IO 系统将数据送到 RAID 卡后的错误。

讨论的这么激烈。。。

这年头还搞软raid，让硬件生产商如何生活。

# 在 Linux 下使用 RAID（二）：使用 mdadm 工具创建软件 RAID 0 （条带化）

RAID 即廉价磁盘冗余阵列，其高可用性和可靠性适用于大规模环境中，相比正常使用，数据更需要被保护。RAID 是一些磁盘的集合，是包含一个阵列的逻辑卷。驱动器可以组合起来成为一个阵列或称为（组的）集合。

创建 RAID 最少应使用2个连接到 RAID 控制器的磁盘组成，来构成逻辑卷，可以根据定义的 RAID 级别将更多的驱动器添加到一个阵列中。不使用物理硬件创建的 RAID 被称为软件 RAID。软件 RAID 也叫做穷人 RAID。

*在 Linux 中创建 RAID0*

使用 RAID 的主要目的是为了在发生单点故障时保存数据，如果我们使用单个磁盘来存储数据，如果它损坏了，那么就没有机会取回我们的数据了，为了防止数据丢失我们需要一个容错的方法。所以，我们可以使用多个磁盘组成 RAID 阵列。

#### 在 RAID 0 中条带是什么

条带是通过将数据在同时分割到多个磁盘上。假设我们有两个磁盘，如果我们将数据保存到该逻辑卷上，它会将数据保存在两个磁盘上。使用 RAID 0 是为了获得更好的性能，但是如果驱动器中一个出现故障，我们将不能得到完整的数据。因此，使用 RAID 0 不是一种好的做法。唯一的解决办法就是安装有 RAID 0 逻辑卷的操作系统来提高重要文件的安全性。

* RAID 0 性能较高。
* 在 RAID 0 上，空间零浪费。
* 零容错（如果硬盘中的任何一个发生故障，无法取回数据）。
* 写和读性能都很好。

#### 要求

创建 RAID 0 允许的最小磁盘数目是2个，但你可以添加更多的磁盘，不过数目应该是2，4，6，8等的偶数。如果你有一个物理 RAID 卡并且有足够的端口，你可以添加更多磁盘。

在这里，我们没有使用硬件 RAID，此设置只需要软件 RAID。如果我们有一个物理硬件 RAID 卡，我们可以从它的功能界面访问它。有些主板默认内建 RAID 功能，还可以使用 Ctrl + I 键访问它的界面。

如果你是刚开始设置 RAID，请阅读我们前面的文章，我们已经介绍了一些关于 RAID 基本的概念。

* [介绍 RAID 的级别和概念](/article-6085-1.html)

**我的服务器设置**

```
操作系统 :  CentOS 6.5 Final
IP 地址    :  192.168.0.225
两块盘    :  20 GB each

```

这是9篇系列教程的第2部分，在这部分，我们将看看如何能够在 Linux 上创建和使用 RAID 0（条带化），以名为 sdb 和 sdc 两个 20GB 的硬盘为例。

### 第1步：更新系统和安装管理 RAID 的 mdadm 软件

1、 在 Linux 上设置 RAID 0 前，我们先更新一下系统，然后安装`mdadm` 包。mdadm 是一个小程序，这将使我们能够在Linux下配置和管理 RAID 设备。

```
# yum clean all && yum update
# yum install mdadm -y

```

*安装 mdadm 工具*

### 第2步：确认连接了两个 20GB 的硬盘

2、 在创建 RAID 0 前，请务必确认两个硬盘能被检测到，使用下面的命令确认。

```
# ls -l /dev | grep sd

```

*检查硬盘*

3、 一旦检测到新的硬盘驱动器，同时检查是否连接的驱动器已经被现有的 RAID 使用，使用下面的`mdadm` 命令来查看。

```
# mdadm --examine /dev/sd[b-c]

```

*检查 RAID 设备*

从上面的输出我们可以看到，没有任何 RAID 使用 sdb 和 sdc 这两个驱动器。

### 第3步：创建 RAID 分区

4、 现在用 sdb 和 sdc 创建 RAID 的分区，使用 fdisk 命令来创建。在这里，我将展示如何创建 sdb 驱动器上的分区。

```
# fdisk /dev/sdb

```

请按照以下说明创建分区。

* 按`n` 创建新的分区。
* 然后按`P` 选择主分区。
* 接下来选择分区号为1。
* 只需按两次回车键选择默认值即可。
* 然后，按`P` 来显示创建好的分区。

*创建分区*

请按照以下说明将分区创建为 Linux 的 RAID 类型。

* 按`L`，列出所有可用的类型。
* 按`t` 去修改分区。
* 键入`fd` 设置为 Linux 的 RAID 类型，然后按回车确认。
* 然后再次使用`p`查看我们所做的更改。
* 使用`w`保存更改。

*在 Linux 上创建 RAID 分区*

**注**: 请使用上述步骤同样在 sdc 驱动器上创建分区。

5、 创建分区后，验证这两个驱动器是否正确定义 RAID，使用下面的命令。

```
# mdadm --examine /dev/sd[b-c]
# mdadm --examine /dev/sd[b-c]1

```

*验证 RAID 分区*

### 第4步：创建 RAID md 设备

6、 现在使用以下命令创建 md 设备（即 /dev/md0），并选择 RAID 合适的级别。

```
# mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1
# mdadm --create /dev/md0 --level=stripe --raid-devices=2 /dev/sd[b-c]1

```

* -C – 创建
* -l – 级别
* -n – RAID 设备数

7、 一旦 md 设备已经建立，使用如下命令可以查看 RAID 级别，设备和阵列的使用状态。

```
# cat /proc/mdstat

```

*查看 RAID 级别*

```
# mdadm -E /dev/sd[b-c]1

```

*查看 RAID 设备*

```
# mdadm --detail /dev/md0

```

*查看 RAID 阵列*

### 第5步：给 RAID 设备创建文件系统

8、 将 RAID 设备 /dev/md0 创建为 ext4 文件系统，并挂载到 /mnt/raid0 下。

```
# mkfs.ext4 /dev/md0

```

*创建 ext4 文件系统*

9、 在 RAID 设备上创建好 ext4 文件系统后，现在创建一个挂载点（即 /mnt/raid0），并将设备 /dev/md0 挂载在它下。

```
# mkdir /mnt/raid0
# mount /dev/md0 /mnt/raid0/

```

10、下一步，使用 df 命令验证设备 /dev/md0 是否被挂载在 /mnt/raid0 下。

```
# df -h

```

11、 接下来，在挂载点 /mnt/raid0 下创建一个名为`tecmint.txt` 的文件，为创建的文件添加一些内容，并查看文件和目录的内容。

```
# touch /mnt/raid0/tecmint.txt
# echo "Hi everyone how you doing ?" > /mnt/raid0/tecmint.txt
# cat /mnt/raid0/tecmint.txt
# ls -l /mnt/raid0/

```

*验证挂载的设备*

12、 当你验证挂载点后，就可以将它添加到 /etc/fstab 文件中。

```
# vim /etc/fstab

```

添加以下条目，根据你的安装位置和使用文件系统的不同，自行做修改。

```
/dev/md0                /mnt/raid0              ext4    deaults         0 0

```

*添加设备到 fstab 文件中*

13、 使用 mount 命令的 `-a` 来检查 fstab 的条目是否有误。

```
# mount -av

```

*检查 fstab 文件是否有误*

### 第6步：保存 RAID 配置

14、 最后，保存 RAID 配置到一个文件中，以供将来使用。我们再次使用带有`-s` (scan) 和`-v` (verbose) 选项的 `mdadm` 命令，如图所示。

```
# mdadm -E -s -v >> /etc/mdadm.conf
# mdadm --detail --scan --verbose >> /etc/mdadm.conf
# cat /etc/mdadm.conf

```

*保存 RAID 配置*

就这样，我们在这里看到，如何通过使用两个硬盘配置具有条带化的 RAID 0 。在接下来的文章中，我们将看到如何设置 RAID 1。

---

via: <http://www.tecmint.com/create-raid0-in-linux/>

作者：[Babin Lonston](http://www.tecmint.com/author/babinlonston/) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何使用 Datadog 监控 NGINX（第三篇）

Summary: 如果你已经阅读了前面的如何监控 NGINX，你应该知道从你网络环境的几个指标中可以获取多少信息。而且你也看到了从 NGINX 特定的基础中收集指标是多么容易的。但要实现全面，持续的监控 NGINX，你需要一个强大的监控系统来存储并将指标可视化，当异常发生时能提醒你。在这篇文章中，我们将向你展示如何使用 Datadog 安装 NGINX 监控，以便你可以在定制的仪表盘中查看这些指标：  Datadog 允许你以单个主机、服务、流程和度量来构建图形和警告，或者使用它们的几乎任何组合构建。例如，你可以监控你的所有主机，或者某个特定可用区域的所有N

# 如何使用 Datadog 监控 NGINX（第三篇）

如果你已经阅读了前面的[如何监控 NGINX](/article-5970-1.html)，你应该知道从你网络环境的几个指标中可以获取多少信息。而且你也看到了从 NGINX 特定的基础中收集指标是多么容易的。但要实现全面，持续的监控 NGINX，你需要一个强大的监控系统来存储并将指标可视化，当异常发生时能提醒你。在这篇文章中，我们将向你展示如何使用 Datadog 安装 NGINX 监控，以便你可以在定制的仪表盘中查看这些指标：

Datadog 允许你以单个主机、服务、流程和度量来构建图形和警告，或者使用它们的几乎任何组合构建。例如，你可以监控你的所有主机，或者某个特定可用区域的所有NGINX主机，或者您可以监视具有特定标签的所有主机的一个关键指标。本文将告诉您如何：

* 在 Datadog 仪表盘上监控 NGINX 指标，就像监控其他系统一样
* 当一个关键指标急剧变化时设置自动警报来通知你

### 配置 NGINX

为了收集 NGINX 指标，首先需要确保 NGINX 已启用 status 模块和一个 报告 status 指标的 URL。一步步的[配置开源 NGINX](/article-5985-1.html#open-source) 和 [NGINX Plus](/article-5985-1.html#plus) 请参见之前的相关文章。

### 整合 Datadog 和 NGINX

#### 安装 Datadog 代理

Datadog 代理是[一个开源软件](https://github.com/DataDog/dd-agent)，它能收集和报告你主机的指标，这样就可以使用 Datadog 查看和监控他们。安装这个代理通常[仅需要一个命令](https://app.datadoghq.com/account/settings#agent)

只要你的代理启动并运行着，你会看到你主机的指标报告[在你 Datadog 账号下](https://app.datadoghq.com/infrastructure)。

#### 配置 Agent

接下来，你需要为代理创建一个简单的 NGINX 配置文件。在你系统中代理的配置目录应该[在这儿](http://docs.datadoghq.com/guides/basic_agent_usage/)找到。

在目录里面的 conf.d/nginx.yaml.example 中，你会发现[一个简单的配置文件](https://github.com/DataDog/dd-agent/blob/master/conf.d/nginx.yaml.example)，你可以编辑并提供 status URL 和可选的标签为每个NGINX 实例：

```
init_config:

instances:

    -   nginx_status_url: http://localhost/nginx_status/
        tags:
            -   instance:foo

```

当你提供了 status URL 和任意 tag，将配置文件保存为 conf.d/nginx.yaml。

#### 重启代理

你必须重新启动代理程序来加载新的配置文件。重新启动命令[在这里](http://docs.datadoghq.com/guides/basic_agent_usage/)，根据平台的不同而不同。

#### 检查配置文件

要检查 Datadog 和 NGINX 是否正确整合，运行 Datadog 的 info 命令。每个平台使用的命令[看这儿](http://docs.datadoghq.com/guides/basic_agent_usage/)。

如果配置是正确的，你会看到这样的输出：

```
Checks
======

  [...]

  nginx
  -----
      - instance #0 [OK]
      - Collected 8 metrics & 0 events

```

#### 安装整合

最后，在你的 Datadog 帐户打开“Nginx 整合”。这非常简单，你只要在 [NGINX 整合设置](https://app.datadoghq.com/account/settings#integrations/nginx)中点击“Install Integration”按钮。

### 指标!

一旦代理开始报告 NGINX 指标，你会看到[一个 NGINX 仪表盘](https://app.datadoghq.com/dash/integration/nginx)出现在在你 Datadog 可用仪表盘的列表中。

基本的 NGINX 仪表盘显示有用的图表，囊括了几个[我们的 NGINX 监控介绍](/article-5970-1.html)中的关键指标。 （一些指标，特别是请求处理时间要求进行日志分析，Datadog 不支持。）

你可以通过增加 NGINX 之外的重要指标的图表来轻松创建一个全面的仪表盘，以监控你的整个网站设施。例如，你可能想监视你 NGINX 的主机级的指标，如系统负载。要构建一个自定义的仪表盘，只需点击靠近仪表盘的右上角的选项并选择“Clone Dash”来克隆一个默认的 NGINX 仪表盘。

你也可以使用 Datadog 的[主机地图](https://www.datadoghq.com/blog/introducing-host-maps-know-thy-infrastructure/)在更高层面监控你的 NGINX 实例，举个例子，用颜色标示你所有的 NGINX 主机的 CPU 使用率来辨别潜在热点。

### NGINX 指标警告

一旦 Datadog 捕获并可视化你的指标，你可能会希望建立一些监控自动地密切关注你的指标，并当有问题提醒你。下面将介绍一个典型的例子：一个提醒你 NGINX 吞吐量突然下降时的指标监控器。

#### 监控 NGINX 吞吐量

Datadog 指标警报可以是“基于吞吐量的”（当指标超过设定值会警报）或“基于变化幅度的”（当指标的变化超过一定范围会警报）。在这个例子里，我们会采取后一种方式，当每秒传入的请求急剧下降时会提醒我们。下降往往意味着有问题。

1. **创建一个新的指标监控**。从 Datadog 的“Monitors”下拉列表中选择“New Monitor”。选择“Metric”作为监视器类型。

2. **定义你的指标监视器**。我们想知道 NGINX 每秒总的请求量下降的数量，所以我们在基础设施中定义我们感兴趣的 nginx.net.request*per*s 之和。

3. **设置指标警报条件**。我们想要在变化时警报，而不是一个固定的值，所以我们选择“Change Alert”。我们设置监控为无论何时请求量下降了30％以上时警报。在这里，我们使用一个一分钟的数据窗口来表示 “now” 指标的值，对横跨该间隔内的平均变化和之前 10 分钟的指标值作比较。

4. **自定义通知**。如果 NGINX 的请求量下降，我们想要通知我们的团队。在这个例子中，我们将给 ops 团队的聊天室发送通知，并给值班工程师发送短信。在“Say what’s happening”中，我们会为监控器命名，并添加一个伴随该通知的短消息，建议首先开始调查的内容。我们会 @ ops 团队使用的 Slack，并 @pagerduty [将警告发给短信](https://www.datadoghq.com/blog/pagerduty/)。

5. **保存集成监控**。点击页面底部的“Save”按钮。你现在在监控一个关键的 NGINX [工作指标](https://www.datadoghq.com/blog/monitoring-101-collecting-data/#metrics)，而当它快速下跌时会给值班工程师发短信。

### 结论

在这篇文章中，我们谈到了通过整合 NGINX 与 Datadog 来可视化你的关键指标，并当你的网络基础架构有问题时会通知你的团队。

如果你一直使用你自己的 Datadog 账号，你现在应该可以极大的提升你的 web 环境的可视化，也有能力对你的环境、你所使用的模式、和对你的组织最有价值的指标创建自动监控。

如果你还没有 Datadog 帐户，你可以注册[免费试用](https://www.datadoghq.com/blog/how-to-monitor-nginx-with-datadog/#sign-up)，并开始监视你的基础架构，应用程序和现在的服务。

---

via: <https://www.datadoghq.com/blog/how-to-monitor-nginx-with-datadog/>

作者：K Young 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


在 Debian 中安装 OpenQRM 云计算平台

Summary: 简介 openQRM是一个基于 Web 的开源云计算和数据中心管理平台，可灵活地与企业数据中心的现存组件集成。 它支持下列虚拟技术：  KVM XEN Citrix XenServer VMWare ESX LXC OpenVZ  openQRM 中的混合云连接器支持 Amazon AWS, Eucalyptus 或 OpenStack 等一系列的私有或公有云提供商，以此来按需扩展你的基础设施。它也可以自动地进行资源调配、 虚拟化、 存储和配置管理，且保证高可用性。集成的计费系统的自服务云门户可使终端用户按需请求新的服务器和应用堆栈。  openQRM 有两种不同风格的版本可获取：  企业版 社区版  你可以在这里查

# 在 Debian 中安装 OpenQRM 云计算平台

### 简介

**openQRM**是一个基于 Web 的开源云计算和数据中心管理平台，可灵活地与企业数据中心的现存组件集成。

它支持下列虚拟技术：

* KVM
* XEN
* Citrix XenServer
* VMWare ESX
* LXC
* OpenVZ

openQRM 中的混合云连接器支持 **Amazon AWS**, **Eucalyptus** 或 **OpenStack** 等一系列的私有或公有云提供商，以此来按需扩展你的基础设施。它也可以自动地进行资源调配、 虚拟化、 存储和配置管理，且保证高可用性。集成的计费系统的自服务云门户可使终端用户按需请求新的服务器和应用堆栈。

openQRM 有两种不同风格的版本可获取：

* 企业版
* 社区版

你可以在[这里](http://www.openqrm-enterprise.com/products/edition-comparison.html)查看这两个版本间的区别。

### 特点

* 私有/混合的云计算平台
* 可管理物理或虚拟的服务器系统
* 集成了所有主流的开源或商业的存储技术
* 跨平台: Linux, Windows, OpenSolaris 和 BSD
* 支持 KVM, XEN, Citrix XenServer, VMWare ESX(i), lxc, OpenVZ 和 VirtualBox
* 支持使用额外的 Amazon AWS, Eucalyptus, Ubuntu UEC 等云资源来进行混合云设置
* 支持 P2V, P2P, V2P, V2V 迁移和高可用性
* 集成最好的开源管理工具 – 如 puppet, nagios/Icinga 或 collectd
* 有超过 50 个插件来支持扩展功能并与你的基础设施集成
* 针对终端用户的自服务门户
* 集成了计费系统

### 安装

在这里我们将在 Debian 7.5 上安装 openQRM。你的服务器必须至少满足以下要求：

* 1 GB RAM
* 100 GB Hdd（硬盘驱动器）
* 可选: Bios 支持虚拟化（Intel CPUs 的 VT 或 AMD CPUs AMD-V）

首先，安装 `make` 软件包来编译 openQRM 源码包：

```
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install make

```

然后，逐次运行下面的命令来安装 openQRM。

从[这里](http://sourceforge.net/projects/openqrm/files/?source=navbar)下载最新的可用版本：

```
wget http://sourceforge.net/projects/openqrm/files/openQRM-Community-5.1/openqrm-community-5.1.tgz

tar -xvzf openqrm-community-5.1.tgz

cd openqrm-community-5.1/src/

sudo make

sudo make install

sudo make start

```

安装期间，会要求你更新文件 `php.ini`

输入 mysql root 用户密码。

再次输入密码：

选择邮件服务器配置类型：

假如你不确定该如何选择，可选择 `Local only`。在我们的这个示例中，我选择了 **Local only** 选项。

输入你的系统邮件名称，并最后输入 Nagios 管理员密码。

根据你的网络连接状态，上面的命令可能将花费很长的时间来下载所有运行 openQRM 所需的软件包，请耐心等待。

最后你将得到 openQRM 配置 URL 地址以及相关的用户名和密码。

### 配置

在安装完 openQRM 后，打开你的 Web 浏览器并转到 URL: **http://ip-address/openqrm**

例如，在我的示例中为 <http://192.168.1.100/openqrm> 。

默认的用户名和密码是： **openqrm/openqrm** 。

选择一个网卡来给 openQRM 管理网络使用。

选择一个数据库类型，在我们的示例中，我选择了 mysql。

现在，配置数据库连接并初始化 openQRM， 在这里，我使用 **openQRM** 作为数据库名称， **root** 作为用户的身份，并将 debian 作为数据库的密码。 请小心，你应该输入先前在安装 openQRM 时创建的 mysql root 用户密码。

祝贺你！ openQRM 已经安装并配置好了。

### 更新 openQRM

在任何时候可以使用下面的命令来更新 openQRM：

```
cd openqrm/src/
make update

```

到现在为止，我们做的只是在我们的 Debian 服务器中安装和配置 openQRM， 至于 创建、运行虚拟，管理存储，额外的系统集成和运行你自己的私有云等内容，我建议你阅读 [openQRM 管理员指南](http://www.openqrm-enterprise.com/fileadmin/Documents/Whitepaper/openQRM-Enterprise-Administrator-Guide-5.2.pdf)。

就是这些了，欢呼吧！周末快乐！

---

via: <http://www.unixmen.com/install-openqrm-cloud-computing-platform-debian/>

作者：[SK](http://www.unixmen.com/author/sk/) 译者：[FSSlc](https://github.com/FSSlc) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出


庆祝 Linux 24 岁生日！

Summary: 今天是 Linux 的 24 岁生日。  在 1991 年 4月，芬兰的赫尔辛基大学年仅 21 岁的学生Linus Torvalds 开始做一个他自己的操作系统。在 24 年前的今天，即1991年8月25日，他在 usenet 的 comp.os.minix 新闻组中发布了 Linux 的第一个公告，宣布了 Linux 的诞生。以下是当年Torvalds 写的邮件： Path: gmdzi!unido!fauern!ira.uka.de!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu!wupost!uunet!mcsun!news.funet.fi!hydra!klaava!torvalds From: torv...@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subje

这个高亮略微有些不适- -，还是人工指定成plain吧。。

24年前我已分子的形式存在于这世界

其实我感觉难看的是字体

24年前,我还不存在

发红包

等宽字体也就这样子了？

语法高亮感人至深

来自江苏宿迁的 Chrome Mobile 44.0|Android 4.4 用户

和我一样的生日

正值小学一年级暑假中

哈哈哈，其实这种高亮是完全无意义，但是看起来还挺好看的——算是生日彩灯吧:D

来吧，linux中国，组织个活动啊

红包拿来

红包 红包

Linux生日快乐，嘻嘻~~~~~

受不了到处被转载代码高亮版了，我改了。。。我错了。。

我是来打个标签看看

//当时我还在菜地里玩泥巴

感谢Linux 让我有了饭碗。

同年出生，生日快乐！

那时候我还没有出生

比我早一年

比我都大了，但是却成了我的饭碗

# 庆祝 Linux 24 岁生日！

今天是 Linux 的 24 岁生日。

<img src="content_image/album_201508_25_220835kgvz2sj34rrsh4fr.png" alt="" title="">

在 1991 年 4月，芬兰的赫尔辛基大学年仅 21 岁的学生 Linus Torvalds 开始做一个他自己的操作系统。在 24 年前的今天，即 1991年8月25日，他在 usenet 的 comp.os.minix 新闻组中发布了 Linux 的第一个公告，宣布了 Linux 的诞生。以下是当年 Torvalds 写的[邮件](https://groups.google.com/forum/#!original/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ)：

>
> Path: gmdzi!unido!fauern!ira.uka.de!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu!wupost!uunet!mcsun!news.funet.fi!hydra!klaava!torvalds
> From: torv...@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: What would you like to see most in minix?
> Summary: small poll for my new operating system
> Keywords: 386, preferences
> Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
> Date: 25 Aug 91 20:57:08 GMT
> Organization: University of Helsinki
> Lines: 20
>
>
>
> Hello everybody out there using minix -
>
>
> I'm doing a (free) operating system (just a hobby, won't be big and
> professional like gnu) for 386(486) AT clones. This has been brewing
> since april, and is starting to get ready. I'd like any feedback on
> things people like/dislike in minix, as my OS resembles it somewhat
> (same physical layout of the file-system (due to practical reasons)
> among other things).
>
>
> I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
> This implies that I'll get something practical within a few months, and
> I'd like to know what features most people would want. Any suggestions
> are welcome, but I won't promise I'll implement them :-)
>
>
> Linus (torv...@kruuna.helsinki.fi)
>
>
> PS. Yes - it's free of any minix code, and it has a multi-threaded fs.
> It is NOT protable (uses 386 task switching etc), and it probably never
> will support anything other than AT-harddisks, as that's all I have :-(.
>
>
>

在该年的九月， Linux Kernel 0.01 发布到了芬兰大学和研究网（FUNET） 上的一个 FTP 服务器（ftp.funet.fi）。当时仅有 10239 行代码。到了十月，又发布了 0.02。


在 Linux 下使用 RAID（三）：用两块磁盘创建 RAID 1（镜像）

Summary: RAID 镜像意味着相同数据的完整克隆（或镜像），分别写入到两个磁盘中。创建 RAID 1 至少需要两个磁盘，而且仅用于读取性能或者可靠性要比数据存储容量更重要的场合。  在 Linux 中设置 RAID 1 创建镜像是为了防止因硬盘故障导致数据丢失。镜像中的每个磁盘包含数据的完整副本。当一个磁盘发生故障时，相同的数据可以从其它正常磁盘中读取。而后，可以从正在运行的计算机中直接更换发生故障的磁盘，无需任何中断。 RAID 1 的特点   镜像具有良好的性能。   磁盘利用率为50％。也就是说，如果我们有两个磁盘每个500GB，总共是1TB，但在镜像

good，迫不及待想看下一篇了。。。

分享的十分细致，感觉到用心

分享的过程十分细致，用心在做

非常详细，很不错

讲解的很详细，很好！收藏了！！！

楼主棒棒的 一变做通 谢楼主

感谢！楼主棒棒的

# 在 Linux 下使用 RAID（三）：用两块磁盘创建 RAID 1（镜像）

**RAID 镜像**意味着相同数据的完整克隆（或镜像），分别写入到两个磁盘中。创建 RAID 1 至少需要两个磁盘，而且仅用于读取性能或者可靠性要比数据存储容量更重要的场合。

*在 Linux 中设置 RAID 1*

创建镜像是为了防止因硬盘故障导致数据丢失。镜像中的每个磁盘包含数据的完整副本。当一个磁盘发生故障时，相同的数据可以从其它正常磁盘中读取。而后，可以从正在运行的计算机中直接更换发生故障的磁盘，无需任何中断。

### RAID 1 的特点

* 镜像具有良好的性能。
* 磁盘利用率为50％。也就是说，如果我们有两个磁盘每个500GB，总共是1TB，但在镜像中它只会显示500GB。
* 在镜像如果一个磁盘发生故障不会有数据丢失，因为两个磁盘中的内容相同。
* 读取性能会比写入性能更好。

#### 要求

创建 RAID 1 至少要有两个磁盘，你也可以添加更多的磁盘，磁盘数需为2，4，6，8等偶数。要添加更多的磁盘，你的系统必须有 RAID 物理适配器（硬件卡）。

这里，我们使用软件 RAID 不是硬件 RAID，如果你的系统有一个内置的物理硬件 RAID 卡，你可以从它的功能界面或使用 Ctrl + I 键来访问它。

需要阅读: [介绍 RAID 的级别和概念](/article-6085-1.html)

#### 在我的服务器安装

```
操作系统 :  CentOS 6.5 Final
IP 地址    :  192.168.0.226
主机名    :  rd1.tecmintlocal.com
磁盘 1 [20GB]  :  /dev/sdb
磁盘 2 [20GB]  :  /dev/sdc

```

本文将指导你在 Linux 平台上使用 mdadm （用于创建和管理 RAID ）一步步的建立一个软件 RAID 1 （镜像）。同样的做法也适用于如 RedHat，CentOS，Fedora 等 Linux 发行版。

### 第1步：安装所需软件并且检查磁盘

1、 正如我前面所说，在 Linux 中我们需要使用 mdadm 软件来创建和管理 RAID。所以，让我们用 yum 或 apt-get 的软件包管理工具在 Linux 上安装 mdadm 软件包。

```
# yum install mdadm     [在 RedHat 系统]
# apt-get install mdadm     [在 Debain 系统]

```

2、 一旦安装好`mdadm`包，我们需要使用下面的命令来检查磁盘是否已经配置好。

```
# mdadm -E /dev/sd[b-c]

```

*检查 RAID 的磁盘*

正如你从上面图片看到的，没有检测到任何超级块，这意味着还没有创建RAID。

### 第2步：为 RAID 创建分区

3、 正如我提到的，我们使用最少的两个分区 /dev/sdb 和 /dev/sdc 来创建 RAID 1。我们首先使用`fdisk`命令来创建这两个分区并更改其类型为 raid。

```
# fdisk /dev/sdb

```

按照下面的说明

* 按 `n` 创建新的分区。
* 然后按 `P` 选择主分区。
* 接下来选择分区号为1。
* 按两次回车键默认将整个容量分配给它。
* 然后，按 `P` 来打印创建好的分区。
* 按 `L`，列出所有可用的类型。
* 按 `t` 修改分区类型。
* 键入 `fd` 设置为 Linux 的 RAID 类型，然后按 Enter 确认。
* 然后再次使用`p`查看我们所做的更改。
* 使用`w`保存更改。

*创建磁盘分区*

在创建“/dev/sdb”分区后，接下来按照同样的方法创建分区 /dev/sdc 。

```
# fdisk /dev/sdc

```

*创建第二个分区*

4、 一旦这两个分区创建成功后，使用相同的命令来检查 sdb 和 sdc 分区并确认 RAID 分区的类型如上图所示。

```
# mdadm -E /dev/sd[b-c]

```

*验证分区变化*

*检查 RAID 类型*

**注意**: 正如你在上图所看到的，在 sdb1 和 sdc1 中没有任何对 RAID 的定义，这就是我们没有检测到超级块的原因。

### 第3步：创建 RAID 1 设备

5、 接下来使用以下命令来创建一个名为 /dev/md0 的“RAID 1”设备并验证它

```
# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[b-c]1
# cat /proc/mdstat

```

*创建RAID设备*

6、 接下来使用如下命令来检查 RAID 设备类型和 RAID 阵列

```
# mdadm -E /dev/sd[b-c]1
# mdadm --detail /dev/md0

```

*检查 RAID 设备类型*

*检查 RAID 设备阵列*

从上图中，人们很容易理解，RAID 1 已经创建好了，使用了 /dev/sdb1 和 /dev/sdc1 分区，你也可以看到状态为 resyncing（重新同步中）。

### 第4步：在 RAID 设备上创建文件系统

7、 给 md0 上创建 ext4 文件系统

```
# mkfs.ext4 /dev/md0

```

*创建 RAID 设备文件系统*

8、 接下来，挂载新创建的文件系统到“/mnt/raid1”，并创建一些文件，验证在挂载点的数据

```
# mkdir /mnt/raid1
# mount /dev/md0 /mnt/raid1/
# touch /mnt/raid1/tecmint.txt
# echo "tecmint raid setups" > /mnt/raid1/tecmint.txt

```

*挂载 RAID 设备*

9、为了在系统重新启动自动挂载 RAID 1，需要在 fstab 文件中添加条目。打开`/etc/fstab`文件并添加以下行：

```
/dev/md0                /mnt/raid1              ext4    defaults        0 0

```

*自动挂载 Raid 设备*

10、 运行`mount -av`，检查 fstab 中的条目是否有错误

```
# mount -av

```

*检查 fstab 中的错误*

11、 接下来，使用下面的命令保存 RAID 的配置到文件“mdadm.conf”中。

```
# mdadm --detail --scan --verbose >> /etc/mdadm.conf

```

*保存 Raid 的配置*

上述配置文件在系统重启时会读取并加载 RAID 设备。

### 第5步：在磁盘故障后检查数据

12、我们的主要目的是，即使在任何磁盘故障或死机时必须保证数据是可用的。让我们来看看，当任何一个磁盘不可用时会发生什么。

```
# mdadm --detail /dev/md0

```

*验证 RAID 设备*

在上面的图片中，我们可以看到在 RAID 中有2个设备是可用的，并且 Active Devices 是2。现在让我们看看，当一个磁盘拔出（移除 sdc 磁盘）或损坏后会发生什么。

```
# ls -l /dev | grep sd
# mdadm --detail /dev/md0

```

*测试 RAID 设备*

现在，在上面的图片中你可以看到，一个磁盘不见了。我从虚拟机上删除了一个磁盘。此时让我们来检查我们宝贵的数据。

```
# cd /mnt/raid1/
# cat tecmint.txt

```

*验证 RAID 数据*

你可以看到我们的数据仍然可用。由此，我们可以了解 RAID 1（镜像）的优势。在接下来的文章中，我们将看到如何设置一个 RAID 5 条带化分布式奇偶校验。希望这可以帮助你了解 RAID 1（镜像）是如何工作的。

---

via: <http://www.tecmint.com/create-raid1-in-linux/>

作者：[Babin Lonston](http://www.tecmint.com/author/babinlonston/) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Ubuntu 下五个最好的 BT 客户端

Summary: 在寻找 Ubuntu 中最好的 BT 客户端吗？事实上，Linux 桌面平台中有许多 BT 客户端，但是它们中的哪些才是最好的 Ubuntu 客户端呢？ 我将会列出 Linux 上最好的五个 BT 客户端，它们都拥有着体积轻盈，功能强大的特点，而且还有令人印象深刻的用户界面。自然，易于安装和使用也是特性之一。 Ubuntu 下最好的 BT 客户端 考虑到 Ubuntu 默认安装了 Transmission，所以我将会从这个列表中排除了 Transmission。但是这并不意味着 Transmission 没有资格出现在这个列表中，事实上，Transmission 是一个非常好的BT客户端，这也正是它被包括 Ubunt

Transmission 居然没有

我只用 uGet + aria2c

把transmission放哪里？

transmission-daemon竟然没有

開頭就提過了

来自广东中山的 Internet Explorer 8.0|Windows 7 用户

大家看文章都不从头看的么

# Ubuntu 下五个最好的 BT 客户端

在寻找 **Ubuntu 中最好的 BT 客户端**吗？事实上，Linux 桌面平台中有许多 BT 客户端，但是它们中的哪些才是**最好的 Ubuntu 客户端**呢？

我将会列出 Linux 上最好的五个 BT 客户端，它们都拥有着体积轻盈，功能强大的特点，而且还有令人印象深刻的用户界面。自然，易于安装和使用也是特性之一。

### Ubuntu 下最好的 BT 客户端

考虑到 Ubuntu 默认安装了 Transmission，所以我将会从这个列表中排除了 Transmission。但是这并不意味着 Transmission 没有资格出现在这个列表中，事实上，Transmission 是一个非常好的BT客户端，这也正是它被包括 Ubuntu 在内的多个发行版默认安装的原因。

### Deluge

[Deluge](http://deluge-torrent.org/) 被 Lifehacker 评选为 Linux 下最好的 BT 客户端，这说明了 Deluge 是多么的有用。而且，并不仅仅只有 Lifehacker 是 Deluge 的粉丝，纵观多个论坛，你都会发现不少 Deluge 的忠实拥趸。

快速，时尚而直观的界面使得 Deluge 成为 Linux 用户的挚爱。

Deluge 可在 Ubuntu 的仓库中获取，你能够在 Ubuntu 软件中心中安装它，或者使用下面的命令：

```
sudo apt-get install deluge

```

### qBittorrent

正如它的名字所暗示的，[qBittorrent](http://www.qbittorrent.org/) 是著名的 [Bittorrent](http://www.bittorrent.com/) 应用的 Qt 版本。如果曾经使用过它，你将会看到和 Windows 下的 Bittorrent 相似的界面。同样轻巧并且有着 BT 客户端的所有标准功能， qBittorrent 也可以在 Ubuntu 的默认仓库中找到。

它可以通过 Ubuntu 软件仓库安装，或者使用下面的命令：

```
sudo apt-get install qbittorrent

```

### Tixati

[Tixati](http://www.tixati.com/) 是另一个不错的 Ubuntu 下的 BT 客户端。它有着一个默认的黑暗主题，尽管很多人喜欢，但是我例外。它拥有着一切你能在 BT 客户端中找到的功能。

除此之外，它还有着数据分析的额外功能。你可以在美观的图表中分析流量以及其它数据。

* [下载 Tixati](http://www.tixati.com/download/)

### Vuze

[Vuze](http://www.vuze.com/) 是许多 Linux 以及 Windows 用户最喜欢的 BT 客户端。除了标准的功能，你可以直接在应用程序中搜索种子，也可以订阅系列片源，这样就无需再去寻找新的片源了，因为你可以在侧边栏中的订阅看到它们。

它还配备了一个视频播放器，可以播放带有字幕的高清视频等等。但是我不认为你会用它来代替那些更好的视频播放器，比如 VLC。

Vuze 可以通过 Ubuntu 软件中心安装或者使用下列命令：

```
sudo apt-get install vuze

```

### Frostwire

[Frostwire](http://www.frostwire.com/) 是一个你应该试一下的应用。它不仅仅是一个简单的 BT 客户端，它还可以应用于安卓，你可以用它通过 Wifi 来共享文件。

你可以在应用中搜索种子并且播放他们。除了下载文件，它还可以浏览本地的影音文件，并且将它们有条理的呈现在播放器中。这同样适用于安卓版本。

还有一个特点是：Frostwire 提供了独立音乐人的[合法音乐下载](http://www.frostclick.com/wp/)。你可以下载并且欣赏它们，免费而且合法。

* [下载 Frostwire](http://www.frostwire.com/downloads)

### 荣誉奖

在 Windows 中，uTorrent（发音：mu torrent）是我最喜欢的 BT 应用。尽管 uTorrent 可以在 Linux 下运行，但是我还是特意忽略了它。因为在 Linux 下使用 uTorrent 不仅困难，而且无法获得完整的应用体验（运行在浏览器中）。

可以[在这里](http://sysads.co.uk/2014/05/install-utorrent-3-3-ubuntu-14-04-13-10/)阅读 Ubuntu下uTorrent 的安装教程。

#### 快速提示:

大多数情况下，BT 应用不会默认自动启动。如果想改变这一行为，请阅读[如何管理 Ubuntu 下的自启动程序](http://itsfoss.com/manage-startup-applications-ubuntu/)来学习。

### 你最喜欢的是什么？

这些是我对于 Ubuntu 下最好的 BT 客户端的意见。你最喜欢的是什么呢？请发表评论。也可以查看与本主题相关的[Ubuntu 最好的下载管理器](http://itsfoss.com/4-best-download-managers-for-linux/)。如果使用 Popcorn Time，试试 [Popcorn Time 技巧](http://itsfoss.com/popcorn-time-tips/)

---

via: <http://itsfoss.com/best-torrent-ubuntu/>

作者：[Abhishek](http://itsfoss.com/author/abhishek/) 译者：[Xuanwo](https://github.com/Xuanwo) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


KDE Plasma 5.4.0 发布，八月特色版

Summary: 2015 年 8 月 25 ，星期二，KDE 发布了 Plasma 5 的一个特色新版本。 此版本为我们带来了许多非常棒的感受，如优化了对高分辨率的支持，KRunner 自动补全和一些新的 Breeze 漂亮图标。这还为不久以后的技术预览版的 Wayland 桌面奠定了基础。我们还带来了几个新组件，如声音音量部件，显示器校准工具和测试版的用户管理工具。 新的音频音量程序  新的音频音量程序直接工作于 PulseAudio (Linux 上一个非常流行的音频服务) 之上 ，并且在一个漂亮的简约的界面提供一个完整的音量控制和输出设定。 替代的应用控制面板起动器  Plasma 5.4 在

看来KDE5的时代要到了

漂亮得丧心病狂……

对新图标都免疫了，图像界面关键是流畅感啊~可能是我每次装好都不调教一下。

漂亮

漂亮是很漂亮，但我已经回不去了。

坐等更新

赞个，晚上回去再archlinux上装试试。

唉，不早点发布，可惜我已回不去了。习惯苹果了

还是喜欢mint的界面

赞！！立刻试试看！！

# KDE Plasma 5.4.0 发布，八月特色版

2015 年 8 月 25 ，星期二，KDE 发布了 Plasma 5 的一个特色新版本。

此版本为我们带来了许多非常棒的感受，如优化了对高分辨率的支持，KRunner 自动补全和一些新的 Breeze 漂亮图标。这还为不久以后的技术预览版的 Wayland 桌面奠定了基础。我们还带来了几个新组件，如声音音量部件，显示器校准工具和测试版的用户管理工具。

### 新的音频音量程序

新的音频音量程序直接工作于 PulseAudio (Linux 上一个非常流行的音频服务) 之上 ，并且在一个漂亮的简约的界面提供一个完整的音量控制和输出设定。

### 替代的应用控制面板起动器

Plasma 5.4 在 kdeplasma-addons 软件包中提供了一个全新的全屏的应用控制面板，它具有应用菜单的所有功能，还支持缩放和全空间键盘导航。新的起动器可以像你目前所用的“最近使用的”或“收藏的文档和联系人”一样简单和快速地查找应用。

### 丰富的艺术图标

Plasma 5.4 提供了超过 1400 个的新图标，其中不仅包含 KDE 程序的，而且还为 Inkscape， Firefox 和 Libreoffice 提供 Breeze 主题的艺术图标，可以体验到更加一致和本地化的感觉。

### KRunner 历史记录

KRunner 现在可以记住之前的搜索历史并根据历史记录进行自动补全。

### Network 程序中实用的图形展示

Network 程序现在可以以图形形式显示网络流量了，同时也支持两个新的 VPN 插件：通过 SSH 连接或通过 SSTP 连接。

### Wayland 技术预览

随着 Plasma 5.4 ，Wayland 桌面发布了第一个技术预览版。在使用自由图形驱动（free graphics drivers）的系统上可以使用 KWin（Plasma 的 Wayland 合成器和 X11 窗口管理器）通过[内核模式设定](https://en.wikipedia.org/wiki/Direct_Rendering_Manager)来运行 Plasma。现在已经支持的功能需求来自于[手机 Plasma 项目](https://dot.kde.org/2015/07/25/plasma-mobile-free-mobile-platform)，更多的面向桌面的功能还未被完全实现。现在还不能作为替换那些基于 Xorg 的桌面，但可以轻松地对它测试和贡献，以及观看令人激动视频。有关如何在 Wayland 中使用 Plasma 的介绍请到：[KWin 维基页](https://community.kde.org/KWin/Wayland#Start_a_Plasma_session_on_Wayland)。Wlayland 将随着我们构建的稳定版本而逐步得到改进。

### 其他的改变和添加

* 优化对高 DPI 支持
* 更少的内存占用
* 桌面搜索使用了更快的新后端
* 便笺增加拖拉支持和键盘导航
* 回收站重新支持拖拉
* 系统托盘获得更快的可配置性
* 文档重新修订和更新
* 优化了窄小面板上的数字时钟的布局
* 数字时钟支持 ISO 日期
* 切换数字时钟 12/24 格式更简单
* 日历显示第几周
* 任何项目都可以收藏进应用菜单（Kicker），支持收藏文档和 Telepathy 联系人
* Telepathy 联系人收藏可以展示联系人的照片和实时状态
* 优化程序与容器间的焦点和激活处理
* 文件夹视图中各种小修复：更好的默认尺寸，鼠标交互问题以及文本标签换行
* 任务管理器更好的呈现起动器默认的应用图标
* 可再次通过将程序拖入任务管理器来添加启动器
* 可配置中间键点击在任务管理器中的行为：无动作，关闭窗口，启动一个相同的程序的新实例
* 任务管理器现在以列排序优先，无论用户是否更倾向于行优先;许多用户更喜欢这样排序是因为它会使更少的任务按钮像窗口一样移来移去
* 优化任务管理器的图标和缩放边
* 任务管理器中各种小修复：垂直下拉，触摸事件处理现在支持所有系统，组扩展箭头的视觉问题
* 提供可用的目的框架技术预览版，可以使用 QuickShare Plasmoid，它可以让许多 web 服务分享文件更容易
* 增加了显示器配置工具
* 增加的 kwallet-pam 可以在登录时打开 wallet
* 用户管理器现在会同步联系人到 KConfig 的设置中，用户账户模块被丢弃了
* 应用程序菜单（Kicker）的性能得到改善
* 应用程序菜单（Kicker）各种小修复：隐藏/显示程序更加可靠，顶部面板的对齐修复，文件夹视图中 “添加到桌面”更加可靠，在基于 KActivities 的最新模块中有更好的表现
* 支持自定义菜单布局 （kmenuedit）和应用程序菜单（Kicker）支持菜单项目分隔
* 当在面板中时，改进了文件夹视图，参见 [blog](https://blogs.kde.org/2015/06/04/folder-view-panel-popups-are-list-views-again)
* 将文件夹拖放到桌面容器现在会再次创建一个文件夹视图

[完整的 Plasma 5.4 变更日志在此](https://www.kde.org/announcements/plasma-5.3.2-5.4.0-changelog.php)。

### Live 镜像

尝鲜的最简单的方式就是从 U 盘中启动，可以在 KDE 社区 Wiki 中找到 各种 [带有 Plasma 5 的 Live 镜像](https://community.kde.org/Plasma/LiveImages)。

### 下载软件包

各发行版已经构建了软件包，或者正在构建，wiki 中的列出了各发行版的软件包名：[软件包下载维基页](https://community.kde.org/Plasma/Packages)。

### 源码下载

可以直接从源码中安装 Plasma 5。KDE 社区 Wiki 已经介绍了[怎样编译](http://community.kde.org/Frameworks/Building)。

注意，Plasma 5 与 Plasma 4 不兼容，必须先卸载旧版本，或者安装到不同的前缀处。

* [源代码信息页](https://www.kde.org/info/plasma-5.4.0.php)

---

via: <https://www.kde.org/announcements/plasma-5.4.0.php>

译者：[Locez](http://locez.com) 校对：[wxy](http://github.com/wxy)


Summary: 在 RAID 5 中，数据条带化后存储在分布式奇偶校验的多个磁盘上。分布式奇偶校验的条带化意味着它将奇偶校验信息和条带化数据分布在多个磁盘上，这样会有很好的数据冗余。  在 Linux 中配置 RAID 5 对于此 RAID 级别它至少应该有三个或更多个磁盘。RAID 5 通常被用于大规模生产环境中，以花费更多的成本来提供更好的数据冗余性能。 什么是奇偶校验？ 奇偶校验是在数据存储中检测错误最简单的常见方式。奇偶校验信息存储在每个磁盘中，比如说，我们有4个磁盘，其中相当于一个磁盘大小的空间被分割去存储所有磁盘的奇偶校验信息。如果任何一

第8小步中代码第二行"-l=5,-n=3"应该为"-l 5 -n 3"

# 在 Linux 下使用 RAID（四）：创建 RAID 5（条带化与分布式奇偶校验）

在 RAID 5 中，数据条带化后存储在分布式奇偶校验的多个磁盘上。分布式奇偶校验的条带化意味着它将奇偶校验信息和条带化数据分布在多个磁盘上，这样会有很好的数据冗余。

*在 Linux 中配置 RAID 5*

对于此 RAID 级别它至少应该有三个或更多个磁盘。RAID 5 通常被用于大规模生产环境中，以花费更多的成本来提供更好的数据冗余性能。

#### 什么是奇偶校验？

奇偶校验是在数据存储中检测错误最简单的常见方式。奇偶校验信息存储在每个磁盘中，比如说，我们有4个磁盘，其中相当于一个磁盘大小的空间被分割去存储所有磁盘的奇偶校验信息。如果任何一个磁盘出现故障，我们可以通过更换故障磁盘后，从奇偶校验信息重建得到原来的数据。

#### RAID 5 的优点和缺点

* 提供更好的性能。
* 支持冗余和容错。
* 支持热备份。
* 将用掉一个磁盘的容量存储奇偶校验信息。
* 单个磁盘发生故障后不会丢失数据。我们可以更换故障硬盘后从奇偶校验信息中重建数据。
* 适合于面向事务处理的环境，读操作会更快。
* 由于奇偶校验占用资源，写操作会慢一些。
* 重建需要很长的时间。

#### 要求

创建 RAID 5 最少需要3个磁盘，你也可以添加更多的磁盘，前提是你要有多端口的专用硬件 RAID 控制器。在这里，我们使用“mdadm”包来创建软件 RAID。

mdadm 是一个允许我们在 Linux 下配置和管理 RAID 设备的包。默认情况下没有 RAID 的配置文件，我们在创建和配置 RAID 后必须将配置文件保存在一个单独的文件 mdadm.conf 中。

在进一步学习之前，我建议你通过下面的文章去了解 Linux 中 RAID 的基础知识。

* [介绍 RAID 的级别和概念](/article-6085-1.html)
* [使用 mdadm 工具创建软件 RAID 0 （条带化）](/article-6087-1.html)
* [用两块磁盘创建 RAID 1（镜像）](/article-6093-1.html)

#### 我的服务器设置

```
操作系统 :  CentOS 6.5 Final
IP 地址  :    192.168.0.227
主机名    :  rd5.tecmintlocal.com
磁盘 1 [20GB]  :  /dev/sdb
磁盘 2 [20GB]  :  /dev/sdc
磁盘 3 [20GB]  :  /dev/sdd

```

这是9篇系列教程的第4部分，在这里我们要在 Linux 系统或服务器上使用三个20GB（名为/dev/sdb, /dev/sdc 和 /dev/sdd）的磁盘建立带有分布式奇偶校验的软件 RAID 5。

### 第1步：安装 mdadm 并检验磁盘

1、 正如我们前面所说，我们使用 CentOS 6.5 Final 版本来创建 RAID 设置，但同样的做法也适用于其他 Linux 发行版。

```
# lsb_release -a
# ifconfig | grep inet

```

*CentOS 6.5 摘要*

2、 如果你按照我们的 RAID 系列去配置的，我们假设你已经安装了“mdadm”包，如果没有，根据你的 Linux 发行版使用下面的命令安装。

```
# yum install mdadm     [在 RedHat 系统]
# apt-get install mdadm     [在 Debain 系统]

```

3、 “mdadm”包安装后，先使用`fdisk`命令列出我们在系统上增加的三个20GB的硬盘。

```
# fdisk -l | grep sd

```

*安装 mdadm 工具*

4、 现在该检查这三个磁盘是否存在 RAID 块，使用下面的命令来检查。

```
# mdadm -E /dev/sd[b-d]
# mdadm --examine /dev/sdb /dev/sdc /dev/sdd # 或

```

*检查 Raid 磁盘*

**注意**: 上面的图片说明，没有检测到任何超级块。所以，这三个磁盘中没有定义 RAID。让我们现在开始创建一个吧！

### 第2步：为磁盘创建 RAID 分区

5、 首先，在创建 RAID 前磁盘（/dev/sdb, /dev/sdc 和 /dev/sdd）必须有分区，因此，在进行下一步之前，先使用`fdisk`命令进行分区。

```
# fdisk /dev/sdb
# fdisk /dev/sdc
# fdisk /dev/sdd

```

#### 创建 /dev/sdb 分区

请按照下面的说明在 /dev/sdb 硬盘上创建分区。

* 按 `n` 创建新的分区。
* 然后按 `P` 选择主分区。选择主分区是因为还没有定义过分区。
* 接下来选择分区号为1。默认就是1。
* 这里是选择柱面大小，我们没必要选择指定的大小，因为我们需要为 RAID 使用整个分区，所以只需按两次 Enter 键默认将整个容量分配给它。
* 然后，按 `P` 来打印创建好的分区。
* 改变分区类型，按 `L`可以列出所有可用的类型。
* 按 `t` 修改分区类型。
* 这里使用`fd`设置为 RAID 的类型。
* 然后再次使用`p`查看我们所做的更改。
* 使用`w`保存更改。

*创建 sdb 分区*

**注意**: 我们仍要按照上面的步骤来创建 sdc 和 sdd 的分区。

#### 创建 /dev/sdc 分区

现在，通过下面的截图给出创建 sdc 和 sdd 磁盘分区的方法，或者你可以按照上面的步骤。

```
# fdisk /dev/sdc

```

*创建 sdc 分区*

#### 创建 /dev/sdd 分区

```
# fdisk /dev/sdd

```

*创建 sdd 分区*

6、 创建分区后，检查三个磁盘 sdb, sdc, sdd 的变化。

```
# mdadm --examine /dev/sdb /dev/sdc /dev/sdd
# mdadm -E /dev/sd[b-c]  # 或

```

*检查磁盘变化*

**注意**: 在上面的图片中，磁盘的类型是 fd。

7、 现在在新创建的分区检查 RAID 块。如果没有检测到超级块，我们就能够继续下一步，在这些磁盘中创建一个新的 RAID 5 配置。

\*在分区中检查 RAID \*

### 第3步：创建 md 设备 md0

8、 现在使用所有新创建的分区(sdb1, sdc1 和 sdd1)创建一个 RAID 设备“md0”（即 /dev/md0），使用以下命令。

```
# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
# mdadm -C /dev/md0 -l=5 -n=3 /dev/sd[b-d]1   # 或

```

9、 创建 RAID 设备后，检查并确认 RAID，从 mdstat 中输出中可以看到包括的设备的 RAID 级别。

```
# cat /proc/mdstat

```

*验证 Raid 设备*

如果你想监视当前的创建过程，你可以使用`watch`命令，将 `cat /proc/mdstat` 传递给它，它会在屏幕上显示且每隔1秒刷新一次。

```
# watch -n1 cat /proc/mdstat

```

*监控 RAID 5 构建过程*

*Raid 5 过程概要*

10、 创建 RAID 后，使用以下命令验证 RAID 设备

```
# mdadm -E /dev/sd[b-d]1

```

*验证 Raid 级别*

**注意**: 因为它显示三个磁盘的信息，上述命令的输出会有点长。

11、 接下来，验证 RAID 阵列，假定包含 RAID 的设备正在运行并已经开始了重新同步。

```
# mdadm --detail /dev/md0

```

*验证 RAID 阵列*

### 第4步：为 md0 创建文件系统

12、 在挂载前为“md0”设备创建 ext4 文件系统。

```
# mkfs.ext4 /dev/md0

```

*创建 md0 文件系统*

13、 现在，在`/mnt`下创建目录 raid5，然后挂载文件系统到 /mnt/raid5/ 下，并检查挂载点下的文件，你会看到 lost+found 目录。

```
# mkdir /mnt/raid5
# mount /dev/md0 /mnt/raid5/
# ls -l /mnt/raid5/

```

14、 在挂载点 /mnt/raid5 下创建几个文件，并在其中一个文件中添加一些内容然后去验证。

```
# touch /mnt/raid5/raid5_tecmint_{1..5}
# ls -l /mnt/raid5/
# echo "tecmint raid setups" > /mnt/raid5/raid5_tecmint_1
# cat /mnt/raid5/raid5_tecmint_1
# cat /proc/mdstat

```

*挂载 RAID 设备*

15、 我们需要在 fstab 中添加条目，否则系统重启后将不会显示我们的挂载点。编辑 fstab 文件添加条目，在文件尾追加以下行。挂载点会根据你环境的不同而不同。

```
# vim /etc/fstab

/dev/md0                /mnt/raid5              ext4    defaults        0 0

```

*自动挂载 RAID 5*

16、 接下来，运行`mount -av`命令检查 fstab 条目中是否有错误。

```
# mount -av

```

*检查 Fstab 错误*

### 第5步：保存 Raid 5 的配置

17、 在前面章节已经说过，默认情况下 RAID 没有配置文件。我们必须手动保存。如果此步中没有跟随不属于 md0 的 RAID 设备，它会是一些其他随机数字。

所以，我们必须要在系统重新启动之前保存配置。如果配置保存它在系统重新启动时会被加载到内核中然后 RAID 也将被加载。

```
# mdadm --detail --scan --verbose >> /etc/mdadm.conf

```

*保存 RAID 5 配置*

注意：保存配置将保持 md0 设备的 RAID 级别稳定不变。

### 第6步：添加备用磁盘

18、 备用磁盘有什么用？它是非常有用的，如果我们有一个备用磁盘，当我们阵列中的任何一个磁盘发生故障后，这个备用磁盘会进入激活重建过程，并从其他磁盘上同步数据，这样就有了冗余。

更多关于添加备用磁盘和检查 RAID 5 容错的指令，请阅读下面文章中的第6步和第7步。

* [在 RAID 5 中添加备用磁盘](http://www.tecmint.com/create-raid-6-in-linux/)

### 结论

在这篇文章中，我们已经看到了如何使用三个磁盘配置一个 RAID 5 。在接下来的文章中，我们将看到如何故障排除并且当 RAID 5 中的一个磁盘损坏后如何恢复。

---

via: <http://www.tecmint.com/create-raid-5-in-linux/>

作者：[Babin Lonston](http://www.tecmint.com/author/babinlonston/) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Docker 容器中运行 Kali Linux 2.0

Summary: 介绍 Kali Linux 是一个对于安全测试人员和白帽的一个知名操作系统。它带有大量安全相关的程序，这让它很容易用于渗透测试。最近，Kali Linux 2.0 发布了，它被认为是这个操作系统最重要的一次发布。另一方面，Docker 技术由于它的可扩展性和易用性让它变得很流行。Dokcer 让你非常容易地将你的程序带给你的用户。好消息是你可以通过 Docker 运行Kali Linux 了，让我们看看该怎么做 :)  在 Docker 中运行 Kali Linux 2.0 相关提示  如果你还没有在系统中安装docker，你可以运行下面的命令： 对于 Ubuntu/Linux Mint/Debian： sudo apt-get

# 如何在 Docker 容器中运行 Kali Linux 2.0

### 介绍

Kali Linux 是一个对于安全测试人员和白帽的一个知名操作系统。它带有大量安全相关的程序，这让它很容易用于渗透测试。最近，[Kali Linux 2.0](/article-6005-1.html) 发布了，它被认为是这个操作系统最重要的一次发布。另一方面，Docker 技术由于它的可扩展性和易用性让它变得很流行。Dokcer 让你非常容易地将你的程序带给你的用户。好消息是你可以通过 Docker 运行Kali Linux 了，让我们看看该怎么做 :)

### 在 Docker 中运行 Kali Linux 2.0

**相关提示**

>
> 如果你还没有在系统中安装docker，你可以运行下面的命令：
>
>
> **对于 Ubuntu/Linux Mint/Debian：**
>
>
>
> ```
> sudo apt-get install docker
>
> ```
>
> **对于 Fedora/RHEL/CentOS：**
>
>
>
> ```
> sudo yum install docker
>
> ```
>
> **对于 Fedora 22：**
>
>
>
> ```
> dnf install docker
>
> ```
>
> 你可以运行下面的命令来启动docker：
>
>
>
> ```
> sudo docker start
>
> ```
>
>

首先运行下面的命令确保 Docker 服务运行正常：

```
sudo docker status

```

Kali Linux 的开发团队已将 Kali Linux 的 docker 镜像上传了，只需要输入下面的命令来下载镜像。

```
docker pull kalilinux/kali-linux-docker

```

下载完成后，运行下面的命令来找出你下载的 docker 镜像的 ID。

```
docker images

```

现在运行下面的命令来从镜像文件启动 kali linux docker 容器（这里需用正确的镜像ID替换）。

```
docker run -i -t 198cd6df71ab3 /bin/bash

```

它会立刻启动容器并且让你登录到该操作系统，你现在可以在 Kaili Linux 中工作了。

你可以在容器外面通过下面的命令来验证容器已经启动/运行中了：

```
docker ps

```

### 总结

Docker 是一种最聪明的用来部署和分发包的方式。Kali Linux docker 镜像非常容易上手，也不会消耗很大的硬盘空间，这样也可以很容易地在任何安装了 docker 的操作系统上测试这个很棒的发行版了。

---

via: <http://linuxpitstop.com/run-kali-linux-2-0-in-docker-container/>

作者：[Aun](http://linuxpitstop.com/author/aun/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


使用 dd 命令进行硬盘 I/O 性能检测

Summary: 如何使用dd命令测试我的硬盘性能？如何在linux操作系统下检测硬盘的读写速度？ 你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试。  dd命令 ：它被用来在Linux和类Unix系统下对硬盘设备进行写性能的检测。 hparm命令：它用来在基于 Linux 的系统上获取或设置硬盘参数，包括测试读性能以及缓存性能等。  在这篇指南中，你将会学到如何使用dd命令来测试硬盘性能。  使用dd命令来监控硬盘的读写性能：  打开shell终端。 或者通过ssh登录到远程服务器。 使用dd命令来测量服务器的吞吐率（写速度) dd if=/dev/zero of=/t

在CentOS 6.X上不是hparm命令是hdparm，不知道是不是弄错了。

# 使用 dd 命令进行硬盘 I/O 性能检测

如何使用dd命令测试我的硬盘性能？如何在linux操作系统下检测硬盘的读写速度？

你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试。

* **dd命令** ：它被用来在Linux和类Unix系统下对硬盘设备进行写性能的检测。
* **hparm命令**：它用来在基于 Linux 的系统上获取或设置硬盘参数，包括测试读性能以及缓存性能等。

在这篇指南中，你将会学到如何使用dd命令来测试硬盘性能。

### 使用dd命令来监控硬盘的读写性能：

* 打开shell终端。
* 或者通过ssh登录到远程服务器。
* 使用dd命令来测量服务器的吞吐率（写速度) `dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync`
* 使用dd命令测量服务器延迟 `dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync`

#### 理解dd命令的选项

在这个例子当中，我将使用搭载Ubuntu Linux 14.04 LTS系统的RAID-10（配有SAS SSD的Adaptec 5405Z）服务器阵列来运行。基本语法为：

```
dd if=/dev/input.file  of=/path/to/output.file  bs=block-size  count=number-of-blocks  oflag=dsync
## GNU dd语法 ##
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
##另外一种GNU dd的语法 ##
dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync

```

输出样例：

*图01: 使用dd命令获取的服务器吞吐率*

请各位注意在这个实验中，我们写入一个G的数据，可以发现，服务器的吞吐率是135 MB/s，这其中

* `if=/dev/zero` (if=/dev/input.file) ：用来设置dd命令读取的输入文件名。
* `of=/tmp/test1.img` (of=/path/to/output.file)：dd命令将input.file写入的输出文件的名字。
* `bs=1G` (bs=block-size) ：设置dd命令读取的块的大小。例子中为1个G。
* `count=1` (count=number-of-blocks)：dd命令读取的块的个数。
* `oflag=dsync` (oflag=dsync) ：使用同步I/O。不要省略这个选项。这个选项能够帮助你去除caching的影响，以便呈现给你精准的结果。
* `conv=fdatasyn`: 这个选项和`oflag=dsync`含义一样。

在下面这个例子中，一共写了1000次，每次写入512字节来获得RAID10服务器的延迟时间：

```
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync

```

输出样例：

```
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.60362 s, 848 kB/s

```

请注意服务器的吞吐率以及延迟时间也取决于服务器/应用的负载。所以我推荐你在一个刚刚重启过并且处于峰值时间的服务器上来运行测试，以便得到更加准确的度量。现在你可以在你的所有设备上互相比较这些测试结果了。

### 为什么服务器的吞吐率和延迟时间都这么差？

低的数值并不意味着你在使用差劲的硬件。可能是硬件 RAID10的控制器缓存导致的。

使用hdparm命令来查看硬盘缓存的读速度。

我建议你运行下面的命令2-3次来对设备读性能进行检测，以作为参照和相互比较：

```
### 有缓存的硬盘读性能测试——/dev/sda ###
hdparm -t /dev/sda1
## 或者 ##
hdparm -t /dev/sda

```

然后运行下面这个命令2-3次来对缓存的读性能进行对照性检测：

```
## Cache读基准——/dev/sda ###
hdparm -T /dev/sda1
## 或者 ##
hdparm -T /dev/sda

```

或者干脆把两个测试结合起来：

```
hdparm -Tt /dev/sda

```

输出样例：

*图02: 检测硬盘读入以及缓存性能的Linux hdparm命令*

请再次注意，由于文件文件操作的缓存属性，你将总是会看到很高的读速度。

### 使用dd命令来测试读取速度

为了获得精确的读测试数据，首先在测试前运行下列命令，来将缓存设置为无效：

```
flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
time time dd if=/path/to/bigfile of=/dev/null bs=8k

```

#### 笔记本上的示例

运行下列命令：

```
### 带有Cache的Debian系统笔记本吞吐率###
dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct

###使cache失效###
hdparm -W0 /dev/sda

###没有Cache的Debian系统笔记本吞吐率###
dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct

```

#### 苹果OS X Unix(Macbook pro)的例子

GNU dd has many more options but OS X/BSD and Unix-like dd command need to run as follows to test real disk I/O and not memory add sync option as follows:

GNU dd命令有其他许多选项，但是在 OS X/BSD 以及类Unix中， dd命令需要像下面那样执行来检测去除掉内存地址同步的硬盘真实I/O性能：

```
## 运行这个命令2-3次来获得更好地结果 ###
time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync"

```

输出样例：

```
1024+0 records in
1024+0 records out
104857600 bytes transferred in 0.165040 secs (635346520 bytes/sec)

real    0m0.241s
user    0m0.004s
sys 0m0.113s

```

本人Macbook Pro的写速度是635346520字节（635.347MB/s)。

### 不喜欢用命令行?

你可以在Linux或基于Unix的系统上使用disk utility(gnome-disk-utility)这款工具来得到同样的信息。下面的那个图就是在我的Fedora Linux v22 VM上截取的。

#### 图形化方法

点击“Activites”或者“Super”按键来在桌面和Activites视图间切换。输入“Disks”

*图03: 打开Gnome硬盘工具*

在左边的面板上选择你的硬盘，点击configure按钮，然后点击“Benchmark partition”：

*图04: 评测硬盘/分区*

最后，点击“Start Benchmark...”按钮（你可能需要输入管理员用户名和密码）：

*图05: 最终的评测结果*

如果你要问，我推荐使用哪种命令和方法？

* 我推荐在所有的类Unix系统上使用dd命令（`time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync`）
* 如果你在使用GNU/Linux，使用dd命令 (`dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync`)
* 确保你每次使用时，都调整了count以及bs参数以获得更好的结果。
* GUI方法只适合桌面系统为Gnome2或Gnome3的Linux/Unix笔记本用户。

---

via: <http://www.cyberciti.biz/faq/howto-linux-unix-test-disk-performance-with-dd-command/>

作者：Vivek Gite 译者：[DongShuaike](https://github.com/DongShuaike) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Linux有问必答：如何检查MariaDB服务端版本

Summary: 提问: 我使用的是一台运行MariaDB的VPS。我该如何检查MariaDB服务端的版本？  有时候你需要知道你的数据库版本，比如当你升级你数据库或对已知缺陷打补丁时。这里有几种方法找出MariaDB版本的方法。  方法一 第一种找出版本的方法是登录MariaDB服务器，登录之后，你会看到一些MariaDB的版本信息。  另一种方法是在登录MariaDB后出现的命令行中输入status命令。输出会显示服务器的版本还有协议版本。  方法二 如果你不能访问MariaDB服务器，那么你就不能用第一种方法。这种情况下你可以根据MariaDB的安装包的版本来推测。这种方法只有在Mar

囧，这个作为系统工程师，最基本的能力吧。

所以　mysql -V 没用咯？　这个略微有点低了吧。。

是很简单的。这里指的是你不能在服务器上。

# Linux有问必答：如何检查MariaDB服务端版本

>
> **提问**: 我使用的是一台运行MariaDB的VPS。我该如何检查MariaDB服务端的版本？
>
>
>

有时候你需要知道你的数据库版本，比如当你升级你数据库或对已知缺陷打补丁时。这里有几种方法找出MariaDB版本的方法。

### 方法一

第一种找出版本的方法是登录MariaDB服务器，登录之后，你会看到一些MariaDB的版本信息。

另一种方法是在登录MariaDB后出现的命令行中输入‘status’命令。输出会显示服务器的版本还有协议版本。

### 方法二

如果你不能访问MariaDB服务器，那么你就不能用第一种方法。这种情况下你可以根据MariaDB的安装包的版本来推测。这种方法只有在MariaDB通过包管理器安装的才有用。

你可以用下面的方法检查MariaDB的安装包。

#### Debian、Ubuntu或者Linux Mint:

```
$ dpkg -l | grep mariadb

```

下面的输出说明MariaDB的版本是10.0.17。

#### Fedora、CentOS或者 RHEL:

```
$ rpm -qa | grep mariadb

```

下面的输出说明安装的版本是5.5.41。

---

via: <http://ask.xmodulo.com/check-mariadb-server-version.html>

作者：[Dan Nanni](http://ask.xmodulo.com/author/nanni) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Linux中通过命令行监控股票报价

这两天大盘略有反弹啊

为何自虐

go get github.com/michaeldv/mop

在centeros 下报

-bash: go: command not found

为什么我的cmd命令就不行

来自广东梅州的 Internet Explorer 11.0|Windows 8.1 用户

这个对中国股市的支持如何？

# Linux中通过命令行监控股票报价

如果你是那些股票投资者或者交易者中的一员，那么监控证券市场将是你的日常工作之一。最有可能的是你会使用一个在线交易平台，这个平台有着一些漂亮的实时图表和全部种类的高级股票分析和交易工具。虽然这种复杂的市场研究工具是任何严肃的证券投资者了解市场的必备工具，但是监控最新的股票报价来构建有利可图的投资组合仍然有很长一段路要走。

如果你是一位长久坐在终端前的全职系统管理员，而证券交易又成了你日常生活中的业余兴趣，那么一个简单地显示实时股票报价的命令行工具会是给你的恩赐。

在本教程中，让我来介绍一个灵巧而简洁的命令行工具，它可以让你在Linux上从命令行监控股票报价。

这个工具叫做[Mop](https://github.com/michaeldv/mop)。它是用GO编写的一个轻量级命令行工具，可以极其方便地跟踪来自美国市场的最新股票报价。你可以很轻松地自定义要监控的证券列表，它会在一个基于ncurses的便于阅读的界面显示最新的股票报价。

**注意**：Mop是通过雅虎金融API获取最新的股票报价的。你必须意识到，他们的的股票报价已知会有15分钟的延时。所以，如果你正在寻找0延时的“实时”股票报价，那么Mop就不是你的菜了。这种“现场”股票报价订阅通常可以通过向一些不开放的私有接口付费获取。了解这些之后，让我们来看看怎样在Linux环境下使用Mop吧。

### 安装 Mop 到 Linux

由于Mop是用Go实现的，你首先需要安装Go语言。如果你还没有安装Go，请参照[此指南](http://ask.xmodulo.com/install-go-language-linux.html)将Go安装到你的Linux平台中。请确保按指南中所讲的设置GOPATH环境变量。

安装完Go后，继续像下面这样安装Mop。

**Debian，Ubuntu 或 Linux Mint**

```
$ sudo apt-get install git
$ go get github.com/michaeldv/mop
$ cd $GOPATH/src/github.com/michaeldv/mop
$ make install

```

**Fedora，CentOS，RHEL**

```
$ sudo yum install git
$ go get github.com/michaeldv/mop
$ cd $GOPATH/src/github.com/michaeldv/mop
$ make install

```

上述命令将安装Mop到$GOPATH/bin。

现在，编辑你的.bashrc，将$GOPATH/bin写到你的PATH变量中。

```
export PATH="$PATH:$GOPATH/bin"

```

---

```
$ source ~/.bashrc

```

### 使用Mop来通过命令行监控股票报价

要启动Mop，只需运行名为cmd的命令（LCTT 译注：这名字实在是……）。

```
$ cmd

```

首次启动，你将看到一些Mop预配置的证券行情自动收录器。

报价显示了像最新价格、交易百分比、每日低/高、52周低/高、股息以及年收益率等信息。Mop从[CNN](http://money.cnn.com/data/markets/)获取市场总览信息，从[雅虎金融](http://finance.yahoo.com/)获得个股报价，股票报价信息它自己会在终端内周期性更新。

### 自定义Mop中的股票报价

让我们来试试自定义证券列表吧。对此，Mop提供了易于记忆的快捷键：‘+’用于添加一只新股，而‘-’则用于移除一只股票。

要添加新股，请按‘+’，然后输入股票代码来添加（如MSFT）。你可以通过输入一个由逗号分隔的交易代码列表来一次添加多个股票（如”MSFT, AMZN, TSLA”）。

从列表中移除股票可以类似地按‘-’来完成。

### 对Mop中的股票报价排序

你可以基于任何栏目对股票报价列表进行排序。要排序，请按‘o’，然后使用左/右键来选择排序的基准栏目。当选定了一个特定栏目后，你可以按回车来对列表进行升序排序，或者降序排序。

通过按‘g’，你可以根据股票当日的涨或跌来分组。涨的情况以绿色表示，跌的情况以白色表示。

如果你想要访问帮助页，只需要按‘?’。

### 尾声

正如你所见，Mop是一个轻量级的，然而极其方便的证券监控工具。当然，你可以很轻松地从其它别的什么地方，从在线站点，你的智能手机等等访问到股票报价信息。然而，如果你在整天使用终端环境，Mop可以很容易地适应你的工作环境，希望没有让你过多地从你的工作流程中分心。只要让它在你其中一个终端中运行并保持市场日期持续更新，那就够了。

交易快乐！

---

via: <http://xmodulo.com/monitor-stock-quotes-command-line-linux.html>

作者：[Dan Nanni](http://xmodulo.com/author/nanni) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何配置 MongoDB 副本集

# 如何配置 MongoDB 副本集

MongoDB 已经成为市面上最知名的 NoSQL 数据库。MongoDB 是面向文档的，它的无模式设计使得它在各种各样的WEB 应用当中广受欢迎。最让我喜欢的特性之一是它的副本集（Replica Set），副本集将同一数据的多份拷贝放在一组 mongod 节点上，从而实现数据的冗余以及高可用性。

这篇教程将向你介绍如何配置一个 MongoDB 副本集。

副本集的最常见配置需要一个主节点以及多个副节点。这之后启动的复制行为会从这个主节点到其他副节点。副本集不止可以针对意外的硬件故障和停机事件对数据库提供保护，同时也因为提供了更多的节点从而提高了数据库客户端数据读取的吞吐量。

### 配置环境

这个教程里，我们会配置一个包括一个主节点以及两个副节点的副本集。

为了达到这个目的，我们使用了3个运行在 VirtualBox 上的虚拟机。我会在这些虚拟机上安装 Ubuntu 14.04，并且安装 MongoDB 官方包。

我会在一个虚拟机实例上配置好所需的环境，然后将它克隆到其他的虚拟机实例上。因此，选择一个名为 master 的虚拟机，执行以下安装过程。

首先，我们需要给 apt 增加一个 MongoDB 密钥：

```
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

```

然后，将官方的 MongoDB 仓库添加到 source.list 中：

```
$ sudo su
# echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

```

接下来更新 apt 仓库并且安装 MongoDB。

```
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

```

现在对 /etc/mongodb.conf 做一些更改

```
auth = true
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongod.log
logappend=true
keyFile=/var/lib/mongodb/keyFile
replSet=myReplica

```

第一行的作用是表明我们的数据库需要验证才可以使用。keyfile 配置用于 MongoDB 节点间复制行为的密钥文件。replSet 为副本集设置一个名称。

接下来我们创建一个用于所有实例的密钥文件。

```
$ echo -n "MyRandomStringForReplicaSet" | md5sum > keyFile

```

这将会创建一个含有 MD5 字符串的密钥文件，但是由于其中包含了一些噪音，我们需要对他们清理后才能正式在 MongoDB 中使用。

```
$ echo -n "MyReplicaSetKey" | md5sum|grep -o "[0-9a-z]\+" > keyFile

```

grep 命令的作用的是把将空格等我们不想要的内容过滤掉之后的 MD5 字符串打印出来。

现在我们对密钥文件进行一些操作，让它真正可用。

```
$ sudo cp keyFile /var/lib/mongodb
$ sudo chown mongodb:nogroup keyFile
$ sudo chmod 400 keyFile

```

接下来，关闭此虚拟机。将其 Ubuntu 系统克隆到其他虚拟机上。

这是克隆后的副节点1和副节点2。确认你已经将它们的MAC地址重新初始化，并且克隆整个硬盘。

请注意，三个虚拟机示例需要在同一个网络中以便相互通讯。因此，我们需要它们弄到“互联网"上去。

这里推荐给每个虚拟机设置一个静态 IP 地址，而不是使用 DHCP。这样它们就不至于在 DHCP 分配IP地址给他们的时候失去连接。

像下面这样编辑每个虚拟机的 /etc/networks/interfaces 文件。

在主节点上:

```
auto eth1
    iface eth1 inet static
    address 192.168.50.2
    netmask 255.255.255.0

```

在副节点1上:

```
auto eth1
    iface eth1 inet static
    address 192.168.50.3
    netmask 255.255.255.0

```

在副节点2上:

```
auto eth1
    iface eth1 inet static
    address 192.168.50.4
    netmask 255.255.255.0

```

由于我们没有 DNS 服务，所以需要设置设置一下 /etc/hosts 这个文件，手工将主机名称放到此文件中。

在主节点上:

```
127.0.0.1 localhost primary
192.168.50.2 primary
192.168.50.3 secondary1
192.168.50.4 secondary2

```

在副节点1上:

```
127.0.0.1 localhost secondary1
192.168.50.2 primary
192.168.50.3 secondary1
192.168.50.4 secondary2

```

在副节点2上:

```
127.0.0.1 localhost secondary2
192.168.50.2 primary
192.168.50.3 secondary1
192.168.50.4 secondary2

```

使用 ping 命令检查各个节点之间的连接。

```
$ ping primary
$ ping secondary1
$ ping secondary2

```

### 配置副本集

验证各个节点可以正常连通后，我们就可以新建一个管理员用户，用于之后的副本集操作。

在主节点上，打开 /etc/mongodb.conf 文件，将 auth 和 replSet 两项注释掉。

```
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongod.log
logappend=true
#auth = true
keyFile=/var/lib/mongodb/keyFile
#replSet=myReplica

```

在一个新安装的 MongoDB 上配置任何用户或副本集之前，你需要注释掉 auth 行。默认情况下，MongoDB 并没有创建任何用户。而如果在你创建用户前启用了 auth，你就不能够做任何事情。你可以在创建一个用户后再次启用 auth。

修改 /etc/mongodb.conf 之后，重启 mongod 进程。

```
$ sudo service mongod restart

```

现在连接到 MongoDB master：

```
$ mongo <master-ip-address>:27017

```

连接 MongoDB 后，新建管理员用户。

```
> use admin
> db.createUser({
user:"admin",
pwd:"
})

```

重启 MongoDB：

```
$ sudo service mongod restart

```

再次连接到 MongoDB，用以下命令将 副节点1 和副节点2节点添加到我们的副本集中。

```
> use admin
> db.auth("admin","myreallyhardpassword")
> rs.initiate()
> rs.add ("secondary1:27017")
> rs.add("secondary2:27017")

```

现在副本集到手了，可以开始我们的项目了。参照 [官方驱动文档](http://docs.mongodb.org/ecosystem/drivers/) 来了解如何连接到副本集。如果你想要用 Shell 来请求数据，那么你需要连接到主节点上来插入或者请求数据，副节点不行。如果你执意要尝试用副本集操作，那么以下错误信息就蹦出来招呼你了。

```
myReplica:SECONDARY>
myReplica:SECONDARY> show databases
2015-05-10T03:09:24.131+0000 E QUERY    Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
    at Error ()
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
    at shellHelper.show (src/mongo/shell/utils.js:630:33)
at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

```

如果你要从 shell 连接到整个副本集，你可以安装如下命令。在副本集中的失败切换是自动的。

```
$ mongo primary,secondary1,secondary2:27017/?replicaSet=myReplica

```

如果你使用其它驱动语言（例如，JavaScript、Ruby 等等），格式也许不同。

希望这篇教程能对你有所帮助。你可以使用Vagrant来自动完成你的本地环境配置，并且加速你的代码。

---

via: <http://xmodulo.com/setup-replica-set-mongodb.html>

作者：[Christopher Valerio](http://xmodulo.com/author/valerio) 译者：[mr-ping](https://github.com/mr-ping) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何在树莓派 2 运行 Ubuntu Snappy Core

Summary: 物联网(Internet of Things， IoT) 时代即将来临。很快，过不了几年，我们就会问自己当初是怎么在没有物联网的情况下生存的，就像我们现在怀疑过去没有手机的年代。Canonical 就是一个物联网快速发展却还是开放市场下的竞争者。这家公司宣称自己把赌注压到了IoT 上，就像他们已经在云上做过的一样。在今年一月底，Canonical 启动了一个基于Ubuntu Core 的小型操作系统，名字叫做 Ubuntu Snappy Core 。  Snappy 代表了两种意思，它是一种用来替代 deb 的新的打包格式；也是一个用来更新系统的前端，从CoreOS、红帽子和其他系统借鉴了原子

是为了物联网吗

# 如何在树莓派 2 运行 Ubuntu Snappy Core

物联网(Internet of Things， IoT) 时代即将来临。很快，过不了几年，我们就会问自己当初是怎么在没有物联网的情况下生存的，就像我们现在怀疑过去没有手机的年代。Canonical 就是一个物联网快速发展却还是开放市场下的竞争者。这家公司宣称自己把赌注压到了IoT 上，就像他们已经在“云”上做过的一样。在今年一月底，Canonical 启动了一个基于Ubuntu Core 的小型操作系统，名字叫做 [Ubuntu Snappy Core](http://www.ubuntu.com/things) 。

Snappy 代表了两种意思，它是一种用来替代 deb 的新的打包格式；也是一个用来更新系统的前端，从CoreOS、红帽子和其他系统借鉴了**原子更新**这个想法。自从树莓派 2 投入市场，Canonical 很快就发布了用于树莓派的Snappy Core 版本。而第一代树莓派因为是基于ARMv6 ，Ubuntu 的ARM 镜像是基于ARMv7 ，所以不能运行ubuntu 。不过这种状况现在改变了，Canonical 通过发布 Snappy Core 的RPI2 镜像，抓住机会证明了Snappy 就是一个用于云计算，特别是用于物联网的系统。

Snappy 同样可以运行在其它像Amazon EC2， Microsofts Azure， Google的 Compute Engine 这样的云端上，也可以虚拟化在 KVM、Virtuabox 和vagrant 上。Canonical Ubuntu 已经拥抱了微软、谷歌、Docker、OpenStack 这些重量级选手，同时也与一些小项目达成合作关系。除了一些创业公司，比如 Ninja Sphere、Erle Robotics，还有一些开发板生产商，比如 Odroid、Banana Pro, Udoo, PCDuino 和 Parallella 、全志，Snappy 也提供了支持。Snappy Core 同时也希望尽快运行到路由器上来帮助改进路由器生产商目前很少更新固件的策略。

接下来，让我们看看怎么样在树莓派 2 上运行 Ubuntu Snappy Core。

用于树莓派2 的Snappy 镜像可以从 [Raspberry Pi 网站](http://www.raspberrypi.org/downloads/) 上下载。解压缩出来的镜像必须[写到一个至少8GB 大小的SD 卡](http://xmodulo.com/write-raspberry-pi-image-sd-card.html)。尽管原始系统很小，但是原子升级和回滚功能会占用不小的空间。使用 Snappy 启动树莓派 2 后你就可以使用默认用户名和密码(都是ubuntu)登录系统。

sudo 已经配置好了可以直接用，安全起见，你应该使用以下命令来修改你的用户名

```
$ sudo usermod -l <new name> <old name>

```

或者也可以使用`adduser` 为你添加一个新用户。

因为RPI缺少硬件时钟，而 Snappy Core 镜像并不知道这一点，所以系统会有一个小 bug：处理某些命令时会报很多错。不过这个很容易解决：

使用这个命令来确认这个bug 是否影响：

```
$ date

```

如果输出类似 "Thu Jan 1 01:56:44 UTC 1970"， 你可以这样做来改正：

```
$ sudo date --set="Sun Apr 04 17:43:26 UTC 2015"

```

改成你的实际时间。

现在你可能打算检查一下，看看有没有可用的更新。注意通常使用的命令是不行的：

```
$ sudo apt-get update && sudo apt-get distupgrade

```

这时系统不会让你通过，因为 Snappy 使用它自己精简过的、基于dpkg 的包管理系统。这么做的原因是 Snappy 会运行很多嵌入式程序，而同时你也会试图所有事情尽可能的简化。

让我们来看看最关键的部分，理解一下程序是如何与 Snappy 工作的。运行 Snappy 的SD 卡上除了 boot 分区外还有3个分区。其中的两个构成了一个重复的文件系统。这两个平行文件系统被固定挂载为只读模式，并且任何时刻只有一个是激活的。第三个分区是一个部分可写的文件系统，用来让用户存储数据。通过更新系统，标记为'system-a' 的分区会保持一个完整的文件系统，被称作核心，而另一个平行的文件系统仍然会是空的。

如果我们运行以下命令：

```
$ sudo snappy update

```

系统将会在'system-b' 上作为一个整体进行更新，这有点像是更新一个镜像文件。接下来你将会被告知要重启系统来激活新核心。

重启之后，运行下面的命令可以检查你的系统是否已经更新到最新版本，以及当前被激活的是哪个核心

```
$ sudo snappy versions -a

```

经过更新-重启两步操作，你应该可以看到被激活的核心已经被改变了。

因为到目前为止我们还没有安装任何软件，所以可以用下面的命令更新：

```
$ sudo snappy update ubuntu-core

```

如果你打算仅仅更新特定的OS 版本这就够了。如果出了问题，你可以使用下面的命令回滚：

```
$ sudo snappy rollback ubuntu-core

```

这将会把系统状态回滚到更新之前。

再来说说那些让 Snappy 变得有用的软件。这里不会讲的太多关于如何构建软件、向 Snappy 应用商店添加软件的基础知识，但是你可以通过 Freenode 上的IRC 频道 #snappy 了解更多信息，那个上面有很多人参与。你可以通过浏览器访问http://<ip-address>:4200 来浏览应用商店，然后从商店安装软件，再在浏览器里访问 <http://webdm.local> 来启动程序。如何构建用于 Snappy 的软件并不难，而且也有了现成的[参考文档](https://developer.ubuntu.com/en/snappy/) 。你也可以很容易的把 DEB 安装包使用Snappy 格式移植到Snappy 上。

尽管 Ubuntu Snappy Core 吸引了我们去研究新型的 Snappy 安装包格式和 Canonical 式的原子更新操作，但是因为有限的可用应用，它现在在生产环境里还不是很有用。但是既然搭建一个 Snappy 环境如此简单，这看起来是一个学点新东西的好机会。

---

via: <http://xmodulo.com/ubuntu-snappy-core-raspberry-pi-2.html>

作者：[Ferdinand Thommes](http://xmodulo.com/author/ferdinand) 译者：[Ezio](https://github.com/oska874) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出


Summary: 看到过Ubuntu 14.04的顶部面板上那个显示下面这个错误的红色三角形了吗？  更新信息过时。该错误可能是由网络问题，或者某个仓库不再可用而造成的。请通过从指示器菜单中选择显示更新来手动更新，然后查看是否存在有失败的仓库。  它看起来像这样：  这里的粉红色感叹号标记就是原来的红色三角形，因为我使用了最佳的Ubuntu图标主题之一，Numix。让我们回到该错误中，这是一个常见的更新问题，你也许时不时地会碰到它。现在，你或许想知道的是，到底是什么导致了这个更新错误的出现。 引起update information is outdated错误的原因 导致

# Ubuntu 14.04中修复“update information is outdated”错误

看到过Ubuntu 14.04的顶部面板上那个显示下面这个错误的红色三角形了吗？

>
> 更新信息过时。该错误可能是由网络问题，或者某个仓库不再可用而造成的。请通过从指示器菜单中选择‘显示更新’来手动更新，然后查看是否存在有失败的仓库。
>
>
>

它看起来像这样：

这里的粉红色感叹号标记就是原来的红色三角形，因为我使用了[最佳的Ubuntu图标主题](http://itsfoss.com/best-icon-themes-ubuntu-1404/)之一，Numix。让我们回到该错误中，这是一个常见的更新问题，你也许时不时地会碰到它。现在，你或许想知道的是，到底是什么导致了这个更新错误的出现。

### 引起‘update information is outdated’错误的原因

导致该错误的原因在其自身的错误描述中就讲得相当明白，它告诉你“这可能是由网络问题或者某个不再可用的仓库导致的”。所以，要么是你更新了系统和某些仓库，要么是PPA不再受到支持了，或者你正面对的类似问题。

虽然错误本身就讲得很明白，而它给出了的议操作“请通过从指示器菜单选择‘显示更新’来手动更新以查看失败的仓库”却并不能很好地解决问题。如果你点击显示更新，你所能看见的仅仅是系统已经更新。

很奇怪，不是吗？我们怎样才能找出是什么出错了，哪里出错了，以及为什么出错呢？

### 修复‘update information is outdated’错误

这里讨论的‘解决方案’可能对Ubuntu的这些版本有用：Ubuntu 14.04,12.04。你所要做的仅仅是打开终端（Ctrl+Alt+T），然后使用下面的命令：

```
sudo apt-get update

```

等待命令结束，然后查看其结果。这里插个快速提示，你可以[在终端中添加通知](http://itsfoss.com/notification-terminal-command-completion-ubuntu/)，这样当一个耗时很长的命令结束执行时就会通知你。在该命令的最后几行中，可以看到你的系统正面临什么样的错误。是的，你肯定会看到一个错误。

在我这里，我看到了有名的[GPG error: The following could not be verified](http://itsfoss.com/solve-gpg-error-signatures-verified-ubuntu/)错误。很明显，[在Ubuntu 15.04中安装声破天](http://itsfoss.com/install-spotify-ubuntu-1504/)有点问题。

很可能你看到的不是像我一样的GPG错误，那样的话，我建议你读一读我写的这篇文章[修复Ubuntu中的各种常见更新错误](/article-5603-1.html)。

我知道有不少人，尤其是初学者，很是讨厌命令行，但是如果你正在使用Linux，你就无可避免会使用到终端。此外，那东西并没你想象的那么可怕。试试吧，你会很快上手的。

我希望这个快速提示对于你修复Ubuntu中的“update information is outdated”错误有帮助。如果你有任何问题或建议，请不吝提出，我们将无任欢迎。

---

via: <http://itsfoss.com/fix-update-information-outdated-ubuntu/>

作者：[Abhishek](http://itsfoss.com/author/abhishek/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 中使用日志来排错

Jason Skowronski, Amy Echeverri, Sadequl Hussain

Summary: 人们创建日志的主要原因是排错。通常你会诊断为什么问题发生在你的 Linux 系统或应用程序中。错误信息或一系列的事件可以给你提供找出根本原因的线索，说明问题是如何发生的，并指出如何解决它。这里有几个使用日志来解决的样例。  登录失败原因 如果你想检查你的系统是否安全，你可以在验证日志中检查登录失败的和登录成功但可疑的用户。当有人通过不正当或无效的凭据来登录时会出现认证失败，这通常发生在使用 SSH 进行远程登录或 su 到本地其他用户来进行访问权时。这些是由插入式验证模块（PAM）来记录的。在你的日志中会看到像 Faile

学习了！

又吃成长快乐了。

@有道云笔记

# 在 Linux 中使用日志来排错

人们创建日志的主要原因是排错。通常你会诊断为什么问题发生在你的 Linux 系统或应用程序中。错误信息或一系列的事件可以给你提供找出根本原因的线索，说明问题是如何发生的，并指出如何解决它。这里有几个使用日志来解决的样例。

### 登录失败原因

如果你想检查你的系统是否安全，你可以在验证日志中检查登录失败的和登录成功但可疑的用户。当有人通过不正当或无效的凭据来登录时会出现认证失败，这通常发生在使用 SSH 进行远程登录或 su 到本地其他用户来进行访问权时。这些是由[插入式验证模块（PAM）](http://linux.die.net/man/8/pam.d)来记录的。在你的日志中会看到像 Failed password 和 user unknown 这样的字符串。而成功认证记录则会包括像 Accepted password 和 session opened 这样的字符串。

失败的例子:

```
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.2.2
Failed password for invalid user hoover from 10.0.2.2 port 4791 ssh2
pam_unix(sshd:auth): check pass; user unknown
PAM service(sshd) ignoring max retries; 6 > 3

```

成功的例子：

```
Accepted password for hoover from 10.0.2.2 port 4792 ssh2
pam_unix(sshd:session): session opened for user hoover by (uid=0)
pam_unix(sshd:session): session closed for user hoover

```

你可以使用 grep 来查找哪些用户失败登录的次数最多。这些都是潜在的攻击者正在尝试和访问失败的账户。这是一个在 ubuntu 系统上的例子。

```
$ grep "invalid user" /var/log/auth.log | cut -d ' ' -f 10 | sort | uniq -c | sort -nr
23 oracle
18 postgres
17 nagios
10 zabbix
6 test

```

由于没有标准格式，所以你需要为每个应用程序的日志使用不同的命令。日志管理系统，可以自动分析日志，将它们有效的归类，帮助你提取关键字，如用户名。

日志管理系统可以使用自动解析功能从 Linux 日志中提取用户名。这使你可以看到用户的信息，并能通过点击过滤。在下面这个例子中，我们可以看到，root 用户登录了 2700 次之多，因为我们筛选的日志仅显示 root 用户的尝试登录记录。

日志管理系统也可以让你以时间为做坐标轴的图表来查看，使你更容易发现异常。如果有人在几分钟内登录失败一次或两次，它可能是一个真正的用户而忘记了密码。但是，如果有几百个失败的登录并且使用的都是不同的用户名，它更可能是在试图攻击系统。在这里，你可以看到在3月12日，有人试图登录 Nagios 几百次。这显然不是一个合法的系统用户。

### 重启的原因

有时候，一台服务器由于系统崩溃或重启而宕机。你怎么知道它何时发生，是谁做的？

#### 关机命令

如果有人手动运行 shutdown 命令，你可以在验证日志文件中看到它。在这里，你可以看到，有人从 IP 50.0.134.125 上作为 ubuntu 的用户远程登录了，然后关闭了系统。

```
Mar 19 18:36:41 ip-172-31-11-231 sshd[23437]: Accepted publickey for ubuntu from 50.0.134.125 port 52538 ssh
Mar 19 18:36:41 ip-172-31-11-231 23437]:sshd[ pam_unix(sshd:session): session opened for user ubuntu by (uid=0)
Mar 19 18:37:09 ip-172-31-11-231 sudo:   ubuntu : TTY=pts/1 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/sbin/shutdown -r now

```

#### 内核初始化

如果你想看看服务器重新启动的所有原因（包括崩溃），你可以从内核初始化日志中寻找。你需要搜索内核类（kernel）和 cpu 初始化（Initializing）的信息。

```
Mar 19 18:39:30 ip-172-31-11-231 kernel: [    0.000000] Initializing cgroup subsys cpuset
Mar 19 18:39:30 ip-172-31-11-231 kernel: [    0.000000] Initializing cgroup subsys cpu
Mar 19 18:39:30 ip-172-31-11-231 kernel: [    0.000000] Linux version 3.8.0-44-generic (buildd@tipua) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #66~precise1-Ubuntu SMP Tue Jul 15 04:01:04 UTC 2014 (Ubuntu 3.8.0-44.66~precise1-generic 3.8.13.25)

```

### 检测内存问题

有很多原因可能导致服务器崩溃，但一个常见的原因是内存用尽。

当你系统的内存不足时，进程会被杀死，通常会杀死使用最多资源的进程。当系统使用了所有内存，而新的或现有的进程试图使用更多的内存时就会出现错误。在你的日志文件查找像 Out of Memory 这样的字符串或类似 kill 这样的内核警告信息。这些信息表明系统故意杀死进程或应用程序，而不是允许进程崩溃。

例如:

```
[33238.178288] Out of memory: Kill process 6230 (firefox) score 53 or sacrifice child
[29923450.995084] select 5230 (docker), adj 0, size 708, to kill

```

你可以使用像 grep 这样的工具找到这些日志。这个例子是在 ubuntu 中:

```
$ grep “Out of memory” /var/log/syslog
 [33238.178288] Out of memory: Kill process 6230 (firefox) score 53 or sacrifice child

```

请记住，grep 也要使用内存，所以只是运行 grep 也可能导致内存不足的错误。这是另一个你应该中央化存储日志的原因！

### 定时任务错误日志

cron 守护程序是一个调度器，可以在指定的日期和时间运行进程。如果进程运行失败或无法完成，那么 cron 的错误出现在你的日志文件中。具体取决于你的发行版，你可以在 /var/log/cron，/var/log/messages，和 /var/log/syslog 几个位置找到这个日志。cron 任务失败原因有很多。通常情况下，问题出在进程中而不是 cron 守护进程本身。

默认情况下，cron 任务的输出会通过 postfix 发送电子邮件。这是一个显示了该邮件已经发送的日志。不幸的是，你不能在这里看到邮件的内容。

```
Mar 13 16:35:01 PSQ110 postfix/pickup[15158]: C3EDC5800B4: uid=1001 from=<hoover>
Mar 13 16:35:01 PSQ110 postfix/cleanup[15727]: C3EDC5800B4: message-id=<20150310110501.C3EDC5800B4@PSQ110>
Mar 13 16:35:01 PSQ110 postfix/qmgr[15159]: C3EDC5800B4: from=<hoover@loggly.com>, size=607, nrcpt=1 (queue active)
Mar 13 16:35:05 PSQ110 postfix/smtp[15729]: C3EDC5800B4: to=<hoover@loggly.com>, relay=gmail-smtp-in.l.google.com[74.125.130.26]:25, delay=4.1, delays=0.26/0/2.2/1.7, dsn=2.0.0, status=sent (250 2.0.0 OK 1425985505 f16si501651pdj.5 - gsmtp)

```

你可以考虑将 cron 的标准输出记录到日志中，以帮助你定位问题。这是一个你怎样使用 logger 命令重定向 cron 标准输出到 syslog的例子。用你的脚本来代替 echo 命令，helloCron 可以设置为任何你想要的应用程序的名字。

```
*/5 * * * * echo ‘Hello World’ 2>&1 | /usr/bin/logger -t helloCron

```

它创建的日志条目：

```
Apr 28 22:20:01 ip-172-31-11-231 CRON[15296]: (ubuntu) CMD (echo 'Hello World!' 2>&1 | /usr/bin/logger -t helloCron)
Apr 28 22:20:01 ip-172-31-11-231 helloCron: Hello World!

```

每个 cron 任务将根据任务的具体类型以及如何输出数据来记录不同的日志。

希望在日志中有问题根源的线索，也可以根据需要添加额外的日志记录。

---

via: <http://www.loggly.com/ultimate-guide/logging/troubleshooting-with-linux-logs/>

作者：[Jason Skowronski](https://www.linkedin.com/in/jasonskowronski) 作者：[Amy Echeverri](https://www.linkedin.com/in/amyecheverri) 作者：[Sadequl Hussain](https://www.linkedin.com/pub/sadequl-hussain/14/711/1a7) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


在 VirtualBox 中使用 Docker Machine 管理主机

# 在 VirtualBox 中使用 Docker Machine 管理主机

大家好，今天我们学习在 VirtualBox 中使用 Docker Machine 来创建和管理 Docker 主机。Docker Machine 是一个可以帮助我们在电脑上、在云端、在数据中心内创建 Docker 主机的应用。它为根据用户的配置和需求创建服务器并在其上安装 Docker和客户端提供了一个轻松的解决方案。这个 API 可以用于在本地主机、或数据中心的虚拟机、或云端的实例提供 Docker 服务。Docker Machine 支持 Windows、OSX 和 Linux，并且是以一个独立的二进制文件包形式安装的。仍然使用（与现有 Docker 工具）相同的接口，我们就可以充分利用已经提供 Docker 基础框架的生态系统。只要一个命令，用户就能快速部署 Docker 容器。

本文列出一些简单的步骤用 Docker Machine 来部署 docker 容器。

### 1. 安装 Docker Machine

Docker Machine 完美支持所有 Linux 操作系统。首先我们需要从 [github](https://github.com/docker/machine/releases) 下载最新版本的 Docker Machine，本文使用 curl 作为下载工具，Docker Machine 版本为 0.2.0。

**64 位操作系统**

```
# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine

```

**32 位操作系统**

```
# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-i386 > /usr/local/bin/docker-machine

```

下载完成后，找到 **/usr/local/bin** 目录下的 **docker-machine** 文件，让其可以执行：

```
# chmod +x /usr/local/bin/docker-machine

```

确认是否成功安装了 docker-machine，可以运行下面的命令，它会打印 Docker Machine 的版本信息：

```
# docker-machine -v

```

运行下面的命令，安装 Docker 客户端，以便于在我们自己的电脑止运行 Docker 命令：

```
# curl -L https://get.docker.com/builds/linux/x86_64/docker-latest > /usr/local/bin/docker
# chmod +x /usr/local/bin/docker

```

### 2. 创建 VirtualBox 虚拟机

在 Linux 系统上安装完 Docker Machine 后，接下来我们可以安装 VirtualBox 虚拟机，运行下面的就可以了。`--driver virtualbox` 选项表示我们要在 VirtualBox 的虚拟机里面部署 docker，最后的参数“linux” 是虚拟机的名称。这个命令会下载 [boot2docker](https://github.com/boot2docker/boot2docker) iso，它是个基于 Tiny Core Linux 的轻量级发行版，自带 Docker 程序，然后 `docker-machine` 命令会创建一个 VirtualBox 虚拟机（LCTT译注：当然，我们也可以选择其他的虚拟机软件）来运行这个 boot2docker 系统。

```
# docker-machine create --driver virtualbox linux

```

测试下有没有成功运行 VirtualBox 和 Docker，运行命令：

```
# docker-machine ls

```

如果执行成功，我们可以看到在 ACTIVE 那列下面会出现一个星号“\*”。

### 3. 设置环境变量

现在我们需要让 docker 与 docker-machine 通信，运行 `docker-machine env <虚拟机名称>` 来实现这个目的。

```
# eval "$(docker-machine env linux)"
# docker ps

```

这个命令会设置 TLS 认证的环境变量，每次重启机器或者重新打开一个会话都需要执行一下这个命令，我们可以看到它的输出内容：

```
# docker-machine env linux

export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/Users/<your username>/.docker/machine/machines/dev
export DOCKER_HOST=tcp://192.168.99.100:2376

```

### 4. 运行 Docker 容器

完成配置后我们就可以在 VirtualBox 上运行 docker 容器了。测试一下，我们可以运行虚拟机 `docker run busybox` ，并在里面里执行 `echo hello world` 命令，我们可以看到容器的输出信息。

```
# docker run busybox echo hello world

```

### 5. 拿到 Docker 主机的 IP

我们可以执行下面的命令获取运行 Docker 的主机的 IP 地址。我们可以看到在 Docker 主机的 IP 地址上的任何暴露出来的端口。

```
# docker-machine ip

```

### 6. 管理主机

现在我们可以随心所欲地使用上述的 docker-machine 命令来不断创建主机了。

当你使用完 docker 时，可以运行 **docker-machine stop** 来停止所有主机，如果想开启所有主机，运行 **docker-machine start**。

```
# docker-machine stop
# docker-machine start

```

你也可以只停止或开启一台主机：

```
$ docker-machine stop linux
$ docker-machine start linux

```

### 总结

最后，我们使用 Docker Machine 成功在 VirtualBox 上创建并管理一台 Docker 主机。Docker Machine 确实能让用户快速地在不同的平台上部署 Docker 主机，就像我们这里部署在 VirtualBox 上一样。这个 virtualbox 驱动可以在本地机器上使用，也可以在数据中心的虚拟机上使用。Docker Machine 驱动除了支持本地的 VirtualBox 之外，还支持远端的 Digital Ocean、AWS、Azure、VMware 以及其它基础设施。

如果你有任何疑问，或者建议，请在评论栏中写出来，我们会不断改进我们的内容。谢谢，祝愉快。

---

via: <http://linoxide.com/linux-how-to/host-virtualbox-docker-machine/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[bazz2](https://github.com/bazz2) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 中安装 Visual Studio Code

嗯，打算试试。

这 也叫安装啊,完全是编译好免安装的嘛, 别欺负我没用过

没看这篇文章前不知道有Umake这个东西

你安装 QQ 的时候是从源码开始编译安装么？编译本来就不是安装的一部分吧，安装就是复制一下可执行文件，注册一些系统变量而已，个人感觉，仅供参考

当然qq没有给你源码，但代码考虑到可移植性，会有一些不同平台地预编译指令，当然得在具体主机上编译。但windows例外，整个生态较好，下载下来用就好。

# 如何在 Linux 中安装 Visual Studio Code

大家好，今天我们一起来学习如何在 Linux 发行版中安装 Visual Studio Code。Visual Studio Code 是基于 Electron 优化代码后的编辑器，后者是基于 Chromium 的一款软件，用于为桌面系统发布 io.js 应用。Visual Studio Code 是微软开发的支持包括 Linux 在内的全平台代码编辑器和文本编辑器。它是免费软件但不开源，在专有软件许可条款下发布。它是可以用于我们日常使用的超级强大和快速的代码编辑器。Visual Studio Code 有很多很酷的功能，例如导航、智能感知支持、语法高亮、括号匹配、自动补全、代码片段、支持自定义键盘绑定、并且支持多种语言，例如 Python、C++、Jade、PHP、XML、Batch、F#、DockerFile、Coffee Script、Java、HandleBars、 R、 Objective-C、 PowerShell、 Luna、 Visual Basic、 .Net、 Asp.Net、 C#、 JSON、 Node.js、 Javascript、 HTML、 CSS、 Less、 Sass 和 Markdown。Visual Studio Code 集成了包管理器、库、构建，以及其它通用任务，以加速日常的工作流。Visual Studio Code 中最受欢迎的是它的调试功能，它包括流式支持 Node.js 的预览调试。

注意：请注意 Visual Studio Code 只支持 64 位的 Linux 发行版。

下面是在所有 Linux 发行版中安装 Visual Studio Code 的几个简单步骤。

### 1. 下载 Visual Studio Code 软件包

首先，我们要从微软服务器中下载 64 位 Linux 操作系统的 Visual Studio Code 安装包，链接是 <http://go.microsoft.com/fwlink/?LinkID=534108>。这里我们使用 wget 下载并保存到 tmp/VSCODE 目录。

```
# mkdir /tmp/vscode; cd /tmp/vscode/
# wget https://az764295.vo.msecnd.net/public/0.3.0/VSCode-linux-x64.zip

--2015-06-24 06:02:54-- https://az764295.vo.msecnd.net/public/0.3.0/VSCode-linux-x64.zip
Resolving az764295.vo.msecnd.net (az764295.vo.msecnd.net)... 93.184.215.200, 2606:2800:11f:179a:1972:2405:35b:459
Connecting to az764295.vo.msecnd.net (az764295.vo.msecnd.net)|93.184.215.200|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 64992671 (62M) [application/octet-stream]
Saving to: ‘VSCode-linux-x64.zip’
100%[================================================>] 64,992,671 14.9MB/s in 4.1s
2015-06-24 06:02:58 (15.0 MB/s) - ‘VSCode-linux-x64.zip’ saved [64992671/64992671]

```

### 2. 提取软件包

现在，下载好 Visual Studio Code 的 zip 压缩包之后，我们打算使用 unzip 命令解压它。我们要在终端或者控制台中运行以下命令。

```
# unzip /tmp/vscode/VSCode-linux-x64.zip -d /opt/

```

注意：如果我们还没有安装 unzip，我们首先需要通过软件包管理器安装它。如果你运行的是 Ubuntu，使用 apt-get，如果运行的是 Fedora、CentOS、可以用 dnf 或 yum 安装它。

### 3. 运行 Visual Studio Code

展开软件包之后，我们可以直接运行一个名为 Code 的文件启动 Visual Studio Code。

```
# sudo chmod +x /opt/VSCode-linux-x64/Code
# sudo /opt/VSCode-linux-x64/Code

```

如果我们想通过终端在任何地方启动 Code，我们就需要创建 /opt/vscode/Code 的一个链接 /usr/local/bin/code。

```
# ln -s /opt/VSCode-linux-x64/Code /usr/local/bin/code

```

现在，我们就可以在终端中运行以下命令启动 Visual Studio Code 了。

```
# code .

```

### 4. 创建桌面启动

下一步，成功展开 Visual Studio Code 软件包之后，我们打算创建桌面启动程序，使得根据不同桌面环境能够从启动器、菜单、桌面启动它。首先我们要复制一个图标文件到 /usr/share/icons/ 目录。

```
# cp /opt/VSCode-linux-x64/resources/app/vso.png /usr/share/icons/

```

然后，我们创建一个桌面启动程序，文件扩展名为 .desktop。这里我们使用喜欢的文本编辑器在 /tmp/VSCODE/ 目录中创建名为 visualstudiocode.desktop 的文件。

```
# vi /tmp/vscode/visualstudiocode.desktop

```

然后，粘贴下面的行到那个文件中。

```
[Desktop Entry]
Name=Visual Studio Code
Comment=Multi-platform code editor for Linux
Exec=/opt/VSCode-linux-x64/Code
Icon=/usr/share/icons/vso.png
Type=Application
StartupNotify=true
Categories=TextEditor;Development;Utility;
MimeType=text/plain;

```

创建完桌面文件之后，我们会复制这个桌面文件到 /usr/share/applications/ 目录，这样启动器和菜单中就可以单击启动 Visual Studio Code 了。

```
# cp /tmp/vscode/visualstudiocode.desktop /usr/share/applications/

```

完成之后，我们可以在启动器或者菜单中启动它。

### 在 Ubuntu 中 Visual Studio Code

要在 Ubuntu 14.04/14.10/15.04 Linux 发行版中安装 Visual Studio Code，我们可以使用 Ubuntu Make 0.7。这是在 ubuntu 中安装 code 最简单的方法，因为我们只需要执行几个命令。首先，我们要在我们的 ubuntu linux 发行版中安装 Ubuntu Make 0.7。要安装它，首先要为它添加 PPA。可以通过运行下面命令完成。

```
# add-apt-repository ppa:ubuntu-desktop/ubuntu-make

This ppa proposes package backport of Ubuntu make for supported releases.
More info: https://launchpad.net/~ubuntu-desktop/+archive/ubuntu/ubuntu-make
Press [ENTER] to continue or ctrl-c to cancel adding it
gpg: keyring `/tmp/tmpv0vf24us/secring.gpg' created
gpg: keyring `/tmp/tmpv0vf24us/pubring.gpg' created
gpg: requesting key A1231595 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpv0vf24us/trustdb.gpg: trustdb created
gpg: key A1231595: public key "Launchpad PPA for Ubuntu Desktop" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK

```

然后，更新本地库索引并安装 ubuntu-make。

```
# apt-get update
# apt-get install ubuntu-make

```

在我们的 ubuntu 操作系统上安装完 Ubuntu Make 之后，我们可以在一个终端中运行以下命令来安装 Code。

```
# umake web visual-studio-code

```

运行完上面的命令之后，会要求我们输入想要的安装路径。然后，会请求我们允许在 ubuntu 系统中安装 Visual Studio Code。我们输入“a”（接受）。输入完后，它会在 ubuntu 机器上下载和安装 Code。最后，我们可以在启动器或者菜单中启动它。

### 总结

我们已经成功地在 Linux 发行版上安装了 Visual Studio Code。在所有 linux 发行版上安装 Visual Studio Code 都和上面介绍的相似，我们也可以使用 umake 在 Ubuntu 发行版中安装。Umake 是一个安装开发工具，IDEs 和语言的流行工具。我们可以用 Umake 轻松地安装 Android Studios、Eclipse 和很多其它流行 IDE。Visual Studio Code 是基于 Github 上一个叫 [Electron](https://github.com/atom/electron) 的项目，它是 [Atom.io](https://github.com/atom/atom) 编辑器的一部分。它有很多 Atom.io 编辑器没有的改进功能。当前 Visual Studio Code 只支持 64 位 linux 操作系统平台。

如果你有任何疑问、建议或者反馈，请在下面的评论框中留言以便我们改进和更新我们的内容。非常感谢！Enjoy :-)

---

via: <http://linoxide.com/linux-how-to/install-visual-studio-code-linux/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Ubuntu 15.04 系统中安装 Logwatch

Summary: 大家好，今天我们会讲述在 Ubuntu 15.04 操作系统上如何安装 Logwatch 软件，它也可以在各种 Linux 系统和类 Unix 系统上安装。Logwatch 是一款可定制的日志分析和日志监控报告生成系统，它可以根据一段时间的日志文件生成您所希望关注的详细报告。它具有易安装、易配置、可审查等特性，同时对其提供的数据的安全性上也有一些保障措施。Logwatch 会扫描重要的操作系统组件像 SSH、网站服务等的日志文件，然后生成用户所关心的有价值的条目汇总报告。  预安装设置 我们会使用 Ubuntu 15.04 版本的操作系统来部署 Logwatch，所以安装 Logwat

14.04lts服务器版默认不使用root登陆，安装上面的步骤安装是不能输出的，终端无显示结果

你可以 sudo su - 或者 sudo

用的su切入root，刚好比较忙，没有细致去看日志

# 如何在 Ubuntu 15.04 系统中安装 Logwatch

大家好，今天我们会讲述在 Ubuntu 15.04 操作系统上如何安装 Logwatch 软件，它也可以在各种 Linux 系统和类 Unix 系统上安装。Logwatch 是一款可定制的日志分析和日志监控报告生成系统，它可以根据一段时间的日志文件生成您所希望关注的详细报告。它具有易安装、易配置、可审查等特性，同时对其提供的数据的安全性上也有一些保障措施。Logwatch 会扫描重要的操作系统组件像 SSH、网站服务等的日志文件，然后生成用户所关心的有价值的条目汇总报告。

### 预安装设置

我们会使用 Ubuntu 15.04 版本的操作系统来部署 Logwatch，所以安装 Logwatch 之前，要确保系统上邮件服务设置是正常可用的。因为它会每天把生成的报告通过日报的形式发送邮件给管理员。您的系统的源库也应该设置可用，以便可以从通用源库来安装 Logwatch。

然后打开您 ubuntu 系统的终端，用 root 账号登陆，在进入 Logwatch 的安装操作前，先更新您的系统软件包。

```
root@ubuntu-15:~# apt-get update

```

### 安装 Logwatch

只要你的系统已经更新和已经满足前面说的先决条件，那么就可以在您的机器上输入如下命令来安装 Logwatch。

```
root@ubuntu-15:~# apt-get install logwatch

```

在安装过程中，一旦您按提示按下“Y”键同意对系统修改的话，Logwatch 将会开始安装一些额外的必须软件包。

在安装过程中会根据您机器上的邮件服务器设置情况弹出提示对 Postfix 设置的配置界面。在这篇教程中我们使用最容易的 “仅本地（Local only）” 选项。根据您的基础设施情况也可以选择其它的可选项，然后点击“确定”继续。

随后您得选择邮件服务器名，这邮件服务器名也会被其它程序使用，所以它应该是一个完全合格域名/全称域名（FQDN）。

一旦按下在 postfix 配置提示底端的 “OK”，安装进程就会用 Postfix 的默认配置来安装，并且完成 Logwatch 的整个安装。

您可以在终端下发出如下命令来检查 Logwatch 状态，正常情况下它应该是激活状态。

```
root@ubuntu-15:~# service postfix status

```

要确认 Logwatch 在默认配置下的安装信息，可以如下示简单的发出“logwatch” 命令。

```
root@ubuntu-15:~# logwatch

```

上面执行命令的输出就是终端下编制出的报表展现格式。

### 配置 Logwatch

在成功安装好 Logwatch 后，我们需要在它的配置文件中做一些修改，配置文件位于如下所示的路径。那么，就让我们用文本编辑器打开它，然后按需要做些变动。

```
root@ubuntu-15:~# vim /usr/share/logwatch/default.conf/logwatch.conf

```

**输出/格式化选项**

默认情况下 Logwatch 会以无编码的文本打印到标准输出方式。要改为以邮件为默认方式，需设置“Output = mail”，要改为保存成文件方式，需设置“Output = file”。所以您可以根据您的要求设置其默认配置。

```
Output = stdout

```

如果使用的是因特网电子邮件配置，要用 Html 格式为默认出格式，需要修改成如下行所示的样子。

```
Format = text

```

现在增加默认的邮件报告接收人地址，可以是本地账号也可以是完整的邮件地址，需要的都可以在这行上写上

```
MailTo = root
#MailTo = user@test.com

```

默认的邮件发送人可以是本地账号，也可以是您需要使用的其它名字。

```
# complete email address.
MailFrom = Logwatch

```

对这个配置文件保存修改，至于其它的参数就让它保持默认，无需改动。

**调度任务配置**

现在编辑在 “daily crons” 目录下的 “00logwatch” 文件来配置从 logwatch 生成的报告需要发送的邮件地址。

```
root@ubuntu-15:~# vim /etc/cron.daily/00logwatch

```

在这儿您需要作用“--mailto [user@test.com](mailto:user@test.com)”来替换掉“--output mail”,然后保存文件。

### 生成报告

现在我们在终端中执行“logwatch”命令来生成测试报告，生成的结果在终端中会以文本格式显示出来。

```
root@ubuntu-15:~#logwatch

```

生成的报告开始部分显示的是执行的时间和日期。它包含不同的部分，每个部分以开始标识开始而以结束标识结束，中间显示的是该部分的完整信息。

这儿显示的是开始的样子，它以显示系统上所有安装的软件包的部分开始，如下所示：

接下来的部分显示的日志信息是关于当前系统登录会话、rsyslogs 和当前及最近的 SSH 会话信息。

Logwatch 报告最后显示的是安全方面的 sudo 日志及根目录磁盘使用情况，如下示：

您也可以打开如下的文件来查看生成的 logwatch 报告电子邮件。

```
root@ubuntu-15:~# vim /var/mail/root

```

您会看到发送给你配置的用户的所有已生成的邮件及其邮件递交状态。

### 更多详情

Logwatch 是一款很不错的工具，可以学习的很多很多，所以如果您对它的日志监控功能很感兴趣的话，也以通过如下所示的简短命令来获得更多帮助。

```
root@ubuntu-15:~# man logwatch

```

上面的命令包含所有关于 logwatch 的用户手册，所以仔细阅读，要退出手册的话可以简单的输入“q”。

关于 logwatch 命令的使用，您可以使用如下所示的帮助命令来获得更多的详细信息。

```
root@ubuntu-15:~# logwatch --help

```

### 结论

教程结束，您也学会了如何在 Ubuntu 15.04 上对 Logwatch 的安装、配置等全部设置指导。现在您就可以自定义监控您的系统日志，不管是监控所有服务的运行情况还是对特定的服务在指定的时间发送报告都可以。所以，开始使用这工具吧，无论何时有问题或想知道更多关于 logwatch 的使用的都可以给我们留言。

---

via: <http://linoxide.com/ubuntu-how-to/install-use-logwatch-ubuntu-15-04/>

作者：[Kashif Siddique](http://linoxide.com/author/kashifs/) 译者：[runningwater](https://github.com/runningwater) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Bash 下如何逐行读取一个文件

Summary: 在 Linux 或类 UNIX 系统下如何使用 KSH 或 BASH shell 逐行读取一个文件？ 在 Linux、OSX、 *BSD 或者类 Unix 系统下你可以使用 while..do..done 的 bash 循环来逐行读取一个文件。 在 Bash Unix 或者 Linux shell 中逐行读取一个文件的语法 对于 bash、ksh、 zsh 和其他的 shells 语法如下 while read -r line; do COMMAND; done  input.file  通过 -r 选项传递给 read 命令以防止阻止解释其中的反斜杠转义符。 在 read 命令之前添加 IFS= 选项，来防止首尾的空白字符被去掉。 while IFS= read -r line; do COMMAND_on $line; done

# Bash 下如何逐行读取一个文件

在 Linux 或类 UNIX 系统下如何使用 KSH 或 BASH shell 逐行读取一个文件？

在 Linux、OSX、 \*BSD 或者类 Unix 系统下你可以使用 while..do..done 的 bash 循环来逐行读取一个文件。

### 在 Bash Unix 或者 Linux shell 中逐行读取一个文件的语法

对于 bash、ksh、 zsh 和其他的 shells 语法如下

```
while read -r line; do COMMAND; done < input.file

```

通过 -r 选项传递给 read 命令以防止阻止解释其中的反斜杠转义符。

在 read 命令之前添加 `IFS=` 选项，来防止首尾的空白字符被去掉。

```
while IFS= read -r line; do COMMAND_on $line; done < input.file

```

这是更适合人类阅读的语法:

```
#!/bin/bash
input="/path/to/txt/file"
while IFS= read -r var
do
  echo "$var"
done < "$input"

```

**示例**

下面是一些例子:

```
#!/bin/ksh
file="/home/vivek/data.txt"
while IFS= read line
do
    # display $line or do somthing with $line
    echo "$line"
done <"$file"

```

在 bash shell 中相同的例子:

```
#!/bin/bash
file="/home/vivek/data.txt"
while IFS= read -r line
do
    # display $line or do somthing with $line
    printf '%s\n' "$line"
done <"$file"

```

你还可以看看这个更好的:

```
#!/bin/bash
file="/etc/passwd"
while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
    # display fields using f1, f2,..,f7
    printf 'Username: %s, Shell: %s, Home Dir: %s\n' "$f1" "$f7" "$f6"
done <"$file"

```

示例输出:

<img src="content_image/album_201508_31_100655ossrheluxqrrfhrr.jpg" alt="Fig.01: Bash shell scripting- read file line by line demo outputs" title="Fig.01: Bash shell scripting- read file line by line demo outputs">

*图01：Bash 脚本：读取文件并逐行输出文件*

### Bash 脚本：逐行读取文本文件并创建为 pdf 文件

我的输入文件如下（faq.txt）:

```
4|http://www.cyberciti.biz/faq/mysql-user-creation/|Mysql User Creation: Setting Up a New MySQL User Account
4096|http://www.cyberciti.biz/faq/ksh-korn-shell/|What is UNIX / Linux Korn Shell?
4101|http://www.cyberciti.biz/faq/what-is-posix-shell/|What Is POSIX Shell?
17267|http://www.cyberciti.biz/faq/linux-check-battery-status/|Linux: Check Battery Status Command
17245|http://www.cyberciti.biz/faq/restarting-ntp-service-on-linux/|Linux Restart NTPD Service Command
17183|http://www.cyberciti.biz/faq/ubuntu-linux-determine-your-ip-address/|Ubuntu Linux: Determine Your IP Address
17172|http://www.cyberciti.biz/faq/determine-ip-address-of-linux-server/|HowTo: Determine an IP Address My Linux Server
16510|http://www.cyberciti.biz/faq/unix-linux-restart-php-service-command/|Linux / Unix: Restart PHP Service Command
8292|http://www.cyberciti.biz/faq/mounting-harddisks-in-freebsd-with-mount-command/|FreeBSD: Mount Hard Drive / Disk Command
8190|http://www.cyberciti.biz/faq/rebooting-solaris-unix-server/|Reboot a Solaris UNIX System

```

我的 bash 脚本:

```
#!/bin/bash
# Usage: Create pdf files from input (wrapper script)
# Author: Vivek Gite <Www.cyberciti.biz> under GPL v2.x+
#---------------------------------------------------------

#Input file
_db="/tmp/wordpress/faq.txt"

#Output location
o="/var/www/prviate/pdf/faq"

_writer="~/bin/py/pdfwriter.py"

# If file exists
if [[ -f "$_db" ]]
then
    # read it
    while IFS='|' read -r pdfid pdfurl pdftitle
    do
        local pdf="$o/$pdfid.pdf"
        echo "Creating $pdf file ..."
    #Genrate pdf file
        $_writer --quiet --footer-spacing 2 \
        --footer-left "nixCraft is GIT UL++++ W+++ C++++ M+ e+++ d-" \
        --footer-right "Page [page] of [toPage]" --footer-line \
        --footer-font-size 7 --print-media-type "$pdfurl" "$pdf"
    done <"$_db"
fi

```

### 技巧：从 bash 变量中读取

让我们看看如何在 Debian 或者 Ubuntu Linux 下列出所有安装过的 php 包，请输入：

```
# 我将输出内容赋值到一个变量名为 $list中 #

list=$(dpkg --list php\* | awk '/ii/{print $2}')
printf '%s\n' "$list"

```

示例输出:

```
php-pear
php5-cli
php5-common
php5-fpm
php5-gd
php5-json
php5-memcache
php5-mysql
php5-readline
php5-suhosin-extension

```

你现在可以从 $list 中看到它们，并安装这些包：

```
#!/bin/bash
# BASH can iterate over $list variable using a "here string" #
while IFS= read -r pkg
do
    printf 'Installing php package %s...\n' "$pkg"
    /usr/bin/apt-get -qq install $pkg
done <<< "$list"
printf '*** Do not forget to run php5enmod and restart the server (httpd or php5-fpm) ***\n'

```

示例输出:

```
Installing php package php-pear...
Installing php package php5-cli...
Installing php package php5-common...
Installing php package php5-fpm...
Installing php package php5-gd...
Installing php package php5-json...
Installing php package php5-memcache...
Installing php package php5-mysql...
Installing php package php5-readline...
Installing php package php5-suhosin-extension...

*** Do not forget to run php5enmod and restart the server (httpd or php5-fpm) ***

```

---

via: <http://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/>

作者： VIVEK GIT 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Alien 魔法：RPM 和 DEB 互转

Summary: 正如我确信，你们一定知道Linux下的多种软件安装方式：使用发行版所提供的包管理系统（aptitude，yum，或者zypper，还可以举很多例子），从源码编译（尽管现在很少用了，但在Linux发展早期却是唯一可用的方法），或者使用各自的低级工具dpkg用于.deb，以及rpm用于.rpm，预编译包，如此这般。  使用Alien将RPM转换成DEB以及将DEB转换成RPM 在本文中，我们将为你介绍alien，一个用于在各种不同的Linux包格式相互转换的工具，其最常见的用法是将.rpm转换成.deb（或者反过来）。 如果你需要某个特定类型的包，而你只能找到其它格式的包的时候

再貼一次我自己的方案針對 RPM 系系統安裝 deb 包

1. 安裝 dpkg

2. sudo mkdir /opt/ubu

3. sudo dpkg-deb --raw-extract debFIle /opt/ubu

4. 最後執行自制腳本 sudo ./install_deb /opt/ubu 來建立符號鏈接到系統目錄，比如 /usr/bin /usr/share

5. 如果用的是 ArchLinux 的包，直接用 tar 解壓.

後面的回覆是腳本 install_deb

#!/bin/bash

if [ -z "$1" -o ! -d "$1" ]; then

        echo "installation source path not found"

        exit 1

fi

find "$1" -type f -iname *.deb -print | xargs -I [] dpkg-deb --raw-extract "[]" /opt/ubu

# chown --recursive root:root /opt/ubu

if [ ! -f /DEBIAN ]; then

  touch /DEBIAN

fi

if [ ! -d /usr/lib/x86_64-linux-gnu ]; then

  ln -s /usr/lib64 /usr/lib/x86_64-linux-gnu

fi

IFS_backup=$IFS

IFS=$'\n'

for d in $(find /opt/ubu -type d -print | sed 's/^\/opt\/ubu//');

do

    if [ ! -d "$d" ]; then

      ln -s "/opt/ubu$d" "$d"

    fi;

done

IFS=$IFS_backup

find /opt/ubu -type f -print | sed 's/\/opt\/ubu//' | xargs -I [] ln -s "/opt/ubu[]" "[]"

find /opt/ubu -type l -print | sed 's/\/opt\/ubu//' | xargs -I [] ln -s "/opt/ubu[]" "[]"

find /opt/ubu -type b -print | sed 's/\/opt\/ubu//' | xargs -I [] ln -s "/opt/ubu[]" "[]"

find /opt/ubu -type c -print | sed 's/\/opt\/ubu

find /opt/ubu -type c -print | sed 's/\/opt\/ubu//' | xargs -I [] ln -s "/opt/ubu[]" "[]"

find /opt/ubu -type p -print | sed 's/\/opt\/ubu//' | xargs -I [] ln -s "/opt/ubu[]" "[]"

find /opt/ubu -type s -print | sed 's/\/opt\/ubu//' | xargs -I [] ln -s "/opt/ubu[]" "[]"

ldconfig

這種方法的弊端， 是依賴包要自己下，先要找已有系統倉庫有包不，如果有文件名是否符合要求，倉庫沒有而用其他系統的，後期更新是大麻煩。也可能存在某個文件依賴文件的版本同系統已有存在衝突。如果包安裝要執行腳本，這個方法也不行。

不如整理一份比较详尽的文章，投稿给我？

# Alien 魔法：RPM 和 DEB 互转

正如我确信，你们一定知道Linux下的多种软件安装方式：使用发行版所提供的包管理系统（[aptitude，yum，或者zypper](http://www.tecmint.com/linux-package-management/)，还可以举很多例子），从源码编译（尽管现在很少用了，但在Linux发展早期却是唯一可用的方法），或者使用各自的低级工具dpkg用于.deb，以及rpm用于.rpm，预编译包，如此这般。

*使用Alien将RPM转换成DEB以及将DEB转换成RPM*

在本文中，我们将为你介绍alien，一个用于在各种不同的Linux包格式相互转换的工具，其最常见的用法是将.rpm转换成.deb（或者反过来）。

如果你需要某个特定类型的包，而你只能找到其它格式的包的时候，该工具迟早能派得上用场——即使是其作者不再维护，并且在其网站声明：alien将可能永远维持在实验状态。

例如，有一次，我正查找一个用于喷墨打印机的.deb驱动，但是却没有找到——生产厂家只提供.rpm包，这时候alien拯救了我。我安装了alien，将包进行转换，不久之后我就可以使用我的打印机了，没有任何问题。

即便如此，我们也必须澄清一下，这个工具不应当用来转换重要的系统文件和库，因为它们在不同的发行版中有不同的配置。只有在前面说的那种情况下所建议的安装方法根本不适合时，alien才能作为最后手段使用。

最后一项要点是，我们必须注意，虽然我们在本文中使用CentOS和Debian，除了前两个发行版及其各自的家族体系外，据我们所知，alien可以工作在Slackware中，甚至Solaris中。

### 步骤1：安装Alien及其依赖包

要安装alien到CentOS/RHEL 7中，你需要启用EPEL和Nux Dextop（是的，是Dextop——不是Desktop）仓库，顺序如下：

```
# yum install epel-release

```

启用Nux Dextop仓库的包的当前最新版本是0.5（2015年8月10日发布），在安装之前你可以查看<http://li.nux.ro/download/nux/dextop/el7/x86_64/>上是否有更新的版本。

```
# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

```

然后再做，

```
# yum update && yum install alien

```

在Fedora中，你只需要运行上面的命令即可。

在Debian及其衍生版中，只需要：

```
# aptitude install alien

```

### 步骤2：将.deb转换成.rpm包

对于本次测试，我们选择了date工具，它提供了一系列日期和时间工具用于处理大量金融数据。我们将下载.deb包到我们的CentOS 7机器中，将它转换成.rpm并安装：

检查CentOS版本

```
# cat /etc/centos-release
# wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
# alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

```

*在Linux中将.deb转换成.rpm*

**重要**：（请注意alien是怎样来增加目标包的次版本号的。如果你想要无视该行为，请添加-keep-version标识）。

如果我们尝试马上安装该包，我们将碰到些许问题：

```
# rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm

```

*安装RPM包*

要解决该问题，我们需要启用epel-testing仓库，然后安装rpmbuild工具来编辑该包的配置以重建包：

```
# yum --enablerepo=epel-testing install rpmrebuild

```

然后运行，

```
# rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

```

它会打开你的默认文本编辑器。请转到`%files`章节并删除涉及到错误信息中提到的目录的行，然后保存文件并退出：

*转换.deb到Alien版*

但你退出该文件后，将提示你继续去重构。如果你选择“Y”，该文件会重构到指定的目录（与当前工作目录不同）：

```
# rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

```

*构建RPM包*

现在你可以像以往一样继续来安装包并验证：

```
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
# rpm -qa | grep dateutils

```

*安装构建RPM包*

最后，你可以列出date工具包含的各个工具，也可以查看各自的手册页：

```
# ls -l /usr/bin | grep dateutils

```

*验证安装的RPM包*

### 步骤3：将.rpm转换成.deb包

在本节中，我们将演示如何将.rpm转换成.deb。在一台32位的Debian Wheezy机器中，让我们从CentOS 6操作系统仓库中下载用于zsh shell的.rpm包。注意，该shell在Debian及其衍生版的默认安装中是不可用的。

```
# cat /etc/shells
# lsb_release -a | tail -n 4

```

*检查Shell和Debian操作系统版本*

```
# wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
# alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

```

你可以安全地无视关于签名丢失的信息：

*将.rpm转换成.deb包*

过了一会儿后，.deb包应该已经生成，并可以安装了：

```
# dpkg -i zsh_4.3.11-5_i386.deb

```

*安装RPM转换来的Deb包*

安装完后，你看看可以zsh是否添加到了合法shell列表中：

```
# cat /etc/shells

```

*确认安装的Zsh包*

### 小结

在本文中，我们已经解释了如何将.rpm转换成.deb及其反向转换，这可以作为这类程序不能从仓库中或者作为可分发源代码获得的最后安装手段。你一定想要将本文添加到书签中，因为我们都需要alien。

请自由分享你关于本文的想法，写到下面的表单中吧。

---

via: <http://www.tecmint.com/convert-from-rpm-to-deb-and-deb-to-rpm-package-using-alien/>

作者：[Gabriel Cánepa](http://www.tecmint.com/author/gacanepa/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


Summary: RAID 6 是 RAID 5 的升级版，它有两个分布式奇偶校验，即使两个磁盘发生故障后依然有容错能力。在两个磁盘同时发生故障时，系统的关键任务仍然能运行。它与 RAID 5 相似，但性能更健壮，因为它多用了一个磁盘来进行奇偶校验。 在之前的文章中，我们已经在 RAID 5 看了分布式奇偶校验，但在本文中，我们将看到的是 RAID 6 双分布式奇偶校验。不要期望比其他 RAID 有更好的性能，除非你也安装了一个专用的 RAID 控制器。在 RAID 6 中，即使我们失去了2个磁盘，我们仍可以通过更换磁盘，从校验中构建数据，然后取回数据。  在 Linux 中安装 R

哈哈～～我终于看到RAID 6了！！<br />
赞一个！

来自日本的 Internet Explorer 11.0|Windows 8.1 用户

# 在 Linux 下使用 RAID（五）：安装 RAID 6（条带化双分布式奇偶校验）

RAID 6 是 RAID 5 的升级版，它有两个分布式奇偶校验，即使两个磁盘发生故障后依然有容错能力。在两个磁盘同时发生故障时，系统的关键任务仍然能运行。它与 RAID 5 相似，但性能更健壮，因为它多用了一个磁盘来进行奇偶校验。

在之前的文章中，我们已经在 RAID 5 看了分布式奇偶校验，但在本文中，我们将看到的是 RAID 6 双分布式奇偶校验。不要期望比其他 RAID 有更好的性能，除非你也安装了一个专用的 RAID 控制器。在 RAID 6 中，即使我们失去了2个磁盘，我们仍可以通过更换磁盘，从校验中构建数据，然后取回数据。

*在 Linux 中安装 RAID 6*

要建立一个 RAID 6，一组最少需要4个磁盘。RAID 6 甚至在有些组中会有更多磁盘，这样将多个硬盘捆在一起，当读取数据时，它会同时从所有磁盘读取，所以读取速度会更快，当写数据时，因为它要将数据写在条带化的多个磁盘上，所以性能会较差。

现在，很多人都在讨论为什么我们需要使用 RAID 6，它的性能和其他 RAID 相比并不太好。提出这个问题首先需要知道的是，如果需要高容错性就选择 RAID 6。在每一个用于数据库的高可用性要求较高的环境中，他们需要 RAID 6 因为数据库是最重要，无论花费多少都需要保护其安全，它在视频流环境中也是非常有用的。

#### RAID 6 的的优点和缺点

* 性能不错。
* RAID 6 比较昂贵，因为它要求两个独立的磁盘用于奇偶校验功能。
* 将失去两个磁盘的容量来保存奇偶校验信息（双奇偶校验）。
* 即使两个磁盘损坏，数据也不会丢失。我们可以在更换损坏的磁盘后从校验中重建数据。
* 读性能比 RAID 5 更好，因为它从多个磁盘读取，但对于没有专用的 RAID 控制器的设备写性能将非常差。

#### 要求

要创建一个 RAID 6 最少需要4个磁盘。你也可以添加更多的磁盘，但你必须有专用的 RAID 控制器。使用软件 RAID 我们在 RAID 6 中不会得到更好的性能，所以我们需要一个物理 RAID 控制器。

如果你新接触 RAID 设置，我们建议先看完以下 RAID 文章。

* [介绍 RAID 的级别和概念](/article-6085-1.html)
* [使用 mdadm 工具创建软件 RAID 0 （条带化）](/article-6087-1.html)
* [用两块磁盘创建 RAID 1（镜像）](/article-6093-1.html)
* [创建 RAID 5（条带化与分布式奇偶校验）](/article-6102-1.html)

#### 我的服务器设置

```
操作系统 :  CentOS 6.5 Final
IP 地址    :  192.168.0.228
主机名    :  rd6.tecmintlocal.com
磁盘 1 [20GB]  :  /dev/sdb
磁盘 2 [20GB]  :  /dev/sdc
磁盘 3 [20GB]  :  /dev/sdd
磁盘 4 [20GB]  :  /dev/sde

```

这是9篇系列教程的第5部分，在这里我们将看到如何在 Linux 系统或者服务器上使用四个 20GB 的磁盘（名为 /dev/sdb、 /dev/sdc、 /dev/sdd 和 /dev/sde）创建和设置软件 RAID 6 （条带化双分布式奇偶校验）。

### 第1步：安装 mdadm 工具，并检查磁盘

1、 如果你按照我们最进的两篇 RAID 文章（第2篇和第3篇），我们已经展示了如何安装`mdadm`工具。如果你直接看的这篇文章，我们先来解释下在 Linux 系统中如何使用`mdadm`工具来创建和管理 RAID，首先根据你的 Linux 发行版使用以下命令来安装。

```
# yum install mdadm     [在 RedHat 系统]
# apt-get install mdadm     [在 Debain 系统]

```

2、 安装该工具后，然后来验证所需的四个磁盘，我们将会使用下面的`fdisk`命令来检查用于创建 RAID 的磁盘。

```
# fdisk -l | grep sd

```

*在 Linux 中检查磁盘*

3、 在创建 RAID 磁盘前，先检查下我们的磁盘是否创建过 RAID 分区。

```
# mdadm -E /dev/sd[b-e]
# mdadm --examine /dev/sdb /dev/sdc /dev/sdd /dev/sde # 或

```

*在磁盘上检查 RAID 分区*

**注意**: 在上面的图片中，没有检测到任何 super-block 或者说在四个磁盘上没有 RAID 存在。现在我们开始创建 RAID 6。

### 第2步：为 RAID 6 创建磁盘分区

4、 现在在 `/dev/sdb`, `/dev/sdc`, `/dev/sdd` 和 `/dev/sde`上为 RAID 创建分区，使用下面的 fdisk 命令。在这里，我们将展示如何在 sdb 磁盘创建分区，同样的步骤也适用于其他分区。

**创建 /dev/sdb 分区**

```
# fdisk /dev/sdb

```

请按照说明进行操作，如下图所示创建分区。

* 按 `n`创建新的分区。
* 然后按 `P` 选择主分区。
* 接下来选择分区号为1。
* 只需按两次回车键选择默认值即可。
* 然后，按 `P` 来打印创建好的分区。
* 按 `L`，列出所有可用的类型。
* 按 `t` 去修改分区。
* 键入 `fd` 设置为 Linux 的 RAID 类型，然后按回车确认。
* 然后再次使用`p`查看我们所做的更改。
* 使用`w`保存更改。

*创建 /dev/sdb 分区*

**创建 /dev/sdc 分区**

```
# fdisk /dev/sdc

```

*创建 /dev/sdc 分区*

**创建 /dev/sdd 分区**

```
# fdisk /dev/sdd

```

*创建 /dev/sdd 分区*

**创建 /dev/sde 分区**

```
# fdisk /dev/sde

```

*创建 /dev/sde 分区*

5、 创建好分区后，检查磁盘的 super-blocks 是个好的习惯。如果 super-blocks 不存在我们可以按前面的创建一个新的 RAID。

```
# mdadm -E /dev/sd[b-e]1
# mdadm --examine /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 # 或

```

\*在新分区中检查 RAID \*

### 第3步：创建 md 设备（RAID）

6、 现在可以使用以下命令创建 RAID 设备`md0` （即 /dev/md0），并在所有新创建的分区中应用 RAID 级别，然后确认 RAID 设置。

```
# mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# cat /proc/mdstat

```

*创建 Raid 6 设备*

7、 你还可以使用 watch 命令来查看当前创建 RAID 的进程，如下图所示。

```
# watch -n1 cat /proc/mdstat

```

*检查 RAID 6 创建过程*

8、 使用以下命令验证 RAID 设备。

```
# mdadm -E /dev/sd[b-e]1

```

**注意**::上述命令将显示四个磁盘的信息，这是相当长的，所以没有截取其完整的输出。

9、 接下来，验证 RAID 阵列，以确认重新同步过程已经开始。

```
# mdadm --detail /dev/md0

```

*检查 Raid 6 阵列*

### 第4步：在 RAID 设备上创建文件系统

10、 使用 ext4 为`/dev/md0`创建一个文件系统，并将它挂载在 /mnt/raid6 。这里我们使用的是 ext4，但你可以根据你的选择使用任意类型的文件系统。

```
# mkfs.ext4 /dev/md0

```

*在 RAID 6 上创建文件系统*

11、 将创建的文件系统挂载到 /mnt/raid6，并验证挂载点下的文件，我们可以看到 lost+found 目录。

```
# mkdir /mnt/raid6
# mount /dev/md0 /mnt/raid6/
# ls -l /mnt/raid6/

```

12、 在挂载点下创建一些文件，在任意文件中添加一些文字并验证其内容。

```
# touch /mnt/raid6/raid6_test.txt
# ls -l /mnt/raid6/
# echo "tecmint raid setups" > /mnt/raid6/raid6_test.txt
# cat /mnt/raid6/raid6_test.txt

```

*验证 RAID 内容*

13、 在 /etc/fstab 中添加以下条目使系统启动时自动挂载设备，操作系统环境不同挂载点可能会有所不同。

```
# vim /etc/fstab

/dev/md0                /mnt/raid6              ext4    defaults        0 0

```

*自动挂载 RAID 6 设备*

14、 接下来，执行`mount -a`命令来验证 fstab 中的条目是否有错误。

```
# mount -av

```

*验证 RAID 是否自动挂载*

### 第5步：保存 RAID 6 的配置

15、 请注意，默认情况下 RAID 没有配置文件。我们需要使用以下命令手动保存它，然后检查设备`/dev/md0`的状态。

```
# mdadm --detail --scan --verbose >> /etc/mdadm.conf
# cat /etc/mdadm.conf
# mdadm --detail /dev/md0

```

*保存 RAID 6 配置*

*检查 RAID 6 状态*

### 第6步：添加备用磁盘

16、 现在，已经使用了4个磁盘，并且其中两个作为奇偶校验信息来使用。在某些情况下，如果任意一个磁盘出现故障，我们仍可以得到数据，因为在 RAID 6 使用双奇偶校验。

如果第二个磁盘也出现故障，在第三块磁盘损坏前我们可以添加一个新的。可以在创建 RAID 集时加入一个备用磁盘，但我在创建 RAID 集合前没有定义备用的磁盘。不过，我们可以在磁盘损坏后或者创建 RAID 集合时添加一块备用磁盘。现在，我们已经创建好了 RAID，下面让我演示如何添加备用磁盘。

为了达到演示的目的，我已经热插入了一个新的 HDD 磁盘（即 /dev/sdf），让我们来验证接入的磁盘。

```
# ls -l /dev/ | grep sd

```

*检查新磁盘*

17、 现在再次确认新连接的磁盘没有配置过 RAID ，使用 mdadm 来检查。

```
# mdadm --examine /dev/sdf

```

*在新磁盘中检查 RAID*

**注意**: 像往常一样，我们早前已经为四个磁盘创建了分区，同样，我们使用 fdisk 命令为新插入的磁盘创建新分区。

```
# fdisk /dev/sdf

```

*为 /dev/sdf 创建分区*

18、 在 /dev/sdf 创建新的分区后，在新分区上确认没有 RAID，然后将备用磁盘添加到 RAID 设备 /dev/md0 中，并验证添加的设备。

```
# mdadm --examine /dev/sdf
# mdadm --examine /dev/sdf1
# mdadm --add /dev/md0 /dev/sdf1
# mdadm --detail /dev/md0

```

*在 sdf 分区上验证 Raid*

\*添加 sdf 分区到 RAID \*

*验证 sdf 分区信息*

### 第7步：检查 RAID 6 容错

19、 现在，让我们检查备用驱动器是否能自动工作，当我们阵列中的任何一个磁盘出现故障时。为了测试，我将一个磁盘手工标记为故障设备。

在这里，我们标记 /dev/sdd1 为故障磁盘。

```
# mdadm --manage --fail /dev/md0 /dev/sdd1

```

*检查 RAID 6 容错*

20、 让我们查看 RAID 的详细信息，并检查备用磁盘是否开始同步。

```
# mdadm --detail /dev/md0

```

*检查 RAID 自动同步*

**哇塞!** 这里，我们看到备用磁盘激活了，并开始重建进程。在底部，我们可以看到有故障的磁盘 /dev/sdd1 标记为 faulty。可以使用下面的命令查看进程重建。

```
# cat /proc/mdstat

```

*RAID 6 自动同步*

### 结论:

在这里，我们看到了如何使用四个磁盘设置 RAID 6。这种 RAID 级别是具有高冗余的昂贵设置之一。在接下来的文章中，我们将看到如何建立一个嵌套的 RAID 10 甚至更多。请继续关注。

---

via: <http://www.tecmint.com/create-raid-6-in-linux/>

作者：[Babin Lonston](http://www.tecmint.com/author/babinlonston/) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出