isLandcenter 非番中

ブログトップ | ログイン

タグ:システム管理 ( 117 ) タグの人気記事

Microfocus Open Enterprise Server (OES Linux)はファイルサーバーに特化したシステムです。セキュリティ面での柔軟性、高機能性には特筆するものがあります。

その一つが、ユーザがどの端末からログインしているかを確認。指定した端末以外からログインをブロックする機能、ケツを拭かないでトイレを使うユーザの多重ログインを防止する機能です。



1.OES Linux のファイルサーバーでゴォーンさんのログオンアドレスを調べたい。
2.OES Linux のファイルサーバーでゴォーンさんがログインできるIPアドレスを制限したい。
3.OES Linux のファイルサーバーでゴォーンさんが同時ログインできる台数を制限したい。

- ユーザはどのIPアドレスからログインしているかを調べる -

OES Linux の iManager > "ユーザー名" modify Object の General タブから、ユーザが現在ログインしているIPアドレスを調べる事ができます。

ユーザのどの端末のIPからログイン?許可されたIPアドレスでログイン制限_a0056607_11352495.png




ー ユーザがログインできるIPアドレスを制限したい ー

例えば、ゴーンさんのような、特殊な経営者や特許に関わるエンジニア、システム管理者やヘルプデスク、パートさん、総務、経理などのユーザには、特定のPC(IP アドレス)からのみ、アクセスさせたい場合があります。この人たちが許可なく、他所のフロアの他人のPCからデータの持ち出しをさせたくない場合などですね。固定したIPからはログインできるけど、DHCPのネットワークからはログインさせたくない。

その場合、固定IPをもった、特定のIPからしかログインできないようにする機能が Novell OES Linux にあります。

iManager >Modify Object > "ユーザ" > Restrictions タブ > Address Restriction に、ユーザが「ログイン許可」できるIPアドレスを記述します。

ユーザのどの端末のIPからログイン?許可されたIPアドレスでログイン制限_a0056607_11355688.png

IPアドレス制限をかけると、許可されていないアドレックスからアクセスすることはできなくなります。

ユーザのどの端末のIPからログイン?許可されたIPアドレスでログイン制限_a0056607_11365559.png

- 同時接続数を制限する -

よくある、「ケツも拭かずに片っ端からPCにログインしまくる」ヒトを取り締まり、セキュリティを確保するための方法として、同時ログインするユーザを制限する方法が、OES Linux には普通にあります。

iManager >Modify Object > "ユーザ" > Restrictions タブ > Login Restriction の Limit Concurrent connections をチェックして、同時接続数に”2”以上の数値を設定します。

※ ”1”だと eDirectory の仕様により、うまくログインできない場合がありました。今はよく分かりません。

ユーザのどの端末のIPからログイン?許可されたIPアドレスでログイン制限_a0056607_11375480.png

なお、このログイン制限は NCP (524ポート)プロトコルを使った場合にのみ有効で、SMB/CIFS,FTP,NFS など、違うプロトコルを使った場合は制御できません。

セキュリティ上、重要なサーバーには CIFS などをインストールせず、Microforcus Client for OES を使ってNCP のみの接続制限をすることをお勧めします。

User Restrictions: Some OES Limitations#

This is generally true, with two important exceptions:
* Maximum number of concurrent connections in login restrictions
* Address restrictions
These two specific restrictions are enforced only for users who are accessing the server through NCP. Connections through other access protocols (for example, HTTP or CIFS) have no concurrent connection or address restrictions imposed.
For this reason, you probably want to consider not enabling services such as SSH and FTP for LUM when setting up Linux User Management. For more information on SSH and LUM, see Section 9.4, SSH Services on OES.










by islandcenter | 2020-02-15 12:16 | SUSE | Comments(0)

SUSE Linux 15(openSUSE/SLE) にコンパイラをインストールする方法です。

SUSE Linux Enterprise 15(SLE) から、インストールの手順の中に開発環境のインストール手順が見当たらなかったのでその補完です。




- SLE15 の場合 -

yast より yast2 がいいでしょう。

yast2 の Software > "Add-on Packgage" か "Software Repositories" のどちらからか、レポジトリの追加をします。ソースとして、SLE15 の Package DVD1 を指定します。利用可能な Extension に "Development Tools...." がリストされるので、チェックを入れます。
SUSE Linux15(SLE/openSUSE) 開発環境をインストール_a0056607_15544489.png

この後、 Software Management の中から "View" をトグルして "Pattern" に変更して、”Development” の必要なパッケージをインストールします。
SUSE Linux15(SLE/openSUSE) 開発環境をインストール_a0056607_15555033.png


- opensuse15.1 の場合-

opensuse15.1の場合は、そのまま Software Management の中から "View" をトグルして "Pattern" に変更して、”Development” 以下の必要なパッケージをチェックします。

SUSE Linux15(SLE/openSUSE) 開発環境をインストール_a0056607_15583237.png




isLandcenter.jp



by islandcenter | 2020-02-10 15:53 | SUSE | Comments(0)

一般的に Linux のファイルアクセス監査ってどうするのか、ふと疑問が出てきました。そこで、SUSE Linux 15(openSUSE/SLE) でファイルアクセス監査ツール inotify-tools を使ったファイルアクセスのチェック方法を調べてみました。

inotify - get your file system supervised

inotify自体は、カーネルに組み込まれた API でそのAPIから、ファイルアクセス監視をするためのツールが inotofiwait と inotifywatch コマンドです。



- openSUSE 15 での inotify-tools インストール -

openSUSE 15.1 では標準リポジトリに inotify-tools パッケージが含まれているので、zypper か YaST の Software Management からインストールできます。

SUSE Linux 15 inotify-tools でファイルアクセス監査_a0056607_12173895.png



- SLE15 の場合 inotify-tools のインストール -

SLE15 の標準パッケージや、リポジトリに含まれていません。2020の現時点では1 Click Install はできないようです。

そこで openSUSE の 1  Click インストールから、"Expart Download"を開いて、指示通り zypper install しました。SLE のユーザ登録したレポジトリではないので、エラーが出まくりました。エクスパートインストールでは、次のコマンドラインが提示されたので、そのまま実行してインストールできました。


# zpper addrepo https://download.opensuse.org/repositories/filesystems/SLE_15/filesystems.repo
# zypper refresh
# zypper install inotify-tools

インストールができたら、inotifywait, inotifywatch というコマンドがインストールされます。
opensuse151:~ # find / -name "inotify*"
/usr/share/man/man1/inotifywait.1.gz
/usr/share/man/man1/inotifywatch.1.gz
/usr/share/man/man7/inotify.7.gz
/usr/share/man/man2/inotify_add_watch.2.gz
/usr/share/man/man2/inotify_init.2.gz
/usr/share/man/man2/inotify_init1.2.gz
/usr/share/man/man2/inotify_rm_watch.2.gz
/usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/bits/inotify.ph
/usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/linux/inotify.ph
/usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/sys/inotify.ph
/usr/bin/inotifywait
/usr/bin/inotifywatch
/proc/sys/fs/inotify


- inotifywait のヘルプを見てみた -

