Web 服务器架构

很久以前,web服务器就是Apache,或者LAMP这样的标准组合。 手头一个嵌入式项目也直接叫做 web server, 把HTTP + 网页 + 请求处理作为web服务的全部集成在一个程序上了。翻看了一些稍微有些规模的网站,发现现在的web 服务架构已经和我以往所了解的有了很大的不同。在这里正好梳理一下相关的内容,也算是补一下全栈的web sever 技术知识(full stack knowledge of web server)的一部分。 继续阅读“Web 服务器架构”

HP MicroServer Gen8 光驱位启动操作系统

HP Gen8 除了标配的四个硬盘,在服务器的顶部,还有一个安装光驱的位置 ( 也成为ODD ),很多使用者都将这里改造后安装一个2.5寸的SSD硬盘作为系统盘。不过在各个论坛上,经常讨论如何将这个硬盘为系统启动盘。

为什么要用光驱位直接启动?

根本的问题出自 HP Gen8 这个电脑的设计,作为一台服务器,并没有向普通电脑一样可以设置任何一个硬盘都可以随意成为启动盘。如果采用AHCI模式( Serial ATA Advanced Host Controller Interface ),启动盘只能是SATA1或者TF存储卡。

Gen8只有四个标准的硬盘安装位,支持快速插拔。如果使用了第一个硬盘来做系统盘,首先会占用较多的空间放置系统程序和数据,同时这个硬盘损坏后更换,也就涉及到系统的重新安装和设置,对NAS的使用维护添加额外的麻烦。另外,如果采用软件或者硬件方式RAID来进行冗余存储数据,更需要四个数据盘只存放数据,而非操作系统。

目前,从光驱位(ODD)的硬盘启动操作系统,目前市面上还流传有一种方法:将grub安装到一个TF (MICRO SD)存储卡作为启动盘,在启动后通过它跳转到SATA5对应的盘符上。不过这个方法需要很多命令行的操作,如果驱动器号没有配置正确或者操作系统相关的配置有误,就会无法启动。并不是一种老少皆宜的简单办法。另外,为了启动一个几十个G的操作系统盘,还要买一个TF卡,实在是像是花冤枉钱。

还有一种硬件修改的办法,就是将 SATA1 和 SATA5 的接线换一下,深水宝上可能有现成品简化一些接线的工作。不过这方法还是比较适合动手能力强的人。而且 SATA1 是 6GB/s 的接口,用在操作系统上有点可惜了。

如果Gen8能和一般电脑一样灵活的设置,就不会出现这样一个问题。不过,HP 服务器其实来还是预留了一个变通的方法, 不用以上各种折腾就能无痛的实现光驱位第五个SATA的启动。

操作步骤

1. 只留下系统盘

拆除所有其他硬盘,只留下光驱位的系统盘。

这时候这个磁盘可以是空白,没有安装操作系统的。如果没有安装操作系统,先从第一步走到第四步,然后用 iLO 安装操作系统,验证一切都没有问题了,在修改启动盘的优先级。

2. 打开 iLO 窗口

所有的操作都是在iLO下进行的,所以需要确定iLO的网线口联好了网络,并让一台电脑访问这个地址 https://192.168.1.xxx,使用管理员账号 administrator登录。打开 Remote Console 访问Gen8服务器,并启动服务器。

在启动过程中,看见进度条和按下F9进入Setup菜单的时候,按下F9进入设置界面。

3. 使能B120i 控制器

按下F9进入BIOS后,按照如下的菜单来设置使能B120i磁盘阵列控制器。

System Options 
  >> SATA Controller Options 
    >> Embedded SATA Configuration
      >> Enable HP Dynamic Smart Array B120i Controller

重启服务器,好了,我们就可以进入最为重要的一步。

4. 建立阵列服务

接下来的操作,我们将安装在光驱位的SSD盘建立了一个虚拟的 RAID 0 卷,也就是 Local – logical Drive 1。如果之前已经建立过RAID卷,请删除,务必保证只有一个RAID 0 卷,而且这个卷只有我们这个在光驱位的系统盘。

再次启动,继续启动进度条的界面中按下F9进入 Perform Maintenance 界面。选择进入 HP Smart Storage Administrator (SSA) 智能存储管理的界面。

在左侧的 Configura 菜单中选择 Dynamic Smart Array B120i RAID 项,并选择 Set Bootable Logical Drive/Volume 来建立可以启动的逻辑驱动/卷。在出现的磁盘列表中选择第一个 Local – logical Drive 1 作为 Primary Boot Logical Drive/Volume 主启动逻辑盘/卷。然后OK保存。

退出当前页面,重启服务器。接下来,我们就可以用这个虚拟的设置为启动盘。

