So Tired !_! 逆水行舟, 不进则退!

24Jul/17

关闭redis的持久化功能

Posted by Nick Xu

在 Redis 2.2 或以上版本,可以在不重启的情况下,从 RDB 切换到 AOF :

   为最新的 dump.rdb 文件创建一个备份。
   将备份放到一个安全的地方。
   执行以下两条命令:

   redis-cli> CONFIG SET appendonly yes

   redis-cli> CONFIG SET save ""

   确保命令执行之后,数据库的键的数量没有改变。
   确保写命令会被正确地追加到 AOF 文件的末尾。

步骤 3 执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。

步骤 3 执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能

Tagged as: Comments Off
20Jul/17

Nginx Access Log日志统计分析常用命令

Posted by Nick Xu

IP相关统计

统计IP访问量

awk '{print $1}' access.log | sort -n | uniq | wc -l

查看某一时间段的IP访问量(4-5点)

grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l   

查看访问最频繁的前100个IP

awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 100

查看访问100次以上的IP

awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn

查询某个IP的详细访问情况,按访问频率排序

grep '104.217.108.66' access.log |awk '{print $7}'|sort |uniq -c |sort -rn |head -n 100   

页面访问统计

查看访问最频的页面(TOP100)

awk '{print $7}' access.log | sort |uniq -c | sort -rn | head -n 100