opensuse151:~ # inotifywait --help
inotifywait 3.14
Wait for a particular event on a file or set of files.
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
Options:
        -h|--help       Show this help text.
        @<file>         Exclude the specified file from being watched.
        --exclude <pattern>
                        Exclude all events on files matching the
                        extended regular expression <pattern>.
        --excludei <pattern>
                        Like --exclude but case insensitive.
        -m|--monitor    Keep listening for events forever.  Without
                        this option, inotifywait will exit after one
                        event is received.
        -d|--daemon     Same as --monitor, except run in the background
                        logging events to a file specified by --outfile.
                        Implies --syslog.
        -r|--recursive  Watch directories recursively.
        --fromfile <file>
                        Read files to watch from <file> or `-' for stdin.
        -o|--outfile <file>
                        Print events to <file> rather than stdout.
        -s|--syslog     Send errors to syslog rather than stderr.
        -q|--quiet      Print less (only print events).
        -qq             Print nothing (not even events).
        --format <fmt>  Print using a specified printf-like format
                        string; read the man page for more details.
        --timefmt <fmt> strftime-compatible format string for use with
                        %T in --format string.
        -c|--csv        Print events in CSV format.
        -t|--timeout <seconds>
                        When listening for a single event, time out after
                        waiting for an event for <seconds> seconds.
                        If <seconds> is 0, inotifywait will never time out.
        -e|--event <event1> [ -e|--event <event2> ... ]
                Listen for specific event(s).  If omitted, all events are
                listened for.

Exit status:
        0  -  An event you asked to watch for was received.
        1  -  An event you did not ask to watch for was received
              (usually delete_self or unmount), or some error occurred.
        2  -  The --timeout option was given and no events occurred
              in the specified interval of time.

Events:
        access          file or directory contents were read
        modify          file or directory contents were written
        attrib          file or directory attributes changed
        close_write     file or directory closed, after being opened in
                        writeable mode
        close_nowrite   file or directory closed, after being opened in
                        read-only mode
        close           file or directory closed, regardless of read/write mode
        open            file or directory opened
        moved_to        file or directory moved to watched directory
        moved_from      file or directory moved from watched directory
        move            file or directory moved to or from watched directory
        create          file or directory created within watched directory
        delete          file or directory deleted within watched directory
        delete_self     file or directory was deleted
        unmount         file system containing file or directory unmounted
opensuse151:~ #


- inotifywait の使用例 -

1. 一番単純な使い方

opensuse151:~ # inotifywait   /etc/hosts
Setting up watches.
Watches established.
/etc/hosts OPEN
opensuse151:~ #

ファイルオープンの後 access がありますが、一発目のイベント、”open” のみ記録されます。
今度は -e イベント access を付けて、「ファイルが読みだされた」イベントを監視します。

opensuse151:~ # inotifywait   -e access  /etc/hosts
Setting up watches.
Watches established.
/etc/hosts ACCESS
opensuse151:~ #

2. 指定した /etc/passwd ファイルに -e vent に access 一発アクセスがあれば log.txt に時刻を記録してそのまま終了する。

常駐したら /etc/passwd ファイルを読み込んでみます。

opensuse151:~ # inotifywait  -e access  --outfile=log.txt -q  --format \
'%T %w%f (%e)' --timefmt '%F %T'  /etc/passwd 
opensuse151:~ # cat log.txt
2020-02-08 13:42:55 /etc/passwd (ACCESS)
opensuse151:~ # ps ax | grep inotify
18129 pts/0    S+     0:00 grep --color=auto inotify
opensuse151:~ #


一発アクセスで終了した。

3. -r オプションで /etc/ の下の何かのファイルに -e イベント Access があれば記録する。-m は常駐モニタモード、 -r で指定したディレクトリ以下を全部再帰的に監査。
コマンドの末尾に "&" を付けてデーモン化させる。 --outputfile でログファイルに記録する。


opensuse151:~ # inotifywait -m -r -e access  \
--outfile=log.txt -q /etc/ &
[2] 17390
opensuse151:~ # cat log.txt
/etc/ ACCESS passwd
/etc/ ACCESS passwd
/etc/ ACCESS hosts
opensuse151:~ # ps ax | grep inoti
17390 pts/0    S      0:00 inotifywait -m -r -e access --outfile=log.txt -q /etc/
17410 pts/0    S+     0:00 grep --color=auto inoti

opensuse151:~ # kill 17390 ログがあふれるのでkillする


常駐しているので kill しました。
常駐しているので複数のイベントが記録されます。

4. 3.にもう少し色を付けてアクセス時刻をログに書きます。& を付けてデーモン化させます。
opensuse151:~ # inotifywait -m -r -e access  --outfile=log.txt \
q --format '%T %w%f (%e)' --timefmt '%F %T' /etc/ &
[2] 17743
opensuse151:~ # ps ax | grep inoti
17743 pts/0    S      0:00 inotifywait -m -r -e access --outfile=log.txt -q --format %T %w%f (%e) --timefmt %F %T /etc/
17753 pts/0    R+     0:00 grep --color=auto inoti
opensuse151:~ # kill 17743
opensuse151:~ # cat log.txt
2020-02-08 13:37:40 /etc/passwd (ACCESS)
2020-02-08 13:37:50 /etc/hosts (ACCESS)
opensuse151:~ #


ファイルアクセスのイベントが記録できますが、低水準ファイルシステムの API なので、誰がアクセスしたのかの監視はできないようです。

- inotifywatch も見てみる -

こちらは、ファイルアクセスのイベントの統計を取るために利用します。
まず inotifywatch のヘルプから

opensuse151:~ # inotifywatch --help
inotifywatch 3.14
Gather filesystem usage statistics using inotify.
Usage: inotifywatch [ options ] file1 [ file2 ] [ ... ]
Options:
        -h|--help       Show this help text.
        -v|--verbose    Be verbose.
        @<file>         Exclude the specified file from being watched.
        --fromfile <file>
                Read files to watch from <file> or `-' for stdin.
        --exclude <pattern>
                Exclude all events on files matching the extended regular
                expression <pattern>.
        --excludei <pattern>
                Like --exclude but case insensitive.
        -z|--zero
                In the final table of results, output rows and columns even
                if they consist only of zeros (the default is to not output
                these rows and columns).
        -r|--recursive  Watch directories recursively.
        -t|--timeout <seconds>
                Listen only for specified amount of time in seconds; if
                omitted or 0, inotifywatch will execute until receiving an
                interrupt signal.
        -e|--event <event1> [ -e|--event <event2> ... ]
                Listen for specific event(s).  If omitted, all events are
                listened for.
        -a|--ascending <event>
                Sort ascending by a particular event, or `total'.
        -d|--descending <event>
                Sort descending by a particular event, or `total'.

Exit status:
        0  -  Exited normally.
        1  -  Some error occurred.

Events:
        access          file or directory contents were read
        modify          file or directory contents were written
        attrib          file or directory attributes changed
        close_write     file or directory closed, after being opened in
                        writeable mode
        close_nowrite   file or directory closed, after being opened in
                        read-only mode
        close           file or directory closed, regardless of read/write mode
        open            file or directory opened
        moved_to        file or directory moved to watched directory
        moved_from      file or directory moved from watched directory
        move            file or directory moved to or from watched directory
        create          file or directory created within watched directory
        delete          file or directory deleted within watched directory
        delete_self     file or directory was deleted
        unmount         file system containing file or directory unmounted
opensuse151:~ #


-e でイベント access, open を -r で /etc の下全部 -t 20 秒間、 -v verbose モードで統計を取ってみる。 
opensuse151:~ # inotifywatch -r -e access -e open -t 20 -v /etc
Establishing watches...
Setting up watch(es) on /etc
OK, /etc is now being watched.
Total of 394 watches.
Finished establishing watches, now collecting statistics.
Will listen for events for 20 seconds.
total  access  open  filename
6      0       6     /etc/zabbix/web/
6      2       4     /etc/
opensuse151:~ #




- まとめ -

実際には、スクリプトを書いて、特定のファイルにイベントが発生したらログに残すとかメールするとかに使えるようです。

また、incron と言う cron の様なツールで、イベントが発生したら処理を実行するという地味に資料が少ないツールも別にありました。試してみるのもいいでしょう。

inotify - get your file system supervised

inotify

また audit コマンドが openSUSE 15 には標準で入っているようなので、これもまた方法。それに AppArmor もあったなぁ。それぞれ目的も用途も違います。
と、あまり突っ込むとハマりそうで深いのがファイルアクセス監査のツールなのだな、と感じました。





by islandcenter | 2020-02-10 13:21 | SUSE | Comments(0)

SUSE Linux でパッケージインストール、色々な方法

このブログにたどり着いた方には、どうも SUSE Linux のパッケージのインストール方法が分からずに来てしまった方が多い様です。お気の毒です。こんなに内容のない記事しか頼りにならないのも何とかしたいものです。

パッケージのインストール方法は幾つかの方法があります。

  • コンパイルしてインストール
  • rpm のインストール
  • zypper ツールによるインストール
  • YaST によるインストール
  • ブラウザから1クリックインストール

という事で、SUSE Linux 15(openSUSE/SLE) でのパッケージのインストール方法を幾つかご紹介します。

- よくある間違え -

パッケージ管理のコマンドを実行中は、パッケージDBがロックされ、他のパッケージ管理コマンドはエラーになってしまいます。

例えば

# zypper update

実行中は YaST のソフトウェア管理は使えません。また、Software Management のアイコンをダブルクリックしてしまう。よくやっちゃう間違えです。

- こだわるヒトは make する -

もう、ソースコードしかない場合や、プロプラエタリなデバイスドライバのバイナリパッケージをインストールする場合ですね。

デバイスドライバなどを make install する場合、なるべくカーネルパッチなど当たっていない、「素の状態」でインストールする事をお勧めします。ドライバ屋さんも、最新パッチが当たった状態で make することは考えていないようなので、カーネルがマイナーバージョンアップした状態で、見事にコンパイルエラーとなった事がありました。


- お馴染みの rpm -

単体の依存性が少ない rpm パッケージは rpm コマンドでインストールするか、nautilus ファイルマネージャなどで右ボタンから開くとそのまま yast2 が起動してインストールができます。

SUSE Linux でパッケージインストールの色々な方法_a0056607_12154329.png

公式リポジトリになかったり、どこかに「落ちていた」パッケージをインストールするにはこの方法でしょうか。

後にも説明しますが、software.opensuse.org にあるパッケージから1クリックインストールできない場合も、rpm をダウンロードしてインストールします。

他には rpm -qa でパッケージのバージョンを確認する時に使います。

- バッチ処理向けの zypper -

他のディストリビューションでは yum や apt に相当するコマンドです。

例えば、inotify-tools パッケージをインストールする場合は次の様に実行します。

opensuse151:~ # zypper in inotify-tools
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 2 NEW packages are going to be installed:
inotify-tools libinotifytools0

2 new packages to install.
Overall download size: 57.9 KiB. Already cached: 0 B. After the operation, additional 111.7
KiB will be used.
Continue? [y/n/v/...? shows all options] (y): y
Retrieving package libinotifytools0-3.14-lp151.2.3.x86_64

: 略

opensuse151:~ #

SUSE Linux でパッケージインストールの色々な方法_a0056607_12161153.png


恐らく次に説明する、yast/yast2 のパッケージ管理を使い始めると、面倒くさくてやってられないよ、という事になりそうです。

一番使いそうなのが # zypper update と zypper patch でしょう。インストールが終わって、おおよそのサービスやデバイスドライバが問題なくうごいたら、 zypper update を使って全てのインストール済のパッケージをアップデートできます。YaST Online Update (YOU) だと一つ一つアップデートするため、非常に面倒くさい。 YOU はピンポイントでパッケージをアップデートする作業に向いています。

zypper update は時間がかかります。

opensuse151:~ # zypper update
Loading repository data...
Reading installed packages...

The following 11 package updates will NOT be installed:
cdda2wav cdrecord libnuma1 libscg1_0 libssh4 lsof mkisofs numactl prctl urlscan urlview

The following 15 NEW packages are going to be installed:
firebird gnome-shell-classic-session kernel-default-4.12.14-lp151.28.36.1 libfbclient2
libfreebl3-hmac libib_util libidn2-lang libixion-0_15-0 libmediacheck5 liborcus-0_15-0
libprocps7 libreoffice-base-drivers-firebird librevenge-stream-0_0-0 libsoftokn3-hmac
libtommath1

The following package is going to be REMOVED:
libwicked-0-6

The following 517 packages are going to be upgraded:

: 略

全体ではなくセキュリティパッチなどを適用するなら

# zypper patch

でも十分でしょう。

Zypperの使用

ただし zypper はシェルに組み込んで、インストールや設定をバッチ化できるので、沢山 SUSE Linux に付き合うヒトには向いているかもしれません。



- 綴りが分からなくてもインストールできる yast/yast2 -

パッケージの正しい綴りもバージョンも分からないけど、パッケージを操作したい。その場合の強力なツールが YaST です。


# yast コマンドはテキストコンソールで、カーソルキーや Tab キーなどでサクッ使い。 GUI 環境では複雑なパッケージを調整したり、じっくりリポジトリを変更するには GUI のコピーペーストが簡単な # yast2 コマンドの二つがあります。

SUSE Linux が他のディストリビューションとは段違いに使いやすいと思ってしまう最大の特徴があるYaSTの機能です。

テキストコンソールでは

# yast

GUIでは YaST アイコンを開くか、xterm などから

# yast2 &

でGUIが開きます。

yast と yast2 は見てわかる通り、メニューの階層構造やタブの位置、執行するための Accept ボタンもほとんど同じ場所にあります。

