isLandcenter 非番中

ブログトップ | ログイン

isLandcener.jp 非番中

2020/1/4 islandcenter.jp

インディペンデントコントラクター(IC)としてIT関連の仕事をしています。

このブログサイトは、私の仕事上のお付き合いがある方々をご支援するために開設しました。

どうせ技術的なメールを書いても、山のようなメールに埋もれてしまいます。HTML メールを読まない(私も使わない)し、ワープロ文書にしてもあまり整理つきませんし、リンク先や画像のスナップショットをお見せできる手段として良い方法はないものかなぁと思っていました。

せっかく作った自分の情報の山なので、思い切って公開しちゃえ、と思い、独立を機会に問題ない範囲で公開を始めました。公開するのは良いことで、仕事先でも電車の中でも、「あの手順何だっけ?」を確認できるのはいいものです。

-お仕事しませんか-

皆さまといい関係のお仕事を探しています。

私の公式ウェブサイトはこちらです。


詳細はウェブサイトでご確認ください。

--
このブログのトラックバックとコメントは承認制です。トラックバックスパムが多いので、トラックバックは受け付けていません。

 大手企業に対する批判に対して個人が名誉毀損で訴えられるケースがあります。いきなりこういう態度をとられてもこちらとしてはなすすべがありません。ブログの内容に不審な点、不愉快な表現がありましたら、まずはご連絡ください。適切に処理します。また製品担当者からのお励まし、ご意見などありましたら感謝します。

--
このブログを読んで、直接ご感想や、ご質問があれば、コメント欄にメールアドレスとコメントを書いて「非公開」チェックしていただければ私だけ皆さまのメールアドレスをチェックできます。のちほど非公開のメールアドレスからお返事します。

なお kenn*islandcenter.jp(@に置き換えてください)にメールを送っていただいても結構ですが、メールはジャンク処理していますので、必ず、サブジェクトにわかりやすいタイトルを書いてください。フリーメールやサブジェクトが空欄の場合、まず読まれることはないので、ご承知ください。詳細はウェブサイトをご参考ください。

My Home Web Site

Meil Form


- 2019/6/6 -
この6月から、広告を付けてみました。

見づらくなった。広告ウザい。などアンチのご意見もあるでしょう。コメントください。

このブログの価値を具体的な金額にするとどんなものか、書き手としてのモチベーションに繋がるだろうと思い試してみました。

一応、こちらを見る限り、アフリエイトは問題ないようです。

エキサイトブログ利用規約改定とライフログカテゴリの拡張について

有料プランの概要・支払い方法

PR- うちの大家さんもよろしく -PR




--
気が向いた時にしかコメントできなくて申し訳ありませんが、ブログの記事に関係なくご意見ご要望があれば、このトピックスにコメントください。

# by islandcenter | 2020-12-31 23:00 | Comments(4)

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)

ncdu によって、ファイルを大量に保存してシステムを圧迫している犯人捜しの旅です。

- df と du -

先日どうも samba の調子が悪いなぁと思って、いろいろ調べているうちに、こりゃお馴染みのHDDの故障かな、随分古いディスクだし。という事でリブートしてみたら、なんと今度はXENが起動しない。

原因分からないなぁ、という事でデーモンだけ再起動して、ログを見たら容量不足でログが書けないというエラーが見つかった。慌てて

# df -h

してみたら、/var の下が満杯なんですね。でまぁことは仮想マシンの置き場です。随分と残骸が溜まっているじゃないか、という事で古いバックアップなんかを削除してみました。

この手のコマンドで他に良く使うコマンドが du です。du は、そのまま使うと、ディレクトリを舐めまくだらだらって表示されるので、次のオプションを使うと良いでしょう。

-s はディレクトリの合計を表示する
-c は全てのディレクトリの合計も表示する

オプションです。ただしバイト表示なので、 -h (human) を付けて見やすく表示しました。


sles11:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 50G 30G 20G 60% /
udev 3.8G 300K 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 384G 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

sles11:~ # du -s -h /var/lib/xen
378G /var/lib/xen <--ここにファイルがごっちょりある

sles11:~ # du -s -c -h /var/lib/xen
378G /var/lib/xen
378G total
sles11:~ #