查看访问最频的页面([排除php页面】(TOP100)

grep -v ".php"  access.log | awk '{print $7}' | sort |uniq -c | sort -rn | head -n 100          

查看页面访问次数超过100次的页面

cat access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less

查看最近1000条记录,访问量最高的页面

tail -1000 access.log |awk '{print $7}'|sort|uniq -c|sort -nr|less

每秒请求量统计

统计每秒的请求数,top100的时间点(精确到秒)

awk '{print $4}' access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 100

每分钟请求量统计

统计每分钟的请求数,top100的时间点(精确到分钟)

awk '{print $4}' access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 100

每小时请求量统计

统计每小时的请求数,top100的时间点(精确到小时)

awk '{print $4}' access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 100

性能分析

在nginx log中最后一个字段加入$request_time

列出传输时间超过 3 秒的页面,显示前20条

cat access.log|awk '($NF > 3){print $7}'|sort -n|uniq -c|sort -nr|head -20

列出php页面请求时间超过3秒的页面,并统计其出现的次数,显示前100条

cat access.log|awk '($NF > 1 &&  $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

蜘蛛抓取统计

统计蜘蛛抓取次数

grep 'Baiduspider' access.log |wc -l

统计蜘蛛抓取404的次数

grep 'Baiduspider' access.log |grep '404' | wc -l

TCP连接统计

查看当前TCP连接数

netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l

用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
Filed under: Linux Comments Off
13Jul/17

Nginx1.8.0版本平滑升级新版本1.9.7

Posted by Nick Xu

首先查看现在环境nginx的版本为1.8.0 编译的参数只指定了安装路径;

代码如下:
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments: --prefix=/usr/local/nginx

平滑升级步骤如下:

下载nginx1.9.7版本,解压并进入解压后的目录

代码如下:
[root@localhost ~]# wget -P /usr/local/src/ http://nginx.org/download/nginx-1.9.7.tar.gz
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar -zxvf nginx-1.9.7.tar.gz
[root@localhost src]# cd nginx-1.9.7

编译安装之前查看nginx进程ID信息:

代码如下:
[root@localhost nginx-1.9.7]# ps -ef |grep nginx
root 894 1 0 16:06 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 896 894 0 16:06 ? 00:00:00 nginx: worker process
nobody 897 894 0 16:06 ? 00:00:00 nginx: worker process

编译安装:指定用户www 支持ssl 支持pcre 支持状态查询 支持静态压缩模块;

代码如下:
[root@localhost nginx-1.9.7]# ./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

编译安装后可以echo $?查看是否成功,成功后只需要执行make,不需要make install;

代码如下:
[root@localhost nginx-1.9.7]# make

平滑升级,先移走现有的nginx二进制文件

代码如下:
[root@localhost nginx-1.9.7]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

拷贝新生成的nginx二进制文件到指定目录

代码如下:
[root@localhost nginx-1.9.7]# cp objs/nginx /usr/local/nginx/sbin/

执行升级命令

代码如下:
[root@localhost nginx-1.9.7]# make upgrade
/usr/local/nginx//sbin/nginx -t
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful
kill -USR2 `cat /usr/local/nginx//logs/nginx.pid`
sleep 1
test -f /usr/local/nginx//logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx//logs/nginx.pid.oldbin`

查看版本,发现已经是1.9.7版本,编译的参数也存在;

代码如下:
[root@localhost nginx-1.9.7]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.9.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx/ --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

创建www用户

代码如下:
[root@localhost nginx-1.9.7]# useradd -s /sbin/nologin -M www

查看nginx进程 PID已经更改

代码如下:
[root@localhost sbin]# ps -ef |grep nginx
root 3814 1 0 16:23 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 3815 3814 0 16:23 ? 00:00:00 nginx: worker process
nobody 3816 3814 0 16:23 ? 00:00:00 nginx: worker process

修改nginx.conf配置文件,更改用户和用户组为www用户,保存退出,重启nginx服务;

代码如下:
[root@localhost conf]# ps -ef |grep nginx
root 3814 1 0 16:23 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www 4200 3814 0 16:48 ? 00:00:00 nginx: worker process
www 4201 3814 0 16:48 ? 00:00:00 nginx: worker process

Nginx1.8.0版本平滑升级新版本1.9.7就给大家介绍到这里,希望对大家有所帮助!

Tagged as: , Comments Off
7Jul/17

kvm console连接和shutdown虚拟机

Posted by Nick Xu

8.1 HOST上的设置

虚拟机提供了ssh进入的方式, 如果我们想要以virsh console方式进入虚拟机, 需要在host机器上的vm1.xml做些更改:

# virsh edit vm1

进入vim界面, 在<devices>...</devices>里面添加如下内容(注意, 如果已经存在就不要加了):

 

  1. <devices>
  2.   ...
  3.   <serial type='pty'>
  4.     <source path='/dev/pts/2'/>
  5.     <target port='0'/>
  6.   </serial>
  7.   <console type='pty' tty='/dev/pts/2'>
  8.     <source path='/dev/pts/2'/>
  9.     <target port='0'/>
  10.   </console>
  11. </devices>

 

8.2 GUEST上的设置使virsh console可以登录虚拟机

1) ubuntu

在虚拟机vm1中, 需要创建一个文件"/etc/init/ttyS0.conf", 内容如下(#注释部分可以忽略):

 

  1. # ttyS0.conf - getty
  2. # This service maintains a getty on ttyS0 from the point the system is
  3. # started until it is shut down again.
  4. start on stopped rc RUNLEVEL=[2345]
  5. stop on runlevel [!2345]
  6. respawn
  7. exec /sbin/getty -L 115200 ttyS0 vt220

 

这个"/etc/init/ttyS0.conf"可以在创建虚拟机的最后阶段, 作为一个启动脚本加进去.

2) rhel6.4或centos6.5

How to activate the serial console in CentOS 6. Useful for logging into a virtual guest via 'virsh console'.

/etc/init/ttyS0.conf:

  1. # ttyS0 - agetty for rhel6
  2. stop on runlevel [016]
  3. start on runlevel [345]
  4. instance ttyS0
  5. respawn
  6. pre-start exec /sbin/securetty ttyS0
  7. exec /sbin/agetty /dev/ttyS0 115200 vt100-nav

3) rhel5.4

# 添加ttyS0的安全许可,允许root登录:

  1. echo "ttyS0" >> /etc/securetty
# 在 /etc/grub.conf 文件中为内核添加参数, 让内核把输出定向至 ttyS0。
  1. console=ttyS0
# 在 /etc/inittab 中添加 agetty, 在inittab里加一个ttyS0在系统启动时会生成一个ttyS0来接收内核的数据。
  1. S0:12345:respawn:/sbin/agetty ttyS0 115200

 

8.3 virsh console

重启虚拟机后,进入 vm1

  1. # virsh console vm1

 

多敲几次回车, 敲入登录的用户名和密码.

