kuroの覚え書き

96の個人的覚え書き

CentOS7でsambaサーバ

やはりMacWindowsから共有できるファイルサーバを一つ立てておこうということで。

TX1310M3に起動ディスクとして1T (RAID1)、ファイル領域として4T (RAID1)を用意した。
ファイル領域は/mnt/disk2にマウントされている。
基本的にshareグループに入っているユーザがアクセスできるものとする。

共有ディレクトリとユーザグループの設定

# mkdir /mnt/disk2/share
# groupadd share
# chgrp share /mnt/disk2/share
# usermod -aG share kuro

smb.confの編集

# nano /etc/samba/smb.conf

# cat /etc/samba/smb.conf

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

#	printing = cups
#	printcap name = cups
        load printers = no
#	cups options = raw

[homes]
       	comment = Home Directories
        valid users = %S, %D%w%S
	browseable = No
	read only = No
	inherit acls = Yes

#[printers]
#	comment = All Printers
#	path = /var/tmp
#	printable = Yes
#	create mask = 0600
#	browseable = No

#[print$]
#	comment = Printer Drivers
#	path = /var/lib/samba/drivers
#	write list = @printadmin root
#	force group = @printadmin
#	create mask = 0664
#	directory mask = 0775

[Share]
        path = /mnt/disk2/share
        writable = yes
        create mode = 0770
        directory mode = 0770
        guest ok = no
        valid users = @share
	read only = no

SELinuxの設定&
起動してファイヤウォールに穴をあける

# semanage fcontext -a -t samba_share_t "/mnt/disk2/share(/.*)?"
# restorecon -R -v /mnt/disk2/share
# systemctl start smb nmb
# firewall-cmd --add-service=samba --permanent

sambaユーザのパスワード設定

# smbpasswd -a kkuro

完成。

SELinuxの設定がちょっとわかりにくいところ。

ラボ内サーバ体制の見直し

これまで、Fujitsu Primergy RX1330m3 をNGS解析用Cluster head node兼データベースサーバ兼WEBアプリサーバ兼開発プラットフォームというふうにフルに使っていた。
しかしデータベース&WEBアプリをラボメンバーがよく使うようになってきて、NGS解析で無理なジョブ走らせたり、アプリのテストなどしているとデータベースにつながらない、アプリが動かなくなった、と苦情を受けることが多くなってきたので計算資源を再編することにした。

RX1330m3はデータベースと統計処理等のWEBアプリサービスに専念させ、解析用クラスタヘッドノード、アプリ開発テスト環境用にほぼ同スペック(XEON E3-1230v6, 64GBメモリ搭載)のサーバを調達した。

サーバ   CPU               メモリ           				HDD
#database server
Fujitsu RX1330M3 E3-1230v6(4C/8T, 3.50GHz)   DDR4-2400 (PC4-19200E) UDIMM 64GB		4T (RAID1)

#cluster
THIRDWAVE R121-340 E3-1230v6(4C/8T, 3.50GHz)   DDR4-2400 (PC4-19200E) UDIMM 64GB		2T (RAID1)
Fujitsu RX300S7  E5-2667(6C/12T, 2.90GHz)x2  DDR3-1600 (PC3L-12800R) LV-RDIMM 32GB		300G (RAID1)
Fujitsu RX300S7  E5-2643(4C/8T, 3.30GHz)x2  DDR3-1600 (PC3L-12800E) LV-UDIMM 24GB		300G (RAID1)
Fujitsu RX200S7  E5-2630(6C/12T, 2.30GHz)x2  DDR3-1333 (PC3-10600R) RDIMM 44GB			300G (RAID10)
Fujitsu RX300S7  E5-2620(6C/12T, 2.00GHz)x2  DDR3-1600 (PC3L-12800R) LV-RDIMM 24GB		147G (RAID1)

#file server
NEC Express5800R110e-1e Pentium G2020 (2C/2T, 2.9GHz)  DDR3-1333 (PC3-10600E) UDIMM 4GB   8T (RAID1)

#file backup
Terastation5400R 																			 9TB (RAID5)

ユーザはRX1330M3においたNISサーバで一元管理し、一般データはFileサーバに置くようにしている。
データベースサーバのデータバックアップとしてTerastationに置く。

Mac用のデータバックアップをどうするかが悩みどころ、結局利用していないTX1310をデータバックアップサーバにするのもいいんだけど、いろいろ面倒だなあ。