ただし、ここまで面倒だと使い辛いな、もっと便利で一発でパーティションを占有しているディレクトリを探せないかと探したらありました。 ncdu ツールです。

Ncdu

NCurses Disk Usage

- SUSE Linux (openSUSE, SLE )へ ncdu のインストール -

SUSE Linux (openSUSE/SLE) への ncdu のインストールは、openSUSE のソフトウェアページから、1 Click インストールできます。

YaST (yast2) による SUSE Linux のパッケージ管理, インストールと削除

まず、インストールされているブラウザから openSUSE のソフトウェアページを開きます。


# firefox https://software.opensuse.org/ &


検索ボックスから "ncdu" を検索し、使っているディストリビューションの "1 click Install" ボタンを押します。

ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu_a0056607_13191663.png

あとは、YaST の 1 Click インストールのウィザードに従ってインストールします。

SUSE で 1 Click インストールができない



- ncdu の操作 -

# ncdu [option] [Directory]

でディレクトリを指定してディレクトリ配下の、肥え太ったディレクトリを探します。 [Directory] を省略すると、カレントディレクトリ以下を探します。ファイルシステムの、ルート(/) から探したい場合は

# ncdu /

を実行します。/ から指定すると、時間がかかります。

今回は /var を調べたいので

# ncdu /var

を実行しました。

指定したディレクトリ以下は自由に動き回って犯人捜しをします。 "i" コマンドでディレクトリの Information をウィンドウ表示します。

こんな感じ。

ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu_a0056607_13205984.png

カーソルキー<>で移動しながら、犯人捜しをします。コンソールとのインターフェース、オプションはマニュアルをご参考下さい。

Ncdu Manual

終了する時は "q" で終了します。









# by islandcenter | 2019-12-05 13:39 | SUSE | Comments(0)

Windows Update にノストラダムスの大予言のような帯域を食わせたくない。

何だかネットワークが遅い、エラーがでる。クラウドサービスに接続できない、などのトラブルをよく聞くようになりました。

そんな時はWindows update が帯域を食いまくっている場合があります。

Microsoft、「Windows 10」のデルタ更新を終了へ ~エクスプレス更新に一本化


何しろ ISP の回線容量をも破壊する、Windows Update はインターネット業界でのサイバーテポドン。毎月やってくるノストラダムスの大予言

空から恐怖の大王が来るだろう
アンゴルモアの大王を蘇らせ、
マルスの前後に首尾よく支配するために。

Windows Update はインターネット業界の恐怖の大魔王、諸悪の根源になりつつあります。だからWindows Update の帯域制限をしたい。

NTTコムの「OCN」が輻輳状態、Windows Updateが原因か

「なんでもクラウド」の反省すべき点で、ソフトウェアのクラウドサービスを検討する時に、真っ先に

「反省」

すべき事の一つです。

何しろ Windows10 の update は、サイズが半端ない。

で、ついにやっちまったのが、Windows update を P2P 配信するという荒業。

Windows10の Windows Update はデフォルトで使ってはいけない

しかし、結局はアップデートがキャッシュされるのはデフォルト3日が最大で、インターネット経由の P2P は結局ルータに負荷がかかる。つまり得をするのは配信の大元である Microsoft のサーバーだけなんですね。ルーター越しの回線負荷が下がるわけでなし。

しかも年に二度ほどある「大型アップデート」は3~4Gのダウンロードがあります。これで社内数百台のPCがアップデートするとどうなるのか。

もう想像がつきます。社内でみんなで Netflix やってる状態。グループポリシー(GPO)で帯域制限できないものか。



--
ま、大型アップデートはヘルプデスクチームが代表して、ISOファイルをダウンロードして共有 NAS なんかに置いておき、みんながそれをツツけば、ダウンロード自体は一回で済みます。

Windows10 手動で ISOファイル からアップデートする




- まずは Windows update の帯域制限をする -

という事で Windows Update の帯域制限をやってしまおうという事。

田 > 歯 >「更新とセキュリティ」>Windows Update の中の "詳細オプション" > 「詳細オプション」の中の "配信の最適化" > 「配信の最適化」の中の "詳細オプション" >「ダウンロード設定」「アップロード設定」

