标签 树莓派 下的文章

从SSH到端口转发,这些先进的技术将让你的树莓派开发更简单。

当你可以在命令行输入命令时,你就不再是一个新手在做一些新手的设置了。虽然进度不快,但是你的确正在通过你的方式去学习使用这物超所值的、只有信用卡大小的计算机去满足一些DIY想法,这就是树莓派。

然而,从基础跨越到中级还是存在较大距离。当你从“设置你的派”的教程转而学习“创建一个媒体服务器”时,项目开始前的需求就会有一点点挑战。许多中级的Pi教程,包括ReadWrite的一些文章,都会假设你已经对树莓派设置好了一些东西。

并非每一个项目都需要找个教程里的所有建议,但是知道这些步骤可以使项目更顺利地贴合需求。

当你准备脱离小白行列时,做一些树莓派教程的预先准备工作对你非常有用。

1) 使用SSH登录

SSH意思是Secure Shell,它是一种加密网络协议,用于安全地在计算机与树莓派之间传输你的数据。项目中也许需要你通过你的计算机的命令行控制树莓派,而不是通过给树莓派连接显示器和键盘来控制。

现在SSH已经预先安装在树莓派系统 Raspbian 中了,所以如果你安装的是最新版本或较新版本的树莓派都是支持SSH使用的。

要使用SSH,第一,你需要知道你的树莓派的IP地址,在你的树莓派中输入以下命令:

sudo ifconfig

会显示出三个段落。你的IP地址将会在第一段或者第三段显示,这主要看你的树莓派是通过线缆还是通过WIFI适配器连接网络的。如果是通过线缆连接,那请查看第一段,在“eth0”那行开始显示。如果是通过wifi链接,将在第三段“wlan0”开头的地方显示。

无论通过哪种方式,你将会看到以“inet addr”开头后面跟着像192.168.2.2这样类型的IP地址,这是我们在这篇文章中经常引用到的一种默认IP地址格式。

现在你有一个可以连接树莓派与你的电脑的IP地址了,如果你使用的是Mac,你已经有了内置的SSH,启动你的终端应用并输入:

ssh [email protected]

连接之后将会要求输入密码,默认情况下,密码一般是“respberry”.如果你修改了默认密码,请输入你的新密码。这样,您将登入了树莓派系统。

如果你在一台PC,还需要附加的一个步骤。

下载并运行PuTTY或者其它支持Windows系统的SSH客户端。输入你的IP地址在如上截图中的输入框中。保持默认端口为22不变。然后安心回车,PuTTY将会提示你输入用户名和密码。输入之后,就可以开始在你的树莓派里远程工作了。

2) 使用远程桌面连接到你的树莓派

使用SSH去从命令行远程控制你的Pi是极好的,但是如果你想通过图形界面去管理你的Pi怎么办呢?幸运的是MAC和PC都已经内建了这种方式。

在你的树莓派中的命令行(是的,你可以通过SSH来操作),输入:

sudo apt-get install xrdp 

xdrp是一种在可以在后台运行的计算机守护进程),并支持Mac和PC上的微软远程桌面客户端。当树莓派中安装好xrdp之后,你的MAC或者PC就可以通过客户端登录到树莓派中了。

找到你的电脑中一个叫远程桌面的客户端。它本身并不是隐藏起来的,但没有放到应用程序的文件夹中。

出现上述提示时输入你的IP地址。接下来会弹出xrdp窗口,提示你输入用户名和密码。

如果进展顺利,你的树莓派桌面就会在你的电脑屏幕上的窗口里面显示出来了。

3) 给你的树莓派设置一个家庭网络的静态地址

在之前(第一步)找到的树莓派的IP地址现在是可以连接的,但是不能保证你的路由器会一直给你的树莓派分配一个永久固定的IP地址。这意味着在你网段中的其它计算机无法知道树莓派被分配了什么IP地址。那么如何来给树莓派分配静态的IP地址而不是每隔几天就在树莓派上执行“sudo ifconfig”命令,或者糟糕到每隔几个小时一次?

显然,我们要从“ifconfig”命令开始,所以输入:

sudo ifconfig

拿出笔和纸做准备,记录下面的三个IP地址。(#后面的代码是注释,实际不会显示.):

inet addr: 192.168.2.2 # 树莓派的当前IP地址
Bcast: 192.168.0.255 # 地址广播范围
Mask: 255.255.255.0 # 子网掩码

此外,你还需要知道另外2个信息。请输入以下命令获取网关和目的地址(译注:实际上我们只需要知道默认网关的IP就行了)。

netstat -nr

接下来,去查看你路由器上的配置。(如何进行这一步主要取决于你用什么路由器,所以还是查看下说明书吧)找出你的设备通过DHCP设置了哪段ip地址。有些地址是不能使用的,因为DHCP协议中已经分配使用了。所以要选择没有被使用的,例如,192.168.2.2。你的路由器也许可以让你保留一个未使用的IP地址,固定分配给像树莓派这样的本地设备。(如果你的路由器是Belkin,那大概就是这样)如果是这样的,那就不用看下面的部分了。

如果不能固定分配,你需要让树莓派知道它的新的ip地址。我们通过nano编辑器来编辑树莓派中相关的文件。

sudo nano /etc/network/interfaces

将“iface eth0 inet dhcp”这一段修改成“iface eth0 inet static”,也就是将动态获取IP修改成静态IP。

接下来输入如下,将下列X取代成你之前所记下来的地址信息。最上面的地址是我们将要把DHCP中没有使用的IP地址分配作为树莓派的静态IP地址。

address 192.168.2.2
netmask XXX.XXX.XXX.X
network XXX.XXX.X.X
broadcast XXX.XXX.X.X
gateway XXX.XXX.X.X

使用“sudo reboot”的命令重启树莓派系统后,在命令行再次输入“ifconfig”,我们刚刚新设置的静态IP设置就会呈现。

4) 端口转发至树莓派