YaSTでパッケージをインストールするには、YaST > Software > Software management から、インストールしたいパッケージやキーワードを適当に "Search" します。リポジトリにあれば、綴りが分からなくても、キーワードに一致するパッケージのリストから、チェックマークを付けてインストールするだけです。

ここでは "ino...." というキーワードで探して "inotify-tools" というパッケージをインストールしようとしています。

SUSE Linux でパッケージインストールの色々な方法_a0056607_12170722.png
SUSE Linux でパッケージインストールの色々な方法_a0056607_12173895.png

YaST ツールは、エンジニアから「タッチタイピング」というエンジニアの秘儀を忘れさせてしまうキラーツールです。頼りすぎると、私の様に他のディストリビューションに戻れないダメ人間製造機、危険なツールかもしれません。

また、YaST のパッケージ管理は YaST の機能の一部です。インストールから、サービスの初期設定、チューニングまで YaST で完結できる強力なツールです。

- 1 Click Install -

公式リポジトリにない、あるいは公式リポジトリにあっても古いパッケージなので、最新版をインストールしたい場合は、ブラウザを使って software.opensuse.org の1クリックインストールを使うと良いでしょう。1クリックインストールのメタファイルを開くと、YaST が起動して自動的にリポジトリの追加から、必要なパッケージのダウンロード、インストールまで、ウィザード形式でやってくれます。

software.opensuse.org は、基本 openSUSE のタメのものですが、SLE 用の1クリックインストールもあるので、SLE でも使えます。ただし SLE のサブスクリプションを購入しているなら、自己責任です。openSUSE のリポジトリが追加されます。

テクニカルサポートの指示に従って正しく利用すべきでしょう。SLE ではうまくインストールできなかったり、不安定なケースがあります。出来るだけシステム依存の少ないパッケージをインストールしたい場合は便利です。1クリックインストールが上手くいかない場合は、”Expart Download” から、手動でインストールすると上手くいく場合があります。

openSUSE では問題が少ないのですが、SLE の場合と時折トラブります。まぁ依存性の少ないパッケージなら、ほとんど問題には出会わないンですけどね。時々 opensuse のサイトが不安定なのがガンです。

SUSE Linux でパッケージインストールの色々な方法_a0056607_12181015.png

- まとめ -

SUSE Linux(openSUSE/SLE) のパッケージ管理ツールの全体をまとめると

- YaST は初心者からベテランまでパッケージ管理に使えるツール
- コマンドライン命で YaST が使いにくいケースでは zypper を使う。スクリプト化にも便利、中上級者向け
- rpm や make install は他に手段が無い場合につかう。

と言ったところです。


by islandcenter | 2020-02-07 12:45 | SUSE | Comments(0)

dstat は vmstat, iostat, netstat などの stat 系管理ツールをまとめた、多用途管理ツールです。

SESE Linux(SLE/openSUSE)15 ではデフォルトでインストールされていないので、 yast > software > Software Manegement から検索するか、 software.opensuse.org から検索して、1クリックインストールします。

SUSE Linux の stat 系管理ツール多用途ツールdstat を使ってみる_a0056607_14164159.png



Seagate BarraCuda 3.5" 2TB 内蔵ハードディスク HDD 2年保証 6Gb/s 256MB 7200rpm 正規代理店品 ST2000DM008

新品価格
¥6,566から
(2020/1/19 14:36時点)



Anker PowerCore 10000 (モバイルバッテリー 10000mAh 最小最軽量 大容量)【PSE認証済/PowerIQ搭載】 iPhone&Android対応 *2019年12月時点 (ブラック)

新品価格
¥2,799から
(2020/1/20 12:36時点)

- まずは動かしてみる -

まず使ってみます。デフォルトで1秒間隔でステータスを返してくれます。

sle15:~ # dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
5 1 89 5 0| 52k 996k| 0 0 | 13B 298B|1335 3784
4 1 92 3 0|4096B 520k| 85k 86k| 0 0 |1373 3876
6 1 89 4 0|4096B 348k| 109k 112k| 0 0 |1500 4161
5 1 91 4 0|4096B 524k| 65k 66k| 0 0 |1312 3726
5 1 91 3 0|8192B 413k| 109k 112k| 0 0 |1412 4268
11 1 85 2 0|4096B 156k| 158k 162k| 0 0 |1517 3951
5 2 80 13 0| 0 1224k| 105k 106k| 0 0 |1498 4045
4 1 90 5 0| 0 3384k| 72k 72k| 0 0 |1327 3942
5 1 92 2 0| 0 224k| 112k 113k| 0 0 |1405 4070
5 1 91 3 0|8192B 780k| 90k 90k| 0 0 |1342 3978 ^C
sle15:~ #

ー help を見てみる ー

Help で使い方を調べてみます。

sle15:~ # dstat --help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
-c, --cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, --disk enable disk stats
-D total,hda include hda and total
-g, --page enable page stats
-i, --int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-l, --load enable load stats
-m, --mem enable memory stats
-n, --net enable network stats
-N eth1,total include eth1 and total
-p, --proc enable process stats
-r, --io enable io stats (I/O requests completed)
-s, --swap enable swap stats
-S swap1,total include swap1 and total
-t, --time enable time/date output
-T, --epoch enable time counter (seconds since epoch)
-y, --sys enable system stats

--aio enable aio stats
--fs, --filesystem enable fs stats
--ipc enable ipc stats
--lock enable lock stats
--raw enable raw stats
--socket enable socket stats
--tcp enable tcp stats
--udp enable udp stats
--unix enable unix stats
--vm enable vm stats
--vm-adv enable advanced vm stats
--zones enable zoneinfo stats

--list list all available plugins
--<plugin-name> enable external plugin by name (see --list)

-a, --all equals -cdngy (default)
-f, --full automatically expand -C, -D, -I, -N and -S lists
-v, --vmstat equals -pmgdsc -D total

--bits force bits for values expressed in bytes
--float force float values on screen
--integer force integer values on screen

--bw, --black-on-white change colors for white background terminal
--color force colors
--nocolor disable colors
--noheaders disable repetitive headers
--noupdate disable intermediate updates
-o, --output file write CSV output to file
--profile show profiling statistics when exiting dstat
-V, --version show version and system info
--debug 1,2,3 debug mode

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)

sle15:~ #


- とりあえず全部見る dstat -af -

-af オプションですべてのステータスを見てみます。ディスクの数が多いと、画面に収まり切りません。

sle15:~ # dstat -af
--total-cpu-usage-- --dsk/sr0-----dsk/vda-- --net/eth0- ---paging-- ---system--
usr sys idl wai stl| read writ: read writ| recv send| in out | int csw
1 0 93 5 0| 1B 0 :7910B 535k| 0 0 | 3B 22B| 192 411
1 0 91 7 0| 0 0 : 0 190k| 560B 270B| 0 0 | 212 337
1 0 89 10 0| 0 0 : 0 692k|3206B 716B| 0 0 | 236 520
1 1 72 25 1| 0 0 : 0 2500k| 518B 1756B| 0 0 | 176 495
0 0 98 2 0| 0 0 : 0 873k| 728B 784B| 0 0 | 193 383
6 2 84 8 0| 0 0 : 112k 1010k| 660B 566B| 0 0 | 290 773 ^C
sle15:~ #


- インターバルを指定する n -

デフォルトインターバルを3秒に設定してみました。

sle15:~ # dstat 3
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
5 1 89 5 0| 52k 996k| 0 0 | 13B 298B|1335 3784
5 2 91 3 0|2731B 391k| 51k 51k| 0 0 |1331 3851
5 1 90 4 0|1365B 504k| 76k 76k| 0 0 |1349 4053
5 1 86 7 0|5461B 639k| 75k 75k| 0 0 |1475 3987
5 1 89 5 0|4096B 358k| 93k 93k| 0 0 |1380 4637 ^C
sle15:~ #

- vmstat の互換モードで表示する -v -

-v を付けると vmstat と同じフォーマットで出てきます。

sle15:~ # dstat -v
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- --total-cpu-usage--
run blk new| used free buff cach| in out | read writ| int csw |usr sys idl wai stl
0 1.0 0.5|9332M 161M 1080k 5185M| 13B 298B| 52k 996k|1335 3784 | 5 1 89 5 0
3.0 1.0 0|9332M 161M 1080k 5185M| 0 0 |4096B 1804k|1227 3773 | 4 1 91 3 0
0 2.0 0|9332M 161M 1080k 5185M| 0 0 |4096B 1260k|1423 3547 | 4 1 80 15 0
1.0 0 0|9332M 161M 1080k 5185M| 0 0 | 0 1220k|1535 3744 | 5 1 70 24 0
2.0 1.0 0|9332M 161M 1080k 5185M| 0 0 | 0 364k|1213 3266 | 4 1 92 3 0
1.0 0 0|9332M 161M 1080k 5185M| 0 0 | 0 184k|1264 3916 | 5 2 90 4 0
0 1.0 0|9332M 161M 1080k 5185M| 0 0 | 0 412k|1276 3595 | 5 1 90 4 0^C
sle15:~ #

ー cpu, disk, network のみ表示する ー

-cdn オプションは、それぞれ cpu, Network, Disk のステータスを返してきます。

sle15:~ # dstat -cdn
--total-cpu-usage-- -dsk/total- -net/total-
usr sys idl wai stl| read writ| recv send
5 1 89 5 0| 52k 996k| 0 0
5 1 92 2 0|4096B 212k| 170k 174k
6 4 90 0 0|4096B 180k| 60k 60k
12 2 84 2 0|4096B 196k| 87k 87k
5 1 92 2 0|4096B 284k| 87k 88k
5 1 92 2 0|4096B 188k| 73k 73k
4 1 92 2 0|4096B 196k| 67k 67k
5 1 93 2 0|4096B 212k| 74k 74k^C
sle15:~ #

ー 表示結果に時刻を付ける ー

-t オプションで、収集した時刻を付けてくれます。


