【linux】【bash】【network】サーバのトラフィックを監視するワンライナー

サーバのトラフィックをリアルタイムで監視するワンライナーを書きました。

もしかしたら需要があるかもしれないと考え、晒させていただきます!

経緯

  • 別ネットワークに存在するサーバ間で、大量のデータを転送したい
  • 回線圧迫を避けるためにrsyncで帯域制限をかけながら転送。でも本当に意図通りの制限がかかっているか不安。
  • CactiMRTGではリアルタイム監視できないし…
  • iftopとか入れて使うのもありだけれど、別サーバで需要がある度にインストールするのもな…

と悩んで方法を色々探していたのですが、発見できませんでした。

そこで、ひとまず以下の形で落ち着きました。

方法

以下を実行していただければリアルタイムで確認できると思います。( 無理やりなワンライナーであることは気にしないでください。 )

tcコマンドを使って計算しています。

while : ; do _T1=$( /sbin/tc -s qdisc | fgrep -m 1 Sent | cut -d" " -f 3); sleep 1; _T2=$( /sbin/tc -s qdisc | fgrep -m 1 Sent | cut -d" " -f 3); echo "$(expr \( $_T2 - $_T1 \) \* 8 ) bps"; done

LANのインターフェースが複数あるサーバは注意してください。
上記ですと、一番最初のインターフェースが監視されます。

別インターフェースを監視したい場合は、 fgrep -mの引数をいじってあげるなどして調整してください。

bondingでRound Robinなどしている場合には、あまりお役に立てないかと思います。

実行結果

結果は以下の様な形で、一秒ごとのトラフィックが出力されます。bpsから単位を変えたい場合はexprあたりをいじってあげてください。

[sai@sai-pc ~]$ while : ; do _T1=$( /sbin/tc -s qdisc | fgrep -m 1 Sent | cut -d" " -f 3); sleep 1; _T2=$( /sbin/tc -s qdisc | fgrep -m 1 Sent | cut -d" " -f 3); echo "$(expr \( $_T2 - $_T1 \) \* 8 ) bps"; done
8734304 bps
8734400 bps
7997024 bps

( 環境: CentOS 5.3 )

おまけ

rsyncで帯域制限をかげたい時は --bwlimit を使えばOKです。単位はKBなので、bpsに直す時はご注意くださいませ。

例えば、上記で監視を行っていたときに実行していたrsyncは以下です。

rsync -avz --bwlimit=1000 hoge@xxx.xxx.xxx.xxx:~/src ~/dst

大体 8Mbps で収えたくてこの制限にしたのですが、監視結果もおおよそその位の値となっています。良かったです。


こんな事しなくてももっと良い方法があるよ!という事や、もっと綺麗に書けるだろう!という事がございましたら、ご教授頂けると幸いですm(_ _)m

お読みくださりありがとうございました。

システム運用時、大切となってくるファイル達

システム管理者にとって運用上、特に大事になるだろうファイルについて以前調べたので、今回はそれをまとめてみます。
以下に書いたような、ディレクトリ構造や、何のためのファイルか?という事の全体像を知った事で作業がしやすくなりました。

参考にさせていただいたメインの教材はこちらです。

Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)

Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)

管理者にとって特に大事なファイル

/etcと/varディレクトリ以下のファイルが大切だと言えると思います。
前者は、システムの設定ファイルが保存されるディレクトリ。
後者は、主にシステムのログファイルが保存されるディレクトリです。
では、次から、それぞれのディレクトリの下にどのようなファイルがあるか見ていきたいと思います。

/etc以下

fstab

マウントの方法について記載されています。
linuxツリー(/ディレクトリを頭にして、他のディレクトリがぶら下がっていく構造)に、「どのデバイス」の「どのパーティション」が「何のファイルシステム」でマウントされるのかという事を指定してあげるファイルです。

実際に見てみると、以下のようになっています。

[admin@localhost ~]$ cat /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0

一番左の列から1として順番に見てみると、
1:デバイス・ファイル名の指定をする。ハードディスクやそのパーティション、CDドライブなどのデバイス名を記述します。
2:マウント・ポイントの指定。1番目の項目で指定されたデバイスが、linuxツリーのどこでマウントされるかを示します。
3:ファイルシステムの指定します。
4:マウント・オプションの指定します。
5:バックアップの指定。dumpコマンドのバックアップの対象とするかを指定する。0は対象外、1は対象となります。
6:ファイルシステムの整合性をチェックの対象とするかを指定します。0は対象外、他の数字は対象となります。数字の大きさはチェックをする順番で、/をマウントするデバイスに1を指定してあげて、他は2以上の数字を指定しあげます。