一些树莓派程序可能需要你转发一个特定的网络端口号到你的树莓派。端口是信息在互联网传送的虚拟路径。有时候你需要转发一个端口来使像树莓派这样计算机可以被互联网访问,即使它在路由器后面。这种情况有点像拨电话分机号一样。

端口转发能够用于像树莓派网页服务器,树莓派的VOIP或者简单的点对点下载。有超过65000个端口可供选择,你可以分配不同的端口给不同的树莓派项目用来进行通信。

某些端口默认情况下代表着特定的应用。例如80端口默认为HTML页面,21端口默认代表FTP传输,1194端口默认用于设置VPN服务器。所以大多数情况下,你应该选择默认的端口提供服务。

设置端口转发的方法完全取决于你的路由器,于是很难创建一个固定的关于设置端口转发教程。你只能阅读你路由器的说明书来定义端口和转发了。

下面链接了几个主流路由器厂商的端口转发教程。

5) 在互联网上给你的树莓派设置静态地址

再次声明,如果你的运营商给了你一个静态IP,你就不需要看这个部分了。

我们已经给树莓派设置了一个静态的内部IP地址,这意味着在你的内部网络中总是能够连到你的树莓派。但是如果程序需要树莓派连接到互联网呢?如果你想要在你的树莓派上搭建一个Web服务器,在你网络之外的人们需要知道你的树莓派在哪里,这意味着我们要来设置一个像静态IP的公开地址。

我之所以说“看起来像”是因为我们已经设置了一个伪静态IP地址。通常,你所在的运营商将会不断变换分配给你的地址。所以每一次有人连接到你的树莓派时,我们就要写个脚本说:“树莓派已经搬家了,让我带你去新的地址吧! ”

我们可以通过DDNS(即动态DNS)来实现,它实时维护名字解析,并通过 DDClient 程序通知DDNS修改指向到你的树莓派。

首先需要注册一个类似DNS Dynamic的动态主机服务。根据指示并创建新的名称服务器类似Yourserver.dnsdynamic.com.

接下来进入树莓派中的命令行,使用下面命令来安装DDNS客户端:

sudo apt-get install ddclient

我们需要编辑DDNS客户端配置,使用新的名称服务器:

sudo nano /etc/ddclient/ddclient.conf 

每种服务配置都会有略微的不同,但是DDNS的网站会告诉你需要在配置文件中修改的内容。一个标准的DDNS配置,举个栗子,如 DDNS配置,可以直接复制粘贴。

你的运营商不会因为你的这个文件而停止更新给你分配的IP地址,因此我们在脚本的最前面设置一个守护进程执行的频度,以确保及时检查IP地址是否已经更改。

daemon=600
# check every 600 seconds

这里设置的是每10分钟检查一次,这是一个不错的选择。如果你设置成每秒钟检查一次,你的动态服务器恐怕不干,因为这样对它来说是一种轰炸。记得按下ctrl+x保存并退出配置文件。

接下来,输入:

ddclient

如上输入程序的名称就可以运行了。当你的树莓派开着的时候就会持续运行了。如果你重启树莓派,键入 “ddclient”就会重新开始运行了。

现在你的树莓派已经被装修一番,可以迎接更高级的教程了,请从中获得更多乐趣吧!

关于作者:

本文的美女作者:Lauren Orsini是一个专业记者、业余程序员和全职宅女,她住在饱受交通之苦的Arlington, VA。

Lauren Orsini


via: http://readwrite.com/2014/04/09/raspberry-pi-projects-ssh-remote-desktop-static-ip-tutorial#feed=/hack&awesm=~oB1b7zvteUQGOV

译者:disylee 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

树莓派已经庆祝了它的第二个生日。自从在2012.2.29初次登台以来,树莓派已经引导了一代新的微型、便宜的独板电脑。大量基于树莓派的DIY项目想法通过网络涌现,并且在开发世界中有许多使用案例将树莓派作为低成本学习媒介。为了庆祝它的第二个生日,我会在这篇文章中分享几个树莓派有趣的事实

  1. 100,000 块树莓派板子 在发行首日售出,并且现在已有超过 250万块板子 在世界范围内售出。
  2. 首批树莓派在中国台湾制造,,但是现在所有在售的板子在 英国制造
  3. 树莓派可以超频 (通过进入所谓的 turbo 模式)。 你可以修改 overclocking/overvolting options 或者在运行时使用raspi-config工具,或者在启动时修改启动参数/boot/config.txt。改变 overclocking/overvolting 选项不会影响你的保修。
  4. 树莓派不带MPEG-2解码器。 增加一个MPEG-2/VC-1编码授权会增加10%的板子价格。 因此,你可以在你需要的时候再 购买 MPEG-2/VC-1 序列号。购买的序列号与你的树莓派绑定在一起。
  5. 不可以在树莓派上(ARMv6)运行Windows 8,因为 Windows 8 要求ARMv7或者更高级的处理器。同样地,你不可以在树莓派上运行Ubuntu因为Ubuntu也只支持 ARMv7 后者更高
  6. 树莓派(Raspberry Pi)最初的名字是: "树莓"(Raspberry),这起源于以前对于微处理器以水果命名的传统。 "派"(Pi)指的是 "Python" 因为Python是第一个移植到树莓派的程序.
  7. 树莓派logo中的树莓实际上是一个3D 富勒烯 (或者巴克球),它一共有32面。 logo中的11面是可见的。凑巧的是,树莓派有一颗32位的ARM11处理器。
  8. Methematica, 一款商业的流行的计算软件,现在已经在树莓派上免费捆绑了
  9. (感谢加里•格兰特) Kickstarter上最大的基于树莓派的项目是 Kano,它的目的是发行一个计算机/编码工具箱来帮助各年龄段的人制造一套他们自己的电脑。项目已经从13,387名支持者中获得$1,522,160。
  10. 根据 Rastrack.co.uk,树莓派最流行的国家是英国。

就是这些。如果你有任何关于树莓派有趣的事实,欢迎随时插话。