sle15:~ # dstat -tcdn
----system---- --total-cpu-usage-- -dsk/total- -net/total-
time |usr sys idl wai stl| read writ| recv send
17-01 14:12:39| 5 1 89 5 0| 52k 996k| 0 0
17-01 14:12:40| 4 1 93 2 0| 0 176k| 266B 420B
17-01 14:12:41| 5 0 91 4 0| 0 412k|2432B 6838B
17-01 14:12:42| 4 1 91 4 0| 0 968k|2127B 2163B
17-01 14:12:43| 5 1 87 7 0|4096B 780k| 106B 228B
17-01 14:12:44| 5 1 91 3 0| 0 256k|1326B 2622B
17-01 14:12:45| 4 1 91 4 0| 0 280k| 408B 784B
17-01 14:12:46| 5 1 92 2 0| 0 188k| 638B 1096B^C

ー 結果を csv ファイルに書き出す ー

--output FileName で結果をテキスト化してくれます。これはこれで便利そう。

sle15:~ # dstat -v --output dstat.csv
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- --total-cpu-usage--
run blk new| used free buff cach| in out | read writ| int csw |usr sys idl wai stl
0 1.0 0.5|9326M 155M 1080k 5198M| 13B 301B| 52k 996k|1335 3784 | 5 1 89 5 0
1.0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 396k|1460 4840 | 7 5 86 2 0
0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 460k|1454 3902 | 11 3 82 3 0
0 0 0|9326M 155M 1080k 5198M| 0 0 | 12k 188k|1521 4287 | 12 1 84 2 0
0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 3052k|1809 3747 | 5 1 88 5 0
1.0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 424k|1346 3628 | 5 1 90 4 0
0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 260k|1249 3593 | 5 1 92 2 0
0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 288k|1229 3657 | 4 2 89 5 0
2.0 0 0|9326M 155M 1080k 5198M| 0 0 |8192B 268k|1236 3578 | 5 1 90 4 0
0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 284k|1247 3440 | 5 1 91 2 0
0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 345k|1414 3987 | 7 2 88 4 0^C
sle15:~ #









by islandcenter | 2020-01-19 14:37 | SUSE | Comments(0)

SUSE Linux でよく使う、忘れやすい使えるコマンド

普段よく使うのに、毎日は使わないので、ついつい引数やオプションを間違えてしまうったり、使い方を忘れるコマンド、よく使うケースをまとめてみました。
ダメですね。最近物忘れがひどい。本当に「ダメ人間」です。お前、何年やってんだって言われそうです。


- ps と kill -

プロセスを止めるためによく使います。例えば、Firefox ブラウザが調子悪い時

sle15:~ # firefox &
[1] 20876
sle15:~ # ps aux | grep firefox
root 20876 13.5 1.4 2105552 232876 pts/5 Sl 11:39 0:04 /usr/lib64/firefox/firefox
root 20989 0.0 0.0 7432 828 pts/5 S+ 11:40 0:00 grep --color=auto firefox
sle15:~ # kill 20876
sle15:~ # ps aux | grep firefox
root 21004 0.0 0.0 7432 988 pts/5 S+ 11:41 0:00 grep --color=auto firefox

Firefox がプロセスの一覧から消えました。

ただし単純なユーザアプリケーションの場合はこれでもいいのですが、サービスデーモンの場合は、もっと慎重にやるべきです。
結局、「再起動したら治った」ケースも良くあります。


- ファイルを探す find -

アプリケーションや、サービスの設定ファイルを探すためによく使います。 SUSE Linux の場合、ほとんど YaST ツールで設定するのが無難なのですが、時折、「xxx.conf ってどこ?」という SUSE ならではの場合があります。そんな時に使います。

sle15:~ # find /etc -name hosts <- /etc 以下の hosts というファイル
/etc/hosts
sle15:~ # find /etc -name "host*" <- host...で始まるすべてのファイル、" " で括ります。
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/hosts.equiv
/etc/hosts.lpd
/etc/wicked/extensions/hostname
/etc/hosts.YaST2save
sle15:~ #

sle15:~ # find /etc -name "*host*" <-- hostが含まれるすべてのファイル
/etc/opt/chrome/native-messaging-hosts
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow

:中略

/etc/nginx/vhosts.d
sle15:~ #



- ファイルの日付を調べる stat, find -atime -

普段、あまり使わないのですが、ファイルの更新日付や最終アクセス日を確認するために使います。stat へぇーでした。
find の方が実用的なケースが多いでしょう。

sle15:~ # touch /home/user/test.txt

sle15:~ # ls -al /home/user/test.txt
-rw-r--r-- 1 root root 0 Jan 12 12:16 /home/user/test.txt

sle15:~ # cat /home/user/test.txt <-- cat してみる
sle15:~ # stat /home/user/test.txt
File: /home/user/test.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 35h/53d Inode: 278 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-12 12:16:53.934678002 +0900 <---cat したのでアクセス時間だけ微妙に違う
Modify: 2020-01-12 12:16:37.529088236 +0900
Change: 2020-01-12 12:16:37.529088236 +0900
Birth: -

また、長期間アクセスがないファイルを探すには find コマンドに -atime オプションを使います。
例えば 365 日、アクセスが無いファイルを探すには次の様に実行します。

sle15:~ # find /share/SISO/ -atime +365
/share/SISO/rhel/rhel-server-5.9-x86_64-dvd.iso
/share/SISO/rhel/rhel-server-6.8-x86_64-boot.iso
/share/SISO/rhel/rhel-server-6.8-x86_64-dvd.iso
/share/SISO/rhel/rhel-server-7.3-x86_64-boot.iso
/share/SISO/rhel/rhel-server-7.3-x86_64-dvd.iso

:以下略

※ ただし、バックアップジョブなどで、日々アクセスされているとアクセス日も更新されます。ちょっと向いていないかも知れません。
ただ、最終更新日を見つけるには -ctime オプションの方がいい様です。


- ログの最後を確認 tail, less -

sle15:~ # rcntpd restart <-- サービスをリスタートしてみる

sle15:~ # tail /var/log/messages <-- tail のデフォルトは10行表示
2020-01-15T10:17:27.156734+09:00 sle15 snmpd[1598]: Connection from UDP: [192.168.1.221]:58800->[192.168.1.240]:161
2020-01-15T10:17:42.856286+09:00 sle15 systemd[1]: Stopping NTP Server Daemon...
2020-01-15T10:17:42.934525+09:00 sle15 systemd[1]: Stopped NTP Server Daemon.
2020-01-15T10:17:42.935309+09:00 sle15 systemd[1]: Starting NTP Server Daemon...
2020-01-15T10:17:43.000095+09:00 sle15 ntpd[10995]: ntpd 4.2.8p11@1.3728-o (1): Starting
2020-01-15T10:17:43.000354+09:00 sle15 ntpd[10995]: Command line: /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf
2020-01-15T10:17:43.007380+09:00 sle15 ntpd[10996]: proto: precision = 0.072 usec (-24)
2020-01-15T10:17:43.030409+09:00 sle15 ntpd[10996]: switching logging to file /var/log/ntp
2020-01-15T10:17:43.037980+09:00 sle15 start-ntpd[10990]: Starting network time protocol daemon (NTPD)
2020-01-15T10:17:43.038376+09:00 sle15 systemd[1]: Started NTP Server Daemon.

sle15:~ # tail /var/log/messages -n 5 <--- -n [数字] で「数」行分表示
2020-01-15T10:17:43.000354+09:00 sle15 ntpd[10995]: Command line: /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf
2020-01-15T10:17:43.007380+09:00 sle15 ntpd[10996]: proto: precision = 0.072 usec (-24)
2020-01-15T10:17:43.030409+09:00 sle15 ntpd[10996]: switching logging to file /var/log/ntp
2020-01-15T10:17:43.037980+09:00 sle15 start-ntpd[10990]: Starting network time protocol daemon (NTPD)
2020-01-15T10:17:43.038376+09:00 sle15 systemd[1]: Started NTP Server Daemon.
sle15:~ #


less は表示画面をカーソルキーでスクロールできるので、便利ですね。意外と知らなかったりします。

sle15:~ # less /var/log/messages <---- ファイルを開いたら "G" (shift+g)か ”>” で行末に移動します。終了する時は "q" で抜けます。

SUSE Linux でよく使う忘れやすい使えるコマンド_a0056607_19065358.png


応用して、最近発生した error だけ grep して抜き出します。

sle15:~ # tail -n 10000 /var/log/messages | grep fail <-- 10000 行の中から "fail" の文字列を抜き出す。

2020-01-13T00:00:02.249817+09:00 sle15 logrotate[9676]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-01-13T00:00:02.292435+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.
2020-01-13T20:52:32.361748+09:00 sle15 smartd[906]: Device: /dev/sdd [SAT], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 75 to 76
2020-01-14T00:00:01.960473+09:00 sle15 logrotate[18671]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-01-14T00:00:02.031651+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.
2020-01-15T00:00:00.252361+09:00 sle15 logrotate[24918]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-01-15T00:00:00.272513+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.



- 即時時刻合わせ ntpdate -ub ntp.server -

普段 ntpd で、外部のタイムソースと同期している場合、あまり使う事がないかもしれません。
で、時刻のズレがある場合に慌ててしまうのですね。

sle15:~ # ntpdate -q ntp.nict.jp <-- 同期状態を -q オプションで確認する
server 133.243.238.163, stratum 1, offset 0.096820, delay 0.16020
server 133.243.238.164, stratum 1, offset 0.098111, delay 0.16058
server 133.243.238.244, stratum 1, offset -0.000385, delay 0.23285
server 133.243.238.243, stratum 1, offset 0.009039, delay 0.21541
15 Jan 10:46:29 ntpdate[12177]: adjust time server 133.243.238.163 offset 0.096820 sec
<-- ほぼ合っている

sle15:~ # date
Wed Jan 15 10:46:33 JST 2020

sle15:~ # date -s "10:40" <-- 強制的に時刻を変えてみた
Wed Jan 15 10:40:00 JST 2020

sle15:~ # ntpdate -q ntp.nict.jp
server 133.243.238.163, stratum 1, offset 415.140090, delay 0.15050
server 133.243.238.164, stratum 1, offset 415.205100, delay 0.14244
server 133.243.238.244, stratum 1, offset 415.079092, delay 0.23996
server 133.243.238.243, stratum 1, offset 415.208039, delay 0.16280
15 Jan 10:40:13 ntpdate[12256]: step time server 133.243.238.164 offset 415.205100 sec <--- 時刻ずれが発生している。

sle15:~ # ntpdate ntp.nict.jp
15 Jan 10:40:25 ntpdate[12259]: the NTP socket is in use, exiting <-- ntpdでソケットが使われているよ


