DSM7の為にGitLabからGitLabへの移行

SynologyのDSMを7にアップする際、今までのGitLabが存在するとアップできない為、別のGitLabへ移行した際のメモです

参考にする場合は自己責任でお願いします

  • 移行元
    • Synology DSM 6.2.4-25556
    • Synology のパッケージマネージャから入れたGitLab
    • GitLabのバージョンは13.12.2-0072
    • 実態はSynology DSMで動いているDocker上で動くGitLabコンテナ
      • gitlab本体以外にPostfresqlとredisが付いてくる仕様
  • 移行先
    • GitLab CE のDockerコンテナ(GitLabが提供しているイメージから)
    • 深く考えずlatest
    • Synology DSM上のDocker上で動かす
      • 他のコンテナに依存しないスタンドアロン仕様

以下移行した手順

  1. Synology DSMのDocker GUIからgitlab/gitlab-ceを検索してイメージを取得
    1. 深く考えずlatest
  2. イメージからコンテナを起動する
    1. 次のURLを参考に、dataとlogsとconfigをコンテナの外に保存する設定を追加
    2. https://docs.gitlab.com/ee/install/docker.html
  3. 新しいGitLabを起動後、最初に画面を開いた時点でrootのパスワードを設定する
    1. と以下のURLに書いてあるが、設定画面が出てこない
    2. https://docs.gitlab.com/ee/install/docker.html
    3. 代わりに、以下を参考にしてコマンドでパスワードを設定する
    4. https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
  4. 普段のユーザーを追加
  5. 古いGitLabから新しいGitLabにリポジトリの移行
    1. 古いGitLabでgitlab-rakeコマンドが無いのかパスが通っていないのか、一括で移行できそうな方法が無理なので断念
    2. 新しいGitLabから古いGitLabのリポジトリを指定してクローン、Dockerのホストが同じためIPが同じで拒否され断念(ポートが違うけど見てくれない)
    3. 古いGitLabでリポジトリをエクスポートして、新しいGitLabでインポートする。これは上手く行った
  6. その他、必要なら設定

特にエクスポートからインポートで消えるデータなどは気にする必要が無いので楽でした。とはいえ本来ならコマンドで一括かつ簡単に移行できそうな所なので、調査不足感は否めない終わりでした

SMARTのPower_On_Hours

DS218jのHDDに、WD Blue(CMR)が入っている
久しぶりに確認してみたら、PowerOnHoursが94まで低下していた

Power_On_Hoursが94まで低下。生データは4420(時間)

ということで、この値が0になるまでの時間を計算してみる(24時間稼働)

4420/6*100 = 73666時間
4420/6*100/24=3069日
4420/6*100/24/365=8.4年

筐体の陳腐化のほうが早そう。実際DS220j出ているし

Synology NASとCMRなHDDとSMRなHDDの比較

データ保存の為のNASを新調した結果、色々とあったのでちょっと書いておきます
218jで試したけど、試してる間に220j出たよ

結論

  • アプリ入れるならCMRなHDDを入れた方が良い

アプリ一切入れないならSMRでも良いかも。でもSynology NAS使う理由もなくなる。

比較方法

  • DS218jにHDDを入れて、各HDD毎に共有フォルダを切る
    • SMR:SeagateのST4000DM004
    • CMR:WDのWD40EZRZ
  • 1回目:初期状態で何もアプリを入れずにベンチマーク
  • 2回目:WDにSynology Driveと依存ソフトをインストールしてベンチマーク
  • 3回目:STにSynology Driveと依存ソフトをインストールしてベンチマーク

アプリケーション追加なし

WD40EZRZの方。特に変な場所は無し
ST4000DM004の方。こちらも問題なし。
これだけ見れば、安くて高性能なHDDです。

WD40EZRZにSynology Driveをインストールする

アプリはインストール先が選べるので、両方試す
今回はWD40EZRZが不利です

不利なはずのWD40EZRZの結果。有利なST4000M004と同じ結果を出している。 こちらはST4000M004。有利なハズだが劣化がひどい。
体感速度の劣化はもっと酷く、ベンチマークは終わる気がしない。