via: http://xmodulo.com/2014/03/interesting-facts-raspberry-pi.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在我的上一篇文章中讲过如何做一个高可用系统:两个树莓派布署上 GlusterFS 集群文件系统,就变成一个容错文件服务器了。在这篇文章中我们会基于这个高可用系统构建另一个容错服务:建立一个简单的 Web 服务器集群。

可能你没有看过我的上一篇文章,那我就在这里简单回顾一下上次的内容。我有两个树莓派:Pi1 和 Pi2。Pi1 的 IP 地址为 192.168.0.121,Pi2 的 IP 地址为 192.168.0.122。我把它们组合成为 GlusterFS 集群系统,共享一个存储卷,卷名为 gv0。并且这个 gv0 被挂载在两个树莓派上,挂载点都是 /mnt/gluster1,这样一来,两个树莓派能同时访问到这个共享卷。最后我测试了下系统的容错性,将共享卷挂载到第三个物理机上,并执行共享卷上的一个简单的脚本:打印系统时间并输出到 gv0 上的一个文件内,然后轮着关掉两台树莓派,检测这个冗余系统是否还能用。

现在我手上有这个经过检验的存储系统,我要做的是把这个系统做成有容错功能的 Web 服务器集群。树莓派的 CPU 处理速度和内存资源都不是很高,好在对付一个静态 Web 服务器已经是绰绰有余了。我故意把这个例子做得非常简单,因为我觉得如果你能摆平这个简单的例子,你也能处理复杂一点的问题了。

安装 Nginx

虽然我也比较喜欢 Apache,但在资源有限的情况下,像 Nginx 这样功能全、性能高、资源占用少的 Web 服务器是比较理想的选择。在 Raspbian 的默认源中存在 Nginx,所以我只要登入一台树莓派并且输入以下命令:

$ sudo apt-get update
$ sudo apt-get install nginx

Nginx 安装好后,创建配置文件 /mnt/gluster1/cluster ,内容如下:

server {
  root /mnt/gluster1/www;
  index index.html index.htm;
  server_name twopir twopir.example.com;

  location / {
        try_files $uri $uri/ /index.html;
  }
}

注意:我这里把服务器命名为“twopir”,你可以根据自己爱好命名你的网站。另外我把 Web 服务器的根目录设置为 /mng/gluster1/www。这样,我就能把我的静态文件放在这个共享存储系统内,从而让两个树莓派主机都访问到它们。

现在删除默认的 Nginx 配置文件,将上面配好的配置文件作为 Nginx 的配置文件。在 Debian 系统中,Nginx 将它的配置文件像 Apache 一样放在 sites-available 和 site-enabled 两个目录下面。虚拟主机配置文档放在 sites-available 中,而 sites-enabled 目录包含了你想生效的配置文件的软链接。

$ cd /etc/nginx/sites-available
$ sudo ln -s /mnt/gluster1/cluster .
$ cd /etc/nginx/sites-enabled
$ sudo rm default
$ sudo ln -s /etc/nginx/sites-available/cluster .

现在我已经放好了配置文件,但系统还不存在上面所说的 Web 服务器根目录。下一步就是创建目录 /mnt/gluster1/www,并复制 index.html 文件进去。当然你也可以建立自己定义的 index.html 文件,但先复制一个已有的文件是个不错的选择:

$ sudo mkdir /mnt/gluster1/www
$ cp /usr/share/nginx/www/index.html /mnt/gluster1/www

重启 Nginx 服务:

$ sudo /etc/init.d/nginx restart

现在去 DNS 服务器为192.168.0.121的树莓派配置记录。你可以根据自己的情况配置你自己的域名和 IP 地址。现在在浏览器上输入 http://twopir/ 然后出现默认的 Nginx 首页。如果你查看下 /var/log/nginx/access.log 文件,你可以看到点击网页留下的记录。

Nginx 能正常工作后,配置第二个树莓派。因为我们已经将配置文件都放在 GlusterFS 共享目录下,我们现在要做的只是安装 Nginx,创建相关的软链接,重启 Nginx:

$ sudo apt-get update
$ sudo apt-get install nginx
$ cd /etc/nginx/sites-available
$ sudo ln -s /mnt/gluster1/cluster .
$ cd /etc/nginx/sites-enabled
$ sudo rm default
$ sudo ln -s /etc/nginx/sites-available/cluster .
$ sudo /etc/init.d/nginx restart

DNS 服务器上配置两条 A 记录

现在两个主机共享同一份文件,下一步是设置冗余系统的关键步骤。虽然你完全可以设置一个类似心跳的服务用于轮询检测哪个树莓派的 Web 服务是开启的,但这里有个更好的方法:给同一个主机名指定两个 DNS 的 A 记录,分别指向你的两个树莓派(译注:A 记录就是将域名转化为 IP 地址的记录,DNS 包含很多记录方式,如 A 记录、PTR 记录、MX 记录等等),这就是传说中的 DNS 负载均衡,DNS 访问主机时,如果主机名对应多个 IP 地址,DNS 会随机返回这些 IP 地址的顺序:

$ dig twopir.example.com A +short
192.168.0.121
192.168.0.122
$ dig twopir.example.com A +short
192.168.0.122
192.168.0.121

因为返回随机的顺序,用户可以均匀地往两台服务器发送请求,这个负载均衡的机制就是由 DNS 服务器的多条 A 记录来提供。相对于 DNS 的负载均衡技术,我更感兴趣的是 Web 浏览器如何处理请求失败的情况。当浏览器通过网页主机获得两条 A 记录,并且第一条记录所在的主机当机了,浏览器几乎立刻就切到另一条记录上。切换效率快到用户根本察觉不出来,这可比传统的心跳线轮循请求主机快多了。

所以在你正在使用的 DNS 服务器上添加你的树莓派集群的两个 IP 地址,然后试试 dig 命令,就像我在上面使用过的一样,你也应该能得到两个 IP 地址。

