isLandcenter 非番中

ブログトップ | ログイン

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)