2024年7月29日月曜日

CentOS7からUbuntu24.04に移行してみた

 以下恥の記録です。

CentOS7がついにサポート切れなので、思い切ってUbuntu24.04に移行してみよう!ということで、とりあえずしょっぱなで出会ったトラブルをメモしてみました。
debian系をサーバとして使うのは何十年ぶりかしら。

  1. Ubuntu24.4がFujitsu TX1310 M1にインストールできない。
    なんだかわかないけどエラーが発生しましたなどと言って中断するのはやっぱり「はやくういんどうずになりたい」って感じマシマシな、実にubuntuらしいしぐさだと思いました。
    -> サーバ機のファームウェアを1.12.0にしてUEFI ONLYにしてGPTにしないとインストール不可でした。
    幸先の良い出だしです。
  2. インストーラからネットワークの設定ができない。
    netplanの定義体が4つもできました。
    -> 結局インストール完了後に手動で書き直しました。
  3. 20年来コンパイルしては使い続けてきたCプログラムがコンパイルはできるがリンカでエラーとなる
    -> MakefileのGCCに与える引数の順番を変更で通りました。
    なんだそれ~いまさらそんな変更するの?と思わず声に出ました。
  4. CentOS7のmariadbからmysqldumpでdumpしたファイルからmysqlへリストアするとテーブル作成時にtimestamp(6)関連が全部エラーになる
    -> dumpfileのtimestamp(6)から(6)を取っ払っちまえ
  5. mysqldumpでdumpしたファイルからmysqlへリストアしたあとに何かしようとするとrootでもアクセス権がどうとかでなぜか怒られる
    -> dumpファイルをrestoreした際にmysqlの管理用テーブルをdropしてdump元の古い定義でcreate tableしてしまったせい。見た目は一見正しいけどリストア先にとっては正常なデータじゃないのでエラーとなる。mysqldumpでダンプしたファイルのうち、use mysql;のテーブルをリストアしないようにする。特にmysql.columns_privやuserテーブル。
  6. 一度mysqlを全部クリアして(rm -fr /var/mysql ;mysqld --initialize )再作成したのにユーザが追加できない。
    -> select * from mysql.user;しても確かにいない(これから追加したい)ユーザーをdrop userしてからcreate userすると解決した。
  7. /var/runにあるファイルが実行できない
    ->よく見るとmount時にnoexec属性が付与されていた
    それは正しいように思いますので属性を外さずに/dev/shmに移動してみました
  8. 移動後、なぜか気づいたら /dev/shm にあるファイルの一部が消えてなくなっている
    /etc/systemd/logind.conf の RemoveIPC の値がyesなので「システムユーザー」以外のファイルが消去されることがわかりました。
    -> そのため設定を変更せずに/var配下に新規にtmpfsでmountして配置。これもIPCなはずなのにRemoveIPC がyesのままでも消されませぬ。なんと深い謎。。。
    # なお「システムユーザー」とは今どきのubuntuではuidが1000未満のユーザのことを指すらしいです。古代から引き継いでると普通のユーザのuidが100から(sunosとかそうだったっけ)だったり、比較的新しくても500だったりするので要注意。
  9. Super I/Oのカーネルモジュールが全然用意されていない
    coretempだけでいいという割り切り思想かしら。
    -> 面倒なので lm-sensorsをインストールしてsch5636を取り寄せて手動で /etc/modules-load.d/sch5636.conf ファイルを作成してロードさせるようにしました。
  10. dnsmasqを使用したいのにport53がつかまれている
    172.0.0.53が /etc/resolv.conf に定義されていて、それのあて先は systemd-resolved になっていました。
    こういうふうに小手先でごちゃごちゃやり始めているディストリの人たちからは距離を置きたいので、システムの設定を極力いじりたくありません。
    -> そこで、netplanでNICに対してDNSに自分自身のIPアドレスを指定して、あとはdnsmasqから本来のDNSに飛ばすようにしました。
    例:
    このサーバのIPアドレス: 192.168.0.100 <- netplanのDNSに指定
    DNSサーバ
    のIPアドレス: 1.2.3.4 <- dnsmasq.conf  server=1.2.3.4 を追記
    (dnsmasq.confを編集せず/etc/dnsmasq.d/配下にconfを作るとubuntuしぐさ)
  11. phpの時刻がutcとかmbstring非対応とかperlの仕様変更とか
    ->confの変更やソースの変更で対処。
    perl ってまだ枯れ切ってなかったんだなあとしみじみ。
  12. apache2の設定ファイルが細切れのぶつ切れでどこになにが定義されているのかわからない
    ->ubuntuしぐさなので仕方ありません。grep -r しまくってa2enxxxx。
    地味に時間がかかります。
    ついでに言うとapache2のlogファイル名が_logでなくて.logで、logs/でなくて絶対パス指定。こだわるエネルギーの使いどころに興味津々です。
  13. webalizerの画像内の日本語が化ける
    ->面倒なので /usr/share/locale/ja/LC_MESSAGES/webalizer.mo をrenameして英語化してごまかしました。
    テキストも化けるんですが、これはwebalizer.confで
    HTMLHead <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
    で化けなくなります。むろん画像には効果はありません。
    そこでtruetypeフォントを指定しましたがやはり化けます。
    moファイルはutf8なのですが、ビルドしたgdライブラリがsjisのみなのかな?
    なお、ちゃんとデフォルトdaccess_logでなくaccess.logを参照するように構成されている親切設計です。
  14. sambaでユーザ認証を必要とするディレクトリにアクセスできない
    -> sambaのuserのsidをwindowsからアクセスするユーザのsidと一致させるとアクセス可能となりました。
    一致させない場合、sambaでアクセスするhomedirはchmod 750にしないとアクセスできないという不思議な現象も。sidを一致させたら755でもアクセス可能になりました。当環境がSMB3だからかしら?
  15. sambaのguest userがcentos7ではnobody(99)
    ->adduserでsamba-guestユーザを作成してuid/gidが99:99のファイルをchown。
    find . -uid 99 -print | xargs chown yyはうまくいかないので -exec chown  yy {} \; を使うと吉です。
  16. sshすると/etc/motdの内容が2回表示される
    さすがにあほすぎる。。。とにかく広告を見せたくて「はやくういんどぅずになりたいでござる」病にかかってるのがよくわかります。GUIだけにしとけばいいのに
    -> 承知の上でやってきた当方としてはubuntu側をいじらずに /etc/ssh/sshd_config でPrintMotd パラメータをnoにして対処しました。
なんだかまだあったと思いますが、ざっとこんな感じです。
ありがとうCentOS7
さようならCentOS7
こんにちはUbuntu24。
以上、お恥ずかしい限りです。
ここまでお読みいただいてありがとうございました。


2024年7月20日土曜日

Western Digital WD60EZAX の IntelliPark (idle3) のタイムアウト値

 まず結論から申し上げます。10秒でした。

以上です。

以下たわごとです。

過日、12年物の東芝のD01ACA200が突然死してしまいました。よく頑張ってくれました。

そこで、代替を物色したところ、一時期に比べて価格が大幅に上がっていて驚きました。いろいろ検討しましたが、IntelliParkが切れないと評判の一品、WD60EZAX が\14,500円だったので、故障した玉とは別に予防交換用として1玉、併せて2玉購入しました。モデル名とファームウェアのバージョンは両者ともに次の通りです。

Device Model:     WDC WD60EZAX-00C8VB0
Firmware Version: 01.01A01

さっそくエージングを行うのと並行して、実際にidle3タイマの値を取得・変更できないか試してみました。

1
2
# idle3ctl -g /dev/sdb
sg16(VSC_SENDKEY) failed: Input/output error

とのことなので、値すら取れず、駄目でした。なお、idle3タイマを切れる別のWD40EZRZ (ちなみにLoad_Cycle_Countが29,441時間で534,518回) という玉で idle3ctl コマンドの有効性を確認しております。

※Load_Cycle_CountはWindowsで普及しているCrystalDiskInfoでは"ロード/アンロードサイクル回数"と表記されていますので適宜読み替えてください。

で、今回調達したWD60EZAXのうち、よく編集するファイルなどが配置されるドライブに1玉割り当ててみました。そのほうはたった24時間でLoad_Cycle_Countが140回を超えました。ファイルを編集しながらこまめにセーブするだけでどんどんLoad_Cycle_Countが上がってゆくイメージです。こういった使い方だと保証期間が2年とすると17,520時間なので、245,000回となりますので、保証期間内では問題なさそうです。

で、ついでに作業の合間にidle3のタイマー値を実測してみました。方法は次のようなスクリプトを一定時間流してLoad_Cycle_Countの値を見てみるという原始的なものです。

1
2
3
4
5
6
7
#!/bin/sh
while :; do
        smartctl -a /dev/sdb | grep Load_Cycle_Count
        #sleep 7 # OK
        sleep 9 # OK
        # sleep 11 # NG
done

結果は9秒毎にS.M.A.R.T.情報を取得した場合は増加しませんが、11秒毎だと増加が認められましたので10秒と判断した次第です。

もうひと玉は別OS下で LibreHardwaraMonitor が一秒毎に情報を更新している環境下での利用のため、つまりS.M.A.R.T.値を取得するために毎秒アクセスされるので、IntelliParkの出番はなさそうです。

以上、たわごとでした。

ここまでお読みいただいてありがとうございました。