sle15:~ # ntpdate -ub ntp.nict.jp
15 Jan 10:47:33 ntpdate[12264]: step time server 133.243.238.163 offset 415.208919 sec <-- -u: 非特権モード -b:Step モード(即時同期)で時刻合わせをしてみた

※ 本来はアプリケーションの動作に影響する step モードで変更すべきではありません。
Slew モード(徐々に合わせる方法)で修正します。 -B オプションを使います。

【 ntpdate 】コマンド――時刻をNTPサーバと同期する

sle15:~ # date
Wed Jan 15 10:47:39 JST 2020

sle15:~ # ntpdate -q ntp.nict.jp
server 133.243.238.163, stratum 1, offset -0.019178, delay 0.10196
server 133.243.238.164, stratum 1, offset -0.055371, delay 0.17729
server 133.243.238.244, stratum 1, offset -0.054022, delay 0.17772
server 133.243.238.243, stratum 1, offset 0.011321, delay 0.14583
15 Jan 10:47:55 ntpdate[12363]: adjust time server 133.243.238.164 offset -0.055371 sec <-- 大体合っている
 

- ディスクの占有量を調べる df -h と du, ncdu -

何だか動きが妖しいな、という時は、意外とディスクの容量不足が原因だったりします。その場合、犯人捜しにつかえるのが df と du です。

sle15:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 50G 30G 20G 60% /
udev 3.8G 316K 3.8G 1% /dev
tmpfs 3.8G 6.4M 3.8G 1% /dev/shm
/dev/sda6 164M 24M 140M 15% /boot/efi
/dev/sda9 493G 385G 84G 83% /var
/dev/sda3 48G 19G 30G 39% /windows/C
/dev/sda4 98G 107M 98G 1% /windows/D
/dev/sda11 148G 94G 48G 67% /share
/dev/sdb2 1.8T 1.7T 4.2G 100% /hdd/sdb

sle15:~ # du /home
4 /home/user/bin
4 /home/user/.fonts
4 /home/user/.mozilla
68 /home/user
72 /home/

sle15:~ # du /home -m
1 /home/user/bin
1 /home/user/.fonts
1 /home/user/.mozilla
1 /home/user
1 /home/
sle15:~ #

-m を付けると M byte 表記になります。

メニュー形式で便利な ncdu も便利です。ぜひインストールして置きたい。

SUSE Linux でよく使う忘れやすい使えるコマンド_a0056607_19075830.png



ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu
https://islandcnt.exblog.jp/239841590/



- tar でのファイルのアーカイブとリストア -

tar は、お馴染みのコマンドですが、奥が深い。つい使い方をググってしまうのが、tar のコマンドラインオプションです。

ここでは、圧縮アーカイブと、アーカイブからあの解凍という「一発芸」の使い方のみ取り上げてみました。

user@sle15:~> tar czf mypics.tar.gz ./pics <--指定したディレクトリをアーカイブ
user@sle15:~> ls *.gz
mypics.tar.gz
user@sle15:~> mv pics deleteme <-- オリジナルのディレクトリを削除(リネーム)してみた
user@sle15:~> tar xzf mypics.tar.gz <-- 解凍してみる
user@sle15:~> ls
bin deleteme mypics.tar.gz pics public_html test test.txt <-- オリジナルのディレクトリを作成し解凍された。
user@sle15:~>

※ 通常ではは v オプションを付けて、圧縮、解凍の進捗を表示させて「ヤッテル感」を実感したい人が多いでしょうね。私もそうしています。

# tar cvzf myarchive.tar.gz path-to-source アーカイブ作成
# tar xvzf myarchive.tar.gzアーカイブ抽出

します。

- シンボリックリンクを作る ls -s -

以外とよく使うのに、いざ使おうとすると、使い方を忘れるのが ln -s コマンドです。リンク先とシンボリックリンク名を逆にしてハマったりします。

# ln -s リンクソース(先) リンクファイル名

user@sle15:~> ls -l
total 0
drwxr-xr-x 1 user users 0 Feb 20 2019 bin
drwxr-xr-x 1 user users 2064 Jan 15 12:57 pics
drwxr-xr-x 1 user users 20 Feb 20 2019 public_html
drwxr-xr-x 1 user users 8 Jan 15 13:40 test
-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txt

user@sle15:~> ls ./test
pics
user@sle15:~> ln -s ./test/pics/ mypic
user@sle15:~> ls -l
total 4
drwxr-xr-x 1 user users 0 Feb 20 2019 bin
lrwxrwxrwx 1 user users 12 Jan 15 13:46 mypic -> ./test/pics/ <--- これ
drwxr-xr-x 1 user users 2064 Jan 15 12:57 pics
drwxr-xr-x 1 user users 20 Feb 20 2019 public_html
drwxr-xr-x 1 user users 8 Jan 15 13:40 test
-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txt
user@sle15:~> cd mypic
user@sle15:~/mypic> ls -l
total 3532
-rwxr--r-- 1 user users 47052 Feb 26 2006 06226a.jpg
-rwxr--r-- 1 user users 71472 Feb 13 2006 ChryslerProwler10.JPG
-rwxr--r-- 1 user users 105900 Feb 11 2006 kin2.jpg
-rwxr--r-- 1 user users 44569 Feb 11 2006 kin3.jpg
-rwxr--r-- 1 user users 83056 Feb 11 2006 kin.jpg
user@sle15:~/mypic>
user@sle15:~/mypic> pwd
/home/user/mypic <-- 実体ではない、シンボリックリンクがパスになっています
user@sle15:~/mypic>

- まとめ -

毎日、コンソールに向かって Linux をツツイテいるヒトには「何をいまさら感」がある内容ばかりですが、意外とまとめてみると、自分でもあまり意識していない、あるいは「あれ! どうだっけ?」という、コマンドは多いものです。特に

- find
- ln -s
- ntpdate

などは、よく使いそうで意外と使い方が分かっていない、という自分に気が付きました。
いざ、という時の引き出しを用意するためにも、普段慣れしたコマンドの使い方を知っておくべきだと改めて感じました。










by islandcenter | 2020-01-15 19:41 | SUSE | Comments(0)

ブロードバンド難民の僻地住民にとっては、モバイル Wifi や Softbank Air の様な、光ファイバー工事が不要な通信サービスは唯一の救済手段となっています。Softbank Air は他の無線通信のサービスと比べた場合、通信量制限が緩いので、光ファイバー僻地難民で、大容量の通信をするには一択なのです。

という事で、某壁地で実際に Softbank Air を使っている実家ではどんな評判なのか?聞いてみました。

「とにかくクソ」

というのが身内のご意見です。でも僻地では光ファイバーサービス地域ではなく、既に ADSL サービスも終わっている今、巨大な Windows Update なんかをダウンロードするには、Softbank Air しか選択肢がないのですね。そもそもギガ爆死する環境では Windows Update なんて無理。

まず、子供がやりたいプレステ4のゲームが堕ちる。何かと再起動しないと通信状態が復活しない。昼夜かかわらず、とにかく通信が途切れる。別に土日や夜間だけではなく、昼間でもネットワークの調子が悪い。




で調子が悪い時 TraceRoute してみたり、google DNS に Ping してみた結果.....

Softbank Air: Wifi ネットワークの暗い闇、シェアード IP_a0056607_13010580.png

専門家ではないので「逃げ」ますが、どうもSoftbank Air では、Softbank の閉塞ネットワークの中でグルングルンとルーティングして最後にインターネットに繋がるらしいのですね。っていうか、試しに携帯のテザリングしてみてもほぼ結果は一緒。

- 再起動すると softbankXXXXX.bbtec.net の IP もリセットされる
- グローバル IP もリセットされる

172.16.255.254 に user/XXXXX でログインして「再起動」させてみる

Softbank Air: Wifi ネットワークの暗い闇、シェアード IP_a0056607_13025934.png


なんだ「信号受信レベル」は十分じゃないか?

- 再起動して「確認くん」で調べると、グローバルIPが変わっている。

確認くん

- 調子が悪い時に、割り当てられたグローバルIPに Ping を打ってみると、通信状態は良好な様だ。つまり閉塞したサービスの中の通信状態は悪くない。
- 次第に調子が悪くなったり、元の「調子ワリぃ」状態に戻ったりする。

- グローバルアドレスが頻繁に変化する実害として Thunderbird と Gmail のセッションが切れて、再認証を求められる。

Thunderbird から gmail にログインできない

つまり、根本的な問題は、電波状況ではなく、ソフトバンクの Air サービスの閉塞網と、グローバルネットワークに接続しているポイントに問題がありそうなんですね。つまりは「プロバイダのサービス品質の問題」が再燃しているわけですか。推測ですが......




- モバイル Wifi の致命的な欠点、グローバルIPが変化する -

つまり、割り当てられるのはプライベートアドレスなのです。

Softbank Air に限らず、どこの Wifi サービスでもその様なのですが、基本的に電源 On/Off したり、リセットしたりすると、グローバル IP がリセットされて、通信状態がリセットされてしまいます。

まぁ当たり前と言われれば、その通り「納得」なのですが。

私は普段は Softbank の固定DSL回線を使っているので、ほとんど「固定IP」状態なのですが、Wifi サービスでは、端末側のスイッチが入って起動すると

  • 通信事業者の中で閉塞したネットワークを作り
  • ipv4 のアドレスが使いきれないよう、Wifi 端末側のスイッチが切られるとアドレスを開放
  • スイッチが入った時、あるいはリセットした時に、閉塞したネットワークでアドレスを再割り当て
  • 端末側が起動したら、閉塞ネットワークでネットワークが再構築されて
  • 閉塞ネットワークから数少ない ipv4 の共有グローバルアドレス(シェアード IP Address)を割り当てられる
  • 他のユーザが共有しているグローバルアドレスで「でっかいファイル」をダウンロードすると、ネットワークが堕ちる
  • 割り当てられた、グローバルIPに Ping を打ってみても問題はない様だ
  • 仕方がないので再起動して、調子が戻る

というルーティンの様です。まぁあくまでも、ソフトバンクの「中のヒト」じゃないから内情は分かりませんがね...






- Wifi 接続サービスでは使えない機能 -

