ubuntu @aliyun 缺少syslog问题

之前使用过程中一直没有注意,今天在调试incron的时候才发现/var/log下没有syslog日志。

搜索到这个帖子:https://bbs.aliyun.com/read/286708.html

看了后,发现问题在rsyslog的配置文件中:/etc/rsyslog.d/50-default.conf

注意这一行:

*.*;auth,authpriv.none -/var/log/syslog

把/var/log/syslog前面的减号去掉就可以解决此问题。

同时,帖子里还提到了目录权限问题:

chown -R syslog:adm /var/log

两台服务器的缺失数据同步

一台主服务器上的部分数据文件缺失,需要在另一台备份服务器上拷贝回来,但不想使用rsync进行全局同步,因此就需要对缺失文件进行直接处理。
但文件数量比较少的时候,直接scp回来即可,但数量较多的时候,就不能人工处理了,需要使用shell脚本处理:
1. 生成缺失文件列表,如mis.txt
2. 让主服务器可以用key方式ssh到备份服务器上
3. 逐个文件导入:
while IFS='' read -r line ;do scp user@backup-server:/path/$line .; done < mis.txt

两台服务器皆为ubuntu环境。

在ubuntu服务器上使用dell md3060e及其管理程序

之前采购了一批服务器和存储,几经折腾后最终安装在学校的机房。服务器上安装了ubuntu 14.04系统,存储是dell的直连存储md3060e(我第一次用这个设备),硬件上安装好后发现不知道怎么做RAID。于是在dell官网上找到了对应的程序,发现有个linux版本的程序:StorageEnclosureManagement,“号称”可以支持debian和ubuntu。

DELL的官方程序下载地址上是这样描述的:

Debian74 Storage Enclosure Management Software 1.3

Storage Enclosure Management Software for MD3060e JBOD Arrays, version 1.3, Debian74 installer
Fixes & Enhancements
Fixes:
-New OS support for Ubuntu 14.04, SLES 12, and ESXi 5.5 (CLI only).
-Implement build version number.
-6TB 4096n support.
-Ability to update HBA adapter firmware
–LSI 9207-8e
–LSI 9206-16e

之前的1.2版本声明是支持ubuntu 12.04版本。但这个版本我下载后在ubuntu 14.04上无法安装,提示为不支持的操作系统。

Warning: This OS is unsupported: debian14.04. Installer will now exit.

于是,尝试修改系统的发行版本信息,看看能不能骗过安装程序的监测。

sudo nano /etc/lsb-release
将其中的版本信息修改为debian wheezy 7.4。

修改完成后,可以正常安装了。

BTW:本来我还以为md3060e可以直接支持raid,但搜索一圈下来,发现这是个“直连”系统,意思是本身不支持RAID?Dell的技术支持也不是很靠谱,两圈电话问下来,也没有解决问题。最后给我推荐安装DELL的MDSM软件,但这个软件本身也不支持md3060e,还是需要其他MD3主控阵列才可以。因此要考虑使用mdadm或lvm来软管理这个磁盘柜了。

管理ubuntu服务器上的阵列

一台DELL R710服务器,ubuntu server系统,基于自身6块硬盘,做了一个RAID5,但最近有一块硬盘坏掉了,让服务商换了一块上来。今天想远程看看这块硬盘是否起作用了,没有找到合适的方法,于是一通搜索开始学习。

1. 确认服务器上的阵列卡

lspci -v | grep LSI

 

如果能看到对应的输出,说明采用的是主板上的LSI RAID卡,需要megacli命令来控制。

2. 安装megacli命令

从LSI官网找到对应的下载链接,在本机下载后,再scp到服务器上(不能直接在服务器上wget获取),然后解压,进入Linux目录,有一个rpm安装文件。因为服务器是ubuntu,所以使用一个命令来进行处理:

apt-get install rpm2cpio

rpm2cpio MegaCli-*.rpm | cpio -idmv

 

 

即将rpm安装包的内容直接提取出来。进入提取后的目录,可以发现有一个opt/MegaRAID/MegaCli目录,将这个目录的MegaCli64命令拷贝到/usr/loca/sbin/目录下(服务器是64位系统)。

sudo cp MegaCli64 /usr/local/sbin/

 

