読者です 読者をやめる 読者になる 読者になる

mysqlとmongodbサーバー構築メモ

自宅サーバーにmongodbとmysqlをインストールしたのでメモ。同じディスクでmongodbもmysql も使いたい!という奇特な人向け。

DBディスクはLVMを使う

mysqlでinnodbを使っていて、なおかつmongodbでジャーナルをオンにしている場合、バックアップはLVM Snapshot一発でイケるから楽でよい。確認していないけどredisもジャーナルをオンにしたら同じようにSnapshotだけでバックアップできると思う。

DBディスクはマウントオプションにnoatimeをつける

atime(最終アクセス日時)はmtime(更新日時)あるからいらない子だよねーという話。 MongoDB イン・アクションの10章に書いてあった。 もちろんnoctimeとかnomtimeとかして死んでも知りません。

ファイルシステムはext4を使う マウントオプションにnobarrierをつける

mongodbをext3で使うとpreallocateで死にます。また、mysqlをext4やxfsで使うとI/Oバリアで3倍遅くなります。なのでext4でI/Oバリアを無効にして使うようにします。

ファイルディスクリプタを増やす

デフォルトだと1プロセルのファイルディスクリプタの上限は1024とかそこら辺らしいので10倍くらいにする。limits.confで編集する。これもmongodb イン・アクションに書いてあった。

MongoDBイン・アクション

MongoDBイン・アクション

LVMで2TiB以上のドライブを追加

4月1日から神奈川ケーブルテレビがTOKYO MXのパススルーを始めたらしく、ハイビジョンスパイラルが本格化したので、TS置き場に後から容易にディスクを追加できるLVMを導入した。 高収入を得られたら、こんなかんじのハードウェア構成でZFSなNAS導入する予定なので、今回は冗長化も何も無いその場しのぎ構成。 環境はDebain squeezeで追加するディスクはWD Red 3TB 1本。/dev/sdbとして認識されている。

1.LVMパーティションを作る

2TiB以上のパーティションをfdiskは作れないのでpartedコマンドを用いる。 同じ理由でMBRからGPTにしてる。

# apt-get install parted -y
# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes

(parted) mkpart primary 0 -0 #0 -0で最大容量指定
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore #単位書いて無いけとまちがっていないか?という旨の警告らしい

(parted) set 1 lvm on