グラフの要素を平均やボックスプロットに重ねる

以前より作っていたグラフ描画用ウェブアプリをバージョンアップしてつかいやすくした。
ボックスプロットやバーグラフに各要素点をかんたんに重ねることが可能になった。
f:id:k-kuro:20210126155628p:plain

これでNatureにも投稿し放題だね。

いよいよExcelは必須ではなくなってきたな。

pandasで読み込んだデータフレームからかんたんにグラフを作る

例えばStudent's T testをやるついでにグラフも描いとこうというような場合。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("./ttest.txt")
des = df.describe()
print(des)
# plt.figure()
des[des.index=='mean'].T.plot.bar(yerr=des[des.index=='std'].values,capsize=2)
# plt.savefig("./ttest.png")
# plt.close('all')

こんな感じで

f:id:k-kuro:20210125204546p:plain
こんな感じにサクッとグラフを描ける。

図をファイルとして保存したければコメントしている部分を外すだけ。

CentOS Stream 8をインストールしてみる

CentOSの行く末が不安なので、今のうちにとりあえずCentOS Streamの方を使ってみておくというのもよかろうということでCentOS7の仮想環境上にCentOS Stream 8をインストールしてみる。

インストール自体はとくに変わったところもなく順調に終了。
インストールしおわってから気がついたがminimal installの選択肢がなかったような。

何事もなかったようにデスクトップ画面が立ち上がってきた。
f:id:k-kuro:20210117163322p:plain
gnomeの画面もUbuntuと同じ感じになっているな。

f:id:k-kuro:20210117163528p:plain

流石に最新の環境を追求しているだけあって、Linuxbrewも一発で入った。

安定性を気にしない解析環境ならこれもありかもしれない。

MacOSのsafariで「ファイルを選択」ボタンが押せない

f:id:k-kuro:20210113205355p:plain

こういうファイルアップロードのボタンがいつの頃からか押せなくなってた。

High sierraを使っている自宅Mac miniやCatalinaのMBAでは押せるので、職場のMojaveだけで起こっている現象のようだ。

ちなみに
f:id:k-kuro:20210113205549p:plain

どうもMojaveでSafariを14.0.1以上に上げるとこの現象が出ているっぽい。で、解決策はない。
Catalinaにあげるしかないのか?そろそろあげどきだとは思っていたけど。

今日は仕事をこれまでにしとけというお告げと思って、OSバージョンアップやろう。
しかしCatalinaへのバージョンアップは先日iMacで失敗しているので怖いな。仕事用だけにバックアップ確実にとっとかないとな。

vncserverが起動しなくなった。

Xvnc TigerVNC 1.8.0 - built Nov 16 2020 16:47:50
Copyright (C) 1999-2017 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 12004000, The X.Org Foundation


Mon Jan  4 09:30:20 2021
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5903
 vncext:      created VNC server for screen 0

(imsettings-check:2945): IMSettings-WARNING **: 09:30:23.960: Could not connect: 接続を拒否されました

(imsettings-check:2945): GLib-GIO-CRITICAL **: 09:30:23.960: g_dbus_proxy_call_sync_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed
/etc/X11/xinit/xinitrc.d/popup.sh: 3 行: cd: /usr/local/MegaRAID Storage Manager/MegaPopup: 許可がありません
/etc/X11/xinit/xinitrc.d/popup.sh: 13 行: cd: OLDPWD が設定されていません
/etc/X11/xinit/xinitrc.d/popup.sh: 行 12: ./popup: そのようなファイルやディレクトリはありません

** (process:2897): WARNING **: 09:30:23.989: Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME environment variable: Could not connect: Connection refused
/home/kuro/.vnc/xstartup: 5 行:  2897 Terminated              sh /etc/X11/xinit/xinitrc
Killing Xvnc process ID 2883

はてさて、なんでだ?
rootユーザでは起動できるのに。

どうやらhomebrewのためのPATH設定と喧嘩しているらしい。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/local/bin:$HOME/bin

export PATH
#eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)

と最後の行をコメントアウトしたら起動した。

しかしそれでは困るな。

画像解析用サーバを考える。

兎に角デカイ画像ファイルを弄る必要があってメモリがMacminiじゃ足りない。
ということでサーバを一つ拵えようかと思っている。

