物理隔离环境搭建存储服务器——第三篇:其余补充

(注:如若记忆没有出现偏差,本文应是写于2015年,楼主习惯使用LaTeX写笔记,后发现markdown不错,于是稍有修改后发布与此。)

(下文中的所有命令需要以root权限执行)
(Debian下载地址[1]

前言

这部分内容是对前面内容简略部分的补充。

一、邮件设置

这里使用的软件为 msmtp,该软件小巧且易于配置。邮箱客户端软件用的是 mutt,该软件同样小巧,但是功能强大。

Tips:一般系统提供了 mail、 mutt、 sendmail 等工具,有时候系统提供的 sendmail 工具指向了其它的 mail 服务软件,例如在 Debian 8.3 中, sendmail 是 exim4 这个软件的一个软链接,而 mail 命令来自于 bsd-mailx。

1.1 mail配置

mail 会读取/etc/目录下的 mail.rc 文件,或者读取用户家目录下的.mailrc 文件。但是 mail 似乎不能自定义配置文件的位置,在某些情况下会导致不便。可以在 mail.rc 文件中增加一行,使用msmtp 发送邮件。

set sendmail="/usr/bin/msmtp"

1.2 msmtp配置文件

mutt会读取/etc/目录下的Muttrc文件,或读取用户家目录下的.muttrc文件,也可以用-F参数指定配置文件。一个示例如下:

account default
host smtp.126.com                       <-- smtp服务器
port 25                                 <-- smtp服务器端口
from [email protected]
auth login
user [email protected]                        <-- 邮箱
password xxxx                           <-- 密码
logfile /root/Mail/Log/msmtp.log        <-- 日志位置

1.3 mutt配置

mutt会读取/etc/目录下的Muttrc文件,或读取用户家目录下的.muttrc文件,也可以用-F参数指定配置文件。一个示例如下:

set from="[email protected]"                  <-- 发件人
set sendmail="/usr/bin/msmtp"           <-- 使用msmtp发送邮件
set use_from=yes
set realname="张三"
set editor="vim"                        <-- 发送邮件使用的文本编辑器

在使用nagios的邮件警报功能时,可以将配置文件放在一个特定的目录下,稍微修改一下%
上述参数即可。

set from="[email protected]"
set sendmail="/usr/bin/msmtp -C /etc/nagios3/.msmtprc"
set use_from=yes
set realname="Nagios3 警报"
set editor="vim"

然后将发送邮件的命令改为:/usr/bin/mutt -F /etc/nagios3/.muttrc。不过需要注意的是,要保证两份配置文件对nagios进程的拥有者是可读取的,例如默认情况下,Debian 8.x中nagios是以nagios用户和nagios组权限执行的。当然也可以将配置文件放置在nagios进程的拥有者的家目录底下,此时使用mail命令也可。

二、日志

2.1 相关要点

2.1.1 日志文件的意义

一些常用到的日志文件的作用如下:

  • /var/log/boot.log:开机启动信息。
  • /var/log/cron:与 crontab 日程相关。
  • /var/log/dmesg:开机核心信息。
  • /var/log/lastlog:二进制文件,记录所有账号最近一次登录信息,使用lastlog命令读取。
  • /var/log/mail/*:邮件相关的日志。
  • /var/log/messages:与系统相关的重要信息。
  • /var/log/secure:与账号密码相关的信息会记录在这个日志文件中,所以这个文件和安全直接相关。

2.1.2 日志文件的格式

日志文件一般按下述顺序输出:

  • 日志的日期与时间;
  • 相关的主机名;
  • 相关的程序的名字;
  • 日志内容。

2.1.3 信息的等级

日志输出的信息分成不同的等级,下表列出了不同等级信息的意义:

等级 名称 意义
0 emerg 硬件级别的严重错误。
1 alert 警告,遇到严重问题。
2 crit 遇到严重错误,面临崩溃。(在第一篇中,硬件温度信息输出有此项。)
3 err 程序遇到错误,一般是软件级别的。
4 warning 警告信息,比如软件可能会不适用之类的,一般不会影响运行。
5 notice 提醒软件运行过程中可能需要注意的信息。
6 info 基本信息,方便回溯软件运行。
7 debug 辅助debug使用。

(关于输出信息的分类,熟悉Android开发的小伙伴必然知道,Android的Log类就可以将开发过程中的不同信息分类输出,而且调试的时候可以使用过滤器提取不同类别的信息。)

2.1.4 logrotate日志轮替

Linux中的日志一般是采用如下的方式:
a.log → a1.log → a2.log ...
最新的日志存入a.log,将较老的日志往后面的文件存储。logrotate的配置文件在/etc/logrotate.conf和/etc/logrotate.d/目录中。可以配置日志的存储数目和是否采用压缩等。

2.2 Debian 8.x日志

Debian 8.x 系统的/etc/rsyslog.conf 文件内容如下:

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

$WorkDirectory /var/spool/rsyslog

$IncludeConfig /etc/rsyslog.d/*.conf

auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/var/log/mail.log
user.*              -/var/log/user.log

mail.info           -/var/log/mail.info
mail.warn           -/var/log/mail.warn
mail.err            /var/log/mail.err

news.crit           /var/log/news/news.crit
news.err            /var/log/news/news.err
news.notice         -/var/log/news/news.notice

*.=debug;\
    auth,authpriv.none;\
    news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none      -/var/log/messages

*.emerg             :omusrmsg:*


daemon.*;mail.*;\
    news.err;\
    *.=debug;*.=info;\
    *.=notice;*.=warn   |/dev/xconsole

Tips:这里需要注意的是:/var/log/auth.log 记录了用户认证登录的敏感信息,而不是像CentOS系统一样记录在/var/log/secure文件中。

2.3 保护日志

若系统被入侵,为了隐藏踪迹,通常会将/var/log/目录恶意删除。为此可以采取将日志文件定时备份到远程系统等措施,防止查找不到攻击源。另外,可以还可以将bash的history记录备份。

三、systemd

3.1 system V启动顺序

以往system V模式系统启动顺序是:

  • boot loader(例如grub等)加载内核,内核加载硬件驱动程序之后,启动init程序;
  • init取得run-level信息,执行/etc/rc.d/rc.sysinit下的脚本;
    • 0:halt,关机
    • 1:single user mode,单用户模式
    • 2:Multi-user,without NFS,无网络支持的多用户模式;
    • 3:Full multi-user mode,有网络支持的多用户模式;
    • 4:unused,系统保留功能,未使用;
    • 5:X11,有网络支持有X-Window支持的多用户模式
    • 6:reboot,即重启
  • 根据run-level信息,执行相应level下的脚本,例如等级3的脚本在rc3.d目录下;
  • 执行/etc/rc.d/rc.local脚本;
  • 启动login。

3.2 systemd启动顺序

在systemd中,各种服务的依赖关系被理清,如此一来,系统可以同时启动没有依赖关系的不同服务,加快开机速度。

和System V模式类似,只是内核在加载完硬件驱动程序后,启动的是systemd,默认执行的是default.target流程:

  • 执行sysinit.target初始化系统;
  • 执行multi-user.target启动本机服务;
  • 执行multi-user.target下的/etc/rc.d/rc.local文件;
  • 执行getty.target及登录服务;
  • 执行图形服务。

前面我们提到,使用脚本设置防火墙服务,并使脚本可以开机自动启动。在debian 8.x中,/etc/init.d/rc.local会调用/etc/rc.local,可以在这个文件中配置开机启动服务。不过通过配置unit可以通过systemctl管理,前面也是采用这种方式。

3.3 systemctl命令

systemd通过systemctl命令管理各种服务。

systemctl命令管理服务的使用方式如下:

systemctl 命令 [unit]
命令 意义
start 启动服务
stop 停止服务
restart 重启服务
reload 重新载入服务,一般是服务的配置更改了以后使用
enable 设置开机启动服务
disable 开机不会启动该服务
mask 注销服务
unmask 取消注销服务
status 查看服务的状态
is-active 服务是否正在运行
is-enable 服务是否开机启动

使用systemctl查看系统服务的命令如下:

systemctl 命令 [类别] [--all]
命令 意义
list-units 列出启动的所有unit
list-unit-files 列出/usr/lib/systemd/system/的文件

这里所说的类别指的是服务类型,一般分类如下:

类型 功能
.service 常见的服务
.socket 与数据交换相关
.target unit集合
.mount .automount 与文件系统挂载相关
.path 与文件类型检查有关
.timer 循环执行的服务,例如备份、安全更新的服务等

四、其他

4.1 Intel Parallel XE Studio

4.1.1 安装XE

这里选择Intel Parallel XE Studio Cluster Edtion,因为该版本包含了MPI库的内容。* (官网上可以申请一年使用的License)*。

查看安装帮助可知,安装可以使用静默方式,事先用虚拟机安装一遍,可以得到配置文件,安装命令为:./install.sh -d ./autoInstall.cfg。该文件内容为:

ACCEPT_EULA=accept
INSTALL_MODE=NONRPM
CONTINUE_WITH_OPTIONAL_ERROR=yes
PSET_INSTALL_DIR=/opt/intel
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
PSET_MODE=install
ACTIVATION_LICENSE_FILE=/media/sf_share/XE2015/Crack/zwt.lic
ACTIVATION_TYPE=license_file
AMPLIFIER_SAMPLING_DRIVER_INSTALL_TYPE=build
AMPLIFIER_DRIVER_ACCESS_GROUP=vtune
AMPLIFIER_DRIVER_PERMISSIONS=666
AMPLIFIER_LOAD_DRIVER=yes
AMPLIFIER_C_COMPILER=/usr/bin//gcc
AMPLIFIER_KERNEL_SRC_DIR=/lib/modules/3.16.0-4-amd64/build
AMPLIFIER_MAKE_COMMAND=/usr/bin//make
AMPLIFIER_INSTALL_BOOT_SCRIPT=yes
AMPLIFIER_DRIVER_PER_USER_MODE=no
ENVIRONMENT_LD_SO_CONF=no
MPSS_RESTART_STACK=no
PHONEHOME_SEND_USAGE_DATA=no
COMPONENTS=;intel-mpi-rt__noarch;... ... 一系列组件

接下来就可以使用该文件进行静默安装,命令为:./install.sh -s autoInstall.cfg。这样就省去了以后安装需要交互操作的麻烦。

安装完毕后,还需要配置用户环境。将以下内容加入/etc/profile文件中即可。

source /opt/intel/bin/compilervars.sh intel64
source /opt/intel/impi/5.0.1.035/bin64/mpivars.sh
source /opt/intel/mkl/bin/mklvars.sh intel64 ilp64

4.1.2 Fortran并行测试

接下来对一个简单的Fortran程序进行并行测试。

文件:hello.f90
program main
use mpi
implicit none

    integer ::  id, err, comm, psize

    call MPI_INIT( err )
    call MPI_COMM_DUP( MPI_COMM_WORLD, comm, err )
    call MPI_COMM_RANK( comm, id, err )
    call MPI_COMM_SIZE( comm, psize, err )

    write(*,*) id, psize,  " hello"

    call MPI_BARRIER( comm, err )
    call MPI_FINALIZE( err )
end program

编译:

mpiifort -o main hello.f90

执行:

mpirun -np 4 ./main

这里需要注意可执行文件的路径,即这里的“./”不要漏了。

           3           4  hello
           0           4  hello
           2           4  hello
           1           4  hello

  1. http://cdimage.debian.org/cdimage/archive/ ↩

你可能感兴趣的:(物理隔离环境搭建存储服务器——第三篇:其余补充)