5. 设置启动盘

再次启动,继续启动进度条的界面中按下F9进入 BIOS 设置。

选择Standard Boot Order (IPL) 菜单,在回车后,通过调整启动盘的顺序,将 IPL:1 设置为第一启动优先级。

退出BIOS,并按F10保存设置,重启服务器,这时候服务器应该可以直接从第五个硬盘的接口启动操作系统了。

自建家庭私有云NAS——磁盘管理系统

 上一篇中讲到NAS基本需求和硬件设计,但 NAS 真正的灵魂其实来时内部的系统。而NAS系统中最最重要的就是磁盘和文件管理系统。

磁盘管理系统

之前GEN8上是直接使用CentOS的方式进行运行的,LVM做逻辑卷管理,各种软件基本用docker来运行,基本上可以做到连续运行一年没问题。

OpenMediaVault 是一个构建在Linux上web方式管理NAS的系统。非常的适合家庭用户。

不过,在这里我打算使用OpenMediaVault来作为操作系统(下文中或简称OMV)。首先,这个基于FreeNAS的系统其实来也是Linux系统,方便我以后继续折腾一些东西。硬盘数据以后也可以再其他Linux上读取。第二,对安装盘的要求很小,所以我计划把4个SATA全部都用来装硬盘,操作系统安装在一个U盘上。全部安装完毕后,把这个U盘拷贝下,以后就算是把这个U盘写坏了,也就是在买一个U盘的事情了。在OpenMediaVault 上有专用FlashMemory插件来减少对根目录的读写来保护U盘。 继续阅读“自建家庭私有云NAS——磁盘管理系统”

自建家庭私有云NAS——硬件篇

背景

现在网上在线看电影已经变成了常态,下载机的需求已经不再是那么的迫切。 但为什么我还是佩里不讨好的要自己DIY一个NAS呢?

听说微软准备把蓝屏改成绿屏了

我的公司笔记本电脑硬盘经常损坏,所以需要备份。但USB接口的移动硬盘也是脆弱的一个设备。而且每次都需要插上后备份。手机,家里的笔记本,台式机,相机……都存在类似的需求。这让USB接口的移动硬盘方案不太合理了。

将家人的照片和文件共享也是一个原因。现在的方法就是微信转发,但问题就是分辨率不高,或者占用大量的手机存储空间,更换手机后想要拷贝回来iCloud用量已经超标……。同时也存在检索以前的照片视频非常困难。

一台电脑编辑一个文件后,用另一个设备打开是一个非常常见的操作。比如手机或者相机拍照后用台式机来修图,然后又通过手机来分享照片。没有私有的云设备,很多时候我们不得不用微信一张张的传送分辨率极低的图片,或者用移动盘来拷贝。

实际上市面上已经有很多成熟的NAS产品,如果只是想要解决这些问题。还是建议直接采用厂家的标准解决方案,因为这些产品的软件和服务可以帮一般用户节省大量的时间和精力。但除了省钱这个必要的原因之外,DIYer的精神就是折腾,如果不能安抚自己躁动的内心,就像是没有找到合适的产品。除此之外,标准解决方案虽然非常高效,但也有一些不足的地方,我们在下面的文章中也会逐步探讨。

为什么不把数据都同步到云上面去?——这个问题怎么回答你呢?曾经突然收到网盘关门大吉的消息还没来得及备份的我看到这个问题就感觉到心里默默的痛…… 继续阅读“自建家庭私有云NAS——硬件篇”

初试物联网之远程温湿度计

将 NAS 的信息显示在面板上只能帮助家人在房间内了解信息,但更重要的是如何能够在远程获取房间内的状态呢?为了实现将远程房间内物理信息传送到云端,需要以下的几个环节相互配合

  • 物联网数据平台,作为云端保存和处理数据
  • 传感器,采集环境信息产生数据
  • 家庭网关,将传感器信息收集传送到云平台
Internet of Things
Internet of Things

随着软银宣布收购 ARM 在物联网大展拳脚,Iot 这个不断翻炒的菜也在不断升温,国内除了百度物接入阿里云,流行的物联网数据平台中 Yeelink乐联网算是比较典型解决方案。他们都提供了通过 HTTP 访问的 RESTful API 将分布在各处的数据传送到他们的数据平台上,这种开发方式对绝大多数不会产生大量数据的小客户进行快速开发是非常方便的,下面的代码就能说明。不过周末尝试了好久,就是无法在 Yeelink 上成功的注册帐号,只好转战乐联网了,不过由于 API 基本类似,即便是转平台也是非常快捷的。如果有虚拟主机,也可以自己直接采用开源的 opensensordata.net 搭建一个云端的数据平台。

继续阅读“初试物联网之远程温湿度计”