スペックを考えるに
CPU:Xeon scalable (2nd Gen)で8コア以上
メモリ:128G以上、予算の許す限り。
MB:シングルCPUボードでもいいが、1CPUあたりのコア数を抑えて2CPUにするのもありかもしれない。
ケース:4Uのラックマウント型にしておくほうがいいか。
GPU:今のところ必須ではないがRTX3070あたりを1枚入れておくか。
HDD:4Tx2でRAID1

こんなところか。

大手メーカー製とか、生協で吊るしで売っているカスタマイズモデルってムダに高い気がするので、自作でいく。
SUPERMICROが色々カスタマイズしやすくて良さそう。

SuperWorkstation 5049A-T

SuperWorkstation 5049A-T

  • 発売日: 2019/07/03
  • メディア: Personal Computers
最初に見つけたのはこいつ。これをベースにするのはどうだろうか?
ケースの要件が一致してないが、これにXeon Gold1個乗っけてやるというのも潔いかもしれない。

次に検討したのがこっち。

これもタワー型だけど7049Aよりだいぶお安く2CPU対応。
これにこれを2つ乗っけるというのもありかもしれない。

いやまて、ラックマウントは捨てがたい。しかしSUPERMICROのシャーシは高いからMBだけ使うか?

これが上のタワー型で使われているMBらしいのでこいつを汎用サーバケースに入れてやればリーズナブルじゃないか。

これはPCI-Eの配置とSATAのコネクタの形状が違うがこっちのほうが使いよいか?

ケースはこれくらいがお手頃。頻繁にHDDを抜き差しすることもないからフロントからホットスワップとかでなくてもいいと思う。

グラボ

電源

メモリこれを4キットくらいいっとく。

ヒートシンクは純正でなくてもいいかもしれないが。

さあしめておいくら?

20/12/28時点では¥520,000くらいかな。まあまあいい感じじゃないの?

あ、HDD忘れてた。

drishtiをCentOS7にインストールする

医学用途のフリー3D解析ソフトであるdrishtiをCentOS7にインストールしたい。

$ sudo yum install gcc-c++

$ brew install freeglut

$ brew install glew

$ brew install qt

$ echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/qt/bin:$PATH"' >> ~/.bash_profile

$ source ~/bash_profile

freeglut、glew、qtはyumで入るバージョンではうまくインストールできないため、brewで入れる。
次にQGLViewerのソースをwww.libqglviewer.comの配布元からダウンロードする。

$ tar -xzf libQGLViewer-2.7.2.tar.gz

$ cd libQGLViewer-2.7.2/QGLViewer

$ qmake

$ make

$ sudo make install


github.com
ここからLinuxのコードをダウンロードし展開
drishti-v2.7linux/drishtiにlibGLViewer-2.7.2/QGLViewerをコピー

$ cd drishti-v2.7linux/drishti

$ qmake

$ make

makeでエラーが出てコンパイルできない・・・未完

【2021年1月31日まで】自作PCパーツがクーポンでお得

CentOS7のGitを最新のものにする

CentOS7のyumでインストールされるGitは1.xxとか古くてlinuxbrewのインストールでエラーが出て進まないので最新のGitをインストールする話。

まずは

# yum remove git

で古いのを消しておく。
次に
バイナリをダウンロード
https://mirrors.edge.kernel.org/pub/software/scm/git/
ここでインストールしたいバージョンの場所をコピーしておく

# cd /usr/local/src
# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.29.2.tar.gz
# tar xvzf git-2.29.2.tar.gz 
# rm -rf git-2.29.2.tar.gz 
# cd git-2.29.2/
# make prefix=/usr/local all
# make prefix=/usr/local install

これで

# git --version
git version 2.29.2

よしよし。

ところが

$ which git
/usr/local/bin/git

をHomebrewのスクリプトが見つけてくれない。
PATH=/usr/local/bin/git:$PATH
としても駄目なので

# ln -s /usr/local/bin/git /usr/bin/git

としてやってどうにかインストールできた。

追記
さらにエラーが出たときの対処

$ sudo make prefix=/usr/local all
GIT_VERSION = 2.29.2
make: curl-config: コマンドが見つかりませんでした
    * new build flags
    GEN command-list.h
    GEN config-list.h
    CC fuzz-commit-graph.o
/bin/sh: cc: コマンドが見つかりません
make: *** [fuzz-commit-graph.o] エラー 127

$ sudo yum install curl-devel
$ sudo yum install gcc

$ sudo make prefix=/usr/local all
........
致命的エラー: expat.h: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
$ sudo yum install expat-devel