一般的な Wifi サービスでは、グローバルIPが固定していないため、使えないサービスとして

  • DDNS を使うウェブカメラなど、たぶん、Skype や Line の無料通話なんかも問題ありそうでダメなんですね。(後述)
  • ポート開放が必要なゲームだとか、P2P ダウンローダ。オープンソースなソフトウェアは落とせない。
  • 巨大なファイルのブラウザからのダウンロード(レジューム機能付きのダウンロード速度を制限できるダウンローダーを使うのが良いのかな)
  • 固定IPが必要な、VPN サーバーや、自宅公開サーバーは絶望的
  • ブロードバンド僻地にある工場や事務所、山の中のトンネル工事現場事務所のような法人向けのテンポラリな拠点との間で VPN を使った構内仮想ネットワークは絶望的に無理。

これらは一様に Wifi サービスでは使えないと思った方がいいようです。ほとんどの Wifi 接続サービスはこの仕様になっている様です。

そりゃ当たり前ですが、本来が移動体通信が基本ですから、こんな使い方するのはIoT機器の制御もしたい。できないんです。

僻地住民にとっては、インターネットサービスが使えるかどうかは公共サービスの不公平な分配なのです。

これでは Windows Update もできない.....

ちなみに UQ Wimax ではグローバルIPはオプションで用意されていますが、UQ Wimax では、通信量制限が入るので、ちょっと辛い。アウトオブ眼中です。

グローバルIPアドレスオプション(WiMAX 2+用)



- Softbank Air が弱い点 -

どうも、Softbank Air は、閉塞したネットワーク内や、基地局との通信状態は、環境によっては悪くないのですが、Softbank のプライベートネットワークから、インターネットに接続するポイントに弱さがある事が原因の様です。

根本的な問題は ipv4 枯渇問題にあります。グローバルIPが枯渇しているから、少ない割り当てをシェアードIP にしているわけです。もともと ipv4/ipv6 デュアルスタックにするとか、トンネリングするとか NAT すればいいというのは、私にとっては専門外の意見なので、深くコメントできません。

ただ、Softbank Air のサービスが「クソだ」と思うご意見は実感しています。要は「どこかに金をかけていない」のです。そもそもスマートフォンのテザリングだって同じ問題が内包しているはずなのに、Softbank Air だけ、これだけインターネットのセッションに問題があるのがおかしい。yMobile を使っている身としては "Softbank Air" の仕組み自体が特殊な問題を抱えているンじゃないかと詮索したくなります。

※ Softbank Air について良く調べてみたら、Softbank の無線通信回線ではなく、どうやら 、Wireless City Planning の回線を Softbank が代理店販売しているサービスなんですね。

SoftBank Air(Wikipedia)

Wireless City Planning

買収した Willcom のPHS、AXGP 通信規格を引き継いだものが Softbank Air の通信規格なので、携帯電話網とは違う規格のようです。「中のヒト」じゃないので詳しく分かりませんが.....

まだ ipv6 が深く浸透していない事、また、Wifi 接続サービスがあまり成熟していないのにサービス競争に入っている事、それなのに大容量のクラウドネットワークサービスが一般化している所に問題があるのです。

とてもじゃないけど、ネットも使えない「田舎」でセカンドライフを過ごせ、とは言えないンです。


速度競争と「ギガ放題」競争に走るあまり、重要な通信品質に問題がある Softbank Air サービスは良いとは言えない。売り文句はいいけど「中のヒト」達は自分が売っているサービスがどの程度の品質だと実感しているのでしょうか。医者が自分自身で飲んだこともない薬を処方しているようないい加減さを感じてしまいます。

通信速度の制限について

以下のコンテンツ・サービスなどをご利用の際、通信速度の制限を行う場合があります。なお、通信の切断は行いません。

  • 音声通話やテレビ電話などをパケット信号に変換し、データ通信にて実現するサービス
  • MPEG、AVI、MOV 形式などの動画ファイル
  • BMP、JPEG、GIF 形式などの画像ファイル
  • 動画閲覧、高画質画像閲覧、P2P ファイル交換、ソフトウェアダウンロードなどを伴うサイト、アプリケーションなど

つまり、これってほとんどの通常のクラウド系の通信が制限されるわけしょうか? Hotspot Shield の様な VPN サービスや Tor を経由して Netflix 見た場合、どうなるんでしょうか。それも解析されているのかな? どこでどんなデータをやり取りしているかをすっかり見透かされて制限を掛ける。プライベートな通信の監視、ヒミツなんてまるで無視の制限ポリシー。ほとんどチャイニーズファイアウォール。暗闇の世界....

もっとも、インターネット接続サービス、ブロードバンド接続サービス自体が、黎明期から抱え続けてきた「トラフィックの増大追っかけ対策」がまた噴出してきただけなんですね。恐らく無線通信が、もっと信頼性が高くなれば、その信頼性に乗っかって利用した「便利なサービス」が出てくるだけでしょう。追いかけっこなのです。

これは IPv6 が普及してもこの問題は付きまといます。

多くのインターネットサービスがPC向けから、スマートフォンサービスに移行していて、スマートフォンではあまり問題なく使えても、PCではあまり使い物にならない Wifi サービスも世間にはあるという事です。






by islandcenter | 2020-01-04 13:32 | Internet | Comments(0)

SUSE Linux でデバイスの死活監視を簡単に実行するには fping コマンドが便利です。

# ping xxx.xxx.xxx.xxx

を IP アドレス や DNS 名を頼りに実行するよりも、

# fping -g xxx.xxx.xxx.xxx xxx.xxx.xxx.yyy

と範囲指定ができるので、一括してサブネット上のデバイスの死活状態を把握することができます。IPアドレスのテキストリストを読み込んで、実行できるので、重要なデバイスを登録しておけば、コマンド一発でデバイスの稼働状態を確認できます。

ここでは SUSE Linux Enterprise 15 (SLE15) での fping の「ありそうな使い方」を切り取って説明しています。


※ fping はディストリビューションによって使い方が異なる場合があります。






- fping パッケージのインストール -

デフォルトではインストールされません。 SUSE Linux では zypper yast でインストールします。ちなみに、zabbix をインストールした場合、zabbix が fping を使うため、デフォルトでインストールされます。

sles15:~ #fping
If 'fping' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf fping

sles15:~ #

# yast > Software > Software Manegement > で fping "search" 、Space キーでチェックして Accept.


テキスト yast の場合
fping:SUSE Linux でデバイスの一発死活監視に便利_a0056607_17534687.png


GUI 版 yast2 の場合
fping:SUSE Linux でデバイスの一発死活監視に便利_a0056607_18512074.png
※ fping はディストリビューションによって使い方が異なる場合があります。必ず -- help でオプションを確認します。

sles15:~ # whereis fping
fping: /usr/sbin/fping /usr/share/man/man8/fping.8.gz
sles15:~ #
sles15:~ # ls /usr/sbin/fping -al
-rwxr-xr-x 1 root root 44472 May 26 2018 /usr/sbin/fping
sles15:~ #

/usr/sbin にインストールされるため、 root で実行するか、フルパス指定します。
※ fping はディストリビューションによって使い方が異なる場合があります。必ず -- help でオプションを確認します。

sles15:~ # fping --help
Usage: fping [options] [targets...]

