分类 linux 下的文章

一、前期概述
典型的BS架构应用,搭在Ctrix XenServer7.5的平台上,项目共有4台物理机做虚拟化平台,没有做pool,都是独立服务器,共同连接一个光纤存储。在虚拟化平台上开了若干个应用服务器,一个文件服务器,应用前端用负载均衡设备做分发,文件服务器的数据盘挂载在光纤存储上。
二、故障
故障发生在虚拟化平台上,4台虚拟化平台中的一台机器主板损坏,导致其与光纤存储的连接中断,由于给文件服务器的数据盘划分了1.8T的空间,单个存储的LUN为16T,管理员对文件服务器做了多次快照,导致该存储上的虚拟磁盘较多。正好赶上服务器主板损坏,造成了存储上的虚拟磁盘混乱,具体表现为:在其他三台服务器上重新扫描该存储失败,提示:SM has thrown a generic python exception,只有一台可以正常扫描。因为事发紧急,没有及时处理该问题,更换服务器主板后,重新上线,仍然无法连接该存储。经过2周左右,唯一可以正常连接存储的那台服务器也无法连接了,存储与服务器彻底断开了。忘记该存储SR后重新创建,提示错误。
lun-unplug.png
三、解决方案
网上找到了https://blog.51cto.com/zhangyu/1184910 这篇文章,找到了解决问题的思路。
ssh到xenserver的主机上,查看pv、vg、lv,该16T的磁盘都可以看到,但是所在vg没有激活,所在vg的lv很多,其中有几个inflate_开始的lv,看起来比较奇怪。删除这些异常的lv后,应该就可以了。

vgchange -ay VG_XenStorage-0c405034-a99e-68d8-523e-c061097b7d3f --config global{metadata_read_only=0}

激活该vg,这时候就可以对该vg的lv进行操作了

lvremove /dev/VG_XenStorage-0c405034-a99e-68d8-523e-c061097b7d3f/inflate_* --config global{metadata_read_only=0}

删除这些异常的lv后再重新创建SR,就可以顺利通过了。
操作完成后,重启一下所有xenserver服务器,就可以全部正常挂载了。

安装完Windows系统后,系统默认的分辨率最高只能到1024*768,看起来非常不爽。
想要改更大的分辨率,需要更改虚拟机的显示设置,如下:

xe vm-list 
xe vm-param-set uuid=e63bb903-b604-d21e-4bea-d100468cbdcb platform:vga=std
xe vm-param-set uuid=e63bb903-b604-d21e-4bea-d100468cbdcb platform:videoram=64

光纤通道HBA(Host Bus Adapter)卡是将主机接入FC网络必不可少的设备。通过光纤信道或SCSI把计算机连接到存储器或存储器网。
主机总线适配器(Host Bus Adapter,HBA)是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板或集成电路适配器。因为HBA减轻了主处理器在数据存储和检索任务的负担,它能够提高服务器的性能。一个HBA和与之相连的磁盘子系统有时一起被称作一个磁盘通道。
HBA卡的典型应用是在服务器上,用于服务器和光纤存储之间的连接,让服务器可以识别到光纤存储为一个本地的大容量存储设备。
企业级的光纤存储通常都比较贵,动辄几十万,那我们利用HBA卡是否可以自己搭建光纤存储呢?答案是肯定的,下面我们就开始讲解如何利用HBA卡搭建属于自己的光纤存储
1.建议的硬件配置
1)PC电脑2台,需要至少有一个PCIEx8以上的空余插槽
2)HBA卡2块,4GB以上吧,其中一块必须要QLogic24xx,另外一块无所谓,emulex的,相对较便宜,QLogic24xx的更好。
3)磁盘若干
另外还可以选配raid卡

服务器端
操作系统可以选用fedora、Ubuntu15.10、debian等等,centos7我试了没成功,不服气的同学可以接着折腾。
mount -t configfs configfs /sys/kernel/config
设置HBA卡为target mode
vi /etc/modprobe.d/qla2xxx.conf
options qla2xxx qlini_mode="disabled"

To update initramfs for Debian, run the command:

update-initramfs -u
更新initramfs
update-initramfs -u -k all

In Fedora, run the command

dracut -f /boot/initramfs-currentimage

create name=file_vhd file_or_dev=/home/data/file_vhd size=50G
create 21:00:00:e0:8b:85:b5:f2

/qla2xxx/21:00:00:1b:32:81:6e:f1/luns/ create /backstores/fileio/test_file
/qla2xxx/21:00:00:1b:32:81:6e:f1/acls create 21:00:00:1b:32:98:7d:1b //将Lun映射给对应的wwwn

saveconfig