というイスタンブールのトプカピ宮殿のハーレムのタンスの奥にしまったようなところに、「ヒミツの設定」が隠されており、ここのスライダーをポチっとやると、バックグラウンドでのアップデートの帯域制限ができます(きっと)。

クラウド時代のサイバーテポドン Windows Update の回線帯域を確保:GPO_a0056607_11505631.png


一般的に ISP の回線設定はダウンロードよりアップロードの方が帯域が制限されているので、アップロードは極力少なくすべきでしょう。

アクティビティモニタもあるので、どれくらい「貢献」したかも確認できます。

クラウド時代のサイバーテポドン Windows Update の回線帯域を確保:GPO_a0056607_11520851.png

それにしても、”マイクロソフトからのダウンロード量12Gb”っていったい何をダウンロードしてるんでしょうね。一発 Windows Update すると格安 SIM をギガ爆死させる強力な破壊力



- グループポリシーで帯域制限:GPO -

GPO グループポリシーで Windows Update の帯域制限をすることもできます。こちらの方が細かな制御ができそうです。

> gpedit

ローカルポリシー > コンピューターの構成 > 管理用テンプレート > ネットワーク > バックグラウンドインテリジェンス転送サービス(BITS) を「有効」にセットし「転送レート」をkb 単位で設定します。


クラウド時代のサイバーテポドン Windows Update の回線帯域を確保:GPO_a0056607_11523616.png

「配信の最適化」では、帯域の「何%にするか」を設定するわけですが、これでは、1Gbps のローカルネットワークが 100Mbps のインターネット回線に繋がっているかどうかの判断はできないわけです。仮に "10%" で設定すると、1Gbpsの10%、つまり100 Mbps で通信しちゃうのですんね(たぶん)。

一方 GPO で設定する BITS は具体的に「転送速度」を指定できるので、LANの状態やインターネット回線の「太さ」に合わせて細かな設定ができるので、グループポリシーを使った方に分がありそうです。という事で細い回線なら数十Kbps、早い回線でも、社内LANにどれ位の台数の端末があるかにもよりますが、100Kbps 程度(多分)に控えておくのが良いと思います。

> gpupdate を実行してポリシーを適用します。

C:\>gpupdate
ポリシーを最新の情報に更新しています...

コンピューター ポリシーの更新が正常に完了しました。
ユーザー ポリシーの更新が正常に完了しました。


C:\>

まぁ台数が多いなら、WSUSを入れる方がよほど効果がありそうなんですが、WSUSも最近はどうも動作が妖しい。

- BITS って何だ? -

BITS(Background Intelligent Transfer Service)は、ネットワークがアイドリングしている時にバックグラウンド通信を行うように制御することです。これで必要な通信量を確保するのですが、所詮、OSが認識できるのは NIC の通信量、つまり LAN の通信量が制御できるだけ。ルーターにどれだけトラフィックがかかっているかは判断できないでしょうね。「配信の最適化」機能で使われる技術です。


- WSUS と併用する -

WSUSと併用する場合、次の文書が役に立ちそうです。

配信の最適化について #2 グループポリシー篇
https://blogs.technet.microsoft.com/jpwsus/2018/11/02/aboutdo_2/

Windows 10 の更新プログラムの配信の最適化
https://docs.microsoft.com/ja-jp/windows/deployment/update/waas-optimize-windows-10-updates

グループポリシーを使います。

> gpedit

ローカルコンピュータポリシー > コンピュータの構成 > 管理用テンプレート > "Windows コンポーネント" にある "配信の最適化" の中にローカルネットワークでの Windows Update の配信の最適化のパラメータがいくつかあります。「歯」(設定)にある P2P 配信の抑制よりもよほど細かな制御ができそうです。

クラウド時代のサイバーテポドン Windows Update の回線帯域を確保:GPO_a0056607_11531824.png
> gpupdate を実行してポリシーを適用します。

C:\>gpupdate
ポリシーを最新の情報に更新しています...

コンピューター ポリシーの更新が正常に完了しました。
ユーザー ポリシーの更新が正常に完了しました。


C:\>