Probing options:
-4, --ipv4 only ping IPv4 addresses
-6, --ipv6 only ping IPv6 addresses
-b, --size=BYTES amount of ping data to send, in bytes (default: 56)
-B, --backoff=N set exponential backoff factor to N (default: 1.5)
-c, --count=N count mode: send N pings to each target
-f, --file=FILE read list of targets from a file ( - means stdin)
-g, --generate generate target list (only if no -f specified)
(give start and end IP in the target list, or a CIDR address)
(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
-H, --ttl=N set the IP TTL value (Time To Live hops)
-I, --iface=IFACE bind to a particular interface
-l, --loop loop mode: send pings forever
-m, --all use all IPs of provided hostnames (e.g. IPv4 and IPv6), use with -A
-M, --dontfrag set the Don't Fragment flag
-O, --tos=N set the type of service (tos) flag on the ICMP packets
-p, --period=MSEC interval between ping packets to one target (in ms)
(in loop and count modes, default: 1000 ms)
-r, --retry=N number of retries (default: 3)
-R, --random random packet data (to foil link data compression)
-S, --src=IP set source address
-t, --timeout=MSEC individual target initial timeout (default: 500 ms,
except with -l/-c/-C, where it's the -p period up to 2000 ms)

Output options:
-a, --alive show targets that are alive
-A, --addr show targets by address
-C, --vcount=N same as -c, report results in verbose format
-D, --timestamp print timestamp before each output line
-e, --elapsed show elapsed time on return packets
-i, --interval=MSEC interval between sending ping packets (default: 10 ms)
-n, --name show targets by name (-d is equivalent)
-N, --netdata output compatible for netdata (-l -Q are required)
-o, --outage show the accumulated outage time (lost packets * packet interval)
-q, --quiet quiet (don't show per-target/per-ping results)
-Q, --squiet=SECS same as -q, but show summary every n seconds
-s, --stats print final stats
-u, --unreach show targets that are unreachable
-v, --version show version
sles15:~ #

- まずは、特定のアドレス範囲を指定 -

範囲指定のため -g オプションで xx.xx.xx.xx から xx.xx.xx.yy までを指定します。

sles15:~ # fping -g 192.168.1.1 192.168.1.6
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
192.168.1.4 is unreachable
192.168.1.5 is unreachable
sles15:~ #

- ICMP Host Unreachable を表示させない -

2>/dev/null を付けて標準エラー出力を null にリダイレクト

※ 2> の間はスペースを入れません。

sles15:~ # fping -g 192.168.1.1 192.168.1.6 2> /dev/null
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.4 is unreachable
192.168.1.5 is unreachable
sles15:~ #

- サブネット全体を指定 -

-g xx.ss.xx.xx/mm でサブネットマスクを指定しサブネット全体の動作状態を確認します。

※ 2> にはスペースが入らない!

sles15:~ # fping -g 192.168.1.1/24 2>/dev/null
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.22 is alive
192.168.1.24 is alive
192.168.1.35 is alive
192.168.1.41 is alive
192.168.1.44 is alive
192.168.1.34 is alive
192.168.1.47 is alive

: 中略

192.168.1.4 is unreachable
192.168.1.5 is unreachable

: 以下略


- 生きている端末だけを表示 -

”alive” を grep してみた。

sles15:~ # fping -g 192.168.1.1/24 2>/dev/null | grep alive
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.22 is alive
192.168.1.24 is alive
192.168.1.35 is alive
192.168.1.37 is alive
192.168.1.41 is alive
192.168.1.44 is alive
192.168.1.34 is alive
192.168.1.47 is alive
192.168.1.49 is alive
192.168.1.45 is alive
192.168.1.46 is alive
192.168.1.217 is alive
192.168.1.221 is alive
192.168.1.232 is alive
192.168.1.233 is alive
192.168.1.234 is alive
192.168.1.235 is alive
192.168.1.236 is alive
192.168.1.237 is alive
192.168.1.239 is alive
192.168.1.240 is alive
sles15:~ #


- 特定のホストリストに fping してみる -

事前にホストリストのテキストを作り、 -f で指定する

-f hostlist.txt

例えば、「構内LANから、インターネットに接続できない」などの場合、hostlist.txt に経由するルータ、スイッチ、ISPのDNSインターネットサービスを記述して、おけば、いつでもすぐに接続障害が判る(といいな)な作業ができます。例えば経由するファイアウォール、ルータ、Google の DNS が動いていて、インターネットにつながるかどうかは、hostlist ファイルはこんな感じでしょうか。

sles15:~ # cat hostlist.txt
192.168.1.1
192.168.1.2
192.168.1.3
192.168.3.2
192.168.3.1
8.8.8.8
www.google.com
www.yahoo.co.jp

sles15:~ # fping -f hostlist.txt
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.3.2 is alive
192.168.3.1 is alive
8.8.8.8 is alive
www.google.com is alive
www.yahoo.co.jp is alive
sles15:~ #
sles15:~ # fping dns2 dns3 nas1
dns2 is alive
dns3 is alive
nas1 is alive
sles15:~ #


- 最終ステータスの表示 -

-s オプションで合計のステータスを合わせて表示します。

sles15:~ # fping -g -s 192.168.1.0 192.168.1.10
192.168.1.0: error while sending ping: Permission denied
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.0: error while sending ping: Permission denied

:中略

192.168.1.8 is unreachable
192.168.1.9 is unreachable
192.168.1.10 is unreachable

11 targets
4 alive
7 unreachable
0 unknown addresses

7 timeouts (waiting for response)
32 ICMP Echos sent
4 ICMP Echo Replies received
24 other ICMP received

0.23 ms (min round trip time)
0.34 ms (avg round trip time)
0.43 ms (max round trip time)
4.175 sec (elapsed real time)

sles15:~ #

- おまけ -

従来の arp -a コマンドは ip n に置き換わりました。

fping を実行してすぐに ip n を実行すると、セグメント内の各デバイスの MAC アドレスが判ります。もしアセット管理でMACアドレスを登録済のデバイス以外に、見慣れない MAC アドレスがあれば、許可なく持ち込まれたデバイスだった.....

なんて事がすぐわかると便利なんですけどね。

sles15:~ # arp -a
If 'arp' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf arp

sles15:~ # ip n
192.168.1.9 dev br0 FAILED
192.168.1.46 dev br0 lladdr 5c:59:48:8c:35:2c STALE
192.168.1.5 dev br0 FAILED
192.168.1.237 dev br0 lladdr 00:08:9b:bd:11:7e STALE
192.168.1.1 dev br0 lladdr cc:e1:d5:ca:f6:da STALE
192.168.1.233 dev br0 lladdr 52:54:00:5c:0e:0a STALE

:中略

192.168.1.217 dev br0 lladdr 52:54:00:22:df:39 STALE
192.168.1.35 dev br0 lladdr 00:23:81:17:47:e2 STALE
192.168.1.22 dev br0 lladdr 00:16:3e:f5:f5:f5 STALE
sles15:~ #

by islandcenter | 2019-12-26 18:15 | SUSE | Comments(0)

この文書を参考に、SUSE Linux 15(openSUSE Leap/SLE) で sysstat と vmstat パッケージの導入と使い方を調べてみました。


第2章 システム監視ユーティリティ

sysstat は、初期状態ではインストールされていません。

sle15:~ # sar
If 'sar' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf sar
sle15:~ #

このパッケージには、 sar, iostat などのシステム管理に「使える」ツール、コマンドが含まれています

vmstat は、デフォルトでインストールされるみたいですが。リポジトリや、 openSUSE のサイトから、最新版をインストールできます。

- opensuse15 での sysstat のインストール -

SUSE Lnux ()openSUSE,SLE) には sysstat はデフォルトでインストールされていません。 yast か zypper でインストールします。 yast の場合

sle15:~ # yast

もしくは

sle15:~ # yast2

sle15:~ # yast の場合

[Tab] と [Enter] を使って Software > Software Manegement より "sysstat" を "Search Parase"、 リストに出てきた "sysstat" を選んで、space key で ”+” (インストール)にトグルして ”Accept” します。

SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_17352692.png


sysstat をサービスマネージャで有効化します。

yast > sysem > service manager > "sysstat""On Boot", "Active" に設定

SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_17370926.png


sle15:~ # yast2 の場合

Software > Software Manegement より "sysstat" を "Search Parase"! リストに出てきた "sysstat" を選んでチェック

あとは同様にサービスマネージャで、有効化します。

- 1 click インストール -

最新版がリポジトリにない場合、software.opensuse.org よりsysstat パッケージを検索して 1 click インストール もできます。

sysstat Sar and Iostat Commands for Linux


SUSE で 1 Click インストールができない場合、YaSTにないメニューを追加


- vmstat のインストール -

vmstat は openSUSE Leap 15.1/SLE15 ではデフォルトでインストールされているはずですが、インストールされていない場合、yast > Software > software Manegement から vmstat を検索してインストールします。

あるいは https://software.opensuse.org より vmstat パッケージを検索して 1 click インストールします。

SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_17401121.png


- vmstat の使い方 -

次の例では vmstat を2秒おきに実行します。 -a は推奨パラメータです。

sle15:~ # vmstat 2 -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 1 197888 298152 570772 554020 0 0 4 279 9 11 2 1 92 5 0
0 0 197888 298160 570772 554064 0 0 0 187 169 330 1 1 96 3 0
0 0 197888 300208 570772 552016 0 0 0 270 189 396 1 1 94 4 0
0 0 197888 300240 570772 552016 0 0 0 346 161 331 1 1 94 5 0
0 0 197888 295892 570776 556112 0 0 0 221 283 551 10 1 88 2 0
0 0 197888 295924 570784 556112 0 0 0 327 156 330 1 0 96 4 0
0 0 197888 295940 570784 556112 0 0 0 81 132 276 0 1 96 3 0
^C
sle15:~ #



第2章 システム監視ユーティリティ

によると

r
実行キューに入っているプロセス数が表示されます。これらのプロセスは、処理を 行なうために CPU の空きを待っている状態です。ここの値が利用可能な CPU 数 よりも定常的に大きい場合は、 CPU の処理能力が不足していることを示します。
b
CPU 以外の資源を待機しているプロセス数が表示されます。ここの値が高い場合は、 入出力 (ネットワークまたはディスク) に問題があることを示しています。

とあるので、"r" のカラムは、スタンバってるプロセスキューの数、つまりCPUの空き待ちで、この数字が大きいとCPUがテンパってビジー状態であるという事です。
”b” のカラムに数字が入っている時は、入出力がテンパっている、という事になります。




- sysstat -

How to set up the sadc cron job on SLES12

sysstat は有効化すると cron で10分置きにデータの収集を始めるようです。

sle15:~ # ls /etc/sysstat/ -l
total 16
-rw-r--r-- 1 root root 1008 Oct 23 17:14 sysstat
-rw-r--r-- 1 root root 263 Oct 23 17:14 sysstat.cron
-rw-r--r-- 1 root root 6430 Oct 23 17:14 sysstat.ioconf


sle15:~ # cat /etc/sysstat/sysstat.cron
# crontab for sysstat


# Activity reports every 10 minutes everyday
*/10 * * * * root [ -x /usr/lib64/sa/sa1 ] && exec /usr/lib64/sa/sa1 -S ALL 1 1

# Update reports every 6 hours
55 5,11,17,23 * * * root [ -x /usr/lib64/sa/sa2 ] && exec /usr/lib64/sa/sa2 -A
sle15:~ #


- sar のよくある使い方 -

- とにかく使ってみる

デフォルトで "# sar" を実行すると、これまで過去10分おきに取得したデータダンプを表示します。

リアルタイムに sar でコンピュータの状態を見るには

# sar 秒数

でリアルタイム表示をします。例えば2秒おきに見たい場合は

sle15:~ # sar 2
Linux 4.12.14-lp151.27-default (sle15) 12/02/19 _x86_64_ (2 CPU)

15:11:45 CPU %user %nice %system %iowait %steal %idle
15:11:47 all 0.25 0.00 0.50 18.14 0.25 80.86
15:11:49 all 1.00 0.00 0.50 5.49 0.25 92.77
15:11:51 all 1.75 0.00 0.75 6.23 0.25 91.02
15:11:53 all 1.75 0.00 0.50 4.76 0.00 92.98
^C

Average: all 1.19 0.00 0.56 8.64 0.19 89.42
sle15:~ #

という感じです。%iowait の値が高ければ、ディスクデバイスがテンパっています。 %idole の数値が 100 であれば、ioが「ド暇」状態だし、数字が下がればテンパっている状態です。

- ディスクデバイスの負荷

# sar 秒数 - b -p オプションで、ディスクデバイス等の状態を秒単位で表示します。

sle15:~ # sar 2 -d -p
Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)

13:47:36 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:38 vda 20.00 0.00 331.50 16.57 0.02 13.60 0.40 0.80
13:47:38 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

13:47:38 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:40 vda 15.50 0.00 248.50 16.03 0.00 11.35 0.00 0.00
13:47:40 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

13:47:40 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:42 vda 18.50 0.00 297.50 16.08 0.00 39.78 0.22 0.40
13:47:42 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

13:47:42 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:44 vda 11.00 0.00 123.75 11.25 0.01 18.18 0.73 0.80
13:47:44 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
^C

Average: DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
Average: vda 16.25 0.00 250.31 15.40 0.01 21.29 0.31 0.50
Average: sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sle15:~ #

- ネットワークの負荷

sar 秒数 -n [Type指定] は Network のトラフィックをリアルタイムに表示します。次の例は、全ての DEVice のトラフィックを2秒ごとに表示しています。

sle15:~ # sar 2 -n DEV
Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)

