Linux系统下使用MegaCli软件对磁盘阵列进行操作

若管理的服务器比较多,服务器的硬盘经常会坏掉。可以使用megacli命令来查看磁盘阵列中的磁盘是否损坏。

1. CentOS6系统下安装MegaCli软件

在一些rpm网站中搜索megacli。然后下载megacli的rpm包进行安装:

# wget http://rpmfind.net/linux/openmandriva/3.0/repository/x86_64/non-free/release/megacli-8.02.21-4-omv2015.0.x86_64.rpm
# wget http://mirror.rosalab.ru/openmandriva/3.0/repository/x86_64/media/non-free/release/megacli-8.02.21-4-omv2015.0.x86_64.rpm # yum install megacli-8.02.21-4-omv2015.0.x86_64.rpm megacli的使用需要依赖libsysfs库文件 # yum install libsysfs # ln -s /usr/lib64/libsysfs.so.2.0.1 /usr/lib64/libsysfs.so.2.0.2

2. 使用megacli命令查看磁盘

# megacli -PDList -aALL 
此命令可以查看所有物理磁盘的信息。
若Media Error Count和Other Error Count的值大于0,则表示磁盘可能坏掉了。
megalci命令的参数后接其值,中间没有空格。-a参数表示使用的adapter编号。 # megacli -LDInfo -LALL -aAll 此命令查看所有逻辑磁盘的信息。

# megacli -LdPdInfo -a1
此命令列出第2个阵列卡上各逻辑磁盘及其所属的物理磁盘信息。 # megacli -AdpAllInfo -aALL 查看阵列卡信息 # megacli -AdpBbuCmd -aAll 查看阵列卡电池信息

3. 使用megalci命令删除或创建阵列

我有一台服务器,其第一个阵列卡上有3块硬盘发生了损坏,导致10块硬盘组RAID6的逻辑盘数据丢失。现在拔掉损坏的硬盘,将后面位置的2块硬盘拔下补入到前面的硬盘位上,再对剩下的硬盘重新组阵列。

首先,删除第一个阵列卡上的第二个逻辑盘。该逻辑盘由于物理硬盘损坏数据丢失,数据咱也不要了,直接删除它。
# megacli -CfgLdDel -L1 -a0
-L参数接逻辑磁盘的ID编号,-a参数接阵列卡编号。

当拔掉后面的硬盘插入前面损坏盘的槽位时,硬盘状态变为Unconfigured(bad),需要将其变为Unconfigured(good)。将第一阵列卡上的Enclosure Device ID: 3/Slot Number: 2硬盘变为Unconfigured(good)。
# megacli -PDMakeGood -PhysDrv[3:2] -a0
# megacli -PDMakeGood -PhysDrv[3:4] -a0

若插拔硬盘换位发生在删除逻辑分区之前,则移位的硬盘没有删除逻辑分区信息,变为Foreign配置,需要清除其Foreign信息。若不清楚Foreign信息,后续使用其硬盘组RAID会报错:Mix of configured and unconfigured drives are not possible.
# megacli -CfgForeign -Scan -a0
# megacli -CfgForeign -Clear -a0
将外源磁盘阵列导入到阵列卡中
# megacli -CfgForeign -Import -a0

对剩下的7块硬盘组RAID6,并使其中一个硬盘为热备盘。这些磁盘可能都比较脆弱了,可能容易坏,做非常安全的RAID策略。
# megacli -CfgLdAdd -r6[3:1,3:2,3:3,3:4,3:5,3:6] WB ADRA Direct CachedBadBBU -Hsp[3:7] -a0
设置WB ADRA Direct CachedBadBBU等缓存策略参数为该逻辑盘的默认策略。

对磁盘换成策略解释如下:

