FC2ブログ

[CentOS]NVMe over fabricサーバ構築

SPDKコマンド手順

https://github.com/spdk/spdk/issues/899
    +-------------+-------------------+------------------------------------------------------------------------+
| bdev class |function | steps for example |
+-------------+-------------------+------------------------------------------------------------------------+
| malloc bdev |setup malloc |./scripts/rpc.py construct_malloc_bdev 64 4096 (>=512) |
| |bdev with rdma |./scripts/rpc.py nvmf_subsystem_create -s SPDK00000000000001 |
| | | -a -m 20 nqn.2016-06.io.spdk:cnode1 |
| | |./scripts/rpc.py nvmf_create_transport -t rdma |
| |-------------------+------------------------------------------------------------------------+
| |create nvmf |./scripts/rpc.py construct_malloc_bdev 64 4096 |
| |subsystem on malloc|./scripts/rpc.py nvmf_subsystem_create nqn.2016-06.io.spdk:cnode1 |
| | | -a -s SPDK00000000000001 |
| | |./scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 |
| | | Malloc0 |
+-------------+-------------------+------------------------------------------------------------------------+
| nvme bdev |setup nvme bdev |./scripts/rpc.py nvmf_create_transport -t RDMA -u 8192 -p 4 |
| |with pcie |./scripts/rpc.py construct_nvme_bdev -b Nvme0 -t pcie |
| | | ( -f ipv4 optional ) -a 0000:5e:00.0 |
| | |./scripts/rpc.py nvmf_subsystem_create nqn.2016-06.io.spdk:cnode1 |
| | | -a -s SPDK00000000000001 |
| | |./scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 |
| | | Nvme0n1 |
| | |./scripts/rpc.py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 |
| | | -t rdma -a 192.168.89.11 -s 4420 |
| |-------------------+------------------------------------------------------------------------+
| |setup nvme bdev |./scripts/rpc.py nvmf_create_transport -t RDMA -u 8192 -p 4 |
| |with rdma |./scripts/rpc.py construct_nvme_bdev -t rdma -f ipv4 -a 192.168.89.11 |
| | | -n nqn.2016-06.io.spdk:cnode1 -b Nvme0 -s 4420 |
| | | ./scripts/rpc.py nvmf_subsystem_create nqn.2016-06.io.spdk:cnode1 |
| | | -a -s SPDK00000000000001 |
| | |./scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 |
| | | Nvme0n1 |
| | |./scripts/rpc.py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 |
| | | -t rdma -a 192.168.89.11 -s 4420 |
| |-------------------+------------------------------------------------------------------------+
| |del nvme controller|./scripts/rpc.py delete_nvme_controller Nvme0 |
+-------------+-------------------+------------------------------------------------------------------------+
スポンサーサイト



[CentOS]25GbEのせいで1GbEポートが接続出来ない?

XH110G(CentOS8)に25GbEカードを接続したら、LANポートがつながらなくなった。

どうにも原因が分からなかったが、
ifdown enp1s0
とやって、25GbEポートを一度Disableにしたらオンボード1GbEもping通るようになった。
原因不明。

その後
ifup enp1s0
でEnableにしても、オンボード1GbEは接続出来たまま。


安心したものの、再起動してみたらまた戻って、接続できない。
また同じように25GbEを一度Disableしてみたら、1GbEで接続できた。

なので次は、25GbEをダウンさせて、起動時の自動接続もOFFにしてから再起動。
これで起動時に1GbEが接続出来るようになった。

ちなみに、自作したh170の方で試したら、25GbE起動したままでも、オンボード1GbEは接続出来た。
XH110Gの電源が弱い、とか?

原因分からないが、現状はこれで対処しよう。


後日A320に25GbEカードつなげてみても同じ症状で1GbEが接続出来ない。
自分自身へのpingは成功するが、他PCへのpingはダメ。
なので25GbEをdownしてみると、ping成功するようになり、さらにそこから25GbEをupさせても1GbEのpingは成功したまま。


(2021.2.20追記)
いろいろ試してたら、どうやら、1GbEと25GbEは別セグメントにするのが良いらしい。
別セグメントにしたら、25GbE同士でpingも出来たし、NVMe-over fabricも成功した。

[CentOS]AMD Ryzen 3 3200G未対応

Mini ITXで自作PC組んだが、その時使ったAMD Ryzen 3 3200GがCentOSに対応してないみたいであせった。
CentOS8のインストールは出来たが、起動時に以下メッセージが出て進まない。

AMD CPU model - this hardware has not undergone upstream testing



よくよく調べると、以下のようにRyzen 3000シリーズではどのバージョンもサポートしてないとの事。

https://access.redhat.com/support/policy/amd

超有名なCentOSにサポートしてないってあるの?と思ったが、Ubuntu 18.04をインストールしたら起動出来た。
今までINTEL使ってて主要なLinuxサポートしてないCPUに当たった事無かったが、AMDだけの問題でも無いようなので
今後気を付けよう。

という訳で、CentOS機を増やすつもりが、Ubuntu機が増えてしまった。。。

[CentOS]モニタからプロンプトが外れる

症状

・CentOSをコマンドラインモードで起動すると、下の一行が画面外になってしまう。


対策