(parted) print
Model: ATA WDC WD30EFRX-68A (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  3001GB  3001GB               primary  lvm

(parted) quit
Information: You may need to update /etc/fstab.

2.PVを作る

LVMのPhysical Volumeを作成する。lvm関連のコマンドが入ってなかったので最初にインストールしてる。

# apt-get install lvm2 -y 
# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "2.73 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               2.73 TiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               **********************

3.VGを作る

Volume Groupを作成する。PEサイズはなんとなく16Mにしてみた。

# vgcreate -s 16m tateya /dev/sdb1
  Volume group "tateya" successfully created
# vgdisplay tateya
  --- Volume group ---
  VG Name               tateya
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               2.73 TiB
  PE Size               16.00 MiB
  Total PE              178849
  Alloc PE / Size       0 / 0
  Free  PE / Size       178849 / 2.73 TiB
  VG UUID               *****************

4.LVを作る

Logical Volumeを作成する。

# lvcreate -n tateya -l 100%FREE tateya #-l 100%FREEで最大容量になる
  Logical volume "tateya" created
# lvdisplay
  --- Logical volume ---
  LV Name                /dev/tateya/tateya
  VG Name                tateya
  LV UUID                ***************************
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                2.73 TiB
  Current LE             178849
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

5.ファイルシステムを作ってマウント

最後にファイルシステムを作ってマウントする。ファイルシステムはext4でマウントポイントは/

# mkfs.ext4 /dev/tateya/tateya
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
183148544 inodes, 732565504 blocks
36628275 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
22357 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
    102400000, 214990848, 512000000, 550731776, 644972544

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

# mkdir /mnt/tateya
# mount /dev/tateya/tateya /mnt/tateya/
# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/sda1             222G  683M  210G   1% /
tmpfs                 2.0G     0  2.0G   0% /lib/init/rw
udev                  2.0G  128K  2.0G   1% /dev
tmpfs                 2.0G     0  2.0G   0% /dev/shm
/dev/mapper/tateya-tateya
                      2.7T  201M  2.6T   1% /mnt/tateya

あとは/etc/fstab編集する。 blkid /dev/tateya/tateyaでfstabに追加すべきUUIDが調べられる。

RTX1100にSSH接続するとき便利なコマンドcocot

RTX1100にSSH接続すると、ありがたいことに日本語で喋ってくれる。 しかし文字エンコードがSJISであり、シェルはUTF8なので当然日本語でおk状態になる。 こういう時cocotコマンドが便利。Macならportとかでインストールできる。

cocot -t UTF-8 -p SJIS ssh 192.168.0.1 -ladmin

-tに出力(シェル)側の文字エンコード、-pにサーバー側の文字エンコードを指定する

ML110 g7がSSDを認識しないときの対処法

GWなのでML110 G7いじってたら、SSDを認識しない。 Intel SSD 520 240GBを挿してると、起動時プログレスバーの最後のほうでフリーズしてしまう。

これは、SATAがIDEモードになってるのが原因らしいので、一旦SSDを抜いて、起動時F9を押しBIOSを起動。 Advance Options→SATA Contoroller Options→Embedded SATA ConfigurationをEnable SATA Legacy SupportからEnable SATA AHCI Supportに変更。警告出るけどRAID有効にしたらデータ消し飛ぶとの事なので気にしない。ESC→F10で保存して再起動。 再起動後も一回電源落としてSSD挿して起動したらキチンと認識しました。

おまけ

http://www.intel.co.jp/content/www/jp/ja/solid-state-drives/solid-state-drives-dc-s3700-series.html

f:id:YarmUI:20130428231049p:plain

一貫してすごい

Intel SSD 520 Series(Cherryville) 240GB 2.5inch Bulk SSDSC2CW240A310

Intel SSD 520 Series(Cherryville) 240GB 2.5inch Bulk SSDSC2CW240A310

SE215 Special Editionを買いました

2年ほど前に買ったATH-CKS90が断線してしまったため、イヤホンを新調しました。 中学の頃にMDプレイヤーを使うようになってから今まで、イヤホン・ヘッドフォンはすべて断線してダメにしているので、「今回は断線しにくそう・断線してもケーブル交換できる」という基準で選んでSE215 Special Editionになりました。 音質に関しては、自分は信仰心が低いのとアイフォーンに直接挿してるのでなんとも言えませんが、遮音性が高く阿澄佳奈の声がクリアに聞こえるような気がします。+7000円程度でスペック上では高音を更にカバーしてるSE315が射程に入るので、お金に余裕がある人はそちらをおすすめします。

オーディオは一線を超えると感性工学とプラセボによる物だと私は考えてるので、沼に落ちないように気をつけます。

【国内正規品】 SHURE 高遮音性イヤホン ブラック SE315-K-J

【国内正規品】 SHURE 高遮音性イヤホン ブラック SE315-K-J

最後に、2年間もありがとうATH-CKS90

node.jsでTwitter UserStreamを取得する

またUserStreamか・・・、ブログ再開するたびにUserStream書いてる気がする。 node.jsの非同期処理はUserStreamと相性が非常にいいのに情報が古かったりするので書きました。 取りあえず動くのをgithubにおいてます。

oauthモジュールのgetメソッドにコールバック関数を渡さないとストリームを返すので便利です。

var req = oa.get(endpoint, config.access_token, config.access_secret);
req.on('data', function(chunk) {
  console.log(chunk);
});

ただし、chunkは適切な場所で分割されているとは限らないので、そのままJSON.parse(chunk)すると死にます。改行コードを探して1行ずつパースする必要があります。 bylineというモジュールが便利です。

はてなブログProにした

独自ドメインとmarkdown記法とSyntax Highlightを使いたかったので選択肢あまりなかったのと、 金払えばブログ続けるだろうと思ったので、はてなブログをProにしてみました。

私の980はてなポイントがまわりまわって、いつも便利情報を提供してくれているひとでさんの血肉になることを祈っています。