WT/WB: 设置磁盘写入策略。WT为Write Through,即直写,表示将数据写入硬盘时,不经过阵列卡缓存直接写入,是默认策略;WB为Write Back,即回写,表示数据写入硬盘时,先写入阵列卡缓存,当缓存写满时再写入硬盘。毫无疑问,缓存写入速度快,将数据写入缓存能提高读写速度,极大减少真实的磁盘写入时间。这样使用回写策略既能提高逻辑盘写入性能,也能增加磁盘寿命。使用回写策略,数据可能会留在缓存,在服务器断电且阵列卡没有电池时会导致数据丢失。
NORA/RA/ADRA:设置磁盘读取策略。NORA为NO Read Ahead,即不预读;RA为Read Ahead,即强制预读,在进行读取操作时,预先把后面顺序的数据载入阵列卡卡缓存,这样能在顺序读写环境提供很好的性能,但是在随机读的环境中反而降低读取性能,它适合文件系统,而不适合数据库系统;ADaptive Read Ahead,即自适应预读,在缓存和I/O空闲时进行预读,是默认策略。
Direct/Cached:Direct表示读取操作不缓存到阵列卡缓存,是默认策略;Cached表示读取操作先缓存到阵列卡,这有利于数据的再次快速读取。
CachedBadBBU/NoCachedBadBBU:CachedBadBBU为Write Cache OK if Bad BBU,即在电池损坏时依然采取回写缓存策略;后者表示当电池损坏时采取只写缓存策略。

在本台服务器上,第二个阵列卡由于电池容量低需要更换,导致该阵列卡上第一个逻辑磁盘的写入策略变为Write Through,通过megacli命令修改该阵列卡上第一个逻辑磁盘的缓存策略:

# megacli -LDSetProp CachedBadBBU -L0 -a1

使用高版本SMRT Analysis软件对Pacbio reads进行基因组De novo组装

1. SMRT Analysis简介

SMRT Analysis软件是由Pacbio Science公司开发的软件,现在是SMRT Link软件的一部分,用于对Pacbio Long Reads数据进行分析。其2.3版本仅能用于对Pacbio RSII测序仪获得的h5格式测序数据进行,该版本持续了较长一段时间。后来Pacbio测序仪增添Sequel平台后,SMRT Analysis软件更新到3.0,增加支持对Pacbio Sequel测序仪获得的bam格式数据进行分析。现在(2018.09.02)最新版本的SMRT Analysis到了5.1版本。

2. 下载并安装SMRT Link软件

将SMRT Link安装到CentOS 6.9系统中。安装软件前需要做一些准备:

首先,确定主机名是localhost并指向127.0.0.1的IP地址。刚安装完毕的系统一般都满足此要求。
保证/etc/hosts文件中含有以下一行信息:
127.0.0.1    localhost

其次,修改/etc/security/limits.conf文件,尾部增添如下4行:
chenlianfu      soft    nproc   10240
chenlianfu      hard    nproc   102400
chenlianfu      soft    nofile  10240   
chenlianfu      hard    nofile  102400
注意chenlianfu是安装SMRT Analysis软件所使用的用户的用户名。
该步骤用于增加chenlianfu用户的权限,这是与SMRT软件较高的资源消耗和较多的并行化相关的。
此外,注意此步骤过后,从新登陆

然后,修改/etc/sysconfig/iptables文件,增加5432(PostGresql数据库需要)、9090和8243(软件网页端使用tomcat提供服务时需要9090和8423)端口。在该文件中正确的位置增加如下两行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8243 -j ACCEPT
然后重启防火墙,让修改生效:
# /etc/init.d/iptables restart

最后,启动PostGresql数据库。
# /etc/init.d/postgresql initdb
# /etc/init.d/postgresql start
# chkconfig postgresql on

从Pacbio Science官网下载SMRT Link软件

将SMRT Link安装到 ~/biosoft 目录下
$ mkdir ~/biosoft
$ cd ~/biosoft
$ wget https://downloads.pacbcloud.com/public/software/installers/smrtlink_5.1.0.26412.zip
$ unzip smrtlink_5.1.0.26412.zip
    要求输入密码,可以从下载该软件的网页中找到。