当你为同一个域名设置好了两个 A 记录,这套集群就可以提供容错服务了。打开两个终端并分别登录到两个树莓派,运行 tail -f /var/log/ngnix/access.log 命令,你可以监视 Web 服务器的访问情况。当你通过浏览器访问网页时,你可以看到在一台树莓派上产生了访问日志,而在另外一台的日志里什么也没有出现。现在你可以刷新几次页面,当你觉得你对能成功访问到 Web 服务器感到满意了,你可以重启响应你请求的那台树莓派,然后再刷新几次页面。也许浏览器上会出现一个短暂的不可访问信号,但会马上重定向到第二台树莓派上,你会看到一样的页面,并且你能通过终端访问日志了解具体情况。当第一台树莓派启动后,你在浏览器上根本不会察觉到。

(译注:如何处理DNS 轮询的多个IP地址,不同浏览器有不同的做法,目前译者收集到的资料显示,只有mozilla的netlib库支持自动重连下一个IP地址的做法。如果读者知道更多的浏览器对DNS轮询的处理策略,请评论给我们。其实,以译者的态度看,DNS轮询根本就不能算作是高可用性的方案,勉强可以算作是负载均衡方案,建议考虑更可靠的其它方案。)

随机重启一台树莓派,只要有一台在线,Web 服务器就能提供服务。这是一个非常简单的案例,你可以把你其它的静态文件放到 /mnt/gluster1/www 上,为你提供真正有价值的服务,现在好好享受你的低成本容错集群 Web 服务器吧。


via: http://www.linuxjournal.com/content/two-pi-r-2-web-servers

译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

很多人都对树莓派的硬件 hack 功能(译注:就是用户可以自己发挥想像力,把树莓派设计成自己想要的机器)感兴趣,而我看中的一点是树莓派的低耗电功能,我可以用它来代替现在在用的 Linux 服务器。在以前的文章中我已经介绍过如何用树莓派代替这些服务器来管理我的啤酒冰箱,以及我在澳大利亚托管的一台树莓派。托管树莓派之后,我开始思考我正在使用的服务器的单点故障问题,并且考虑着手解决它。当你看到文章标题里的“2 Pi R”,你也许会想到圆周长计算公式(C = 2PiR,Pi 为圆周率,R 为半径),但在本文中,“R”的意思是“冗余(redundancy)”。当然,一块树莓派并不能实现冗余,至少需要两块。下面我将介绍如何用两块树莓派实现冗余。

本文将建立一个底层框架,为俩树莓派实现冗余提供基础服务,首先我要用 GlusterFS 建立一个集群网络文件系统。在之后的文章中,我还会介绍如何利用共享存储来建立其他冗余服务。注意,虽然本文使用的是树莓派,但下面的配置操作同样适用于其他硬件。

配置俩树莓派

首先从树莓派官网下载最新的 Linux 发行版,并安装到两块 SD 卡中。将树莓派接到电视机上,然后按照文档提示选择内核镜像并启动系统,确认一下 SSH 服务有没有启动(默认情况下 SSH 应该是开机启动的)。你可以使用 raspi-config 命令来增加根分区空间,以便能充分利用 SD 卡的容量。确认系统正常工作、SSH 正常启动后,我可以过程访问它了。我将树莓派与电视机断开,并连到交换机上,重启系统,没有显示界面。

默认情况下,Raspbian 会通过 DHCP 获取自己的网络信息,但是在设置冗余服务时,我们希望树莓派每次开机都使用同一个 IP 地址。在我的环境中,我设置了我的 DHCP 服务器,它会在树莓派启动时为它们分配固定的 IP 地址。而你可以编辑 /etc/network/interfaces 文件:

iface eth0 inet dhcp

修改成:

auto eth0
iface eth0 inet static
  address 192.168.0.121
  netmask 255.255.255.0
  gateway 192.168.0.1

当然,要将上面的参数修改成你自己的参数,确保每个树莓派使用不同的 IP 地址。我把两个树莓派的主机名都改了,便于在(通过 SSH)登录的时候区分它们。怎么改主机名呢?以 root 权限编辑 /etc/hostname 文件。最后重启系统,确认树莓派使用了正确的网络配置和主机名。

配置 GlusterFS 服务器

GlusterFS 是一个用户态的集群文件系统,我选择它,是因为它配置共享网络文件系统很方便。首先选一个树莓派作为主设备(master)。在主设备上你需要做一些初始化操作,完成后,它们会自动执行故障转移。下面是我架设的环境:

Master hostname: pi1
Master IP: 192.168.0.121
Master brick path: /srv/gv0
Secondary hostname: pi2
Secondary IP: 192.168.0.122
Secondary brick path: /srv/gv0

在开始之前,登入这两个树莓派,然后安装 glusterfs-server 软件包:

$ sudo apt-get install glusterfs-server

GlusterFS 将数据保存在一些被称为“块”的设备中。一个“块”是一个系统路径,由你指定给 gluster 使用。GlusterFS 会将所有“块”组合成一个存储卷,给客户端使用。GlusterFS 会将文件的数据分割成多份,保存在不同的“块”中。所以虽然一个“块”看起来就是一个普通的路径,你最好不要在树莓派中直接操作它,而应该通过客户端访问 GlusterFS 服务,让 GlusterFS 操作。本文中我在两个树莓派中都新建一个 /srv/gv0 目录作为 GlusterFS 的“块”:

$ sudo mkdir /srv/gv0

在我的环境中,我将 SD 卡上的根文件系统共享出来,而你可能需要共享更大的存储空间。如果是这样的话,在两块树莓派上都接上 USB 硬盘,格式化后挂载到 /srv/gv0 上。编辑下 /etc/fstab 文件,确保系统每次启动时都会把你的 USB 硬盘挂载上去。两个树莓派上的“块”不一定需要有相同的名字或者相同的路径名称,但是把它们设置为相同的值也没什么坏处。

配置好“块”的路径,安装好 glusterfs-server 软件包,确认两个树莓派都正常工作,然后登入被你设为主设备的树莓派,输入“gluster peer probe”命令,将次设备加入到集群中。在我的环境中,我用 IP 地址表示第二个节点,如果你比较有个性,并且有设置过 DNS,你也可以用主机名表示这个节点。

pi@pi1 ~ $ sudo gluster peer probe 192.168.0.122
Probe successful

