freebsdでsmartctlをssdに対して試してみた。

freebsdでsmartctlをssdに対して試してみた。

対象のSSDはintelのX25-M。SSDSA2M080G2GC

mysqlのスレーブでホストを二台渡り歩いた子。zfs。

参考のサイトがいろいろと細かく説明してくれて他のでそこを見ながら自分のところでも試してみた。

はてなにおける SSD の実績 - mura日記 (halfrack)

root shell> portinstall -c sysutils/smartmontools

root shell> smartctl -a /dev/ad8
smartctl 5.40 2010-10-16 r3189 [FreeBSD 8.1-RELEASE amd64] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Intel X18-M/X25-M/X25-V G2 SSDs
Device Model:     INTEL SSDSA2M080G2GC
Serial Number:    serial
Firmware Version: 2CV102HD
User Capacity:    80,026,361,856 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 1
Local Time is:    Wed Feb  9 14:16:36 2011 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

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:                 (   1) seconds.
Offline data collection
capabilities:                    (0x75) SMART execute Offline immediate.
No Auto Offline data collection support.
Abort 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:        (   1) minutes.
Conveyance self-test routine
recommended polling time:        (   1) minutes.

SMART Attributes Data Structure revision number: 5
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
3 Spin_Up_Time            0x0020   100   100   000    Old_age   Offline      -       0
4 Start_Stop_Count        0x0030   100   100   000    Old_age   Offline      -       0
5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       10
9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       5942
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       35
192 Unsafe_Shutdown_Count   0x0032   100   100   000    Old_age   Always       -       20
225 Host_Writes_32MiB       0x0030   200   200   000    Old_age   Offline      -       1472403
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       4952
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       0
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       3426303219
232 Available_Reservd_Space 0x0033   099   099   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0032   072   072   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   099    Pre-fail  Always       -       0

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]

Note: selective self-test log revision number (0) not 1 implies that no selective self-test has ever been run
SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
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.

参考にしたサイトによると、どうやらSMART Attributsというのが見るべきデータらしい。

ここの233 Media_Wearout_Indicatorというのがメディア摩耗度、って意味なのかな、重要らしい。
media wearout indicatorは100%から始まって0%でオシマイらしいです。
となるとメディア摩耗耐久度、というのが正しいのかな。

この辺の解説をしてあったサイトを一つ。
8th way to explore the world: Intel SSD Toolbox(予定)

で、うちの値は
9 Power_On_Hours 5942 hours
233 Media_Wearout_Indicator 72%
なので、5942hours = 247 days = 0.6783 years
2/3年で72%になったようです。あと4倍ぐらいいけそうなので後二年ぐらいは持ちそう、なのかな。

このホストの運用はinnodbをメインにつかってる。file_per_table(だっけ)をonにして、innodbのデータファイルだけを置くようにしてます。今のところ50GB~60GBぐらいで何とか収まってる。
ログファイルとかtmpテーブルとかは他のraidに逃がすように。できるだけ読み込みばっかりをさせるように。
あと二年持てば容量的な寿命もきそうな希ガス。

他のスレーブに比べてイマイチ速度も実感できず、追加購入もしておらず・・・。
crutialのc300が最近評判よくて気になってたり。

FreeBSD8.1にtritonn-1.0.12-mysql-5.0.87を入れようとしたらエラーがでた。

FreeBSD8.1にtritonn-1.0.12-mysql-5.0.87を入れようとしたらエラーがでた。

ソースが二種類あって、linuxの方を間違えて落としたら中にlinuxのバイナリがあったので利用できなかった。

下記はそのエラーメッセージ。

shell>./configure
 NOTE: This is a MySQL binary distribution. It's ready to run, you don't
 need to configure it!

To help you a bit, I am now going to create the needed MySQL databases
 and start the MySQL server for you.  If you run into any trouble, please
 consult the MySQL manual, that you can find in the Docs directory.

ELF binary type "0" not known.
 ELF: not found
 ./bin/my_print_defaults: 1: Syntax error: word unexpected (expecting ")")
 ./bin/my_print_defaults: 103: Syntax error: Error in command substitution
 ELF binary type "0" not known.
 ELF binary type "0" not known.
 Neither host 'fillmore.l3tp.org' nor 'localhost' could be looked up with
 ./bin/resolveip
 Please configure the 'hostname' command to return a correct
 hostname.
 If you want to solve this at a later stage, restart this script
 with the --force option

このときに拾ってしまったソース(?)はtritonn-1.0.12-mysql-5.0.87-linux-x86_64.tar.gz。

ソースのみのはtritonn-1.0.12-mysql-5.0.87.tar.gz。

でもこれだとyaccが見つからないorオプションが違う、となってコンパイル通らない。

しょうがないので5.0.67で。

proftpdでjailする

proftpdでjailする。

jailって檻って意味で、ftpで接続したユーザがftpサーバの/とか、一番rootのところにアクセスできなくするための機能。

今回自分のところの鯖では、ユーザ間でのやりとりとかあるので他のユーザのところにはアクセスさせたい、でも/とかに行かれると困る、という条件。
困ることは無いんだけど、ユーザからごちゃごちゃするからわかりにくい、との意見が。

ProFTPdでjailを有効にするためのconfはDefaultRootオプションで行う。
元々記述されてコメントアウトされてるのがあったのでこの付近に。
グローバルディレクティブの位置、っていうのかな。

他の事例集だとまず間違いなくホームディレクトリでjailするものだったので、そこをちょこっとだけ変更。
またfreebsdの鯖でwheel、いわゆるadminグループ?に属してるユーザはjailから解放してやる。


DefaultRoot /usr/home/ !wheel

DefaultRootの最初の引数はjailかけたい場所、どの対象にかけるか、ユーザのフィルタリング。
何も書かなければたぶん全部のユーザで、否定形をつかうことによってそこからユーザの引き算ができる。
ここに書くのがユーザ名なのかグループ名なのかはわかんない、でもグループ名かけばなんとかしてくれた。
グループとユーザ名が一緒のやつで違う(ことってできるよね)だとどうなるんだろう。
hogeグループに属してないhogeさんをjailして、hogeグループに属したfooさんはjailしない、とか。まぁ杞憂だけど、うん。
ProFTPD Configuration Directive List DefaultRoot
TIPS » Blog Archive » proftpd chroot jail

MySQLで利用するストレージを変更するオプション

MySQLで利用するストレージを変更するオプション。

MySQLはストレージのリソースを食う、本当によく食う。

リソースとひとえに言っても、速度(帯域)、容量、どちらも食う。

先日mysqlサーバのためにssdを導入してあげたんだけど、貧乏なので80GBのモデルを一つだけ買ってあげた。

でもこれじゃあbinlogとか納めてたらすぐにいっぱいになってしまう。

幸いにもデータ自体はそこまで大きくないので、テーブルの中身とかをssdに、それ以外を旧来のraid0のhddへ分けることにした。

以下は分けれるデータとオプション

MyISAMとかのデータ

InnoDBのデータ

バイナリログ(とインデックス) log-bin (log-bin-index)

リレーログ(とインデックス) relay-log (relay-log-index)

InnoDBログファイル(ib_logfile*)  innodb_log_group_home_dir

テンポラリファイル (tmpdir)