然后还可以从参考1中添加一个lsi.sh脚本来更容易的和RAID交互(注意脚本中的参数需要和机器上的实际进行修改,即:

# The identifying number of the enclosure. Default for our systems is "8". Use
# "MegaCli64 -PDlist -a0 | grep "Enclosure Device"" to see what your number
# is and set this variable.
ENCLOSURE="8"

 

参考1中的默认值是8,服务器上的是32。

3. 使用和问题处理

sudo lsi.sh drives

 

发现有一个问题:

Slot Number: 0 - Online, Spun Up
Slot Number: 1 - Online, Spun Up
Slot Number: 2 - Online, Spun Up
Slot Number: 3 - Online, Spun Up
Slot Number: 4 - Online, Spun Up
Slot Number: 5 - Unconfigured(good), Spun Up

 

第6块硬盘,即slot5,是新加的,虽然识别了,但未配置。

sudo lsi.sh status

结果如下:

 

Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :disk1
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
Size : 4.545 TB
Sector Size : 512
Parity Size : 931.0 GB
State : Degraded

 

注意,State这行的状态是degraded,说明raid5状态没有起来,新加的这块盘没有发挥作用。

于是继续搜索,寻找让其能rebuild的方法,从参考2中找到了一个对应的方法:

MegaCli64 -PdReplaceMissing -PhysDrv[32:5] -array0 -row5 -a0

MegaCli64 -PDRbld -Start -PhysDrv[32:5] -a0

 

 

这样就开始rebuild了。

参考:

1. MegaCLI Scripts and Commands

2. RAID: Rebuilding a Foreign disk by hand

piwik: 不能连接mysql数据库

此前运行正常的piwik系统,周末突然发现不工作了,提示:

错误1030,不能连接mysql数据库。

大吃一惊,ssh登陆服务器,mysql登陆后发现数据库都还正常,用root账号可以查看。

同时用:

mysql -upiwik -p -h localhost

 

这个也可以正常工作,非常奇怪。

但用这个则不能登陆:

mysql -upiwik -p -h 127.0.0.1

 

于是修改config.ini.php,修改连接参数,可以正常启用。

但发现本机别的mysql应用都正常,估计是mysql user的问题,于是重新添加该用户,授权到对应host也可以解决此问题。

grant all privileges piwik.* to 'piwik'@'127.0.0.1' identified by 'passwd'

 

利用iptables构建ftp内网透明代理

一台虚拟主机需要开放ftp给外网用户,修改其自有目录。之前使用G6的反向代理直接处理,现在这个G6服务器很不稳定,就考虑在一个ubuntu server上构建反向代理,实现用户目录的自主管理。

在ubuntu server上:

sudo su

sysctl net.ipv4.ip_forward=1

modprobe ip_nat_ftp

iptables -t nat -A PREROUTING -p tcp -d 210.77.77.8 --dport 10021 -j DNAT --to-destination 192.168.50.239:21

iptables -t nat -A POSTROUTING -j MASQUERADE

这样就实现了ftp的透明代理。

 

ubuntu下用ssl方式使用remmina远程桌面

一台服务器上的virtualbox虚拟机,需要做部分改动工作。于是首先打开虚拟机上的远程桌面:

VBoxManager controlvm win2003 vrde on

然后尝试用host的IP进行远程桌面访问,发现无法访问,于是知道了这个3389端口是开到虚拟机的内网ip地址上了。

开始想搜索端口转向,将外网ip的端口转向到内网里,但在remmina的配置界面发现有个配置SSH的tab,进行对应的配置后就可以直接使用内网ip进行远程桌面了。

其中,SSH服务器采用指定方式,指定为外网的ip地址,验证方式为密码(当然也可以是公钥,需要提前配置好)。

ubuntu 14.04无法进入图形界面

在清理系统时,发现系统里有多个内核(近20个版本),就想着清理掉不需要的内核。

在最后一次清理时,使用了这个命令:

sudo apt-get purge linux-image-3.13.0-2*

但这个命令和我想当然的结果完全不同,其将所有的3.13.0-内核都移除了,包括当前系统正在使用的内核!

在执行完后,立即安装回最新版的内核:

sudo apt-get install linux-image-generic

然后重启,停留在terminal登陆界面了,无法进入unity了。

于是开始尝试修复,移除所有nvidia驱动:

sudo apt-get remove --purge nvidia-*

仍然不解决问题,于是安装最新nvidia驱动

sudo apt-get install nvidia-346

还是没有解决问题,在启动过程中还遇到了virtualbox无法启动的问题,根据网上的提示,

apt-get install linux-generic linux-image-generic linux-headers-generic linux-signed-generic

然后再重新安装virtualbox(即先remove,再install)即可。

重启后此错误解决,但仍不能进入图形界面,于是查看/var/log/Xorg.0.log,在log里发现nvidia-346版本不能驱动我机器的显卡,需要安装nvidia-340版本才可以。

于是卸载nvidia-346,安装nvidia-340,重启,OK。

参考:

1. http://jingyan.baidu.com/article/bad08e1ebba98e09c85121ae.html

2. http://www.cnblogs.com/zhcncn/p/3989572.html

3. http://askubuntu.com/questions/582109/14-10-virtualbox-no-suitable-module-for-running-kernel-found-cannot-find-ker

 

ubuntu下用命令行发送带有附件的邮件

一台服务器检查程序需要将检查结果自动发送给指定邮箱,想当然的使用mail命令,结果在测试时发现有错误:

mail: cannot send message: process exited with a non-zero status

搜索后最相关的一个地址是:

http://unix.stackexchange.com/questions/185365/mail-cannot-send-message-process-exited-with-a-non-zero-status

其没有提到明确的问题,但从其中提出的log查看,倒是发现了线索。

有两个log都记录了对应的信息,即syslog和mail.err。mail.err中的信息更明确:

 postfix/sendmail[27115]: fatal: open /etc/postfix/main.cf: No such file or directory

根据这个提示,在ubuntuforum上找到了对应的答案。

http://ubuntuforums.org/showthread.php?t=1519519

然后意识到这台服务器安装完成后并没有配置postfix服务,于是重新配置:

sudo dpkg-reconfigure postfix

 

然后再使用mail命令发送邮件就正常了:

echo "FTP2 dataset file has been changed. Please use the attachment to find the differences." | mail -s "FTP2 dataset file change" -A Diff.html test@email.org

 

ubuntu 14.04重新构建postgresql数据库

一台服务器,在升级过程中数据库发生了损坏,已经恢复不了,因此决定将旧版本数据备份后删除,直接创建一个新的数据库。

sudo pg_dropcluster --stop 9.1 main

sudo apt-get remove postgresql-9.1

sudo pg_createcluster 9.3 main

然后修改postgresql配置文件,修改ip绑定地址,将localhost修改为*,

sudo nano /etc/postgresql/9.3/main/postgresql.conf

加入远程访问的ip地址控制,

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

然后重新启动数据库服务:

sudo service postgresql start

添加一个新的超级用户:

sudo createuser -P -s username

然后就通过pgadmin3进行远程控制访问。