mattintosh note

Hello Raspberry Pi!

NanoPi-NEO2 で MIB の変換ができない

YAMAHA WLX202 が来たので snmpwalk でデータを取ってみたりしてるんだけど変換されない。というかエラーがゴソゴソと出る。

X86_64 Ubuntu には snmp-mib-downloader パッケージがあるけど NanoPi-NEO2 の aarch64 Ubuntu のパッケージリストには出てこない。APT のリポジトリを弄ったせいか?

アーカイブ見てみたらパッケージはあるので手動でインストールすることにした。

依存関係の smistrip を入れておく。

$ sudo apt-get install smistrip

snmp-mibs-downloaderDEB パッケージを拾ってきてインストールする。

$ wget 'http://jp.archive.ubuntu.com/ubuntu-ports/pool/multiverse/s/snmp-mibs-downloader/snmp-mibs-downloader_1.1+nmu1_all.deb'
$ sudo dpkg -i 'snmp-mibs-downloader_1.1+nmu1_all.deb'

テスト。

$ snmptranslate -m all .1.3.6.1.2.1.2.2.1.2
IF-MIB::ifDescr

fluentd で使うので実際は MIB の変換ができるかどうかは重要ではなかったりする。

いまの Kibana には Serial Differencing Aggregation というのがあるので IfInOctets/IfOutOctets などの総計から時系列で差分を計算してくれるらしい。欠点(?)として最初のポイントは差分が無いので必ず 0 になってしまう。回避方法はありそうだけど時間がないのでとりあえずこれでいいや。

f:id:mattintosh4:20181113013256p:plain

NanoPi NEO2 の APT サーバを JP サーバに変更

パッケージのアップデートしようと思ったらハッシュ不一致とか出るのでサーバ変更。

デフォルトの /etc/apt/source.list ではサーバは http://ports.ubuntu.com に設定されている。

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted

## Uncomment the following two lines to add software from the 'universe'
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted

deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security multiverse

http://jp.archive.ubuntu.com で ARM バイナリのミラーを提供しているとのことなのでこちらを利用させていただく。

$ sudo gzip /etc/apt/sources.list
$ gzip -dc /etc/apt/sources.list.gz | sed '/^deb/s|ports.ubuntu.com|jp.archive.ubuntu.com|' | sudo tee /etc/apt/sources.list

差分。

--- /dev/fd/63   2018-11-10 16:59:09.349566783 +0900
+++ sources.list  2018-11-10 16:58:16.946964003 +0900
@@ -1,35 +1,35 @@
 # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
 # newer versions of the distribution.
 
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial main restricted
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial main restricted
 
 ## Major bug fix updates produced after the final release of the
 ## distribution.
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-updates main restricted
 
 ## Uncomment the following two lines to add software from the 'universe'
 ## repository.
 ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
 ## team. Also, please note that software in universe WILL NOT receive any
 ## review or updates from the Ubuntu security team.
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial universe
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial universe
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-updates universe
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-updates universe
 
 ## N.B. software from this repository may not have been tested as
 ## extensively as that contained in the main release, although it includes
 ## newer versions of some applications which may provide useful features.
 ## Also, please note that software in backports WILL NOT receive any review
 ## or updates from the Ubuntu security team.
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
 
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security universe
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security multiverse
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-security main restricted
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-security main restricted
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-security universe
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-security universe
+deb http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-security multiverse
+deb-src http://jp.archive.ubuntu.com/ubuntu-ports/ xenial-security multiverse

整形して並べるとこんな感じ。

deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            universe
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            universe
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    universe
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    universe
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-backports  main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-backports  main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   universe
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   universe
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   multiverse
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   multiverse

短い方が管理しやすいかな。

$ gzip /etc/apt/sources.list
$ gzip -dc /etc/apt/sources.list.gz | sed -n '/^deb/s|ports.ubuntu.com|jp.archive.ubuntu.com|p' | column -t | sudo tee /etc/apt/sources.list
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            universe
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial            universe
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    universe
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-updates    universe
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-backports  main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-backports  main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   main        restricted
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   main        restricted
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   universe
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   universe
deb      http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   multiverse
deb-src  http://jp.archive.ubuntu.com/ubuntu-ports/  xenial-security   multiverse

久しぶりに HDD を買った