もっとも、Windows Update の配信をLAN内で最適化すると言っても、「持つべき者が持たざる者に施す」ことは、「持つべき者」に余計な負荷がかかるわけで、エンドユーザさんには決して好ましい機能ではありません。そのための Windows Update Service (WSUS) なのだから、やはり、構内であってもクライアントに負荷がかかる P2P 配信は、おすすめできるものではありません。



また Windows の AD では OU 単位にポリシー掛けまくるので、エライさんのPCは快適に、そうでないパートさんのPCの配信率を上げる、と言った制御ができません。ま、OUを分ければいいのでしょうが、そうなるとまた管理が煩雑になる。Novell の ZENworks の様な、サードパーティ製のクライアントPC管理ツールを検討した方が速そうです。

「配信の最適化」については上の、Microsoft のドキュメントの中に、エンタープライズでの「お勧め」パラメータの記述があるので、参考にしてみましょう。

上の文書の「配信の最適化」の”ダウンロードモード”には次の6つの設定があります。

  • 0: HTTPのみ -- P2P は使わず、Microsoft の Update サーバーとのみ通信、台数が少ない時はこれですかね。
  • 1: LAN -- Microsoft のアップデートサーバーや WSUS からダウンロードしたものを、同じパブリックアドレス内でBITSを使って P2P 通信。VPN で同じパブリックアドレスを使っている場合はWAN越しの通信もあり。Pro 版はこれらしい。
  • 2: グループ -- AD ドメイン内で P2P 通信をする。同じドメインなら WAN越しの通信も発生するので注意が必要。グループ ID との組み合わせ推奨
  • 3: インターネット -- HOME エディションの標準、同一プライベートLAN、パブリック WAN 間で P2P 通信、見ず知らずの他人と妖しい通信がある。
  • 99: 簡易 -- P2P を使わず WSUS からのみ HTTPダウンロード、急いで配布したいならこれか?
  • 100: バイパス -- P2P を使わず BITS を使って WSUS からのみダウンロード



Windows10 1607 から以前のバージョンにはこの機能がないようなので、下の文書から、管理テンプレート admx をダウンロードして使える様です。

グループ ポリシーを使用して Windows 10 で Windows Update の配信の最適化を構成する方法

まだ Windows update だけなら手段はあるのですが、iPhone の iOS のアップデートなんかも、自宅でやるとアレなので、カイシャの Wifi 経由でやっちゃう輩もいるわけですね。これもバカにならない。

また Windows の OneDrive も、ネットワーク回線に異常なトラフィックをかける極悪機能です。

社内ネットワークは「便利だから使う共有リソース」であって、個人の我儘を満たすものであってはならない。何らかのルールが必要なんですね。

極悪 Windows10 の OneDrive を無効にする

--
グループポリシー:GPO で設定する BITS と、歯(設定)にある「配信の最適化」のどちらが優先されるかは資料が見つかりませんでした。コメントいただけるとありがたいです。






# by islandcenter | 2019-11-21 12:04 | Windows | Comments(0)

今回説明するのは SUSE Linux (SLES12sp3) で動作する Bind9 です。

「ネットワークの調子が悪い」

とか言われると真っ先に疑われるのが DNS serviceです。ここでは SUSE Linux Enterprise 11/12 Bind の再起動dig での調査方法について説明します。




- SUSE Linux SLES12 での Bind DNS のサービスの再起動 -

SLE12 以降は、従来の initd の代わりに systemd が使われています。

rcnamed は /etc/init.d/named スクリプトのシンボリックリンクです。

dns2:~ # whereis rcnamed
rcnamed: /usr/sbin/rcnamed
dns2:~ # ls /usr/sbin/rcnamed -al
lrwxrwxrwx 1 root root 17 Jun 18 2018 /usr/sbin/rcnamed -> /etc/init.d/named
dns2:~ #
dns2:~ # ls /etc/init.d/named -l
-rwxr-xr-- 1 root root 10590 Jun 29 2017 /etc/init.d/named
dns2:~ #


SLES12より init から systemd に置き換わりました。

dns2:~ # rcnamed restart
redirecting to systemctl restart named.service