modprobe.conf

各機器のドライバソフトのようなカーネルモジュールの設定を行うファイルです。
バイスの認識がうまくいかない場合はこのファイルを指定します。

[admin@localhost ~]$ cat /etc/modprobe.conf
alias eth0 b44
alias snd-card-0 snd-atiixp
options snd-card-0 index=0
options snd-atiixp index=0
remove snd-atiixp { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-atiixp

上を見てわかるように、NICがeth0という名前に置き換えられているようです。

rc.d

インストールしたソフトの起動用ファイルがインストールされるディレクトリです。

[admin@localhost ~]$ ls /etc/rc.d/
init.d rc.local rc0.d rc2.d rc4.d rc6.d
rc rc.sysinit rc1.d rc3.d rc5.d

この中のinit.dディレクトリに、起動用ファイルが存在します。また、システム起動時に自動的にソフトを起動させるために、rcN.d(Nは1〜6)ディレクトリ以下に、init.d以下の起動ファイルのシンボリックリンクを作成します。ちなみに、Nとランレベルが対応していて、たとえばランレベル3で、iptablesを起動させたければ、/etc/rc.d/init.d/iptablesシンボリックリンクを/etc/rc.d/rc3.dに作成すれば良いです。

hosts

LAN内でDNSを使用しないでホスト名での通信を行いたい場合は/etc/hostsを設定します。

[admin@localhost ~]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost

1 localhost6.localdomain6 localhost6

これは、「IPアドレスが一番左の列のマシンに対して、右の列にある名称でアクセスできるようにする」という意味を持つようになります。
今回は、127.0.0.1(自マシン)に対して、localhost.localdomain または localhostという名前でアクセスできるようにするという意味になります。下の行は、IPv6の時の記述です。

resolve.conf

名前解決をする時、どのDNSサーバを利用するかを設定するためのファイルです。

[admin@localhost ~]$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 192.168.0.1
search localdomain

IPアドレスが192.168.0.1のマシンを利用して、localdomainというドメイン内でホスト名を探すように指定しています。

nsswitch.conf

名前解決の際に、上記した/etc/hostsと/etc/resulve.confのどちらを優先するかを指定します。

hosts.allow,hosts.deny

アクセス制御を行うための設定ファイルがこれらです。これらが適用されるのは、libwrap.aというライブリを利用しているネットワークサービスデーモンです。sshd,xinetd,sendmail等がこれに該当します。
ちょっと仕組みを考えてみると、自マシンにクライアントマシンからのアクセスがあった場合、
最初に/etc/hosts.allowが参照され、設定と適合する場合サービスとの通信を許可します。
次に、/etc/hosts.denyを参照して、この設定と適合する場合、通信を拒否します。
そして、どちらにも該当しない場合は通信の許可をします。
たとえば以下の設定の時、

[admin@localhost ~]$ cat /etc/hosts.allow
sshd: 192.168.0.3

[admin@localhost ~]$ cat /etc/hosts.deny
ALL : ALL#

sshによる接続を192,1680.3のクライアントのみに許可して、他のlibwrap.aライブラリを利用するサービスは全てシャットアウトするという設定になります。

xinetd, ineted

「ポートを監視して、接続の要求が来た時に該当するサーバプログラムを起動させる『スーパーデーモン』」の設定を行うファイルです。現在は、xinetdがメインで使われているようです。

sysconfig

ネットワーク関連の設定などを、sysconfig以下のファイルに書き込みます。
たとえば、ネットワークインターフェースの設定は、networkおよび、network-scripts/ifcfg-eth0を見ればわかります。

[admin@localhost ~]$ cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
[admin@localhost ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation BCM4401-B0 100Base-TX
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes

上からIPv6を利用しないことが分かったり、IP割り振りはdhcpである事が分かります。

/var以下

/log/messages

システムの動作に関する様々な情報書き込まれています。

# cat /var/log/messages
Mar 28 07:42:34 localhost syslogd 1.4.1: restart.

今朝、再起動したみたいですね。

/log/cron

cronによって定期的に実行されるコマンドの実行結果が、ここに記録されます。

# cat /var/log/cron
Mar 28 07:43:01 localhost anacron[2562]: Job `cron.daily' terminated
Mar 28 07:47:31 localhost anacron[2562]: Job `cron.weekly' started
Mar 28 07:49:55 localhost anacron[2562]: Job `cron.weekly' terminated
Mar 28 07:49:55 localhost anacron[2562]: Normal exit (2 jobs run)
Mar 28 08:01:01 localhost crond[2258]: (root) CMD (run-parts /etc/cron.hourly)
Mar 28 09:01:01 localhost crond[2366]: (root) CMD (run-parts /etc/cron.hourly)
Mar 28 10:01:01 localhost crond[2479]: (root) CMD (run-parts /etc/cron.hourly)

とくにcronは設定していないので面白いことは書いてありませんでした。


以上です。
まとめると、設定をしたかったら/etc、ログを見たかったら/varに行け!って感じですね。(いいすぎ?)
構造を理解するって、やはり凄く重要なのだなぁと実感したこの前でした。

ネットワークを構成する機器

最近ネットワーク機器に触れる機会が増えてきたので、各々の機器の役割を理解したいと思い、まとめてみました。

今回考えるネットワークの全体像

WAN(Wide Area Network)とLAN(Local Area Network)が、それらの橋渡し役である"ルータ"によって接続されている。以下LAN環境について考える。

  1. ルータの下には、パケットの交通規制を行う"ファイアウォール"が繋がっている。
  2. ファイアウォールには、VLAN(後述)の橋渡し役となる"L3スイッチ"が繋がっている。
  3. L3スイッチには、端末(PCなど)同士を直接繋げている"L2スイッチ"が繋がっている。
  4. L2スイッチに、端末が繋がっている。


こんな感じのネットワークについて考えたいと思います。

ルータ

ルータとは?

"ネットワークとネットワークを繋げてくれる役割"を果たします。

どうやって繋げているのか?

これはルータが、IPアドレスを元にパケットをルーティングしてくれる事から実現されます。
ルーティングとは、送り先のネットワークにパケットを送るための、適切な"経路を決め"て送ってくれる事です。
"経路を決め"というのは、パケットが目的のネットワークにたどりつくためには、他のルータを経由しなければいけない時があるからです。

ルーティングの仕組み

ルーティングは、"ルーティングテーブル"の情報に基づいて行われます。
ルーティングテーブルには、

  1. 宛先のネットワークアドレス
  2. 宛先ネットワークアドレスへパケットを送信する時に利用する、自分のポート
  3. 宛先ネットワークアドレスへパケットを送るために、次に経由するべきルータのアドレス
  4. 最適ルート選択のための値

の4つの情報が含まれています。しかし、この情報はルータが最初からもっているわけでは無いので"学習"させてあげなければなりません。

ルーティングテーブルの学習

ルーティングテーブルの学習には、2つの方法があります。
「スタティックルーティング方式」と「ダイナミックルーティング方式」です。
1.スタティックルーティング方式
手動でルーティングテーブルを学習させる方法です。

  1. 登録の手間がかかる。
  2. ルータには負荷がかからない。

という特徴を持っています。
2.ダイナミックルーティング方式
自動でルーティングテーブルを学習する方法です。

  1. ルータに負荷がかかる。
  2. 登録に手間はかからない。

という、スタティックルーティング方式とは逆の特徴をもっています。

ルータのその他の特徴

ルータは、ネットワークを分割する。
ルータはネットワークとネットワークを結びつけてくれますが、逆に言うとルータを境界としたネットワークは、分割された異なるネットワークとして扱われます。
NAT/IPマスカレード機能
ローカルIPアドレスグローバルIPアドレスに変換してくれる機能を持っています。
これによって、LAN内でローカルIPを持つ端末が外部に向けて通信をする時に、グローバルIPに変換してもらって通信を可能にすることができます。

ファイアウォール

"LAN内の内部ネットワークを外部ネットワークから守る"役割を果たしてくれます。

機能

ファイアウォールに大きな機能は3つあり、これらによってセキュリティを高めてくれています。
1.アクセス制御(フィルタリング)
通信のアクセス規制をしてくれます。
チェックする項目の特徴的なモノを以下にあげます。

  1. IP
  2. プロトコル
  3. ポート

etc...
かなり細かく設定できるようなので、管理者のスキルが問われます。
2.アドレス変換
ルータと同様に、ローカルIPアドレスグローバルIPアドレスを変換する機能を持っています。
これによって、外部ネットワークに内部のIPアドレスを隠すことができます。
3.ログ収集
不正アクセスなどのログを解析し、ネットワークが危険にさらされていないか監視することができます。

L3スイッチ

主に"VLAN(後述)を繋ぐため"に必要な機器です。

機能

"L2スイッチ(L2スイッチ)"+"ルーティング機能"を兼ね備えている。

  1. VLANを越えての通信を可能にする。
  2. ルーティングをハードウェア処理で行う。
  3. 複数のポートをグループ化して、IPを割り振ることが可能
ルータとの違い

ルーティング機能を兼ね備えているので、ルータとの違いが分かりにくいですが、違いはしっかりとあるので以下に示します。

ルータ L3スイッチ
ルーティング処理 ソフトウェア ハードウェア
WANインターフェース 豊富 少ない
アドレス:ポート 1:1 1:多
NAT/IPマスカレード機能 あり なし

簡単に説明すると、
ルーティング処理は、ハードウェア処理をするので、L3スイッチの方が早いです。
WANインターフェース(イーサネットなど)は、ルータの方が豊富に取り扱うことができます。
一つのアドレスをいくつのポートに割り振れるかという点について考えると、ルータは一つのアドレスを一つのポートにしか割り振れませんが、L3スイッチは1つのアドレスを複数のポートに割り振ることができます。
また、NAT/IPマスカレード機能は、L3にはありません。
以上を考えてみると、L3スイッチは内部ネットワーク内の橋渡しに特化していて、ルータは、外部ネットワークとの橋渡しに特化している。と言えるようです。

L2スイッチ

複数の端末を一つのケーブルにつなぎ、繋がった端末を通信できるようにする。

機能

通信宛先の端末が繋がっているケーブルにデータを流します。
このようにデータを流すための"MACアドレステーブル"を学習します。この学習内容は、自分のポートとその接続先にある端末のMACアドレス(ネットワークに繋がるときに、自分がどの機器かを判別するために各々の機器が持っている識別番号)の対応を覚える事です。

比較:リピータハブ

繋がっている機器同士で通信するために、以前はよくリピータハブが用いられていました。
これは、ハブに繋がっている、すべての端末に無差別にデータを送信します。受け取る端末が、データに付加されているMACアドレス情報を見て、自分宛てならば受け取るし、受け取らないならば破棄をします。
この方式の問題は、一つの端末が通信を行っている時、他の端末が通信を行うとデータの衝突が起きてしまい、通信できなくなってしまう事です。これを解決するために、それぞれが衝突しないタイミングで通信をしようとします(これをCSMA/CDと言います)が、回線が開くのを待つ時間が発生するので遅くなってしまうという問題も持っています。

VLAN

スイッチのポートに論理的なネットワークを対応させることで作るネットワークをVLANと言います。
これによって、一つの物理的なネットワークを複数の論理的なネットワーク(VLAN)に分けることができます。
メリット

  1. セキュリティを強化できる
  2. LANの変更が容易
  3. 回線消費の減少

まず、もともと一つだったネットワークを用途に応じて分割することで、異なるネットワークとして存在させることにより、セキュリティを高める事ができます。
次に、仮想的なネットワーク(LAN)であるので、変更が容易です。
さらに、同一のネットワーク内に一斉にデータを送信する"ブロードキャスト"の範囲が、VLANで分割したことにより狭まるので、開戦の消費を減らすことができます。
注意ポイント
VLANは、上述したように異なるネットワークとして存在させるので、違うVLAN同士で通信をおこなうときには、ルータもしくはL3スイッチが必要になります。


以上が、最近勉強したネットワーク機器やその他周辺知識についてです。
読んでくださりありがとうございました。

LVMによるパーティション管理

今回は"Linuxにおける"パーティションについてと、その管理方法であるLVMについてまとめたいと思います。

動機

サーバー用にCentOSをインストールする事になった。
いつもはテキトウに済ませてしまっていたのですが、ファイル管理上をしっかり意識する必要が出てきたので、ちゃんと勉強する事にしました。

パーティションとは?

一つのハードディスクを分割して使う時の単位です。
分割して利用する事で、一台のハードディスクを、複数の用途に分けて使う事ができます。
(用途例:ここのパーティションにはwindowsを入れる。ここのパーティションは、システム部分、そしてここはデータ部分を担当させる。といった風)

パーティションを利用するメリット

3つあると思います。
1.バックアップしやすい
2.障害に強い
3.ディスクの有効活用ができる

1.について

パーティションに分割し、更新頻度の高いシステムと低いシステムで分割しておく事で、前者と後者のバックアップ頻度を合わせることができ、効率的なバックアップを行うことができるようになる。

2.について

パーティションごとに、アクセス権を変更したり、暗号化したりと、セキュリティ対策をとる事ができます。
また、もしディスクに論理的な障害が起きたとしても、その対象ディスクにだけ対策をとればよいので、他のディスクに影響を与えません。

3.について

1~数KBといった小さなファイルが無数に存在するパーティションでは、ブロック(データを保存するための最小の単位)・サイズを1KBにしてあげる事で、無駄な容量を使わないで済みます。
標準のブロック・サイズは4KBなので、もし1KBのデータを保存する時は、3KB無駄にしてしまいます。

パーティション割り振りの考え方

1.高速な処理が要求される時は、高速なハードディスクへパーティションを作成

swapや、/tmpのように、高速な処理が求められる場合、上記した事に該当します。
”高速なハードディスク”の要因は、
a.ハードディスクの種類
b.ハードディスクの外周側
で決まるようです。

a.に関しては、ディスクの種類(SATAか?IDEか?etc...)、メディア回転数といったものが要因となるようです。
b.に関しては、/dev/hdaxにおける、xのパーティション番号が若い方が外周に近くなり、アクセスが早くなる。と言う事があるようです。

2.用途に応じた、ディレクトリへの容量配分

サーバを例にとると、
・ソフトウェアをインストールする/usrディレクトリは大きくする必要はない。
・ログを保存する/varは容量を大きくする。
と言う考え方が大切のようです。
また、swapは、実メモリの1~2倍を割り当てるのが一般的のようです。
このように、自分がマシンを何のために使うのかによって、配分を決定します。

Linuxパーティションの取り扱い

Linuxパーティションを扱う時は、/(ルートディレクトリ)を起点としたディレクトリ・ツリーの中に、個別のディレクトリに割り当てて(以下マウント)して運用します。

マウントの方法

このマウントを行う方法は3つあります。
1.Linuxの起動時にマウントをする
2.必要な時に手動でマウントする
3.必要な時に自動でマウントする

1.について

/etc/fstabに記載されている無いように基づいてマウントを行います。
これは、mountコマンドが、Linuxが起動する時に自動的にrc.sysinitというスクリプトを行ってくれることで実現します。

2.について

必要な時に、mountコマンドを実行すれば良い。

3.について

autofsを利用します。

パーティションの種類

3種類存在します。
1.基本パーティション
2.拡張パーティション
3.論理パーティション

1.について

基本パーティションは、4つまで作る事ができます。
IDEハードディスクであれば、「/dev/hda1〜/dev/hda4」までがそれにあたります。

2.について

基本パーティションの中に複数のパーティションが作成される時の呼ばれ方が、拡張パーティションです。
上述したように、基本パーティションは、4つまでしか作る事ができないので、それ以上作成したい場合は拡張パーティションを作成します。

3.について

拡張パーティション内に作成するパーティションを論理パーティションと呼びます。これは/dev/hda5〜が当てはまります。

LVMによるパーティションの管理

以前までのパーティション分割方法は、「物理的なハードディスクをいくつかに分割する」と言う方式だけだったそうです。
「分割するだけ」なので、その後に「やっぱ容量が足りないから増やしたい!」となった時には、困ってしまっていたそうです。
しかし、現在はLVM(Logical Volume Management)を利用する事で、その問題を解決する事ができます。

LVMとは?

物理的なパーティションを、細かなブロックに分けて、そのブロックを寄せ集める事で、論理的なパーティションとして再編成する仕組みです。

まず、LVM用の物理的なパーティションであるPV(Pysical Volume)を用意します。
次に、PVを一定サイズに分割した、PE(Physical Extent)を用意します。
そのPEを寄せ集めて、想像上のパーティションであるLV(Logical Volume)を用意します。
この、"PEの寄せ集め"で構成されている事から、パーティションを拡大したり、縮小したりする事ができます。

しかし、注意しなければいけないのが、寄せ集める事のできるPEについてです。
LVを構成するためのPEは、同じVG(Volume Group)にいなければなりません。
このVGは、想像上のディスクドライブのようなものです。色々な物理的なパーティションを集めて、構成します。

自分のマシンの現状

現状のディスク使用状況と、パーティションの表示は、df -Hで表示する事ができます。
こんな感じで出力されました。

[root@vm ~]# df -H
Filesystem             Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       154G   1.9G   144G   2% /
/dev/hda1              104M    19M    81M  19% /boot
tmpfs                  397M      0   397M   0% /dev/shm

こちらは、CentOS5.2をインストールした際に、パーティション設定を自動で設定してもらった際の設定です。
/bootが物理パーティションに割り振られ、/がLVに割り振られている事が分ります。

では、実際にLVMをいじってみよう!といきたいところですが、
LVMの扱い方は、こちらがとても分りやすいので、ご紹介させていただく形で終わりたいと思います。

論理ボリューム追加 - CentOSで自宅サーバー構築
Pantora Networks » 2章 LVM操作 基本編

人気企業ランキング

最近就職活動が本格化ということで、載せさせていただきます。

就活SNSリクトモを利用している就活生による人気企業ランキングは以下。
人気企業ランキング by 就活SNSリクトモ

学情ナビ調べ、東洋経済調べ、アエラ調べ

順位     学情ナビ           東洋経済         アエラ  
1位 資生堂
フジテレビジョン
オリエンタルランド
2位 サントリー
博報堂/博報堂DYメディアパートナーズ
三菱商事
3位 シャープ
電通
三井物産
4位 パナソニック
全日本空輸(ANA)
JR東海
5位 JTBグループ
集英社
博報堂/博報堂DYメディアパートナーズ
6位 オリエンタルランド
JTBグループ
住友商事
7位 ソニー
資生堂
ベネッセコーポレーション
8位 三菱東京UFJ銀行
三菱東京UFJ銀行
東京海上日動火災保険
9位 全日本空輸(ANA)
講談社
エイチ・アイ・エス
10位 伊藤忠商事
テレビ朝日
三菱東京UFJ銀行
11位 キヤノン
三井住友銀行
電通
12位 三井住友銀行
バンダイ
三井住友海上火災保険
13位 東日本旅客鉄道(JR東日本)
日本航空(JAL)
JTBグループ
14位 大日本印刷
サントリー
ANA
15位 ベネッセコーポレーション
日本テレビ放送網
シャープ
16位 本田技研工業
野村證券
日本生命保険
17位 味の素
伊藤忠商事
NTTドコモ
18位 みずほ銀行
大和証券グループ
資生堂
19位 博報堂
アサツーディ・ケイ
三菱UFJ信託銀行
20位 トヨタ自動車
ベネッセコーポレーション
JR東日本
21位 花王
オリエンタルランド
CSKホールディングス
22位 東海旅客鉄道(JR東海)
東京放送(TBS)
三井住友銀行
23位 日本航空(JAL)
ソニー
サイバーエージェント
24位 集英社
角川書店
日本IBM
25位 NHK(日本放送協会)
三井物産
アサツーディ・ケイ
26位 エイチ・アイ・エス(H.I.S.)
ソニー・ミュージックエンタテインメント
トーハン
27位 バンダイ
みずほフィナンシャルグループ
みずほフィナンシャルグループ
28位 フジテレビジョン
三菱商事
サントリー
29位 講談社
日本放送協会(NHK)
パナソニック
30位 住友商事
明治製菓
ソニー
31位 電通
朝日新聞社
ソフトバンクグループ情報通信3社
32位 富士フイルム
小学館
大日本印刷
33位 明治製菓
パナソニック
バンダイ
34位 カネボウ化粧品
テレビ東京
JAL
35位 日産自動車
日本生命保険
NTTデータ
36位 カゴメ
東日本旅客鉄道(JR東日本)
ポーラ
37位 三井物産
エイチ・アイ・エス
ユニ・チャーム
38位 NTTドコモ
丸紅
東京電力
39位 三菱商事
第一生命保険
フジテレビ
40位 住友林業
東宝
損保ジャパン
41位 関西電力
エイベックス・グループ
丸紅
42位 西日本旅客鉄道(JR西日本)
味の素
NTT東日本
43位 ミツカングループ
任天堂
朝日新聞社
44位 清水建設
野村総合研究所
伊藤忠商事
45位 高島屋
花王
ジェーシービー
46位 東京海上日動火災保険
キリンビール
味の素
47位 三菱UFJ信託銀行
ポニーキャニオン
キヤノン
48位 大林組
東京海上日動火災保険
日本テレビ
49位 任天堂
文化放送
大和証券グループ本社
50位 バンダイナムコゲームス
国際協力機構(JICA)
トヨタ自動車

古いノートPCが復活。Puppy Linuxをインストール

我が家のPCがデスクトップなので、ゴロゴロしながらネットサーフィンをしたい時に向きません…笑

そこで古いノートPCを復活させることにしました。

ですが、XPを動かすと重いです…

そんなわけで、サクサク動くlinuxを探してみました。

見つけたのが、以下の二つです。

  1. puppy linux
  2. Damn Small Linux(以下DSL)

どちらも非常に軽いようで、僕のPCでも問題なく動く雰囲気です。

今回はpuppy linuxをインストールしたのでその記録です。
(ちなみに、インストールしなくても、CDで動きます!)

もし、DSLに興味がある方は、こちらを参考にして使ってみてください。

Installing to the Hard Disk - DSL Wiki
http://www.inohara.net/~kazuyoshi/lan-dsl-vectra.htm
http://wikis.jp/dsl/index.php?install2

puppyの概観を掴むには、以下が参考になります。

Puppy Linux 日本語版

環境

PC : 10年前くらいに買った、TOSHIBA Mebius
CPU : mobile AMD Duron Processor : 800MHz
メモリ : 120MB
HDD : 18.63GB

インストール

1.パーティション作成

http://www.puppylinux.org/manuals/puppy-40/%E6%97%A5%E6%9C%AC%E8%AA%9E/%E3%83%91%E3%83%94%E3%83%BC%E3%82%92%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%81%BE%E3%81%99

に従って作成します。

僕の場合は、パーティションは、以下のように作成しました。

/dev/hda1/ :Linux swap 128MB
/dev/hda2/ :ext2 ハードの残り全部

ちなみに、puppyの/(ルート)のインストール先である、/dev/hda2に、
boot フラグを立てないと、インストールしても起動できないので注意してください。。
僕は最初全く理解していなかったので、はまってしまいましたorz
(Gpartedで、/dev/ext2/を右クリック→Manage Flags→bootにチェックです)

3.設定

・マウスクリック
マウスパッドを使ってポイント操作をしていると、アイコンを通り過ぎただけで、
ウィンドウが開くので使いにくいなぁ…と思っていたら、シングルクリック設定に
なっていたようです。

http://suz-aa1.sblo.jp/article/26210555.html

こちらの記事を参考にさせていただき、修正しました。
ちなみに、ROX-filerは、「メニュー」→「ファイルシステム」の中にあります。

・CapsLockキーをCtrlに
「メニュー」→「セットアップ」→「マウス/キーボードウィザード」→「高度なxorgの設定」→「オプションタブの「コントロールキーの位置」」→「ctrl:swapcaps」
とやるだけで簡単に行えます。
(ただし、Xserveerがxorgの時に限ります!xvesaの時の設定は、色々な手段を試してみましたがうまくいきませんでした…)

感想

以上で簡単に設定は終了としてネットサーフィンをしてみました!
サクサク動くのでかなり満足な使用感です♪
もし、「いらない古いPCがあるんだよな」という方がいらっしゃったら、試されてみてはいかがでしょうか?
(自己責任でお願いします…笑)

また、何か便利設定があったら報告します!では!

Xenでサーバ環境構築その1〜xenについて知ろう〜

Xenでサーバ構築をしたいので、色々調べてみました。

Xenとは何か?仕組みはどうなっているのか?
そして調べていくうちに出てきた、「完全仮想化」と「準仮想化」がどのようなもので、どちらを利用して構築するか?
について、まとめました。

参考にさせていただいたサイトはこちらです。

http://www.valinux.co.jp/contents/tech/techlib/xen/xen_sp_02.html
インストールと環境構築 (1/3):実践! Xenで実現するサーバ統合(1) - @IT
http://www.computerworld.jp/topics/vt/59310.html
第1回 オープンソースの仮想マシン・ソフト「Xen」 | 日経 xTECH(クロステック)
エンタープライズサーバ ES7000シリーズ【日本ユニシス】
第1回 ●仮想化とは何か | 日経 xTECH(クロステック)

Xenとは?

一つのハードウェアを、複数のハードウェアがあるかのように扱う事ができる「仮想化」を実現し、その仮想化されたハードウェア上で複数のOSを同時に動作させることができるソフトウェア。
ホストOSを必要とせず仮想マシンを動作させる、「仮想マシン・モニター」の代表の一つ。
ホストOSを必要とするものには、VmwareServer等がある。

Xenを導入するメリット

(サーバ動作環境として利用するという前提。)

コスト面
  • リソースの有効活用

一台の物理サーバ上に複数台のサーバ機能を集約することで、リソースを有効活用し、「物理サーバ」の削減を行う事ができる。
また、リソース使用率の低いサーバを複数まとめることで、ハードウェア当たりのリソース使用率を向上させる。

仮想化時におけるサーバの独立性
  • 複数台のサーバが影響を及ぼしあわない

仮想化した各サーバのリソース必要量や優先度に応じて、柔軟にリソースを配分する事が可能である。配分した以上は、他のサーバからの影響を受けない。
この配分は動的に変化させる事も可能。
独立性が確保されているので、セキュリティを確保している。

運用面
  • テスト環境、開発環境の容易な構築
  • 事前に用意した仮想サーバを用いての新規仮想サーバの容易な構築
  • OSから上の層に変更を加えずに異なるサーバへ移動

仮想サーバの複製、サーバ使用状況やハードウェアの更新に合わせたハードウェア間の移動が可能となり、上記の事を実現できる。

仕組み

仮想化と準仮想化

Xenは、準仮想化と呼ばれる手段を使って仮想化している事が特徴。(ただし、完全仮想化も存在する)
仮想化が、ハードウェアをエミュレート(模倣)するのに対して、準仮想化は、完全にハードウェアをエミュレートはしない。その代わりに仮想環境に適した形の仮想ハードウェアを作り出す。
理由は、そうする事で仮想環境上に存在するゲストOSからの要求をそのまま処理できるため、動作が早くなるからだ。ただし、ゲストOSはこの仮想ハードウェア上で動作するように書き換えなければならない。
一方の完全仮想化は、ゲストOSからの仮想ハードウェアに対する要求が、一度CPUに受け取られる。
その後、CPUからXenに制御として渡される。
その制御を渡されたXenは、ゲストOSが行おうとした処理を分析して、仮想ハードウェアの動作をエミュレートしなければならない。
このせいで準仮想化に比べて、オーバーヘッド(与えた命令以外に付随してくる処理)が大きくなってしまう。

準仮想化の構造

続けて準仮想化における構造的な話をすると、「Domain0」と「DomainU」と呼ばれるものがOSを動作させるために存在する。
まず「Domain」とは一つ一つの仮想マシン環境を指し、これはXenの上に存在する。
そして「DomainU」には、ゲストOSが入る。「Domain0」は、物理デバイスの制御及び、Xenのマネジメント機能を受け持つOSが入る。
「DomainU」からの要求が実際に処理される際には、要求がXenを通して「Domain0」に渡され、「Domain0」が物理デバイスの制御を行える事を利用してなされる。
この、Domain0のおかげで、Xen自身がシンプルな構造を保っていられる。

完全仮想化と準仮想化それぞれのメリット、デメリット。

メリット

完全仮想化…OSを書き換える必要がないので、どのようなOSでもインストールする事ができる。
準仮想化…要求を直接エミュレートさせる事ができるので、処理が早い

デメリット

完全仮想化…オーバーヘッドが大きくなるため、動作が重くなる。
準仮想化…OSを書き換えなければいけないので、全てのOSを利用する事ができるわけではない。


以上です。

次回は実際に、環境構築を行っていこうと思います。
利用しようとしている、CentOSは準仮想化に対応していそうなので、そちらで構築していきたいと思います。