目前为止,我的 pi1 (192.168.0.121) 信任 pi2 (192.168.0.122),我可以建立一个存储卷,名字都想好了:gv0。在主设备端运行命令“gluster volume create”:

pi@pi1 ~ $ sudo gluster volume create gv0 replica 2 192.168.0.121:/srv/gv0 192.168.0.122:/srv/gv0
Creation of volume gv0 has been successful. Please start 
the volume to access data.

这里稍微解释一下命令的意思。“gluster volume create”就是新建一个卷;“gv0”是卷名,这个名称将会在客户端被用到;“replica 2”表示这个卷的数据会在两个“块”之间作冗余,而不是将数据分割成两份分别存于两个“块”。这个命令保证了卷内的数据会被复制成两份分别保存在两个“块”中。最后我定义两个独立的“块”,作为卷的存储空间:192.168.0.121 上的 /srv/gv0 和 192.168.0.122 上的 /srv/gv0。

现在,卷被成功创建,我只需启动它:

pi@pi1 ~ $ sudo gluster volume start gv0
Starting volume gv0 has been successful

然后我可以在任何一个树莓派上使用“volume info”命令来查看状态:

$ sudo gluster volume info

Volume Name: gv0
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: 192.168.0.121:/srv/gv0
Brick2: 192.168.0.122:/srv/gv0

配置 GlusterFS 客户端

卷已启动,现在我可以在一个支持 GlusterFS 的客户端上,将它作为一个 GlusterFS 类型的文件系统挂载起来。首先我想在这两个树莓派上挂载这个卷,于是我在两个树莓派上都创建了挂载点,并下面的命令把这个卷挂载上去:

$ sudo mkdir -p /mnt/gluster1
$ sudo mount -t glusterfs 192.168.0.121:/gv0 /mnt/gluster1
$ df
Filesystem         1K-blocks    Used Available Use% Mounted on
rootfs               1804128 1496464    216016  88% /
/dev/root            1804128 1496464    216016  88% /
devtmpfs               86184       0     86184   0% /dev
tmpfs                  18888     216     18672   2% /run
tmpfs                   5120       0      5120   0% /run/lock
tmpfs                  37760       0     37760   0% /run/shm
/dev/mmcblk0p1         57288   18960     38328  34% /boot
192.168.0.121:/gv0   1804032 1496448    215936  88% /mnt/gluster1

如果你是一个喜欢钻研的读者,你可能会问了:“如果我指定了一个 IP 地址,如果192.168.0.121当机了,怎么办?”。别担心,这个 IP 地址仅仅是为了指定使用哪个卷,当我们访问这个卷的时候,卷内的两个“块”都会被访问到。

当你挂载好这个文件系统后,试试在里面新建文件,然后查看一下“块”对应的路径:/srv/gv0。你应该可以看到你在 /mngt/gluster1 里创建的文件,在两个树莓派的 /srv/gv0 上都出现了(重申一遍,不要往 /srv/gv0 里写数据):

pi@pi1 ~ $ sudo touch /mnt/gluster1/test1
pi@pi1 ~ $ ls /mnt/gluster1/test1
/mnt/gluster1/test1
pi@pi1 ~ $ ls /srv/gv0
test1
pi@pi2 ~ $ ls /srv/gv0
test1

你可以在 /etc/fstab 上添加下面一段,就可以在系统启动的时候自动把 GlusterFS 的卷挂载上来:

192.168.0.121:/gv0  /mnt/gluster1  glusterfs  defaults,_netdev  0  0

注意:如果你想通过其他客户端访问到这个 GlusterFS 卷,只需要安装一个 GlusterFS 客户端(在基于 Debian 的发行版里,这个客户端叫 glusterfs-client),然后接我上面介绍的,创建挂载点,将卷挂载上去。

冗余测试

现在我们就来测试一下这个冗余文件系统。我们的目标是,当其中一个节点当掉,我们还能访问 GlusterFS 卷里面的文件。首先我配置一个独立的客户端用于挂载 GlusterFS 卷,然后新建一个简单的脚本文件放在卷中,文件名为“glustertest”:

#!/bin/bash

while [ 1 ]
do
  date > /mnt/gluster1/test1
  cat /mnt/gluster1/test1
  sleep 1
done

这个脚本运行无限循环并每隔1秒打印出系统时间。当我运行这个脚本时,我可以看到下面的信息:

# chmod a+x /mnt/gluster1/glustertest
root@moses:~# /mnt/gluster1/glustertest
Sat Mar  9 13:19:02 PST 2013
Sat Mar  9 13:19:04 PST 2013
Sat Mar  9 13:19:05 PST 2013
Sat Mar  9 13:19:06 PST 2013
Sat Mar  9 13:19:07 PST 2013
Sat Mar  9 13:19:08 PST 2013

我发现这个脚本偶尔会跳过1秒,可能是 date 这个命令并不是很精确地每隔1秒钟打印一次,所以偶尔会出现输出时间不连惯的现象。

当我执行这个脚本后,我登入一个树莓派并输入“sudo reboot”重启这个设备。这个脚本一直在运行,如果出现输出时间不连惯现象,我不知道还是不是上面说的偶然现象。当第一个树莓派启动后,我重启第二个树莓派,确认下这个系统有一个节点丢失后,我的程序仍然能正常工作。这个冗余系统配置起来只需要几个命令,如果你需要一个冗余系统,这是个不错的选择。

现在你已经实现了 2 Pi R 组成的冗余文件系统,在我的下篇文章中,我将会加入新的冗余服务,将这个共享存储系统好好利用起来。


via: http://www.linuxjournal.com/content/two-pi-r

译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

2013年已经过去。这一年见证了许多里程碑事件,使得2013年可以称得上是一个Linux的黄金之年。其中一些成果在FOSSLinux世界更可以称得上是举世瞩目的成就。

2013 Year of Linux

1.Android的上升趋势

2013年,Android手机达到了每日150万的激活量记录。不用说,正是Android的Linux内核以及它在该方面的狂热贡献使其达到了今天的标杆地位,这一趋势还将在未来的日子里一直持续下去。