dns2:~ # tail -n10 /var/log/messages
2019-11-08T14:19:33.172180+09:00 dns2 named[10386]: couldn't add command channel ::1#953: address not available
2019-11-08T14:19:33.172264+09:00 dns2 named[10386]: managed-keys-zone: loaded serial 0
2019-11-08T14:19:33.172348+09:00 dns2 named[10386]: zone intra/IN: loaded serial 2018061800
2019-11-08T14:19:33.172521+09:00 dns2 named[10386]: zone i.islandcenter.jp/IN: loaded serial 2019072503
2019-11-08T14:19:33.172606+09:00 dns2 named[10386]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 42
2019-11-08T14:19:33.172689+09:00 dns2 named[10386]: zone localhost/IN: loaded serial 42
2019-11-08T14:19:33.172773+09:00 dns2 named[10386]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
2019-11-08T14:19:33.172857+09:00 dns2 named[10386]: all zones loaded
2019-11-08T14:19:33.172940+09:00 dns2 named[10386]: running
2019-11-08T14:19:33.173030+09:00 dns2 named[10333]: Starting name server BIND ..done
dns2:~ #


YaST(yast2) では System > Service Manager より "named"自動起動停止再起動ログの確認がマウス操作だけでできます。キーボードをほとんど使わないので、どうしても SUSE Linux 管理者はモノグサになります。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_15395446.png

- SUSE Linux SLES11 での Bind DNS のサービスの再起動 -

SLE11までは、古い initd で制御されています。

dns3:~ # rcnamed restart
Shutting down name server BIND waiting for named to shut down (28s) done
Starting name server BIND done
dns3:~ #
dns3:~ # ↓ 正しく動いているかどうか、エラーがないか /var/log/messages の tail を確認
dns3:~ #
dns3:~ # tail /var/log/messages
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: A.E.F.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: B.E.F.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: command channel listening on 127.0.0.1#953
Nov 8 16:09:41 dns3 named[27596]: the working directory is not writable
Nov 8 16:09:41 dns3 named[27596]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
Nov 8 16:09:41 dns3 named[27596]: zone intra/IN: loaded serial 2016051901
Nov 8 16:09:41 dns3 named[27596]: zone i.islandcenter.jp/IN: loaded serial 2019072503
Nov 8 16:09:41 dns3 named[27596]: zone localhost/IN: loaded serial 42
Nov 8 16:09:41 dns3 named[27596]: running
dns3:~ #



- dig の基本的な使い方 -

dig は bind の推奨標準ツールです。 Windows で使う場合、dig コマンドは https://www.isc.org/ よりパッケージのバイナリがダウンロードできます。

Windowsでnslookupの代わりにdigコマンドでDNSを調べる(BIND編)


- デフォルトで指定しているDNSがインターネットの host.another.com の名前解決をしているか -

[構文]# dig host.another.com

サンプル

sle15:~ # dig www.google.com
; <<>> DiG 9.11.2 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35459
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  <---- 問い合わせ内容
;www.google.com. IN A
;; ANSWER SECTION: <---- 回答内容
www.google.com. 25 IN A 172.217.27.68
;; AUTHORITY SECTION:
google.com. 167592 IN NS ns2.google.com.
google.com. 167592 IN NS ns4.google.com.
google.com. 167592 IN NS ns3.google.com.
google.com. 167592 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 167592 IN A 216.239.32.10
ns2.google.com. 167592 IN A 216.239.34.10
ns3.google.com. 167592 IN A 216.239.36.10
ns4.google.com. 167592 IN A 216.239.38.10
ns1.google.com. 167592 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 167592 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 167592 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 167592 IN AAAA 2001:4860:4802:38::a
;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Fri Nov 08 15:47:17 JST 2019
;; MSG SIZE rcvd: 307
sle15:~ #

- 明示的にDNSを指定してそのDNSサーバーが正しく動いているか -

原因が、自LANのDNSではなく、大元の ISP の DNS の場合もあります。

[構文]# dig @MyISPsDNS host.another.com

サンプル