$ ./smrtlink_5.1.0.26412.run
    根据提示一步一步进行配置,基本都是直接使用默认值,按Enter键即可。
    设置软件临时文件夹的时候,要选择一个较大分区所对应的目录。我将其设置为/home/chenlianfu/biosoft/tmp/smrtlink
$ /home/chenlianfu/biosoft/smrtlink/admin/bin/services-start
    启动SMRT Link软件。

3. 使用HGAP4进行基因组De novo组装

1. SMRT Link软件必须要在Chrome浏览器中打开。在Chrome浏览器中输入安装有SMRT Link软件机器的IP地址,并接:9090,例如:192.168.30.1:9090,就可以连接到软件的用户登陆界面,输入用户名admin,密码admin则会进入软件。

2. 点击Data Management,再点击VIEW OR IMPORT SEQUENCE DATA,点击IMPORT并从下拉菜单中点击Sequel Sequence Data,从弹出的浏览设置中选择路径/home/chenlianfu/biosoft/smrtlink/install/smrtlink-release_5.1.0.26412/bundles/smrtinub/install/smrtinub-release_5.1.0.25847/private/pacbio/canneddata/lambdaTINY/m150404_101626_42267_c100807920800000001823174110291514_s1_p0.subreadset.xml,点击IMPORT,运行一段时间后,导入数据成功。

3. 返回到软件主界面,点击SMRT Analysis,点击CREATE NEW ANALYSIS,在Analysis Application下拉菜单中选择Assembly(HGAP 4),Analysis Name栏随便填写字符串Lambda_HGAP4,在Genome Length栏将基因组大小修改为58000,在Data Sets中勾选lambda/007_tiny,最后点击START,开始程序运行。

4. 值得注意的是公司给的测序数据文件夹中常常不包含sts.xml、adapters.fasta和scraps bam等文件,而在总的xml文件中却包含了这些信息,需要将其对应的行(第7行到第15行)删除掉后再运行HGAP4,否则程序运行会失败。

5. 程序运行结果在/home/chenlianfu/biosoft/smrtlink/userdata/jobs_root/目录下的一个数字编号(按运行顺序从000001开始编号)的文件夹中。该文件夹中的的主要结果文件(也可以在网页中下载):
./tasks/pbcoretools.tasks.contigset2fasta-0/file.fasta 最终的基因组组装结果。
./tasks/pbcoretools.tasks.gather_fasta-1/file.fasta 按某个长度

使用TeamViewer突破内网封锁远程连接服务器

1. TeamViewer作用

经常由于学校对端口的封锁,在校外难以使用OpenSSH连接学校内网的服务器。这个时候,可以在学校内网的服务器上开启图形化界面运行TeamViewer软件,同时在外网的笔记本电脑上同时运行TeamViewer软件。在两个软件上输入相同的用户名和密码,则可以通过该软件连接学校内网的服务器桌面,从而对内网服务器进行操作。

2. 内网服务器上安装TeamViewer软件

我的服务器系统是CentOS 6.9 64位系统,在TeamViewer网站上下载Linux 64位版本的TeamViewer软件。目前最新是V13版本的TeamViewer,貌似支持CentOS7。对于CentOS 6则下载V12版本的TeamViewer

# wget https://dl.tvcdn.de/download/version_12x/teamviewer_12.0.93330.i686.rpm
# yum install teamviewer_13.2.13582.x86_64.rpm

然后再内网服务器进入图形化桌面,在桌面上的各种菜单中寻找TeamViewer图标启动软件,输入用户名和密码登陆软件软件或记录其ID和密码。

3. 外网笔记本电脑上TeamViewer软件安装和使用

在TeamViewer官网下载windows系统的软件安装并运行。登陆用户名和密码进入软件控制远程服务器,或输入ID和密码来控制远程服务器。