ネットワークストレージの空き領域が無くなったのでいい加減買い足し。地雷と言われてる ST4000DM004 にした。Western Digital はあまり好きじゃないし、昔ほど HDD の性能に拘りは無い。

いまはネットワークインターフェイスの関係で Raspberry Pi 3 から NanoPi NEO2 に移設している ST3000DM001 の 情報を久しぶりに見てみる。この製品は LaCie の LCH-MNR030U3 だった気がする。

$ sudo smartctl -d sat --all /dev/sdc
smartctl 6.5 2016-01-24 r4214 [aarch64-linux-4.14.0] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.14 (AF)
Device Model:     ST3000DM001-1CH166
Serial Number:    
LU WWN Device Id: 5 000c50 072d3946e
Firmware Version: CC47
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Oct 24 23:00:25 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  575) seconds.
Offline data collection
capabilities:            (0x7b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    ( 317) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x3085) SCT Status supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   115   099   006    Pre-fail  Always       -       93865696
  3 Spin_Up_Time            0x0003   095   092   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       341
  5 Reallocated_Sector_Ct   0x0033   099   099   010    Pre-fail  Always       -       1384
  7 Seek_Error_Rate         0x000f   072   060   030    Pre-fail  Always       -       17171518
  9 Power_On_Hours          0x0032   063   063   000    Old_age   Always       -       32806
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       316
183 Runtime_Bad_Block       0x0032   099   099   000    Old_age   Always       -       1
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       3 3 3
189 High_Fly_Writes         0x003a   098   098   000    Old_age   Always       -       2
190 Airflow_Temperature_Cel 0x0022   059   044   045    Old_age   Always   In_the_past 41 (Min/Max 26/46 #11)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       298
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       344
194 Temperature_Celsius     0x0022   041   056   000    Old_age   Always       -       41 (0 10 0 0 0)
197 Current_Pending_Sector  0x0012   081   081   000    Old_age   Always       -       3128
198 Offline_Uncorrectable   0x0010   081   081   000    Old_age   Offline      -       3128
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       32804h+35m+07.860s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       9655026104
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       6272904990

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

おや…不良セクタが。

んで ST4000DM004 の S.M.A.R.T 結果。

$ sudo smartctl -d sat --all /dev/sda
smartctl 6.5 2016-01-24 r4214 [aarch64-linux-4.14.0] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     ST4000DM004-2CV104
Serial Number:    
LU WWN Device Id: 5 000c50 0bae57ca7
Firmware Version: 0001
User Capacity:    4,000,787,030,016 bytes [4.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5425 rpm
Form Factor:      3.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Oct 24 23:16:50 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (    0) seconds.
Offline data collection
capabilities:            (0x73) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    ( 488) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x30a5) SCT Status supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   082   065   006    Pre-fail  Always       -       155888737
  3 Spin_Up_Time            0x0003   096   096   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       10
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   064   060   045    Pre-fail  Always       -       2374933
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       74 (114 172 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       2
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   062   060   040    Old_age   Always       -       38 (Min/Max 25/40)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       2
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       18
194 Temperature_Celsius     0x0022   038   040   000    Old_age   Always       -       38 (0 25 0 0 0)
195 Hardware_ECC_Recovered  0x001a   082   065   000    Old_age   Always       -       155888737
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       42 (161 240 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       2713040728
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       9811923

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

大容量 HDD は 1 TB 単位で使うことにしているので MBR でもいいんだけど一応 GPT。あと、サイズは 1 TiB ではなく 1TB にすることにしてる。

$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 720AE297-8557-4BAD-85E0-9514702E8D91
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7814037134
Partitions will be aligned on 2048-sector boundaries
Total free space is 1537101 sectors (750.5 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      1953127047   931.3 GiB   8300  Linux filesystem
   2      1953128448      3906253447   931.3 GiB   8300  Linux filesystem
   3      3906254848      5859379847   931.3 GiB   8300  Linux filesystem
   4      5859381248      7812506247   931.3 GiB   8300  Linux filesystem

いつもの癖でそのまま mkfs.ext4 したらなんか stripe=8191 とか付いてるから tune2fs で見てみる。

$ mount -t ext4
/dev/mmcblk0p2 on / type ext4 (rw,relatime,data=ordered)
/dev/sdb1 on /media/HDCL-UT1 type ext4 (rw,noatime,data=ordered)
/dev/sdc1 on /media/ST3000DM001-1 type ext4 (rw,noatime,data=ordered)
/dev/sdc2 on /media/ST3000DM001-2 type ext4 (rw,noatime,data=ordered)
/dev/sdc3 on /media/ST3000DM001-3 type ext4 (rw,noatime,data=ordered)
/dev/sda1 on /media/ST4000DM004-1 type ext4 (rw,noatime,stripe=8191,data=ordered)
/dev/sda2 on /media/ST4000DM004-2 type ext4 (rw,noatime,stripe=8191,data=ordered)

なんで RAID stripe width 付くの…。

$ tune2fs -l /dev/sda1
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   ST4000DM004-1
Last mounted on:          /media/ST4000DM004-1
Filesystem UUID:          763e8fa3-1bf1-448f-b3c6-4915e144c2b2
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              61038592
Block count:              244140625
Reserved block count:     12207031
Free blocks:              162198379
Free inodes:              60786672
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stripe width:        8191
Flex block group size:    16
Filesystem created:       Sun Oct 21 21:27:39 2018
Last mount time:          Fri Feb 12 01:28:03 2016
Last write time:          Fri Feb 12 01:28:03 2016
Mount count:              3
Maximum mount count:      -1
Last checked:             Sun Oct 21 21:27:39 2018
Check interval:           0 (<none>)
Lifetime writes:          313 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      fff5cb63-86e3-4e0b-996e-78a6c3c4fbdf
Journal backup:           inode blocks
Checksum:                 0xffeec98a

多分 Raspberry Pi(Arch Linux だったか?)でフォーマットしたものと NanoPi NEO2(Ubuntu)でフォーマットしたものの差分。Filesystem feature に 64bit が入ってるなぁ。

$ diff -u <(tune2fs -l /dev/sdc1) <(tune2fs -l /dev/sda1)
--- /dev/fd/63    2018-10-24 23:47:34.016343443 +0900
+++ /dev/fd/62    2018-10-24 23:47:34.020343277 +0900
@@ -1,10 +1,10 @@
 tune2fs 1.42.13 (17-May-2015)
-Filesystem volume name:   ST3000DM001-1
-Last mounted on:          /media/ST3000DM001-1
-Filesystem UUID:          c1b88656-446a-4083-9c22-69f49146cf91
+Filesystem volume name:   ST4000DM004-1
+Last mounted on:          /media/ST4000DM004-1
+Filesystem UUID:          763e8fa3-1bf1-448f-b3c6-4915e144c2b2
 Filesystem magic number:  0xEF53
 Filesystem revision #:    1 (dynamic)
-Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
+Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
 Filesystem flags:         signed_directory_hash 
 Default mount options:    user_xattr acl
 Filesystem state:         clean
@@ -13,32 +13,35 @@
 Inode count:              61038592
 Block count:              244140625
 Reserved block count:     12207031
-Free blocks:              12663554
-Free inodes:              60732730
+Free blocks:              162198379
+Free inodes:              60786672
 First block:              0
 Block size:               4096
 Fragment size:            4096
-Reserved GDT blocks:      965
+Group descriptor size:    64
+Reserved GDT blocks:      1024
 Blocks per group:         32768
 Fragments per group:      32768
 Inodes per group:         8192
 Inode blocks per group:   512
+RAID stripe width:        8191
 Flex block group size:    16
-Filesystem created:       Mon Jan 12 22:02:10 2015
-Last mount time:          Fri Feb 12 01:28:02 2016
-Last write time:          Fri Feb 12 01:28:02 2016
-Mount count:              76
+Filesystem created:       Sun Oct 21 21:27:39 2018
+Last mount time:          Fri Feb 12 01:28:03 2016
+Last write time:          Fri Feb 12 01:28:03 2016
+Mount count:              3
 Maximum mount count:      -1
-Last checked:             Mon Feb 22 23:42:01 2016
+Last checked:             Sun Oct 21 21:27:39 2018
 Check interval:           0 (<none>)
-Lifetime writes:          2027 GB
+Lifetime writes:          313 GB
 Reserved blocks uid:      0 (user root)
 Reserved blocks gid:      0 (group root)
 First inode:              11
 Inode size:              256
-Required extra isize:     28
-Desired extra isize:      28
+Required extra isize:     32
+Desired extra isize:      32
 Journal inode:            8
 Default directory hash:   half_md4
-Directory Hash Seed:      367fc8dd-0a4d-4fa7-90ea-77026a99d6a1
+Directory Hash Seed:      fff5cb63-86e3-4e0b-996e-78a6c3c4fbdf
 Journal backup:           inode blocks
+Checksum:                 0xffeec98a

パーティションのセクター数は同じなのにファイルシステムのサイズ微妙に違うし。ディストリによって /etc/mke2fs.conf って違うのか。

$ df -H -t ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2   16G  3.6G   12G  24% /
/dev/sda1       984G  323G  612G  35% /media/ST4000DM004-1
/dev/sda2       984G  898G   36G  97% /media/ST4000DM004-2
/dev/sdb1       985G  882G   53G  95% /media/HDCL-UT1
/dev/sdc1       985G  933G  1.4G 100% /media/ST3000DM001-1
/dev/sdc2       985G  926G  8.2G 100% /media/ST3000DM001-2
/dev/sdc3       985G  927G  7.5G 100% /media/ST3000DM001-3

そしてデータ移動しつつ1日経って気づいたけど i-node のサイズ変えるの忘れてた(´・ω・`) もう 1 TB 分データ移動したのに…。i-node 余り過ぎやん。

$ df -i -t ext4
Filesystem        Inodes  IUsed     IFree IUse% Mounted on
/dev/mmcblk0p2    906240  68652    837588    8% /
/dev/sda1       61038592 260739  60777853    1% /media/ST4000DM004-1
/dev/sda2       61038592 541012  60497580    1% /media/ST4000DM004-2
/dev/sdb1       61054976 540946  60514030    1% /media/HDCL-UT1
/dev/sdc1       61038592 306389  60732203    1% /media/ST3000DM001-1
/dev/sdc2       61038592 473815  60564777    1% /media/ST3000DM001-2
/dev/sdc3       61038592 322747  60715845    1% /media/ST3000DM001-3

てことで残りの 2 パーティションを xfs にした。

$ df -HT -t ext4 -t xfs
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/mmcblk0p2 ext4   16G  3.6G   12G  24% /
/dev/sda1      ext4  984G  323G  612G  35% /media/ST4000DM004-1
/dev/sda2      ext4  984G  898G   36G  97% /media/ST4000DM004-2
/dev/sda3      xfs   1.0T  148G  853G  15% /media/ST4000DM004-3
/dev/sda4      xfs   1.0T  1.1G  999G   1% /media/ST4000DM004-4
/dev/sdb1      ext4  985G  882G   53G  95% /media/HDCL-UT1
/dev/sdc1      ext4  985G  933G  1.4G 100% /media/ST3000DM001-1
/dev/sdc2      ext4  985G  926G  8.2G 100% /media/ST3000DM001-2
/dev/sdc3      ext4  985G  927G  7.5G 100% /media/ST3000DM001-3

ん???

ext4 と xfs って 1 TB だと 15 GB もサイズに差出るのかよ…。

※ST4000DM004-3 はデータ移動中なので使用量が増えてるけど ST4000DM004-4 は未使用。xfs は未使用でも初期段階で 1.1 GB 使ってる。

一応 i-node 数も見ておく。

$ df -iT -t ext4 -t xfs
Filesystem     Type    Inodes  IUsed     IFree IUse% Mounted on
/dev/mmcblk0p2 ext4    906240  68653    837587    8% /
/dev/sda1      ext4  61038592 260958  60777634    1% /media/ST4000DM004-1
/dev/sda2      ext4  61038592 541012  60497580    1% /media/ST4000DM004-2
/dev/sda3      xfs  488281216  13972 488267244    1% /media/ST4000DM004-3
/dev/sda4      xfs  488281216      3 488281213    1% /media/ST4000DM004-4
/dev/sdb1      ext4  61054976 540946  60514030    1% /media/HDCL-UT1
/dev/sdc1      ext4  61038592 306389  60732203    1% /media/ST3000DM001-1
/dev/sdc2      ext4  61038592 473815  60564777    1% /media/ST3000DM001-2
/dev/sdc3      ext4  61038592 322747  60715845    1% /media/ST3000DM001-3

もう xfs でいいや(´・ω・`)


で、rsync で sdb1 から sdb2、sdb3 にそれぞれ同じデータ量を書き込んだんだけど差がありすぎる。sdb は 512 byte セクタで sda は 4 K セクタでまぁ変わるものなんだろうが、ext4 と xfs で 65 GB も差が出た。

Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext4  985G  882G   53G  95% /media/HDCL-UT1
/dev/sda2      ext4  984G  898G   36G  97% /media/ST4000DM004-2
/dev/sda3      xfs   1.0T  899G  101G  90% /media/ST4000DM004-3

Filesystem     Type    Inodes  IUsed     IFree IUse% Mounted on
/dev/sdb1      ext4  61054976 540946  60514030    1% /media/HDCL-UT1
/dev/sda2      ext4  61038592 541012  60497580    1% /media/ST4000DM004-2
/dev/sda3      xfs  196981880 541004 196440876    1% /media/ST4000DM004-3

Elasticsearch と Kibana で遊んでみたよ

エンジニアで記事を書くと言えば Qiita でしょうか。先日、数年ぶりに記事を投稿してみましたがやっぱりなんか書きづらいなぁと。というかいつからあそこは自分の年収を書く場所になったのやら。

そんな話は置いておき、7月に転職しました。会社に所属はしてますが、いまのところはフリーランスっぽい感じで仕事してます。昨日、家の書類の片付けをしていたら前の会社の給料明細が出てきたのでちまちまと開封していたんですが(いつも郵便で来て開封してなかった)、最後の方は有休消化のみだったせいか、最終的な支給額は17万弱でした(おいおい高卒かよ)。都内の会社でも賃金の安いところはこんなもんなんですかね。転職の理由は色々ありますが、「いまの会社にいると人生無駄にするなぁ〜」と思ったのが一番ですかね。エンジニアとしての技術が全然詰めない。プライベートの方がよほど勉強になっていました。

いまの会社に入ってから AWS を色々と自由に触れるようになったので仕事で使ったり遊びで使ったりしているんですが、前々から使いたいと思っていた Elasticsearch Service をちょっと真面目に使うようになりました。

Elasticsearch や Kibana は Docker を使っても構築できるんですが、パブリックな環境に一台常駐して置いておかないとデータ収集が面倒です。Elasticsearch Service はボタンぽちぽちでアクセス制限とかの設定するばすぐ使えて優れものですね。本格的な請求はまだ来てませんが EC2 インスタンス 1台分で 1,000 〜 2,000 円くらいじゃないかな。(全然違ったらごめんなさい)

さて、いままで IoT デバイスの温度くらいしか収集していなかった Elasticsearch Service ですが、お仕事で Google Play ストアの仕様を調べる機会がありまして、進めていくうちに「これ Elasticsearch に入れた面白そう」と思ったので色々とデータを突っ込んでみることにしました。

先に言ってくと、Google Play ストア全体ではなく、アプリに限定した話です。

私は iPhone ユーザなので Android は旧式のタブレットくらいしか持ってなくてほとんど利用してないのであまり市場の状況というのがわからず。

アプリページを見るとこんな感じですね。このページの随所に分析用として使えるデータが点在しています。それをクローリングしていく感じです。クローラーは自作でもいいですし、Python とかで google-pley-scraper みたいなものもあるのでそちらを利用するのもありでしょう。今回、私は自分でクローラーを作成しました。

f:id:mattintosh4:20181008220307p:plain

アプリページ以外にもランキングや特集コーナーがあります。こちらもランキングでは順位が付いてたりします。マーケティング関係のお仕事をされている方であればこういう情報も必要でしょうね。(下の画像は事前登録系なので順位は特に無いと思います)

f:id:mattintosh4:20181008220459p:plain

クローラーを作成したらあとは Elasticsearch に合わせた JSON を投げるだけでどんどん登録してくれます。たまに型を間違ったりするのでその場合は事前に定義を作成したり、Kibana 側で調整します。ただ、DATA 型は 最初から書式を合わせておいた方が無難ですね。

f:id:mattintosh4:20181008215724p:plain

本当はもう少し細かく拾う情報を拾う予定でしたが、とりあえず Elasticsearch と Kibana を使ってみたかったので項目を少し省きました。

{
  "_index": "play",
  "_type": "apps",
  "_id": "",
  "_version": 1,
  "_score": null,
  "_source": {
    "genreId": "GAME_ACTION",
    "developerAddress": "東京都千代田区神田須田町2-8-2 プライム神田ビル 9階",
    "icon": "https://lh3.googleusercontent.com/aeULuMyhf0kzv-i-ICR1YV1m1zwdCjM7w9-6v49NwyO5s_sa-26Y_gUy72I6DflfLcQ",
    "description": "これが君の望んでいる「海戦-ロマン-」<br><br>・擬人化艦船 少女×シューティングRPG! <br>世界中の艦船を可愛い少女に擬人化した艦船を操作するシューティングRPGの登場! <br>個性豊かなキャラクターが織り成す『アズールレーン』の世界、いざ抜錨せよ!<br><br>・簡単操作で爽快感のあるシューティングゲーム! <br>『アズールレーン』最大の特徴はシューティングゲーム <br>・最大で6隻からなる艦隊を編成し、敵の砲火を縦横無尽に潜り抜け、敵を倒そう! <br>・敵の弾には当たっても大丈夫!自動操作もあり、アクションが苦手な人でも楽しめる!<br><br>・あなただけの艦隊を作り上げよう! <br>日本の艦船も含め、世界中の有名な、時にはマニアックな艦船が登場! <br>・100種以上の艦船と可愛く綺麗なキャラクター達が特徴! <br>・好感度システム搭載、お気に入りのキャラクターを自由に強化し、あなただけの娘に!<br><br><br>公式ツイッター <br>@azurlane_staff",
    "3-starts": 1137,
    "4-starts": 3426,
    "developerEmail": "cs@azurlane.net",
    "title": "アズールレーン",
    "2-starts": 632,
    "5-starts": 14225,
    "developerWebSite": "http://www.azurlane.jp",
    "crawledTime": "2018-10-08T21:49:48+0900",
    "score": 4.3141346,
    "developerId": "/store/apps/developer?id=Yostar,+Inc.",
    "reviews": 8362,
    "ratings": 21147,
    "price": 0,
    "genre": "アクション",
    "familyGenre": null,
    "currency": "USD",
    "inAppItem": null,
    "offeredBy": "Yostar, Inc.",
    "released": "2017/09/13",
    "summary": "新感覚美少女戦艦シューティングRPG",
    "1-star": 1727,
    "contentRatingDescription": "ヌード",
    "requiresAndroid": "4.3 以上",
    "privacyPolicy": "http://www.azurlane.jp/private.html",
    "version": "1.5.2",
    "installs": 1000000,
    "familyGenreId": "GAME_ACTION",
    "size": "52M",
    "contentRating": "16 歳以上",
    "developer": "Yostar, Inc.",
    "updated": 1536891354
  },
  "fields": {
    "crawledTime": [
      "2018-10-08T12:49:48.000Z"
    ],
    "released": [
      "2017-09-13T00:00:00.000Z"
    ]
  },
  "highlight": {
    "title": [
      "@kibana-highlighted-field@アズールレーン@/kibana-highlighted-field@"
    ]
  },
  "sort": [
    1539002988000
  ]
}

んでワクワクするのが Kibana のヴィジュアライザやダッシュボードですね。3日ほど回してみてるところですが、ジャンル指定無しのランキング情報を拾ってみるだけでも結構面白いです。クローラを稼働させているサーバのリソースなんかも同じダッシュボードで監視できるようにしています。

f:id:mattintosh4:20181008213651p:plain

まずはランキングに登場するアプリのインストール数別の割合です。Google Play ストアのランキングには多いところで最大 600 位まで表示されるようになっていますが、100 万ダウンロード以下だけで約8割を占めます。FacebookTwitter なんかの有名アプリはほんの一部なんですね。

f:id:mattintosh4:20181008225327p:plain

こちらはリリース時期が新し目のアプリの評価推移です(色設定するの忘れた)。9月末に配信された Nintendo のドラガリアロストが順調に評価を獲得していますね。「アトリエ オンライン ~ブレセイルの錬金術士~」や「カスタムキャスト」なんかも順調(たまに評価数が減る現象はよくわからない)。ワイルドアームズはいまいち伸び悩んでいるようです。

f:id:mattintosh4:20181008221836p:plain

そしてこちらはトップセールスランキングのアプリです。1位は「LINE:ディズニー ツムツム」で、その次にモンスト、パズドラと続きます。意外にも FGO は評価数が少なく、単純にリセマラやらなんやらでダウンロード数だけ増えてるって感じなんでしょうかね。グラブルは低評価が少ないのでサービス的には悪くないって感じなんでしょうか。

f:id:mattintosh4:20181008221938p:plain

自分の中ではモンストって結構人気アプリだと思ってたんですが、ストア全体で見た時に実際どうなのか?範囲をゲームだけに絞って評価数をタイトルごとに並べてみます。そしたら「クラッシュ・オブ・クラン (Clash of Clans)」がダントツの1位。モンストはなんと80位でした。

f:id:mattintosh4:20181008222950p:plain

実際には「評価数が多い=売上が高い」というわけではありませんがある程度の指標にはなるかなぁと。

次に企業にいってみましょう。

こちらはランキングに掲載されているアプリが多い企業の割合です(ゲームカテゴリだけで絞っていません)。どれだけランキング入りする人気アプリを多く配布しているかですね。こちらは「BANDAI NAMCO Entertainment Inc.」と「SQUARE ENIX Co.,Ltd.」が1、2位をいったりきたりという感じです。

f:id:mattintosh4:20181008223655p:plain

Google Play ストアはどんなジャンルが人気なの?」っていうのはこちらのグラフです。ロールプレイングが人気で、パズルやアクションなどはだいたい同じくらいですね。

f:id:mattintosh4:20181008224307p:plain

ではジャンルごとにディベロッパーの割合を出してみましょう。Kibana の Split chart を使うとこんなのも簡単に出来ます。ロールプレイングはスクエニ、パズルはやや LINE が優勢、アクションはバンナムの一強。ディベロッパーごとの得意としている分野がわかりますね。

f:id:mattintosh4:20181008224504p:plain

最後にこちらは試験中ですが、時間ごとのジャンルの推移です。曜日や時間帯で人気ジャンルって変わってくるのかな?と思って収集してみているところです。

f:id:mattintosh4:20181008224909p:plain


Elasticsearch の何がすごいってこれだけ色々グラフとか作って表示設定とか変えてるのに反応がすぐ返ってくるところ。ヒートマップの色を変更するとたまにバグって全部黒くなることがあったりしますが概ね良好です。6 系でいくつか仕様が変わったようでネット上の情報が古くなっていることもありましたが、ネットで調べた範囲の情報でこれくらい遊べました。

私はスマホ用アプリは製作しないので Google Play ストアや iTunes ストアの情報はあまり興味がなく、今後もストア情報を収集し続ける予定はないのですが、今後の仕事の次第ではもうちょっとクローラーを改良してみたりしようかと思っています。

ストア情報とは別に Yahoo や Google トレンドワードを拾ってタグクラウドにしてるんですが、こっちは結構面白いです。Twitter は Developer 登録をしないと使えないようなので申請しているところですがどれくらいかかるのやら。

f:id:mattintosh4:20181009002840p:plain

次に遊ぶとしたら Twitter API ですかね。今年から来年にかけて Elasticsearch をもうちょっと覚えていきたいなと思ってます。

ではまた。

Wine 3.13 版 EasyWine.app リリースしました

タイトルの通りです。今回は諸事情により WineSkin 版と MikuInstaller-Kai-Kit 版はありません。

matome.naver.jp

Google URL Shortener が終了してたので久しぶりに bit.ly 使いました。インターフェイスが色々変わっていてびっくり。

今年は「夏コミ前に 64-bit 版出すぞ!」とか言いながら忙しくて Mac と向き合う予定がありませんでした。最近ようやく少し落ち着いてきたので年内には 64-bit 版作りたいなぁと思っています。今年の夏コミカタ ROM は Ubuntu で見てたんですがなんか重いんですよね。自分でビルドした Wine 使おうかしら。

最近転職して以前よりかは自由な時間が増えた(気がする)のでまた新しく何か始めてみようかと思ってます。んで、自分も技術書典かコミケに出展してみたいなぁと思ったのですがネタがなく…絵心もなく、技術的なことなら世の中にもっとすごい人いるしなぁ…という感じ。Wine 関係の折本でも出せば誰か一人くらいは買いに来てくれるだろうか。

今年の夏コミは暑かったですね。自分は1日目と3日目一般参加でしたが雨も降らなくてよかったです。参加された皆様お疲れさまでした。

ではでは。