sle15~ # dig @192.168.1.3 www.google.com
; <<>> DiG 9.11.2 <<>> @192.168.1.3 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18969
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 27
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  <---- 問い合わせ内容
;www.google.com. IN A
;; ANSWER SECTION: <---- 回答内容
www.google.com. 80 IN A 172.217.25.196
;; AUTHORITY SECTION: <----- ゾーンのマスターは?
com. 172795 IN NS h.gtld-servers.net.
com. 172795 IN NS k.gtld-servers.net.
com. 172795 IN NS m.gtld-servers.net.
com. 172795 IN NS a.gtld-servers.net.
com. 172795 IN NS i.gtld-servers.net.
com. 172795 IN NS c.gtld-servers.net.
com. 172795 IN NS j.gtld-servers.net.
com. 172795 IN NS g.gtld-servers.net.
com. 172795 IN NS d.gtld-servers.net.
com. 172795 IN NS b.gtld-servers.net.
com. 172795 IN NS e.gtld-servers.net.
com. 172795 IN NS l.gtld-servers.net.
com. 172795 IN NS f.gtld-servers.net.
;; ADDITIONAL SECTION:   <---- ゾーンマスターの IP アドレス
a.gtld-servers.net. 172795 IN A 192.5.6.30 <-- A は IpV4
a.gtld-servers.net. 172795 IN AAAA 2001:503:a83e::2:30 <--- AAAA はIpV6
b.gtld-servers.net. 172795 IN A 192.33.14.30
b.gtld-servers.net. 172795 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 172795 IN A 192.26.92.30
c.gtld-servers.net. 172795 IN AAAA 2001:503:83eb::30
d.gtld-servers.net. 172795 IN A 192.31.80.30
d.gtld-servers.net. 172795 IN AAAA 2001:500:856e::30
e.gtld-servers.net. 172795 IN A 192.12.94.30
e.gtld-servers.net. 172795 IN AAAA 2001:502:1ca1::30
f.gtld-servers.net. 172795 IN A 192.35.51.30
f.gtld-servers.net. 172795 IN AAAA 2001:503:d414::30
g.gtld-servers.net. 172795 IN A 192.42.93.30
g.gtld-servers.net. 172795 IN AAAA 2001:503:eea3::30
h.gtld-servers.net. 172795 IN A 192.54.112.30
h.gtld-servers.net. 172795 IN AAAA 2001:502:8cc::30
i.gtld-servers.net. 172795 IN A 192.43.172.30
i.gtld-servers.net. 172795 IN AAAA 2001:503:39c1::30
j.gtld-servers.net. 172795 IN A 192.48.79.30
j.gtld-servers.net. 172795 IN AAAA 2001:502:7094::30
k.gtld-servers.net. 172795 IN A 192.52.178.30
k.gtld-servers.net. 172795 IN AAAA 2001:503:d2d::30
l.gtld-servers.net. 172795 IN A 192.41.162.30
l.gtld-servers.net. 172795 IN AAAA 2001:500:d937::30
m.gtld-servers.net. 172795 IN A 192.55.83.30
m.gtld-servers.net. 172795 IN AAAA 2001:501:b1f9::30
;; Query time: 381 msec
;; SERVER: 192.168.1.3#53(192.168.1.3)
;; WHEN: Fri Nov 08 15:56:02 JST 2019
;; MSG SIZE rcvd: 855
sle15:~ #



- イントラネット向けDNSは正しく LAN 機器のIPアドレスを返すか -

[構文] # dig @DnsIPorDnsHostName myhost.mynet.com

サンプル

sle15:~ # dig @dns2 quanbe.i.islandcenter.jp

; <<>> DiG 9.11.2 <<>> @dns2 quanbe.i.islandcenter.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20621
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;quanbe.i.islandcenter.jp. IN A

;; ANSWER SECTION:         <---- 回答 ↓
quanbe.i.islandcenter.jp. 172800 IN A 192.168.1.237

;; AUTHORITY SECTION: <--- ゾーンマスター↓
i.islandcenter.jp. 172800 IN NS dns3.i.islandcenter.jp.
i.islandcenter.jp. 172800 IN NS dns2.i.islandcenter.jp.

;; ADDITIONAL SECTION:
dns2.i.islandcenter.jp. 172800 IN A 192.168.1.2
dns3.i.islandcenter.jp. 172800 IN A 192.168.1.3

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Fri Nov 08 16:18:35 JST 2019
;; MSG SIZE rcvd: 139

