2010年9月 のアーカイブ

ユーザ毎のオープンファイル数変更(Debian)

2010年9月29日 水曜日

tomcatで「java.net.SocketException: Too many open files」エラーが発生したのでその対処。
自前のtomcatはsuでwww-dataユーザで起動しているため、www-dataユーザでのオープンファイル上限が制限されている。rootであれば「ulimit -n」で設定すればよいが、www-dataユーザの場合、大きい値を指定すると「error setting limit (Operation not permitted)」エラーが発生し設定できない。
「ulimit -n」で指定できる上限を大きくするには以下の設定を行う。

/etc/security/limits.conf

www-data         hard    nofile          16384

/etc/pam.d/su

session    required   pam_limits.so

ちなみにシステム全体のオープンファイル上限は以下で設定されている。

/proc/sys/fs/file-max

808478

smartdのエラー(Debian/lenny)

2010年9月19日 日曜日

雷による停電で自宅ファイルサーバの電源が落ちた。
ログにsmartdのエラーログが出力されていたので調査したときの備忘録。

/var/log/syslogに残されていたエラーログ

起動直後に/var/log/syslogに以下のエラーが残されていた。


Aug 28 01:18:03 loach smartd[13949]: Monitoring 0 ATA and 4 SCSI devices
Aug 28 01:18:04 loach smartd[13949]: Device: /dev/sdd, 1 Currently unreadable (pending) sectors
Aug 28 01:18:04 loach smartd[13949]: Sending warning via /usr/share/smartmontools/smartd-runner to root ...
Aug 28 01:18:04 loach smartd[13949]: Warning via /usr/share/smartmontools/smartd-runner to root: successful
Aug 28 01:18:04 loach smartd[13949]: Device: /dev/sdd, 1 Offline uncorrectable sectors
Aug 28 01:18:04 loach smartd[13949]: Sending warning via /usr/share/smartmontools/smartd-runner to root ...

/dev/sddに「uncorrectable sectors」があると。。。
購入したばかりなのにorz

/dev/sddの調査

とりあえず調べてみる。以下を参考にさせていただいた。
Yasuo's Weblog » Offline uncorrectable sectorsを修復

/dev/sddのテスト


# smartctl --test=short /dev/sdd
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Wed Sep  1 03:33:51 2010

Use smartctl -X to abort test.

2分待てと書いてあるので待つ。

テスト結果表示


# smartctl -l selftest /dev/sdd
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      3812         -

あれ?エラーなしで完了だって。うーん、ログのエラーはなんだったんだろう?
その後エラーが発生しないので様子をみることにする。

ついでにエラー時に自分のメールアドレスにメールを送るよう設定する。

/etc/smartd.conf


DEVICESCAN -m hogepage@example.com -M exec /usr/share/smartmontools/smartd-runner

Debian(lenny)にRAID追加

2010年9月2日 木曜日

インストール時にソフトウェアRAIDの設定をすることは多々あるが、追加でRAIDの設定をすることはあまりないので、その備忘録。

1.fdisk

追加したHDDをfdiskにてパーティーション作成。

fdisk /dev/sdc
fdisk /dev/sdd

パーティーションタイプはfd(RAID)に設定。
以下のパーティーションを設定。
両方プライマリの1,2,3を作成

■/dev/sdc
/dev/sdc1
/dev/sdc2
/dev/sdc3
■/dev/sdd
/dev/sdd1
/dev/sdd2
/dev/sdd3

2.mdデバイス作成

すでにmd0,md1は使用中なので、md2でraid作成

# mdadm --create /dev/md2 --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdd1
# mdadm --create /dev/md3 --level=raid1 --raid-devices=2 /dev/sdc2 /dev/sdd2
# mdadm --create /dev/md4 --level=raid1 --raid-devices=2 /dev/sdc3 /dev/sdd3

3.RAIDの状態をみる

# cat /proc/mdstat
Personalities : [raid1]
md4 : active raid1 sdc3[0] sdd3[1]
      293154048 blocks [2/2] [UU]

md3 : active raid1 sdc2[0] sdd2[1]
      488287552 blocks [2/2] [UU]

md2 : active raid1 sdc1[0] sdd1[1]
      195318144 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      486433728 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      1950708 blocks super 1.2 [2/2] [UU]

unused devices: 

※[UU]となっていれば正常。[_U]や[U_]の場合、片肺となっているので早急にリペアが必要。
※上記はsync後の結果であるが、sync中は「[=======>.............] resync = 36.0%」などとsyncの状況がわかるようになっている。

また、以下のコマンドでも状態を見ることができる。

# mdadm -D /dev/md2
/dev/md2:
        Version : 00.90
  Creation Time : Sat Jul  3 00:38:11 2010
     Raid Level : raid1
     Array Size : 195318144 (186.27 GiB 200.01 GB)
  Used Dev Size : 195318144 (186.27 GiB 200.01 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 2
    Persistence : Superblock is persistent

    Update Time : Wed Sep  1 06:25:36 2010
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 7bf135d5:ce8b14b0:fb6507ae:de7f930d (local to host loach)
         Events : 0.14

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1

4.ファイルシステム作成

-jオプションはext3 ジャーナルを持ったファイルシステムを作成する。

# mkfs -j /dev/md2
# mkfs -j /dev/md3
# mkfs -j /dev/md4

5.mount

# mount /dev/md2 /mnt/mac
# mount /dev/md3 /mnt/data
# mount /dev/md4 /mnt/public

6./etc/mdadm/mdadm.confの設定

今回設定したmd2,md3,md4デバイスを恒久的に使用できるようにする。
/etc/mdadm/mdadm.confに設定する内容は以下のコマンドで取得できる。

# mdadm -Ds
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=01.02 name=loach:0 UUID=8da4b8a3:7e1e7cbe:24c2b2cb:6646ae87
ARRAY /dev/md1 level=raid1 num-devices=2 metadata=00.90 UUID=f44f1fc0:07501725:92c56874:2756cb86
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=00.90 UUID=7bf135d5:ce8b14b0:fb6507ae:de7f930d
ARRAY /dev/md3 level=raid1 num-devices=2 metadata=00.90 UUID=4c223ab7:fd469f57:fb6507ae:de7f930d
ARRAY /dev/md4 level=raid1 num-devices=2 metadata=00.90 UUID=1003566b:fd7a6a99:fb6507ae:de7f930d

/dev/md0,/dev/md1はシステムインストール時に設定済みなので、/dev/md2~/de/md4までを新規に/etc/mdadm/mdadm.confへ追加した。

また、障害発生時に特定メールアドレスにメールを送信するよう設定。

MAILADDR hogepage@example.com