13:56:24 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:56:26 eth0 2.50 1.50 0.53 0.10 0.00 0.00 0.00 0.00
13:56:26 lo 25.00 25.00 1.50 1.50 0.00 0.00 0.00 0.00

13:56:26 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:56:28 eth0 2.00 1.00 0.12 0.40 0.00 0.00 0.00 0.00
13:56:28 lo 16.00 16.00 0.92 0.92 0.00 0.00 0.00 0.00

13:56:28 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:56:30 eth0 2.50 0.50 0.15 0.03 0.00 0.00 0.00 0.00
13:56:30 lo 20.00 20.00 1.16 1.16 0.00 0.00 0.00 0.00
^C

Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: eth0 2.33 1.00 0.26 0.18 0.00 0.00 0.00 0.00
Average: lo 20.33 20.33 1.19 1.19 0.00 0.00 0.00 0.00
sle15:~ #

- 過去の状態の確認

過去の状態を見たい場合は -f オプションで /var/log/sa/saYYYYMMDD ファイルを指定します。これで「問題の時間帯」の負荷状態を確認できるわけですね。

sle15:~ # ls /var/log/sa
sa20191204 sa20191205 sa20191206 sar20191204 sar20191205
sle15:~ #
sle15:~ # sar -f /var/log/sa/sa20191204
Linux 4.12.14-lp151.27-default (sle15) 12/04/19 _x86_64_ (2 CPU)

13:02:44 LINUX RESTART (2 CPU)

13:10:01 CPU %user %nice %system %iowait %steal %idle
13:20:01 all 1.56 0.01 0.51 4.52 0.17 93.24
13:30:01 all 1.50 0.00 0.51 5.27 0.17 92.54
13:40:01 all 1.56 0.00 0.51 5.20 0.19 92.55
13:50:01 all 1.50 0.00 0.50 4.94 0.17 92.88

: 略

テキストにリダイレクトして Libreoffice で開いてグラフ化してみました。
SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_14283518.png

応用して、過去のネットワークデバイスの負荷を見たい場合は、 -n DEV オプションを使います。

sle15:~ # sar -n DEV -f /var/log/sa/sa20191204
Linux 4.12.14-lp151.27-default (sle15) 12/04/19 _x86_64_ (2 CPU)

13:02:44 LINUX RESTART (2 CPU)

13:10:01 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:20:01 eth0 3.73 3.28 0.53 4.05 0.00 0.00 0.00 0.00
13:20:01 lo 10.62 10.62 0.62 0.62 0.00 0.00 0.00 0.00
13:30:01 eth0 3.73 3.20 0.53 3.86 0.00 0.00 0.00 0.00
13:30:01 lo 10.84 10.84 0.64 0.64 0.00 0.00 0.00 0.00
13:40:01 eth0 4.29 3.36 0.71 4.05 0.00 0.00 0.00 0.00
13:40:01 lo 10.67 10.67 0.63 0.63 0.00 0.00 0.00 0.00

: 略

これで、深夜のバックアップやバッチジョブなどが走ったタイミングの負荷状態をチェックします。

- iostat -

ディスクデバイスの負荷状態を調べるには iostat を実行します。"# iostat 秒数" で秒数ごとに、デバイスがテンパっている状況を確認できます。

sle15:~ # iostat 2
Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
2.09 0.00 0.55 4.75 0.18 92.42

Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 26.01 8.45 557.93 16101980 1063087761
scd0 0.00 0.00 0.00 1040 0

avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.50 15.79 0.25 83.21

Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 48.50 12.00 1150.50 24 2301
scd0 0.00 0.00 0.00 0 0

^C
sle15:~ #

一番、注目するのは %iowait のカラムでしょうか。ここの数字が0であればアイドリングしていますが、でっかいファイルコピーをすると、この数字が爆発します。


- という事で -

vmstat, sar を中心に SUSE Linux のシステムの負荷状態を調べるコマンドを、非常にざっくりと見てみました。もっと詳しく知りたい場合は、マニュアルや書籍、他所に沢山情報があるので参考にしてください。

システム管理は経験です。自分でコマンドを試して、普段見慣れない数字を見つけて、良く知っている自分のシステムを「より良く知る」事が肝要です。








by islandcenter | 2019-12-07 18:05 | SUSE | Comments(0)

IT運用系の技術者としてショッキングな事件がありました。


日経の記事によると

神奈川県、行政情報に大量流出懸念 廃棄機器転売され

"県のサーバーを更新した際、取り外されたHDの廃棄を委託された事業者の社員がデータ消去の不十分な状態で一部を持ち出し、ネットオークションで販売した。データ量は最大54テラバイトに上る可能性があるという。"

まず総データ量は54Tbであること

"出品されたHD18個の半数は県が回収したが9個は未回収という。"

ここで鯖屋が考えるのは、

全部で18個の半分回収済み、半分の9個行方不明、合計18個、ここに 54Tbなら 54Tb/18玉=3TbのHDD

という計算になる訳です。18個の3TbのHDD。

朝日のこの記事では

「なんだこれは…」と絶句 HDD落札男性が見た中身

恐らく、ディスク1個をPCにつなげて、データ復旧したら、やばいデータがぞろぞろ出てきたわけですね。
で、私は思うのですよ。

「SAS Raidじゃないな」

ここで3Tbの18玉という数字を想像して、あ、これなら日時バックアップ+週次に使えば大体ひと月分のウィークデーのバックアップに相当するわけです。普通Raid が壊れると、まず私程度の一般的なスキルの持ち主では修復できません。それに SASなら、一般的なPCでは動かないし、高価なHBAアダプタが必要だし。Raid HBA が変わると Raid はまず再構成が始まります。もうこの時点でほぼ復旧できません。Raidの玉一個だけなら、「バラバラ殺人事件」の体の一部です。全体は復旧できない。

2019年の今ならわかるけど、たぶんサーバベンダー製3TbのSAS HDD なんて、あっても高価だし、おそらく数年前の導入時にはかなり希少だと思います。中古品でも、サポート切れHWの修理用として高価に取引されます
ただし、Raid が壊れた場合、私のようなパンピーな技術者や「愉快犯」程度では無理でも、その筋の「玉筋金太郎」のような、専門家ならゴルゴ13並みに不可能ではありません。Linux+XFSの様なセキュリティが強そうファイルシステムならまだしも、Windows+NTFS だと「なんちゃってエンジニア」でも簡単に使えるフリーソフトはたくさんありますからね。

怖いのはクラウドサービスを使っていて、使い終わった後のデータ処理ポリシーがブラックボックス。データ消去が顧客側のポリシーでコントロールできません。oneDrive なんて使って、オフィスデータをごっちょりため込んでいる運用者にとっては悪夢ですね。

私も経験ありますが、 Raid が壊れたケースでは、 Raid が壊れて完全データ復旧まで、玉筋金太郎に頼んで海外の提供先に出して二か月かかったそうです。メチャマイナーなNSSファイルシステムで、復旧にはン百Gbで、費用はン百万単位。でもすごいものですが、いるんですね。そんな玉筋金太郎な技術者って。

空中分解したスペースシャトルから地上にたたきつけられたハードディスクのデータを復元

Novell Storage Service

恐らくサーバーのシステム構成は、普通に SAS Raid6とかで、オークションで流れたのは、日時バックアップ用の外付けSATA HDDで、実データは3Tb程度+差分18個なのかもしれません。

ま、ここまでは推測ですけど...
--

- 顧客としてやるべき事 -

今回の事件は、神奈川県庁が被害者のように見られそうですが、一番の被害者は納税者であり、個人情報が危険にさらされている神奈川県民なのですね。

多くの企業でサーバを固定資産にせず、経費処理しています。リース会社に返却する場合は、データの抹消はリース元に安易に任せず、ユーザ自身が責任をもってすべきなのです。

でもHDDはリース品なので、無傷で欠品なくリース会社に返却しなければならないわけです。とは言っても中のファイルとソフトウェア資産を残したまま返却するわけにはいかないので、利用するユーザ側としてはできる範囲で、データのシュレッドを行うべきだった、という事です。

データの完全消去

一般的にはアメリカ国防省がスタンダードとしている

1. 乱数書き込み3回
2. 最後に Null 書き


が一般的だと言われます。本来ならLinux のライブUSBで起動して

1. # dd if=/dev/urandom of=/dev/sda
2. # dd if=/dev/urandom of=/dev/sda
3. # dd if=/dev/urandom of=/dev/sda
4. # dd if=/dev/zero of=/dev/sda

を実行するわけです。今回の場合、27玉の HDD に全てにすべきだったのでしょう。ランダム書きは恐ろしく時間がかかるのですが、これを顧客側でやっておけ、という事です。たぶんひと玉当たり一日仕事です。全部でひと月かかるでしょう。


時間がなければ、デバイスの Null 書きだけでもすべきです。これなら数時間で終わります。ここまででもやっておけば、よっぽどその筋の玉筋金太郎でなければ、まず復旧できないのです。

openSUSE Leap 15.1 の Live USB で「初めてのどこでも Linux」の作り方

そんな面倒な事やってられないよ、と言われそうですが、データ消去にかかる費用もシステム移行にかかるコストとして計算すべきだったのかもしれません。




逆に今一番信用できる業界は普通の「PCリサイクル業者なのかもしれません。

何しろこういったインシデントがあった後は、業界自体が体制の見直しだとか、廃棄ルールの徹底をチェックしますからね。ひょっとしたら今が狙い時かも知れませんが、謳っている広告と実際の作業内容の乖離が大きかった事は、業界のダメージでしょう。

いわば「IT業界の最下流」である、データ破棄業者が信用できなければ、たとえ上流のデータセンターの厳しいセキュリティチェックがある、入退室管理システムも信用できない。クラウド次第の激震、クラウド契約終了後の、残ったデータの破棄はどうするのか。おそらく契約書にはなにも書かれていない。

何しろ持ち込み禁止の「入退室管理ができている隔離された部屋から、リュックに詰め込んだHDDが運び出された」わけです。同じことが、iDCやクラウド運用ビジネスで行われることも「あり得るな」という印象を与えた事は大きな事件です。




BSE騒動直後、品川港南口付近の「焼肉屋」はずいぶん安い価格でうまい肉食わせてもらった覚えがあります。業界が岐路にある時は、真摯に対応してくれるものかもしれません。今、一番信用できるのは他のPC破棄業者かもしれませんね。






by islandcenter | 2019-12-07 16:45 | 雑文 | Comments(0)