退出虚拟机回到HOST按组合键:

Ctrl+]

9 为虚拟机添加启动脚本

创建一个脚本文件: firstboot_vm.sh

  1. # Set time zone
  2. cp /usr/share/zoneinfo/Asia/Harbin /etc/localtime
  3. # Set proxy server
  4. # replaceyourProxyHostIP by your true IP, if not, comment below line
  5. echo 'Acquire::http::proxy "http://yourProxyHostIP:3142";' >> /etc/apt/apt.conf
  6. # ttyS0 -getty
  7. #
  8. # Thisservice maintains a getty on ttyS0 from the point the system is
  9. # starteduntil it is shut down again.
  10. echo "start on stopped rc RUNLEVEL=[2345]" > /etc/init/ttyS0.conf
  11. echo "stop on runlevel [!2345]" >> /etc/init/ttyS0.conf
  12. echo "respawn" >> /etc/init/ttyS0.conf
  13. echo "exec /sbin/getty -L 115200 ttyS0 vt220" >> /etc/init/ttyS0.conf

 

在创建虚拟机时指定它, 参考 "4.1 创建虚拟机的脚本: create_vm.sh":

  1. --firstboot=firstboot_vm.sh

 

一般我们认为,windows系统下的acpi是默认开启的,但是本次我测试win2003虚拟机,发现默认情况下通过“virsh shutdown 虚拟机名称”无法正常关闭虚拟机

解决方法:

在虚拟机里面修改组策略配置:

1
2
3
“gpedit.msc”--“Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\"
Shutdown: Allow system to be shut down 
without having to log on”

修改注册表信息:

然后运行ShutdownWarningDialogTimeout.reg

内容如下:

1
2
3
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"ShutdownWarningDialogTimeout"=dword:00000001

再次测试,发现问题得到解决。

Linux下只需安装acpid并启动该服务即可.

Tagged as: , , Comments Off
5Jul/17

CentOS7.2部署KVM虚拟机

Posted by Nick Xu

学习了关于PostGis、OSM数据以及Mapnik相关内容,接下来将利用假期重点学习PostgreSQL-XL和瓦片服务器集群技术,因此先把环境搭好。计划采用KVM来充分利用家里不太宽裕的“服务器”资源,以便实现弹性计算:)

CentOS版本:64位 7.2  1511

一、安装KVM

1. 验证CPU是否支持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。

egrep '(vmx|svm)' /proc/cpuinfo

2. 关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled

3. 最小安装的CentOS安装一些最基本的包(可选项,因为我是刚安装好的CentOS,所以为了下面方便点,先把一些必要的工具安装下)

yum install epel-release net-tools vim unzip zip wget ftp -y

4. 安装KVM及其依赖项

yum install qemu-kvm libvirt virt-install bridge-utils -y

5. 验证安装结果,下图说明已经成功安装了

lsmod | grep kvm

6. 开启kvm服务,并且设置其开机自动启动

systemctl start libvirtd

systemctl enable libvirtd

7. 查看状态操作结果,如下图所示,说明运行情况良好

systemctl status libvirtd

systemctl is-enabled libvirtd

8. 配置网桥模式,先将 /etc/sysconfig/network-scripts/ 目录下的网卡配置文件备份一份(不要备在当前目录以及子目录下,其他目录随意)

a. 创建 ifcfg-br0 文件,内容如下:

BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=192.168.1.95
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=61.177.7.1
DNS2=8.8.8.8

b. 移除掉原来的 ifcfg-enp0s25 ,重新创建该文件,内容如下:

BOOTPROTO=none
DEVICE=enp0s25
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0

c. 重启网络服务

systemctl restart network

使用 ifconfig 验证操作结果,多了一块网卡br0,现在访问 think8848-srv02 使用 192.168.1.95 就可以了。

二、安装虚拟机

1. 准备操作系统安装镜像文件,在本文中将使用和宿主环境一样的CentOS7.2,把该文件放到 /home/iso 目录下

2. 创建虚拟机文件存放的目录

mkdir -p /home/kvm-bak

3. 使用 virt-install 创建虚拟机