2. Raspberry pi 树莓派

Raspberry pi,低成本单片计算机历史上的最伟大发明之一。它在学校和其他很多地方极大地推广了Linux,同时在FOSS社区中也有很高的欢迎程度,这一状况也仍将继续。

3. Debian上太空

Debian,众多优秀Linux发行版中的其中一款高端发行版。2013年三月下旬的一次航天飞机任务中就使用了Debian负责实验的控制。实验的主要内容是尝试无土植物栽培的新方法,从而为宇航员提供空气和食物。

4. SteamOS的崛起

SteamOS,基于Debian发行版,用于Stream Machine Game Console游戏终端,已经于2013年12月中旬发布。GNU/Linux开始涉足于游戏环境,这对广大宅男极客来说当然是喜闻乐见喜大普奔。

5. Linux的平板应用

查看亚马逊的平板销量,排名前十的平板都是Android操作系统。苹果和微软的平板则排在第11和12位,远远地被抛在后面,这对于FOSS社区来说确实是一个振奋人心的消息。

6. Chromebooks

Chromebooks之所以能在笔记本电脑市场赢得一席之地,是由于比起微软等专属平台,诸如三星,华硕等许多高端制造商给了GNU/Linux类操作系统更多的空间。

7. The Firefox OS 火狐操作系统

Firefox OS是基于Linux和FOSS的开源操作系统,主要用于智能手机和平板,发布于2013年4月下旬。基于ARM构架的移动设备Linux发行版显示出了广阔的前景。

8. Kali发布

来自BackTrack Linux的开发者发布了Kali Linux。Kali是是基于Debian的Linux发行版,其母系统或者说其前身(BT Linux),主要用于渗透测试,并分享了大量的Debian版本库,成为了最为丰富的一个发行版。Kail仍保持着在刚发布后的很短时间内超高下载量的记录。

9. Android Kitkat

尽管之前预测的发布版本是5.0 Key Lime Pie,经过万众期待后,最新发布的android版本被命名为Kitkat,Google宣布Android 4.4又名KitKat 4于2013年9月发布。Kitkat进行了优化更新,能在具有最小的512 MB内存的设备上运行,这样就能够支持众多各种各样的设备。

10. Linux 在汽车上的应用

截至目前,Linux被应用于各种设备,从腕表到遥控器,再到太空飞船,所以Linux在汽车上的应用并不让人意外。但当Linux的作用表现在汽车趋势杂志的年度车上时仍然令人惊讶。2013年被选为优胜候选的两个车型,都运行Linux系统。

2013年已经过去,但故事远没有结束,我们可能错过了一些重要的里程碑,你可以在评论部分告诉我们。2014年,未来,还在继续……


via: http://www.tecmint.com/2013-the-golden-year-for-linux-and-foss/

译者:乌龙茶 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用服务器。

如果你有几个不同的电脑需要同步和自动化备份,RPi可以做到。如果你想通过家中的任意屏幕来访问你的音乐和视频,RPi也能实现。也许你有一个或两个打印机,你想要简单与大家共享,树莓派在硬件和时间上用最小投资就能满足你的这些需求。

树莓派的好处

低成本:35美元(约合242元RMB),B型的RPi接近一台完整的电脑,512M内存,100Mb以太网,SD卡插槽,2个USB接口,音频输出和HDMI或RCA视频输出。我知道HDMI电缆就比树莓派贵。

能源效率:硬件成本只是服务器费用的一部分,因为你需要考虑能源成本去不断运行设备。家用服务器所需要的服务不会占用太多CPU,大部分时间它都处于空闲状态,等待发挥功效。RPi's超低功率组件非常适合这个工作负载,这有助于降低你的电费消耗。我的一个B型的RPi加上外部硬盘消耗总共只有8瓦,然而用老式速龙代替的机器在闲置时消耗54瓦。假设10美分每千瓦一小时,这使得一个RPi每年的电费在7美元。一个基于速龙的机器是47美元。在不到一年的时间里,RPI基本上能够收回成本。

低噪音:因为RPi没有风扇和移动部件,在你最终配置中的唯一能生成噪音或明显热量的组件就是硬盘。如果你担心噪音,像Silent PC Review发烧友网站经常在他们的评论中涉及到噪声基准。我的体会是现代驱动器足够安静,要比其他的设备安静的多(如媒体中心,游戏机或其他电脑)。如果你家里没有为布线提供更多的灵活性选择,RPi的小尺寸、少量发热和低噪音也许让你走过它旁边都很难发现。

图1,一个简洁高效的家用服务器

新机会:一个不怎么实际的好处是-简单快乐的尝试新事物!对我来说,这是我第一次真正工作在基于Debian的发行版,很可能也是许多Linux爱好者们第一次有机会尝试一个基于ARM的体系结构。

布置硬件

对于一个家庭服务器来说,你将需要一个中等容量的SD闪存卡作为本地存储。它可以使用一个USB引导,但那会占用两个宝贵的USB插槽之一。闪存卡不需要很大容量,但是速度越快越好。我选择了一个名牌SD卡,8GB容量和CLASS 10的速度等级。对于备份和存储多媒体文件,一个有USB连接插槽的硬盘驱动器是必须的。我选择一个1.5TB的硬盘和一个Calvary EN-CAHDD-D 2-bay USB 2.0硬盘连接基座。这个连接基座有个功能,在RAID-0模式中连接两个硬盘,总有一天会有用的。最后,RPi不带电源线,但可以用大多数智能手机充电器所用的5v微型USB。看看RPi是否挑剔电源,我为电源已换了三个不同的微型USB手机充电器。我在这周内尝试了每一个,在任何一个上都没有问题。

安装操作系统

安装RPi操作系统包括了许多方面的大量细节,但这里有一些家用特定服务器的安装提示,大致按需要的顺序讲述。

1)直接通过http://www.raspberrypi.org/downloads获取Raspbian "Wheezy"安装镜像,并复制到SD卡,用网站上已列出的步骤。