客户端
操作系统不限,我用的emulex卡,win10系统,安装驱动费了点劲,linux的话就比较容易了,系统应该都能自动识别。

测试结果
我的环境是用了两块4GB的HBA卡,磁盘速度跑到了150M/s左右,因为我没用raid卡,直接用的两块磁盘做了lvm,所以,这个速度也应该是磁盘的物理速度了。

后记
二手的4GB HBA卡非常便宜,三五十块钱,如果搭建NAS存储,速度足够了,至少比千兆网络快很多,稳定性也要比以太网好多了,因此,如果要搭配个人光纤存储,建议选择合适的机箱和主板,cpu和内存不需要很强,内存1G足矣,CPU功耗越低越好,主板建议带2个pciex8的扩展槽最好,一个插HBA卡,另外一个插RAID卡,建议做RAID5,数据安全更有保障。

在/jffs/目录下新建个dynv6.sh的脚本文件
/jffs/dynv6.sh文件内容如下:

#!/bin/sh
host1="yourname.dynv6.net"
token1="69q17AgVn97afdsafd9eHB8LzeMnyXy"
ipv4s=`ip addr show ppp0 | awk -F "[ /]+" '/inet /{print $3}'`
ipv6s=`ip addr show ppp0 | awk -F "[ /]+" '/inet6 /{print $3}'|awk 'NR==1'`

ipv6ns=`nslookup yourname.dynv6.net 8.8.8.8|awk -F "[ /]+" '/Address /{print $3}'|awk 'NR==2'`

if [ $ipv6s != $ipv6ns ];then
wget -nv --no-cache "http://dynv6.com/api/update?hostname=$host1&token=$token1&ipv4=$ipv4s&ipv6=$ipv6s" -O dynv6.log
else
echo "no update">/jffs/dynv6.log
fi

然后chmod +x /jffs/dynv6.sh
把这个脚本加到定时任务里面去
急性子5分钟执行一次,不着急的1个小时执行一次。

我的路由器是k2p梅林系统,在初始化脚本/jffs/scripts/init-start里加入

cru a dynv6 "*/5 * * * * /jffs/dynv6.sh"

1.CentOS7下bind套件的安装
安装bind套件

yum install bind-* -y

为了系统更安全的考虑,建议使用named-chroot来运行bind,不要使用named

systemctl enable named-chroot
systemctl start named-chroot

2.安装facileManager套件
fmDNS是facileManager套件的一部分,目前最新的是3.5.2版本

wget https://github.com/WillyXJ/facileManager/archive/v3.5.2-complete.zip

解压后,将client目录和server目录拷贝到你要安装的地方,例如:/home/fmdns/
fmDNS仅支持Apache,使用Nginx的话,可以用Nginx做反向代理。
fmDNS要求php的版本要大于5.5,目前最新的php版本是7.4.6,因此,笔者建议安装最新版本的php7.4.6
在CentOS7下的安装命令如下:

yum install epel-release -y
rpm -ivh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install --enablerepo=remi php74 php74-php php74-php-fpm php74-php-gd php74-php-mysqlnd php74-php-posix -y
systemctl enable php74-php-fpm

更改php-fpm的启动账号,默认是apahce,改为nginx

vi /etc/opt/remi/php74/php.d/php-fpm.conf

更改php session目录的属主

chown -R root.nginx * /var/opt/remi/php74/lib/php/

然后启动php

systemctl start php74-php-fpm

mysql(mariadb)、httpd和nginx的安装配置不再赘述
在浏览器里输入网址,按照提示步骤即可完成server端的安装
客户端的安装比较简单了

php74 /home/fmdns/client/facileManager/fmDNS/client.php install

建议安装为cron方式,crontab -e可以看到添加的定时任务,每5分钟执行一次cron任务

注意事项:
client.php安装的时候会自动检测https和http,如果发现有https端口打开,会优先使用https,如果开启了https,而又不使用https方式来安装,在cron任务里自动生成zone文件就会失败。
除非本机不开启443端口,否则,强烈建议采用https方式,目前有很多免费的ssl证书可以申请,TrustAsia可以申请免费1年的ssl证书,let'sEncrypt可以申请免费3个月的ssl证书。

关键部分
server端的配置
client安装完后,会将本机自动加入到服务器的server列表里,但是,默认的配置缺少很多配置项,直接启动named-chroot服务可能会报错,以下我提供我的fm_dns_config和fm_dns_keys表的sql文件供大家参考,该sql文件包括表结构和数据,可以直接导入。需要注意的是,导入后,key的内容要改成你自己的。
fmdns-dns-tables-202006010.rar
剩余的配置内容,可以根据自己的情况来改。

安装结束