sle15:~ #

- DNS のバージョンがバレていないか -

外部にむき出しのDNSは、バージョン固有のバグで悪さをされない様、バージョンを隠しておきます。

[構文] # dig @dns  CHAOS VERSION.BIND TXT

サンプル


sle15:~ # dig @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT

; <<>> DiG 9.11.2 <<>> @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46470
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;VERSION.BIND. CH TXT

;; ANSWER SECTION:       <---- バレバレ ↓
VERSION.BIND. 0 CH TXT "9.9.9-P1"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Nov 18 14:14:53 JST 2019
;; MSG SIZE rcvd: 88

sle15:~ #

この様にバージョンがバレバレにならない様、yast > Network Services > DNS Server の ”Basic Options” の Option の項目に "Version" を空欄にするか、"unknown" の様な ”任意の文字列” を追加(Add)しておきます。あまり過激な文字列を書いておくと、ある種の「ヤル気」を起こす輩がいますから、穏当にしておくのが無難です。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_14380201.png
※ SUSE Linux で DNS を YaST で設定した場合、named.conf は /var/lib/named/etc の下に作られます。細かなパラメータの設定は必ず YaST を使う事をお勧めします。

dns2:~ # grep 99 /var/lib/named/etc/named.conf
version "99.99.99";
dns2:~ #


dig を実行するとこんな感じになりました。

sle15:~ # dig @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT

; <<>> DiG 9.11.2 <<>> @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18773
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;VERSION.BIND. CH TXT

;; ANSWER SECTION  <---- バージョンを誤魔化した ↓
VERSION.BIND. 0 CH TXT "99.99.99"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Nov 18 14:31:52 JST 2019
;; MSG SIZE rcvd: 88

sle15:~ #





- SUSE Linux での DNS ゾーンのレコードメンテナンス -

SUSE Linux (SLES/openSUSE) では yast を使って、ゾーンとレコードのメンテナンスをします。Bind DNSのインストールから初期設定、僅かな変更などのメンテナンスには間違えがなく便利です。

dns2:~ # yast

テキスト版 yast > Network Services > DNS server へ TAB キーで移動し、DNS Zones から、ゾーンファイルを Edit します。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_17311881.png

GUI版はこのような感じです。

dns2:~ # yast2 &

GUI版 yast2 > Network Services > DNS server

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_17315679.png

OK ボタンを押すと、自動的に named がリスタートします。

ただし、構文や設定、 /etc/resolve.conf に問題があると、保存して再起動は行われません。設定内容を確認して、再設定します。


- メンドクサイのでゾーンファイルをまとめてテキストエディタで書き換える -

yastでイチイチ、レコードのメンテなんてやってられねぇよ、LibreOFfice Calc で作った100 レコード位、csv で一発で追加したいんだ、という時はテキストエディタで、ゾーンファイルを編集すると良いでしょう。

# vi /var/lib/named/master/MYZONE


# gedit /var/lib/named/master/MYZONE &

でまとめて、ゾーンの変更、シリアル番号のメンテナンスを行います。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_18071518.png

ゾーンファイルを保存したら

# rndc reload

を実行するか、影響が小さい場合 # rcnamed restart します。

dns2:~ # rndc reload
server reload successful
dns2:~ #


- そのIPはキャッシュされてる? -

DNSが正しくホスト情報をキャッシュしているかどうかは rndc dumpdb コマンドでダンプして確認できます。キャッシュをダンプした後、/var/lib/named/log/named_dump.db の内容を確認します。


dns2:~ # rndc dumpdb
dns2:~ # grep suse.com /var/lib/named/log/named_dump.db
3090 PTR suse.com.gr.
3090 PTR suse.com.pl.
3090 PTR suse.com.tr.
suse.com. 552 A 130.57.66.19
dns2:~ #


--
速攻 1分で DNS on SUSE12 by YaST(YaST で DNS のインストール)

SUSE Linux 10 : YaST で イントラネットDNS サーバを設定

SUSE Linux で Dynamic DNS(DDNS) を作る








# by islandcenter | 2019-11-09 18:00 | SUSE | Comments(0)