2)第一次引导RPi时,连接一个键盘、鼠标和显示器。在引导RPi之前别忘打开显示器,可以检测到正确的HDMI或混合输出端口。

3)RPi有一个很好的"raspi-config"屏幕,在第一次启动时你会看到。对于家庭服务器来说,以下选择将会有用:

  • expand\_rootfs:调整默认2GB OS镜像的大小,来填满闪存卡剩余的内存。
  • change\_pass:修改默认密码"raspberry",但是,越安全的密码越好。
  • 设置你的地点和时区。
  • memory\_split:给GPIU服务分配最少的内存(16M)尽可能为其他服务留下更多内存。
  • SSH:别忘开启SSH服务。
  • boot\_behaviour:关闭“启动至桌面(boot to desktop)”(再次为你的其他服务节省内存)。

完成后,你将在出现 pi@raspberrypi 提示符下。安装脚本可以在任何时间通过 sudo raspi-config 重新运行。

还有一些其他配置,然后操作系统就可以用了。

1)一个静态IP让一切变得更容易,切换eth0的网络设置:

   >> sudo nano -w /etc/network/interfaces  

更改eth0的那行 iface eth0 inet dhcp ,如下所示(根据你的家庭网络设置修改):

======/etc/network/interfaces======
...
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
...
======/etc/network/interfaces======

2)创建本地用户并加入到users组和sudo组:

>> sudo adduser YOURUSERIDHERE
>> sudo usermod -a -G users YOURUSERIDHERE
>> sudo usermod -a -G sudo YOURUSERIDHERE

3)更新系统确保所有的库是最新最好的:

>> sudo apt-get update; sudo apt-get upgrade

4)好了,准备重新启动吧!先关闭PI:

>> sudo /sbin/shutdown -h now

一旦关闭(注意RPi电路板上的绿色LED状态指示灯,可以知道什么时候完成关闭了),拔下显示器,键盘,鼠标和电源线。插入USB端口上的硬盘,然后插回电源重启RPi。

5)一旦RPi开启(这些绿色LED指示灯用来描述状态),你可以从远程网络上从任何其他机器ssh到RPi并完成所有的配置(更改以下命令里的IP为你的静态IP):

>> ssh [email protected]

祝贺你,有了一个可以工作的树莓派!

外设

第一件事是要连接外设。用dmesg来寻找你的存储设备,会发现——几乎可以肯定是/dev/sda。我喜欢使用自动挂载去挂载移动存储设备,这样更灵活,因为在启动时这些设备也许没有或者没准备好:

>> sudo apt-get install autofs
>> sudo nano -w /etc/auto.master 
======/etc/auto.master======
...
/misc /etc/auto.misc
...
======/etc/auto.master======

>> sudo nano -w /etc/auto.misc

注意,我的外部存储设备是ext4格式,如果需要话可以在下面更改:

======/etc/auto.misc======
...
storage -fstype=ext4:/dev/sda1
...
======/etc/auto.misc======
>> sudo /etc/init.d/autofs restart 
>> ls -lat /misc/storage 

可选的,创建一个符号链接的短路径:

>> ln -s /misc/storage /storage

备份仓库

在任何家庭服务器功能列表里面最重要的是提供坚如磐石的备份。对于RPi来说,这很简单而优美,在Linux中有丰富的网络共享选项:Samba/CIFS用于Windows机器,NFS用于基于UNIX的设备,并且甚至SFTP可以用于更多新的备份客户端,如deja-dup。由于RPi只有100MB以太网接口和USB上的存储设备,它没有非常快的传送速度。不过在另一方面,好的备份客户端是在后台自动运行的,所以你不会注意略微缓慢的传输速度。

我的家庭网络包括一台Windows 7电脑。对于它,我通过Samba在RPi's外部USB存储设备上导出一个备份目录。因为备份程序在Windows7基础版上不支持网络设备作为备份目标,我使用SyncBack Free去设置使其自动化,每日备份。

配置Samba是容易的。

1)安装samba和common-bin库(具有smbpasswd效用)

>> sudo apt-get install samba samba-common-bin

2)使用 smbpasswd 让你的本地ID能访问:

>> sudo smbpasswd -a YOURUSERIDHERE

3)编辑samba配置文件:

>> sudo nano -w /etc/samba/smb.conf

4)更改 workgroup = WORKGROUP 行以匹配你的Windows工作组名称。

5)注释掉或删除[homes]和[printers]共享。(打印机共享稍后将通过直接CUPS访问来完成。)

6)为Windows备份路径增加一个条目。这是我的示例,放置在该文件的底部:

======/etc/samba/smb.conf======
...
[win7pc] 
comment=Backup for windows PC
path=/storage/win7pc 
writeable=Yes 
create mask=0777 
directory mask=0777 
browsable=Yes 
public=Yes 
valid users=YOURUSERIDHERE
...
======/etc/samba/smb.conf======

7)重启Samba使你的编辑生效:

>> sudo /etc/init.d/samba restart

8)从Windows机器文件资源管理器通过映射一个网络设备测试连通。

对Linux设备来说,设置和使用deja-dup非常简单。它被默认安装在我的Fedora 18和Ubuntu 12.10上。包的名称是“deja-dup”,程序名简单的称为“Backup(备份)”。虽然RPi很容易支持NFS导出,我发现使用deja-dup的SSH选项更容易,更方便,在RPi上它不需要额外服务的支持。指定一个deja-dup加密密码是一个好主意,除非你不在意一旦丢失了存储器,别人就可以拿走全部数据:

>> sudo mkdir /storage/linuxlaptop
>> sudo chown -R YOURUSERIDHERE:YOURUSERIDHERE /storage/linuxlaptop

从linux客户端启动备份程序,选择“SSH”作为备份位置,输入RPi的IP地址和你创建的存储位置。首次备份会很慢,但是以后的运行将只发送增量变化,速度更快。

图2,Deja-dup客户端设置

多媒体服务器:DLNA

现在每个人的文件都已安全备份。让我们继续看些有趣的!一个DLNA服务器可以让你集中存储你的电影、音乐和图片。通过这个中心库,家中每一个屏幕的DLNA客户端都可以轻松重放此内容。