・起動時の解像度を変更したらなおった。
https://www.storange.jp/2017/03/centos-7.html

・やりかたは以下。vgaの設定を追記。元々の解像度は1920x1200かな。
vi /etc/default/grub

GRUB_CMDLINE_LINUX="crashkernel=auto ... rhgb quiet vga=795"


795設定 = 1280 x 1024、色深度24

・上記の通り追記したら再起動。これで解像度は下がったが、ずれはなくなった。

[CentOS]ZFSディスクがブートの邪魔する

症状

ホスト: g33
OS: CentOS 7.7.1908
OS用: HDD(A) ・・・ 1本
ZFS用: HDD(B),(C),(D),(E) ・・・ 4本


作業手順と困った事

1.OS用HDDだけで起動。
2.起動後にZFS用HDD 4本を接続。
3.ZFS用HDD 4本でZFSプールの作成、ボリュームの切り出し・マウント

zpool create -f tank raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde
zfs create tank/share -o mountpoint=/home/share


4.再起動
 ・・・ すると、CentOSが起動しない。
ZFS用HDDだけ外してOS用HDDだけで起動するとCentOS起動する。


考察

ZFS用HDDを接続したらCentOSが起動しないので、何かしらの設定をしてしまいZFSプール用のHDD 4本がブータブル設定になっていると予想。
ブート優先順位はHDD同士なので同じだが、HDDの中でZFS用が先にチェックされて、それがブータブル設定だったのでそこから起動しようとしたが、OSデータは何もないため、起動出来なかった、と予想。


確認

川合さん著作の「OS自作入門」という素晴らしい本を読んでいたおかげで、ブータブルの設定かどうかは、
HDD先頭セクタ(512バイト)が0x1fe=55、0x1ff=aa、になっているかどうかで決まる、っと知ってた。
(著書のpage27に書いてます。)

早速確認してみます。
CentOSへログインして、シェルプロンプト上で
# df
/dev/sdaがOS用とわかる。

# dd if=/dev/sda bs=512 count=1 | hexdump -C
これで先頭セクタ(block size=512の1カウント分)を16進数表示で標準出力に出してくれる。
hexdump -Cをつけないとバイナリのままだから何がなにやらわからないので注意。
最後の方を見てみると、000001f0の行の右端が55aaになっている事が確認できた。
CentOSをインストールしたブータブルHDDだから当然だけど。

# dd if=/dev/sdb bs=512 count=1 | hexdump -C
次にZFSプールを構築したHDD 4本のうち1本を見てみる。
すると同様に0x1fe=55、0x1ff=aaとなっており、ブータブル設定になっている事が確認できた。
他の3本も同じくブータブル設定になってた。


実験

ZFSプール構築後、先頭セクタのブータブル設定だけ解除してみる。少し強引なやり方ですが。
まずは先頭セクタを4台共にファイルへ保存。

for x in b c d e
do
dd if=/dev/sdb bs=512 count=1 > dd.sd$x.1st_sec
done



次にバイナリエディタで編集。今回はvimのバイナリモードを使う。
vimでないと後述のxxdコマンドが使えないので、viは不可。
# vim -b dd.sdb.1st_sec

ファイルを開いてもバイナリのままだと読めないので以下コマンドでHEX表示にかえる。
:%!xxd
これで読めるようになったので最後を55aaから55abに変更する。
そうしたら、バイナリに戻してやる。ここで戻さないとバイナリでなくHEX値にしたテキストで保存されてしまう。
:%!xxd -r
あとは保存して終了。
:wq


試しに再度同じ手順で開いてみたら、ちゃんと55abで保存されてた。

後は以下コマンドで編集した先頭セクタのバイナリファイルをHDD先頭セクタへ上書きしてやる。
# dd if=dd.sdb.1st_sec of=/dev/sdb bs=512 count=1
念のため以下で確認してみると、ちゃんとHDD sdbの先頭セクタが55abに変わってた。
# dd if=/dev/sdb bs=512 count=1 | hexdump -C

同じ手順でsdbからsdeまで行う。


これをやったら確かにZFS用HDDを接続したままでも、CentOS用HDDからOS起動するようになった。


残る課題

・modprobe zfsを毎回やらないとモジュールがロードされない > これ自動化するのどうやるんだっけ?
・なので、もちろんZFSプールとかもなくなってる。 > これも自動化どうやる?



情報見つけた。これで解決かな?

https://web.chaperone.jp/w/index.php?CentOS/zfs

再起動すると外れる。。。
それを回避するには

[root@zfs ~]# systemctl enable zfs-import-cache
[root@zfs ~]# systemctl enable zfs-mount
[root@zfs ~]# systemctl enable zfs-import.target

を有効にしておく
*zfsのマウントポイントが存在した場合、この方式で再起動後でもzfsカーネルモジュールが外れなく、zfsマウントが反映されるって感じかな



http://lazy-dog.hatenablog.com/entry/2014/08/17/033038

zpool create -m /tank/zfs_pool/zfspool01/ zfs-pool1 raidz1 sdb sdc sdd

となる。コマンドを実行して、標準出力・エラー出力に何も表示されなければ、使用可能になる。なお、サーバを再起動しても、何も設定しなくとも自動でマウントされる。

カレンダー
04 | 2021/05 | 06
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード