systemdでディストリビューションのramlogを開始します

「限界ノート」シリーズから。 自分を忘れないように、しかし誰かが役に立つかもしれません。

Raspberry Pi 2を購入した後、1週間は生きていなかったOdroid XU4は、システムをインストールして初期設定するためのゆるやかなシャーマニズムに置き換えられました。 最愛のramlogのインストール(怠け者ではなく、手でアンパック)を拒否しただけでなく 、強制的な「実装」の後に開始することを拒否したときの失望は何でしたか。 絶望的でグーグルを要求して、「完全に」という言葉から、それはsystemdとの友達ではないことがわかりました。

すでに彼自身のものの大騒ぎをする準備がほとんどできていたので、私はドイツ語のポストに出くわしまし 。そこで、「適応した」ramlogが言及されました。 すぐにダウンロードした画像を確認すると、まさに私が望んでいたことが行われたことがわかりました。 したがって、自転車を発明する代わりに、すでに準備されたものを使用することを提案します

仕組み


ramlogの古いバージョンと新しいバージョンはどちらも同じ原理で動作します:ブート時に/ var / logをダウンロードし、コマンドまたはシャットダウンによってディスクに書き込みます。

新しいバージョンとの違いは、systemd起動メカニズムの使用とアーカイブ内のログの保存です。これにより、アーカイブおよび変更されていないファイルを犠牲にしてコードが根本的に簡素化されます。 さて、独自のRAMディスクを起動する代わりに、tmpfsが使用されます。この場合、スワップに移行します(そして、zram上にあり、ディスクにアクセスできない可能性が十分あります)

設置


  1. ramlog-aサービス(/ usr / bin / ramlog)を作成します。
    / usr / bin / ramlog
    #!/bin/sh . /lib/lsb/init-functions start() { log_begin_msg "RAMLOG: Read files from disk.." tar xfz /var/ram_log.tar.gz -C / log_end_msg 0 } stop() { log_begin_msg "RAMLOG: Write files to disk.." tar cfz /var/ram_log.tar.gz --directory=/ var/log/ log_end_msg 0 } case "$1" in start) start ;; stop) stop ;; flush) stop ;; *) echo "Usage: $0 {start|stop|flush}" exit 1 esac 


  2. systemdのエントリ(/etc/systemd/system/ramlog.service)を作成します。
    非表示のテキスト
     [Unit] Description=Ramlog After=local-fs.target Before=cron.service syslog.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ramlog start ExecStop=/usr/bin/ramlog stop [Install] WantedBy=multi-user.target 

  3. CRONにレコードを追加して、ログを定期的に保存します。
     # ... #  15 ,    */15 * * * * /usr/bin/crontab flush >/dev/null 2>&1 

  4. / etc / fstabを編集し、/ var / logをtmpfsに転送します。
     tmpfs /var/log tmpfs nodev,nosuid 0 0 

  5. サービスをインストールします。
     # insserv # systemctl enable ramlog.service 

  6. サービスを開始します
     # systemctl start ramlog.service 

    これで、次回の再起動時に/ var / logの内容が/var/var_log.tar.gzに保存され、tmpfsにすでにロードされます
  7. ...利益!


ウィッシュリスト


元のramlogとの類推によって作業のロジックをやり直すことは非常に可能です-保存するためにパッケージ化する代わりにrsyncを実行するだけです。 フラッシュドライブを使用する場合の「収益性の高い」とは何ですか?

圧縮されたtmpfsのアイデアは空中にありましたが、何とかグーグルアップされたもののまだ妥当なものはありませんでした。

ネットワークドライブを含む他のフォルダーの保存を舗装できます。 systemdパラメーターを処理して、このケースが開始される順序を構成する必要がある場合を除きます。

Source: https://habr.com/ru/post/J272279/


All Articles