至少,这是一个宣称。事实是这样的,DNLA规格并不太确定一些重要的事情,如支持哪些格式或编码。每个客户端通常对于支持什么格式和服务器功能都有略微不同的想法。很多高功率的服务器也许能转码本地内容到移动设备支持的格式,但是在RPi上是不可能的,在即时转码上经常扰乱其他功能,如暂停,快进和倒带。一般情况下,高功率设备如PS3、Xbox和WD TV设备支持大多数格式,而无需任何转码。低端设备如智能TVs或Blu-ray播放器只支持更有限的编码列表。

对于RPi来说,最好的办法是支持你的主要的DLNA设备的标准编码,然后测试你的其他DLNA客户端。如果没有完美播放,在下一节的提示也许有帮助。在我的情况下,我的PlayStation 3充当DLNA客户端,PS3能够流畅播放经Handbrake制作后的.m4v文件。

对于RPi的DLNA服务器来说,Minidlna是个很好的选择。它已经在Raspbian发行版中,易于设置和使用最小服务资源运行:

>> sudo apt-get install minidlna
>> sudo nano  -w /etc/minidlna.conf

这是我/etc/minidlna.conf文件的相关部分:

...
# I found keeping video + audio in different paths helpful
media_dir=V,/storage/dlna/video 
media_dir=A,/storage/dlna/music 
...
presentation_url=http://192.168.1.10:8200/
... 
friendly_name=MyRPi
...
# Since I add new media infrequently, turning off 
# inotify keeps minidlna for polling for 
# content changes. It's simple enough to run 
# sudo /etc/init.d/minidlna force-reload
# when new content is added.
inotify=no

一旦完成编辑,重启minidlna以加载新配置:

>> sudo /etc/init.d/minidlna force-reload

Minidlna能够为你的设备支持的电影提供电影海报缩略图(像PS3)。这让我能够更方便地在几十个电影文件中滚屏查找我想要的那个电影。我发现每个电影一个目录是最兼容的文件布局,只包含影片文件和缩略图,图像命名为“Cover.jpg”。使用像"MovieName.m4v"和"MovieName.jpg"的格式在PS3上工作的很好,但它不太适合VLC(除非你能让VLC uPNP插件首先查找服务器的话)。

通过PS3,你可以通过转到在XMB栏上的"Video"测试连通性。当视频列表向下翻页时,你以前设置的"friendly\_name"应该是可见的,测试确保Minidlna是通过浏览器转到http://192.168.1.10:8200/。

非DLNA设备的多媒体

当你让DNLA与你的一些设备一起工作时,你可能会发现有些设备并不适合它,所以多媒体计划B是个好主意。Nginx网站服务器有一个MP4插件尝试在旧式的HTTP连接上改善流媒体传输,但是浏览器回放的性能差别很大,在一部电影里快进也一直不工作。看起来多媒体共享或非 DLNA 设备的最低共同特性是使用传统Samba共享的访客只读访问。

这是/etc/samba/smb.conf的部分示例:

[dlna] 
path=/storage/dlna 
read only=yes 
browsable=yes 
public=yes 

定义了共享设置后重启Samba( sudo /etc/init.d/samba restart ),你可以开始测试你的客户端。

我用一个混合的编码m4v视频文件测试了以下客户端:

  • Android 4.0.4手机:"ES File Explorer"与"ES Media Player"(播放器附带安装)。
  • Android 4.1.2平板电脑:"ES File Explorer"与"ES Media Player"(播放器附带安装)。
  • Linux设备:自动挂载://192.168.1.10/dlna,然后使用VLC或MPlayer。
  • Windows:挂载//192.168.1.10:/dlna,然后使用VLC。

所有设备都能几乎立即开始播放和快进没有延迟的情况。

打印服务器

RPi运行CUPS相当不错,所以它容易共享一个较旧的没有本地网络接口的打印机。

安装你的打印机所需的CUPS和任何软件包。我需要hplip-cups,因为我有一个HP喷墨打印机:

>>  sudo apt-get install cups hplip-cups

更新“Listen”行和增加 Allow @LOCAL 到位置指令,如下所示(你可以使用其他机器在你的LAN上去管理CUPS):

======/etc/cups/cupsd.conf======
#Listen localhost:631  #Comment this out
Listen 192.168.1.10:631 #Add this line
...
 
  Order allow,deny 
  Allow @LOCAL 
 

# Restrict access to the admin pages... 
 
  Order allow,deny 
  Allow @LOCAL 
 

# Restrict access to configuration files... 
  
  AuthType Default 
  Require user @SYSTEM 
  Order allow,deny 
  Allow @LOCAL 
 
======/etc/cups/cupsd.conf======

添加你的本地ID到lpadmin组就能管理CUPS:

>> sudo usermod -a -G lpadmin  YOURUSERIDHERE

重启CUPS:

>> sudo /etc/init.d/cups restart

然后转到http://192.168.1.10:631/并点击 "Adding Printers and Classes"去设置你的打印机。我的打印机是自动发现的USB设备,所以,我只需点击“share”就可以。同样访问https://192.168.1.10:631/admin,确保检查“Share printers connected to this system(共享连接至这个系统的打印机)”。

完成后,你可以用通常的方式设置你的客户端。当我输入主机名,我的Linux客户端就能够自动发现打印机,并选择正确的驱动程序。在我的Windows7的机器上,一旦我选择“Network Printer(网络打印机)”,我必须点击“The printer that I want isn't listed(我想要的打印机未列出)”,选择“Select a shared printer by name(通过名称选择共享的打印机)”,然后从CUPS网络接口输入URL:http://192.168.1.10:631/printers/HP\_J4500。

结论

用最少的额外的硬件和配置,树莓派是高效、简洁的家用服务器。它能够花最小的硬件费用来为你的家庭环境带来由Linux提供的广泛企业服务。


via: http://www.linuxjournal.com/content/raspberry-pi-perfect-home-server

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:Vito 校对:Caroline