ST4000M004にSynology Driveをインストールする

今度はST4000M004が不利なパターン
もしアプリインストール先の影響がなければ、同じ結果になるはず

まずWD40EZRZ。Synology Driveインストールし忘れたか不安になる結果 そして今回の主役、ST4000DM004の結果
壊れたかと思うくらい遅い

おまけ

その他、気づいた点
どれもこれもST4000DM004に対して良くない印象を得る

CMRなWD40EZRZにSynology Driveをインストール
WD40EZRZのベンチマーク後に、ST4000DM004のベンチした結果
見ての通り、ST4000DM004はI/O待ちが酷すぎてCPUが遊んでいるし、HDDも余裕なWDに対して必死感が伝わってくる。

SMRなST4000DM004にSynology Driveをインストール
WD40EZRZのベンチマーク後に、ST4000DM004のベンチをした結果
ベンチが終わった直後に、謎の負荷が跳ね上がっている。SMRをDBとして使った結果だろうか?
HDDの方は分かりやすい。DBとして使っているだけなのにST4000DM004の必死感が伝わってくる

おまけのおまけ

STのベンチマーク直後の結果はどうなっていると思う?
わかるだろうか、通信はもう終わっている(右下見て)
なのにST4000DM004は負荷がかかったまま帰ってこない
Synology DriveをWDにインストールしようがSTにインストールしようが変わらなかった
この状態、結構長く続くので高頻度で注意。今回のベンチだと1時間くらい維持した気がする(計ってないので体感です)

DirectX SDK インストール S1023対処

古い本が出てきたので弄っていたら、SDK(DXSDK_Jun10.exe)がインストールできない
エラーコードはS1023
文字がバグっていて不安になる

原因

  • SDKより新しい再配布可能パッケージが環境にインストールされている

インストールできた手順

  1. Microsoft Visual C++ 2010 x64 Redistributable を削除
  2. Microsoft Visual C++ 2010 x86 Redistributable を削除
  3. 以下からSDKインストーラを取得
    https://www.microsoft.com/en-us/download/details.aspx?id=6812
  4. 普通にインストール

インストール後は再配布可能パッケージが古くなっているので、必要なら(必要なので入っているのでほぼ必須)再度最新にしておく。

透過pngつなげる2

以前は横にしか繋がらなかったが、縦にもつながるように改善
あと投げた画像を開いたままつかんでいた不具合を修正

縦と横の切り替えはモード切替にしようかと思ったけど、使用時に手間だと思ったので単純にフィールドを区切りました

dlページ
https://nekomatagi.com/works/pngtunageru.html

三角形が表示できた、と思ったら違った

サンプルだけど、三角形が表示できた。
ということで、ソースコード眺めてた。

最初に言わせてほしい、Vulkan滅茶苦茶やる事多い

とりあえず表示できた三角形を載せてみます。

ここから本題。
ソースコードをいくら眺めても頂点情報や色情報を明記した場所が見当たらない。セマフォだとか新しい物はいろいろ知れて理解は幸せなのだが、なぜ三角形が表示されているのかわからない。

答え
そういえばシェーダで宣言してた

結論
事実上、まだ三角形表示できてない

GLSLからSPIR-Vファイルにする

SPIR-Vファイルとは、VulkanにおけるGLSLのシェーダファイルらしい
ただし、SPIR-Vファイルはバイナリファイルなので、直接作成できない

SPIR-Vファイルを得るためには、GLSLからの変換する方法があるとのこと
コマンドは以下の通り

glslangValidator -V 入力シェーダ名 -o 出力シェーダ名

glslangValidator自体はGLSLのチェック用スクリプトらしい。Vオプションで、これをSPIR-Vに変換できる。ただ出力ファイル名を指定しないと生成されなかったのでそっちも追加

ちなみに、最初は直接GLSLファイルを食べさせて食中毒起こしてました。サンプルファイルにGLSLファイルしか置いてなかったらそう思い込むよね・・・