virt-install -n think8848-kvmbase -r 2048 --disk /home/kvm-bak/think8848-kvmbase.img,format=qcow2,size=20 --network bridge=br0 --os-type=linux --os-variant=rhel7.2 --cdrom /home/iso/CentOS-7-x86_64-DVD-1511.iso --vnc --vncport=5910 --vnclisten=0.0.0.0

virt-install --name=win2008-product --memory 4096 --vcpus=1 --os-type=windows --disk path=/home/bzstorage/kvm/win2008-product/win2008.img,format=qcow2,bus=ide --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5901 --noautoconsole --autostart -c /home/bzstorage/public/OS/cn_windows_server_2008_r2_standard_enterprise_datacenter_web_x64_dvd_x15-50360.iso

操作结果显示:

不要理会里面提示的错误,接着往下走

4. 打开防火墙上的5910端口

firewall-cmd --zone=public --add-port=5910/tcp --permanent

firewall-cmd --reload

5. 使用VNC连接该虚拟机,进行虚拟机操作系统的安装,直接到VNC官网上下载最新版的VNC Viewer即可

a. VNC Viewer

b. 新建连接,提供宿主IP、端口号(在virt-install创建过程中指定的),以及名称

c. 在Expert页签中,将ColorLevel的值由原来的 pal8 修改为 rgb222 ,点击OK按钮保存

d. 如果你像我一样,边操作边还在做笔记,等你双击连接的名称后,安装界面都准备好了

接下来就安装CentOS吧,过程略。

6. 安装完CentOS,系统要求重启,这时候虚拟机没有重启(也不知是因为什么问题),VNC也连不上,先在宿主机上查看虚拟机状态,显示think8848-kvmbase为关闭状态

virsh list --all

7. 手动启动虚拟机

virsh start think8848-kvmbase

再次使用VNC连接,发现已经可以连进去了

三、简单配置KVM虚拟机

1. 网桥配置,这里值得一提的是,如果你在虚拟机中安装CentOS过程中,配置了合适的网格参数,那么这时虚拟机里应该就可以使用网络了。如果当时就采用系统安装包的默认参数,未启用网卡,那么此时你需要启动虚拟机的网卡,先看下虚拟机网卡的配置文件列表,貌似和普通电脑安装没啥区别,网卡的配置文件是 ifcfg-eth0

再查看 ifcfg-eth0配置文件,和普通电脑安装的也没啥区别,按照要求呢,貌似在一些文章中介绍,说需要添加一行配置 NM_CONTROLLED=no ,我没添加也没发现有什么问题。

2. 配置在宿主端登录虚拟机shell。当然在宿主端也是可以通过SSH登录,但是直接登录貌似也是一个不错的方式。这个配置主要有两个步骤:

a. 编辑 /etc/default/grub 文件,对照如下:

编辑前:

编辑后:

文本内容:

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"

b. 运行下面一行的代码

grub2-mkconfig -o /boot/grub2/grub.cfg

c. 重启虚拟机 reboot

d. 在宿主机上进入虚拟机控制台,想退出时使用 Ctrl 键+ ]  (左方括号)键退出。

virsh console think8848-kvmbase

四、迁移虚拟机

虚拟机建好后,最大的好处就是任由我们折腾,而不用担心重装系统的麻烦。所以一定要知道虚拟机怎么复制迁移,这里有两种情况,一种是本机上镜像复制,另一种是将本机镜像迁移到其他服务器上,本节参考自这里,感谢koumm。

1. 本机复制

a. 先关闭虚拟机

virsh shutdown think8848-kvmbase

b. 在 /home 下新建文件夹 /home/kvm-img

mkdir -p /home/kvm-img

c. 使用 virt-clone 克隆think8848-kvmbase为新的虚拟机

virt-clone -o think8848-kvmbase -n think8848-kvm01 -f /home/kvm-img/think8848-kvm01.img

克隆完成

使用 virsh list --all 查看

d. 开启think8848-kvm01,然后修改IP地址、主机名

virsh start think8848-kvm01

virsh console think8848-kvm01

#等虚拟机启动好后,用root登录

hostname think8848-kvm01

#编辑/etc/hostname文件,修改主机名为think8848-kvm01
vi /etc/hostname

#编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改IPADDR

e.  reboot 重启虚拟机,重启后刚才修改的内容已经生效了。

2. 将虚拟机镜像迁移到其他服务器上

a. 先将虚拟机的配置文件和镜像文件放到合适的位置(我搭了一台FTP服务器,方便测试时所有的文件传输,如下图所示)

b. 现在到服务器转战到think8848-srv01(IP:192.168.1.96),刚才虚拟机是在think8848-srv02(IP:192.168.1.95)上创建的。以下所有操作均是在think8848-srv01上进行的

c. 将ftp上的think8848-kvm01.img放到/home/kvm-img目录,将think8848-kvm01.xml放到/etc/libvirt/qemu目录中

d. 编辑think8848-kvm02.xml,将里面所有think8848-kvm01替换为think8848-kvm02,然后把UUID换为新的(直接使用这个在线工具生成吧)

e. 定义新虚拟机

virsh define /etc/libvirt/qemu/think8848-kvm02.xml

图中think8848-kvm01是我之前在宿主机中配置的虚拟机,恰好名称与之前的重复了。我在think8848-kvm01上没有安装ftp客户端,在新迁移的虚拟机里面安装了ftp,可以利用这个包验证虚拟机是否正确

OK,说明没有问题

f. 现在是时候再给新的虚拟机指定新主机名和IP了。刚才是我们重启生效的,这次我们不要重启了,先使用 systemctl restart network 使新IP生效,然后再 exit 注销用户使主机名生效,就可以了。

最后一个问题,如果在克隆或迁移后想使用VNC连接,那就需要重新指定VNC的端口号,将 /etc/libvirt/qemu/think8848-kvm02.xml 中的VNC端口号修改你需要的值即可。

增加CDROM设备

<disk type='file' device='cdrom'>

<driver name='file'/>

<source file='/usr/share/xenpv-win-32bit/xenpv-win-32bit.iso'/>

<target dev='hdb'/>

<readonly/>

</disk>

 五、KVM管理

可以参考:虚拟化之KVM virsh常用命令篇  http://www.linuxidc.com/Linux/2017-01/139993.htm

Ubuntu上安装KVM并搭建虚拟环境 http://www.linuxidc.com/Linux/2015-10/123788.htm

KVM中Linux虚拟机的硬盘添加方法 http://www.linuxidc.com/Linux/2013-02/80067.htm

Linux入门学习教程:虚拟机体验之KVM篇  http://www.linuxidc.com/Linux/2015-03/114462.htm

RHEL6 KVM虚拟化创建桥接网卡-网桥 http://www.linuxidc.com/Linux/2013-08/88517.htm

RedHat Linux KVM虚拟机桥接 http://www.linuxidc.com/Linux/2013-02/79934.htm

CentOS 5.6下KVM的安装/桥接设置/虚拟机创建及运行 http://www.linuxidc.com/Linux/2012-12/76883.htm

Ubuntu下用libvirt安装KVM虚拟机时找不到/bin/qemu-kvm问题解决 http://www.linuxidc.com/Linux/2013-08/88985.htm

RedHat6.5下安装配置KVM虚拟机 http://www.linuxidc.com/Linux/2014-10/107972.htm

KVM虚拟化平台部署  http://www.linuxidc.com/Linux/2016-10/136164.htm

Tagged as: , Comments Off
3Jul/17

CentOS 7加载B120i驱动

Posted by Nick Xu

0.进入HP Raid配置界面,创建Raid逻辑盘

1.到www2.hpe.com搜索B120i 下载驱动
CentOS 7.2可以直接下载:http://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1903785255/v115075/hpvsa-1.2.14-113.rhel7u2.x86_64.dd.gz

2.通过dd程序将驱动文件恢复到U盘(这里U盘挂载/dev/sdb1)
dd if=hpdsa-..x86_64.dd of=/dev/sdb1

3.安装选择画面按:ESC 进入 boot 启动命令行(以下参数为了去除ACHI对raid干扰)
输入: linux modprobe.blacklist=ahci inst.dd

4.启动后会进驱动盘选择

1)选取驱动挂载目录(如果列表为空按 r 进行刷新)
2)按1选择驱动
3)按c继续,进行驱动安装
4)移除驱动U盘

5)按c继续,启动安装程序

 

5.进行入CentOS安装界面后,按正常流程安装

Tagged as: , , Comments Off
1Jul/17

Ubuntu HP Dynamic Smart Array Driver

Posted by Nick Xu

The Ubuntu HP Dynamic Smart Array Driver (hpdsa) allows you to use b-series array controllers (and only b-series array controllers) in "smart array mode." If you disable smart array mode on your b-series controller ProLiant's ROM based setup utility (RBSU), the open-source, in-distro ahci driver will pickup the device automatically and you do not need to use the hpdsa driver. However, if you want to utilize the latest storage management tools from HP, or migrate your volumes to a hardware-based p-series Smart Array in the future, you'll want to use the HP Dynamic Smart Array driver with your hardware in smart array mode.

This driver is freely distributable, however it is closed-source and proprietary to HPE and MicroSemi.

Install Ubuntu with MaaS and hpdsa driver

If using Metal as a Service (MaaS), use these additional steps in your provisioning process.

 

Browse

Download install-time amd64 driver disc

  hpdsa-1.2.4-140.ubuntu14.04.x86_64.img.gz

Ubuntu 14.04

NOTICE! The hpdsa driver is no longer being developed past the versions indicated. Do not upgrade the Ubuntu kernel or try to use this binary driver with Xenial. If you have a B-series Smart Array, it is advised to use the Linux md (software raid) driver, or upgrade to an H or P series hardware-based host bus adapter.

  hpdsa-1.2.4-140.ubuntu14.04.1.x86_64.img.gz

Ubuntu 14.04.1

  hpdsa-1.2.4-140.ubuntu14.04.2.x86_64.img.gz

Ubuntu 14.04.2

- <p> <br/> <strong>NOTE</strong>: This driver is currently supported on the above kernels only. The hpdsa driver is not supported on subsequent builds at this time (14.04.2 and later). <br/> -

Install Ubuntu with the hpdsa driver

 

  • Flash a USB key with one of the above disc images, using /dev/sdc1 as the example usb partition:
  •     gunzip hpdsa-1.2.4-140.ubuntu14.04.2.x86_64.img.gz
  •     dd if=hpdsa-1.2.4-140.ubuntu14.04.2.x86_64.img of=/dev/sdc1
  • Enable the Smart Array controller in the Rom-based Setup Utility (RBSU)
  • Insert the USB key which contains the driver update image (above)
  • Mount the Ubuntu Server DVD iso image via the ILO virtual media.
  • Reboot the server
  • Press the F11 key to manually select the ILO virtual media to boot
  • Boot the installation media
  • At the grub boot menu press E to edit the kernel command line
  • At this point, append the following to the linux kernel command line (after the "--").
  •     inst.dd  modprobe.blacklist=ahci
  • Press F10 or Ctrl-X to confirm the kernel command line and boot the installation kernel.
  • Continue the installation, when prompted by the installer to load drivers from internal virtual driver disks, select Yes
  • At the "Finish the installation" screen, press Alt-F2 to access a vitual console and issue the following commands:
  •     chroot /target
  •     echo "blacklist ahci" > /etc/modprobe.d/install-hpdsa.conf
  •     depmod `uname -r`   #note: use ticks, not apostrophes here.
  •     update-initramfs -u
  •     exit
  • press Alt-F1 to return to the Finish screen
  • Press Enter to complete the installation and reboot the server

Subscribe your system to the ubuntu-hpdsa apt repository

Cut-n-paste the following text into /etc/apt/sources.list.d/ubuntu-hpdsa.list on your system:

# HP Dynamic Smart Array Driver

deb http://downloads.linux.hp.com/SDR/repo/ubuntu-hpdsa trusty main

Import the Hewlett-Packard gpg public key for use with apt

# curl http://downloads.linux.hp.com/SDR/hpPublicKey2048_key1.pub | apt-key add -

Update your local apt indexes

# apt-get update

Install/Update the hpdsa driver

# apt-get install hpdsa-dkms

Note: DKMS kernel modules depend on "build-essential, and dkms" package sets.

Tagged as: , Comments Off
   
site
site