Fedora

2008/5/15更新

対応バージョン: 8,9

接続先のサーバの名前解決ができない。

クライアント側(yum実行ホスト側)に原因がある場合、例えば以下のような状況が考えられる。

/etc/resolv.confにDNSサーバが適切に設定されていない。
/etc/nsswitch.confのhosts行で適切な名前解決の方法が設定されていない。

例) /etc/hosts、DNSサーバの順で名前解決を行う設定

:
hosts: files dns
:

2007/8/15更新

対応バージョン: 6

何らかの原因でRPMのDBが破損したので再構築する。

# rpm --rebuilddb

上記コマンドでもエラーになる場合、いったんDBのファイルそのものを削除して再度DBを再構築する。

# rm /var/lib/rpm/__db.00[1-3]
# rpm --rebuilddb

パッケージの一覧を表示してDB再構築が成功したことを確認する。

# yum list

2007/8/15更新

対応バージョン: 6

iwconfigでデバイスの状態を確認すると以下のようになる。

# iwconfig eth1
eth1  unassociated  ESSID:"xxx"  Nickname:"xxx"
      Mode:Managed  Frequency=2.442 GHz  Access Point: Not-Associated   
      Bit Rate:0 kb/s   Tx-Power=20 dBm   Sensitivity=8/0  
      Retry limit:7   RTS thr:off   Fragment thr:off
      Encryption key:off
      Power Management:off
      Link Quality:0  Signal level:0  Noise level:0
      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:0   Missed beacon:0

このような場合WEPキーが設定されていないのが原因なので、以下の手順でWEPキーを設定する。

# vi /etc/sysconfig/network-scripts/keys-eth1
KEY="s:xxxxxxxxxxxxx" ← 13桁

# modprobe -r ipw2200

# iwconfig eth1
eth1  IEEE 802.11g  ESSID:"xxx"  Nickname:"xxx"
      Mode:Managed  Frequency:2.442 GHz  Access Point: 00:A0:B0:59:E6:FB   
      Bit Rate:54 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0  
      Retry limit:7   RTS thr:off   Fragment thr:off
      Encryption key:696C-626B-336E-766D-696C-626B-33   Security mode:open
      Power Management:off
      Link Quality=97/100  Signal level=-28 dBm  Noise level=-88 dBm
      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:0   Missed beacon:0

2007/8/15更新

対応バージョン: 6

messagesには以下のようなメッセージが出力されている。

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.1.2kmprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
ipw2200: Unable to load firmware: -2
ipw2200: failed to register network device
ipw2200: probe of 0000:02:02.0 failed with error -5

これはipw2200のファームウェアが古いのが原因なので、以下からipw2200-fw-3.0.tgzをダウンロードして、再読み込みする。

# tar xvf ipw2200-fw-3.0.tgz

# mv ipw2200-fw-3.0/ipw2200-*.fw /lib/firmware/

# modprobe -r ipw2200

# modprobe ipw2200

# lsmod | grep ipw2200
ipw2200               112037  0 
ieee80211              34953  1 ipw2200

2007/11/10更新

対応バージョン: 6,8

iwlistを使用する。

例) アクセスポイントが2箇所存在する場合

# iwlist eth1 scan
eth1  Scan completed :
      Cell 01 - Address: 00:0D:02:54:85:AD
                ESSID:"WARPSTAR-3DA816"
                Protocol:IEEE 802.11bg
                Mode:Master
                Channel:7
                Encryption key:on
                Bit Rate:54Mb/s
                Extra: Rates (Mb/s): 1 2 5.5 9 11 6 12 18 24 36 48 54
                Quality:0/100  Signal level:-72 dBm  Noise level:-256 dBm
                Extra: Last beacon: 1494ms ago
      Cell 02 - Address: 00:11:24:01:B4:A7
                ESSID:"foo-net"
                Protocol:IEEE 802.11bg
                Mode:Master
                Channel:2
                Encryption key:off
                Bit Rate:54Mb/s
                Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 24 36 48 54
                Quality:0/100  Signal level:-83 dBm  Noise level:-256 dBm
                Extra: Last beacon: 597ms ago

2007/11/10更新

対応バージョン: 6,8

無線LANのデバイスをeth1と仮定すると、

まず/etc/sysconfig/network-scripts/ifcfg-eth1に以下の記述を行う。

DEVICE=eth1
HWADDR=<MACアドレス>
IPADDR=<IPアドレス>
NETMASK=<ネットマスク>
NETWORK=<ネットワークアドレス>
BROADCAST=<ブロードキャストアドレス>
TYPE=Wireless
ESSID=<ESSID>
CHANNEL=<チャネルNo.>
ONBOOT=yes

次に/etc/sysconfig/network-scripts/keys-eth1に以下の記述を行う。

KEY="s:<WEPキー(文字列)>"

最後にこのkeys-eth1のパーミッションを変更してNICを再起動する。

# chmod 600 /etc/sysconfig/network-scripts/keys-eth1
# service network restart

2007/8/15更新

対応バージョン: 6

以下の手順で無線LANを設定する。

必要なドライバをロードする。

# modprobe <ドライバ名>

iwconfigを使用して必要なパラメータを設定する。

# iwconfig <NIC> channel <チャネル番号>
# iwconfig <NIC> essid <ESSID>
# iwconfig <NIC> ap <アクセスポイントのMACアドレス>
# iwconfig <NIC> key s:<WEPキー(13バイトの文字列)> ← WEP(128bit)の場合
# iwconfig <NIC> key open

# ifconfig <NIC> <IPアドレス> netmask <ネットマスク>

必要に応じてルーティングテーブルを設定する。

例) デフォルトルート設定の場合

# route add default gw <アクセスポイントのIPアドレス> <NIC>

2008/8/6更新

対応バージョン: 9

Fedora 9のGNOME環境にはデフォルトでVNCサーバ(vino)の機能が組み込まれているので以下の手順で設定する。

関連資料・記事

vino-serverが起動するとTCPの5900番ポートが開くのでファイアウォールの設定で同ポートへのアクセスを許可する。

関連資料・記事

2007/8/15更新

対応バージョン: 6,7,8

以下の手順で行う。

# depmod -a

# modprobe usb_storage

# lsmod | grep usb_storage
usb_storage            73249  0 
scsi_mod              138601  4 sg,usb_storage,libata,sd_mod

# mount -t <ファイルシステムタイプ> <デバイス> <マウントポイント>

例) FAT32フォーマットのUSBメモリを/media/diskにマウントする

# dmesg
:
scsi 4:0:0:0: Direct-Access 32MB HardDrive 1.88 PQ: 0 ANSI: 2 ready
sd 4:0:0:0: [sdb] 64000 512-byte hardware sectors (33 MB)
sd 4:0:0:0: [sdb] Write Protect is off
:
->デバイス名を確認(この例ではsdb)

# mkdir /media/disk

# mount -t vfat /dev/sdb1 /media/disk

# mount
:
/dev/sdb1 on /media/disk type vfat (rw)

2008/6/23更新

対応バージョン: 9

/tmpや/var/tmpなど一時ファイルの保管場所として利用する場所にtmpfsを割り当てるとディスクI/Oの代わりにメモリアクセスが行われるのでパフォーマンスが向上する。

ここでは/tmpにtmpfsを割り当てる手順を紹介する。

既存の/tmp配下のファイルを削除

/tmp配下に存在するX Window SystemやInput Methodなどの一時ファイルをあらかじめ削除する。

この作業はランレベル1(シングルユーザモード)で行う。

/etc/fstabに設定追加

/etc/fstabに/tmpの設定を追加する。

:
tmpfs    /dev/shm  tmpfs  defaults 0 0
tmpfs    /tmp      tmpfs  defaults 0 0 ← 追加
:

尚、デフォルトでは搭載メモリの半分までの領域がtmpfsで使用可能なので、この制限を変えるには以下のようにsizeオプションで指定する。

tmpfs    /tmp      tmpfs  defaults,size=512m 0 0

リブート

確認

% df -F tmpfs
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
tmpfs        241180     24  241156    1% /dev/shm
tmpfs        241180     24  241156    1% /tmp ← tmpfsが/tmpにマウントされている

2008/5/20更新

対応バージョン: 8

拡張/縮小それぞれ以下の手順で作業する。

swap領域を拡張する

現状把握

例) /dev/hda2(500MB)をswap領域に使用している場合

% cat /proc/swaps
Filename   Type       Size    Used   Priority
/dev/hda2  partition  522104  44696  -1

% free
          total     used   free shared buffers cached
Mem:     254768   250780   3988      0    2340 216080 ← 物理メモリ
-/+ buffers/cache: 32008 222760
Swap:    522104    44692 477412 ← swap領域

swapファイル作成

例) 1GBのswapファイルを作成する場合

% sudo dd if=/dev/zero of=/var/swap1 bs=1024 count=1024000

% sudo /sbin/mkswap /var/swap1 ← swap領域として初期化
Setting up swapspace version 1, size = 1048571 kB

swap拡張

% sudo swapon /var/swap1

% cat /proc/swaps 
Filename   Type       Size    Used   Priority
/dev/hda2  partition  522104  44692   -1
/var/swap1 file       1023992 0       -2 ← 追加された

% free
          total     used    free shared buffers cached
Mem:     254768   250780    3988      0    2340 216080
-/+ buffers/cache: 32360  222408
Swap:   1546096    44692 1501404 ← swap領域が増えた

OSブート時に有効化する場合の設定

% sudo vi /etc/vfstab
:
/var/swap1  swap  swap  defaults  0 0 ← swapエントリの次行に追加
:

swap領域を縮小する

swapファイルを切り離して削除

% sudo swapoff /var/swap1

% sudo rm /var/swap1

% cat /proc/swaps
Filename   Type       Size    Used   Priority
/dev/hda2  partition  522104  44696  -1

% free
          total     used   free shared buffers cached
Mem:     254768   250780   3988      0    2340 216080
-/+ buffers/cache: 32008 222760
Swap:    522104    44692 477412 ← swap領域が減った

/etc/vfstabからswapファイルのエントリを削除

% sudo vi /etc/vfstab
:
/var/swap1   none  swap  defaults  0 0 ← 削除
:

2007/11/10更新

対応バージョン: 6,7,8

sshfsを使用するには基本的にクライアント側での設定だけでよく、サーバ側ではsshdが起動していて必要に応じてsftp-serverが起動するようになっていればよい。

以下、クライアント側の設定を示す。

fuse-sshfsパッケージインストール

# yum install fuse-sshfs

各種パーミッション変更

# chmod o+rw /dev/fuse

これを実行しないとsshfs実行時に「fuse: failed to open /dev/fuse: Permission denied」というエラーになる。

# chmod 4755 /bin/fusermount

これを実行しないとsshfs実行時に「fuse: failed to exec fusermount: Permission denied」というエラーになる。

マウント

以上で設定は完了で、あとは以下の要領でファイルシステムをマウントする。

% sshfs [アカウント@]<サーバ>:[ディレクトリ] <マウントポイント>

例えば、クライアント側と同じアカウントがサーバにあってそのホームディレクトリを~/serverにマウントする場合は以下のようにする。

% sshfs <サーバ>: ~/server

(*) <サーバ>の後の「:」を忘れないこと。

アンマウント

アンマウントは以下の手順で行う。

% fusermount -u <マウントポイント>

関連資料・記事

2008/9/10更新

対応バージョン: 6,7,8,9

/etc/init.d配下に格納されている起動スクリプトに実行権がない。

2008/9/10更新

対応バージョン: 6,7,8,9

以下の手順で無効化する。

サービス停止

# service <サービス> stop

ランレベル毎の有効/無効設定変更

# chkconfig --level 2345 <サービス> off

# chkconfig --list <サービス>
<サービス>   0:off   1:off   2:off   3:off   4:off   5:off   6:off

例) iptablesを無効化する

# service iptables stop

# chkconfig --level 2345 iptables off

# chkconfig --list iptables
iptables     0:off   1:off   2:off   3:off   4:off   5:off   6:off

2008/5/15更新

対応バージョン: 9

routeコマンドで例えばデフォルトゲートウェイを設定しようとすると以下のようなエラーが出て設定に失敗する。

% sudo route add default gw 192.168.0.1
SIOCADDRT: そのようなプロセスはありません

これは関連するNICが以下のような状態の時に起こるのでifconfig等で設定を確認し、必要があればIPアドレスの(再)設定やインタフェースのUPを行う。

そもそもIPアドレスが割り当てられいない
IPアドレスは割り当てられているが、デフォルトゲートウェイとして指定しようとしたアドレスと別セグメントである
正しいIPアドレスが割り当てられているが、インタフェースがUPしていない

2008/5/18更新

対応バージョン: 6,7,8,9

/etc/sysconfig/static-routesを作成してシステムを再起動する。

例) 172.20.61.0/24宛のゲートウェイを192.168.253.1に設定する場合

設定
any net 172.20.61.0 netmask 255.255.255.0 gw 192.168.253.1
確認
# netstat -nr
Kernel IP routing table
Destination  Gateway        Genmask        Flags  MSS Window  irtt Iface
:
172.20.61.0  192.168.253.1  255.255.255.0  UG       0 0          0 eth0
:

2008/8/2更新

対応バージョン: 6,7,8,9

以下の設定を行ってgdmを再起動する。

ファイアウォール設定

TCPの6000番ポートを開ける。

gdm設定

Fedora9の場合

/etc/gdm/custom.confの[security]タブに以下の設定を追加

DisallowTCP=false
Fedora8以前の場合

gdmsetupを起動して[セキュリティ]タブの以下のチェックを外す(Fedoraのバージョンによってチェック項目が異なるので注意する)。

(Fedora 7,8)

□ Xサーバへの転送を禁止する

(Fedora Core 6)

□ TCP接続を禁止する

許可するホストをxhostで設定

特定のホストを許可する場合
xhost +192.168.0.1
全てのホストを許可する場合
xhost +

2007/11/2更新

対応バージョン: 6,7

以下の環境変数を設定しておき、必要なアプリケーションを実行する。

HTTP_PROXY
http://<ホスト>:<ポート>/
FTP_PROXY
http://<ホスト>:<ポート>/

2008/11/18更新

対応バージョン: 9

quotaを使うには以下の手順で行う。

quotaオプション付でファイルシステムをマウント

/etc/fstabにてquotaを使いたいファイルシステムにquotaオプションを付ける。

制限をかけたい方法によって以下のオプションを指定する。

ユーザで制限をかける(ユーザquota)

usrquota

グループで制限をかける(グループquota)

grpquota

ユーザ/グループ両方で制限をかける

usrquota,grpquota

ここではユーザquotaを設定するものとして説明する。

例)

/dev/sdb2 /test     ext3    defaults,usrquota 1 2

quotaオプション有効化

該当のファイルシステムがアンマウント可能ならいったんアンマウントしてマウントし直す。

例)

% sudo umount /test
% sudo mount /test

アンマウント不可能ならマシンをリブートする。

以降、quota関連コマンドにて各種設定を行うが、グループquotaの場合はコマンドオプションのuのところがgに変わるだけでパラメータなどは基本的に同じである。

quota情報記録ファイル作成

% sudo quotacheck -au
% ls -l /test/aquota.user
-rw------- 1 root root     7168 2008-11-18 00:05 aquota.user

グループquotaの場合はaquota.groupが作成される。

quota関連コマンドのオプションは主に以下のものを使用する。

-a

設定対象が全て

-u

ユーザquotaの設定

-g

グループquotaの設定

-p

状態を表示する

-v

詳細表示モード

ユーザquota設定

% sudo edquota -u foo
Disk quotas for user foo (uid 900):
  Filesystem  blocks   soft   hard  inodes  soft  hard
  /dev/sdb2        0      0      0       0     0     0

soft(ソフトリミット)とhard(ハードリミット)に使用制限を指定する。

blocksの右のsoft/hardはファイルサイズに対する設定(単位はKB)、inodesの右のsoft/hardはファイル数に対する設定である。0を指定すると無制限になる。

またblocksとinodesはそれぞれ現在使用しているファイルサイズとi-nodeの合計である。

softで設定したサイズを使いきると一定の猶予期間(後述)の間はhardで設定したサイズまで書き込める。猶予期間が過ぎるか、猶予期間内でもhardで設定したサイズに達するとそれ以上書き込みができなくなる。

例) soft=10MB、hard=40MBの場合

  Filesystem  blocks   soft   hard  inodes  soft  hard
  /dev/sdb2        0  10240  40960       0     0     0

既存のquotaの設定をコピーするにはedquotaの-pオプションを使用するとよい。

例) fooのquota設定をbarにコピーする

% sudo edquota -p foo bar

quota有効

% sudo quotaon -auv
/dev/sdb2 [/test]: user quotas turned on

状態を確認するとユーザquotaだけが有効になっているのが分かる。

% sudo quotaon -p /test
group quota on /test (/dev/sdb2) is off
user quota on /test (/dev/sdb2) is on

また、repquotaで現在の設定状況が確認できる。

% sudo repquota -a
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                   Block limits                File limits
User        used   soft    hard  grace   used  soft  hard  grace
----------------------------------------------------------------
root  --  192000      0       0             4     0     0       

現状ではrootだけが当該ファイルシステムを使っているのが分かる。

ここでfooユーザで20MBのファイルを作ってみる。

% dd if=/dev/zero of=a bs=1M count=20

するとrepquotaで以下のようになり、fooユーザのソフトリミットを越えたために2カラム目が「+-」になっているのが分かる。

% sudo repquota -a
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                   Block limits                File limits
User        used   soft    hard  grace   used  soft  hard  grace
----------------------------------------------------------------
root  --  192000      0       0             4     0     0
foo   +-   20504  10240   40960  7days      1     0     0       

さらに20MBのファイルを作ろうとするとハードリミットに達して途中までしかファイルが作成されない。

% dd if=/dev/zero of=b bs=1M count=20
dd: writing `b': ディスク使用量制限を超過しました
20+0 records in
19+0 records out
20922368 bytes (21 MB) copied, 0.160903 s, 130 MB/s

またrepquotaの結果は以下のようになる。

% sudo repquota -a
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                   Block limits                File limits
User        used   soft    hard  grace   used  soft  hard  grace
----------------------------------------------------------------
root  --  192000      0       0             4     0     0
foo   +-   40960  10240   40960  6days      2     0     0       

猶予期間の設定

猶予期間とはソフトリミットが強制的に実行されるまでの期間であり、この期間を過ぎるとソフトリミットを越えたファイル作成ができなくなる。

この期間はデフォルトで7日間に設定されており、変更するにはedquotaの-tオプションを使用する。

単位にはseconds(秒)、minutes(分)、hours(時)、days(日)が使用できる。

% sudo edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem   Block grace period   Inode grace period
  /dev/sdb2                 7days                7days

2007/8/15更新

対応バージョン: 6

cupsのPDF出力モジュール(CUPS-PDF)を使用する。

以下の手順で設定する。

cups-pdfインストール

# yum install cups-pdf

cups再起動

# service cups restart

仮想プリンタ設定

Webブラウザで「http://localhost:631/」にアクセスして[管理]タブを選択

「Virtual PDF Printer (CUPS-PDF)」の左側の「このプリンタを追加」をクリックし、以下の選択肢に答えていく

メーカ

Generic

モデル

Generic PostScript Printer Foomatic/Postscript (recommended)(en)

プリンタオプション

ページサイズなど、必要に応じて設定

PDF作成ディレクトリ設定

デフォルトで$HOME/Desktop配下にファイルが作成される設定になっているので、これを変更したい場合は/etc/cups/cups-pdf.confの以下の行を変更する。

   44 Out ${HOME}/Desktop

尚、この設定を行ってもcups再起動の必要はない。

クライアント側設定

Firefox等、クライアントアプリの印刷ダイアログボックスにて出力先に「CUPS/CUPS-PDF」を選択して印刷を行えばPDFが作成される。

関連ファイル

CUPS-PDF関連のファイルは以下のとおりである。

/etc/cups/cups-pdf.conf

CUPS-PDFの設定

/etc/cups/printers.conf

プリンタの定義

/etc/cups/ppd/CUPS-PDF.ppd

ドライバ

/var/spool/cups-pdf/SPOOL

スプールディレクトリ

/var/log/cups/cups-pdf_log

ログファイル

2008/10/15更新

対応バージョン: 9

ntpdateで時刻同期しようとすると以下のエラーが出て同期に失敗する。

% sudo ntpdate timeserver
no server suitable for synchronization found

これにはいくつかの原因が考えられる。

ntpdateに-dオプションを付けて実行すると詳細な情報が得られるので、その結果毎の原因を示す。

NTPサーバからの応答がない場合

% sudo ntpdate -d timeserver
:
Looking for host timeserver and service ntp
host found : timeserver
transmit(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
xxx.xxx.xxx.xxx: Server dropped: no data
server xxx.xxx.xxx.xxx, port 123
stratum 0, precision 0, leap 00, trust 000
:
no server suitable for synchronization found

本来ならtransmitの後にreceive(サーバからの応答)が出力されるが、以下のような原因でサーバに接続できない。

NTPサーバが起動していない。
NTPサーバは起動しているが、サーバが動作しているマシンあるいは途中の経路で123/udpポートがブロックされている。

関連資料・記事

NTPサーバには接続できるが時刻同期できない場合

(パターン1)

% sudo ntpdate -d timeserver
:
Looking for host timeserver and service ntp
host found : timeserver
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
xxx.xxx.xxx.xxx: Server dropped: strata too high
server xxx.xxx.xxx.xxx, port 123
stratum 16, precision -19, leap 11, trust 000
:
no server suitable for synchronization found

この事象は当該NTPサーバには接続できるもののサーバがまだ利用可能な状態になっていない、つまり上位のNTPサーバと同期しておらずstratum値が規定外の16に設定されている状態である。

stratum値はサーバの(時刻保持者としての)信頼度によって1〜15まで階層分けされ、もっとも信頼できる最上位のNTPサーバが1となる。

サーバ側の問題が考えられるのでサーバの設定を見直す。

(パターン2)

% sudo ntpdate -d timeserver
:
Looking for host timeserver and service ntp
host found : timeserver
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
xxx.xxx.xxx.xxx: Server dropped: Leap not in sync
server xxx.xxx.xxx.xxx, port 123
stratum 7, precision -19, leap 11, trust 000
:
no server suitable for synchronization found

パターン1と似ているが、この場合はNTPサーバが上位サーバに同期を実行中、あるいは同期は終了しているもののまだ当該サーバの稼働時間が少ないために信用に足らない状態である。30分程度待ってから再度接続してみる。

関連資料・記事

ntpdate成功時の状態

参考までに、ntpdateが成功した時のntpdate -dの出力を記す。

% sudo ntpdate -d timeserver
:
Looking for host timeserver and service ntp
host found : timeserver
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
transmit(xxx.xxx.xxx.xxx)
receive(xxx.xxx.xxx.xxx)
server xxx.xxx.xxx.xxx, port 123
stratum 7, precision -19, leap 00, trust 000
:
adjust time server xxx.xxx.xxx.xxx offset 0.001289 sec

2007/11/28更新

対応バージョン: 8

設定ファイル記述

/etc/ntp.confを記述する。ここでは必要最低限のパラメータについて説明する。

driftfile <ファイル>

NTPデーモンが時刻の変動を記録するdriftfileを指定する。

例)

driftfile /var/lib/ntp/drift

server <サーバ>

時刻を同期する上位NTPサーバを指定する。サーバは複数指定できる。

例)

server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

restrict <対象サーバ> <ルール>

NTP通信の対象サーバとアクセスルールを記述する。

デフォルトでは全てのホストとのNTP通信を許可しない設定になっているので、対象NTPサーバに対するルールを個別に指定する。

サーバに「default」または「0.0.0.0」と指定するとデフォルトのルールが記述できる。

また、最後にマッチした行のルールが適用されるので、デフォルト設定は最初に記述する必要がある。

例) ローカルホストとの通信許可

restrict 127.0.0.1

例) 特定のホストとの通信許可

restrict ntp1.jst.mfeed.ad.jp
restrict ntp2.jst.mfeed.ad.jp
restrict ntp3.jst.mfeed.ad.jp

例) ネットワーク192.168.0.0/24内のホストとの通信許可

restrict 192.168.0.0 mask 255.255.255.0

ルールには主に以下のような種類があるので必要に応じて指定する。

未指定

制限なし(全てのNTPパケットを許可)

ignore

全てのNTPパケットを無視

nomodify

時刻問合せには応答するが、時刻の変更要求などは無視

notrust

時刻問合せには応答するが、自身の時刻合わせには使用しない

nopeer

指定ホストと相互に同期しない

noquery

NTPの実装に依存する時刻問合せを無視

ntpd起動

ntpdを有効化して起動する。

# chkconfig --level 5 ntpd on
# chkconfig --list ntpd
ntpd      0:off  1:off  2:off  3:off  4:off  5:on  6:off

# service ntpd start

確認方法

NTPサーバへの接続状況はntpqコマンドで確認できる。

# ntpq -p
     remote           refid      st t when poll reach delay offset jitter
=========================================================================
*ntp1.jst.mfeed. 210.173.160.86   2 u  436 1024  377  8.928 -0.093  0.079
+ntp2.jst.mfeed. 210.173.160.86   2 u  249 1024  377  9.415 -0.206  1.206
+ntp3.jst.mfeed. 210.173.176.251  2 u  255 1024  377  8.811  0.048  0.084

サーバ毎の接続状況は行頭の文字によって確認できる。主なものを以下に示す。

*

同期している

+

いつでも同期できる

x

クロックが不正確なため無効

空白(スペース)

以下のような理由で使用不可となっている

・不正経路やサーバダウン等の理由でサーバと通信できない

・サーバやサーバまでの経路のファイアウォール等で123/udpのパケット受信を拒否している

・サーバが自分自身(ループ)

・単に同期に時間がかかっている(しばらく待ってみる)

関連資料・記事

2007/11/28更新

対応バージョン: 8

これは/etc/init.d/networkから呼び出される/etc/sysconfig/network-scripts/network-functions-ipv6内で「modprobe ipv6」が実行されているが、同ドライバが存在しない、あるいは無効になっている場合に出るメッセージである。

IPv6は使用できない状態になっているのでIPv6を使用する必要がなければこのメッセージを無視してよい。

ただ気になるようなら以下のような対応をする。

「modprobe ipv6」行をコメントアウトする。
IPv6を有効にする。

関連資料・記事

2008/1/23更新

対応バージョン: 8

/etc/sysconfig/network-scripts配下にNIC毎の設定ファイルがあるので、例えばeth0に対してIPエイリアスを設定する場合は新たに「:1」付きのifcfg-eth0:1を作成する。

例)

# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
BOOTPROTO=static
BROADCAST=192.168.253.255
IPADDR=192.168.253.199
NETMASK=255.255.255.0
NETWORK=192.168.253.0
ONBOOT=yes

次にこのeth0:1を有効にする。

# ifup eth0:1
# ifconfig eth0:1
eth0:1  Link encap:Ethernet  HWaddr 00:03:47:B2:0C:FA    
        inet addr:192.168.253.199  Bcast:192.168.253.255  Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

設定ファイルでONBOOT=yesの場合は次回ブート時にこのIPエイリアスが自動的に有効になる。

手動で有効/無効を切り替えたい場合はここをnoにしておく。

関連資料・記事

2007/11/10更新

対応バージョン: 6,7,8

ifup,ifdownコマンドを使用する。

例)

# ifup eth0
# ifdown eth0

2008/11/20更新

対応バージョン: 9

mountコマンドを使用してリモートホストのファイルシステムをNFSマウントしようとすると以下のエラーが出てマウントに失敗する(NFSv4のTCP接続)。

% sudo mount -v -o tcp serv:/export/home /mnt
mount.nfs: timeout set for Wed Nov 19 08:33:14 2008
mount.nfs: text-based options: 'addr=192.168.0.1'
mount.nfs: internal error

これはサーバ側のサービスポートがブロックされているのが原因なので以下の設定を行う。

/etc/sysconfig/nfsにてmountdのポート番号を固定

mountdは起動時にportmapperによってポート番号が動的に割り当てられるが、その方式だとiptablesでパケット通過の制御ができないためあらかじめポート番号を固定しておく。

MOUNTD_PORT=32767

(*) ポート番号は任意

上記設定後、NFSサーバを再起動

% sudo service nfs restart

/etc/sysconfig/iptablesにsunrpc(111)とmountd(32767)のフィルタ設定を追加

-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 32767 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 32767 -j ACCEPT

尚、NFSサーバのサービスポートである2049/tcpは既に以下のように設定済とする。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT

上記設定後、iptablesを再起動

% sudo service iptables restart

関連資料・記事

2008/7/6更新

対応バージョン: 9

mountコマンドを使用してリモートホストのファイルシステムをNFSマウントしようとすると以下のエラーが出てマウントに失敗する。

rpcbind: server localhost not responding, timed out
RPC: failed to contact local rpcbind server (errno 5).

これはローカルのRPCサービスを制御するportmapperが起動していないのが原因なので、同デーモンを起動する。

% sudo service rpcbind start

% /usr/sbin/rpcinfo -p
   プログラム バージョン プロトコル ポート
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100000    4     0    111  portmapper
    100000    3     0    111  portmapper
    100000    2     0    111  portmapper

関連資料・記事

2008/12/21更新

対応バージョン: 10

シングルユーザモードで起動している場合にルートファイルシステムは通常リードオンリーモードでマウントされているが、/etc配下のファイルを変更したい場合などに書込みも可能にする場合は以下のようにmountコマンドのremountオプションを使用して再マウントすることができる。

# mount -o remount,rw /dev/VolGroup00/LogVol00 /

2008/10/21更新

対応バージョン: 9

ISOイメージをマウントして中身を参照するにはmountコマンドを-o loop(ループバックデバイス)オプション付で実行する。

% sudo mount -t iso9660 -r -o loop foo.iso /mnt

ループバックデバイスはブロックデバイスではないISOイメージファイルなどをマウントして中身のファイル操作を行えるようにする機能である。

例えば任意のファイルをext3のファイルシステムとしてフォーマットしてそれをマウントする場合は以下のようにする。

% dd if=/dev/zero of=foo.ext3 bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.0574711 s, 547 MB/s

% mkfs.ext3 foo.ext3 
mke2fs 1.40.8 (13-Mar-2008)
foo.ext3 is not a block special device.
Proceed anyway? (y,n) ← y

% sudo mount -t ext3 -o loop foo.ext3 /mnt

% df /mnt
Filesystem    1K-ブロック  使用  使用可 使用% マウント位置
/tmp/foo.ext3    29745     1401   26808    5% /mnt

関連資料・記事

2008/11/11更新

対応バージョン: 9

CD-ROMあるいはDVD-ROMの内容をISOイメージファイルにするにはmkisofsコマンドを使用する。

例えば/mnt配下にマウントされたDVD-ROMの内容をdvd.isoというイメージファイルにしたい場合は以下のようにする。

% sudo mkisofs -l -r -J -o /tmp/dvd.iso /mnt
  0.30% done, estimate finish Tue Nov 11 05:24:25 2008
:
 99.83% done, estimate finish Tue Nov 11 05:06:39 2008
Total translation table size: 0
Total rockridge attributes bytes: 403245
Total directory bytes: 677888
Path table size(bytes): 156
Max brk space used 319000
1673212 extents written (3267 MB)

オプションには様々なものがあるが、上記の例では以下のオプションを使用する。

-l

ロングファイルネームサポート

-r

ファイルのオーナー/モードを適切に設定する

-J

Jolietフォーマットサポート (参考: Joliet - @IT)

関連資料・記事

2008/8/30更新

対応バージョン: 9

mDNS(Multicast DNS)で.localのホストの名前解決をするにはnss-mdnsモジュールを使用する。

同モジュールがインストールされていない場合はまずインストールする。

% sudo yum install nss-mdns

nss-mdnsモジュールには目的に応じて3種類 x 2バリエーションの計6モジュールが用意されている。

以下にそれぞれのモジュールについて説明する。

mdns

IPv4/IPv6双方のアドレス解決 (レガシー)

mdns4

IPv4のみのアドレス解決

mdns6

IPv6のみのアドレス解決

どのモジュールも最後に「_minimal」が付くバリエーションがある。

mdns_minimal
mdns4_minimal
mdns6_minimal

このバリエーションを使用すると名前解決しようとしたホスト名の最後に「.local」が含まれていないかアドレスの範囲が169.254.0.0/16(IPV4LL/APIPA/RFC3927)でない場合は名前解決を行わないので、例えば名前解決の手段として/etc/hostsの他にDNSとWINSを使うなど複数のモジュールを使用する場合に早く次のモジュールに制御が移せる効果がある。

よって例えば/etc/hostsとmDNS(IPv4)、及びDNSを使用する場合は/etc/nsswitch.confに以下のように記述するとよい。

hosts:    files mdns4_minimal [NOTFOUND=return] dns mdns4

この結果、.localのホストの名前解決が可能となる。

% getent hosts myhost.local
192.168.0.1  myhost.local

2008/3/13更新

対応バージョン: 8

dm-snapshotモジュールをロードする。

# modprobe dm-snapshot

関連資料・記事

2008/7/7更新

対応バージョン: 9

外付けハードディスク等、別マシンで使用していたLVMボリュームを使用する場合、そのままではボリュームが使用不能状態になっているので、lvchangeコマンドで当該ボリュームを使用可能に設定してから通常のマウントを行う。

一応PV、VGのチェックを行い、LVの設定を変更する。

例) ext3の/dev/datavg/datalvを使用する場合

% sudo pvscan
  PV /dev/sdb1   VG datavg       lvm2 [38.17 GB / 0    free]
  Total: 1 [38.17 GB] / in use: 1 [38.17 GB] / in no VG: 0 [0   ]

% sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "datavg" using metadata type lvm2

% sudo lvscan
  inactive      '/dev/datavg/datalv' [38.17 GB] inherit
  → 使用不能

% sudo lvchange -ay /dev/datavg/datalv ← ボリュームの状態変更(available=y)

% sudo lvscan
  ACTIVE        '/dev/datavg/datalv' [38.17 GB] inherit
  → 使用可能

LVを使用可能に設定すると以下のデバイスファイルが作られる。

% ls -l /dev/datavg/datalv
lrwxrwxrwx ... /dev/datavg/datalv -> /dev/mapper/datavg-datalv

% ls -l /dev/mapper/datavg-datalv
brw-rw---- ... /dev/mapper/datavg-datalv

あとは普通にマウントして使用することができる。

% sudo mkdir -p /mnt/data

% sudo mount -t ext3 /dev/datavg/datalv /mnt/data

2008/3/13更新

対応バージョン: 8

スナップショットLV作成

スナップショットLVを作成するには、対象となるLVを指定してlvcreateコマンドを-sオプション付で実行する。

例えば/mnt/dataにマウントされたLV(/dev/datavg/datalv)のスナップショットを作成するには以下のようにする。

# lvcreate -s -L 128m -n data_snap /dev/datavg/datalv
  Logical volume "data_snap" created

(*) スナップショットのサイズはLVのサイズの10%〜30%程度を目安とする。ここでは128MBとする。

(*) 差分データがこのスナップショット領域のサイズを越えるとスナップショットLVが壊れるので注意が必要である。

次にスナップショットLVが作成されたことを確認する。

# lvscan
:
  ACTIVE  Original '/dev/datavg/datalv' [1.00 GB] inherit
  ACTIVE  Snapshot '/dev/datavg/data_snap' [128.00 MB] inherit

# lvdisplay -C datavg
  LV        VG     Attr   LSize   Origin Snap%  Move Log Copy%
  data_snap datavg swi-ao 128.00M datalv   0.06
  datalv    datavg owi-ao   1.00G

あとは普通にマウントして使用することができる。

# mkdir /mnt/data_snap

# mount /dev/datavg/data_snap /mnt/data_snap

関連資料・記事

スナップショットLV解放

スナップショットLVを解放するにはまずマウントを解除してlvremoveを実行する。

# umount /mnt/data_snap

# lvremove /dev/datavg/data_snap 
Do you really want to remove active logical volume "data_snap"? [y/n]: y
  Logical volume "data_snap" successfully removed

# rmdir /mnt/data_snap

スナップショットLVが解放されたことを確認する。

# lvscan
:
  ACTIVE            '/dev/datavg/datalv' [1.00 GB] inherit

# lvdisplay -C datavg
  LV     VG     Attr   LSize Origin Snap%  Move Log Copy%
  datalv datavg -wi-ao 1.00G

2008/3/8更新

対応バージョン: 8

既存のボリュームグループ(VG)の領域が足りなくなった場合に余っているVGからPVを切り離して追加する手順を示す。

ここでは/dev/sdb{1,2}で構成される「datavg」というVGに、/dev/sdc{1,2}で構成される「extvg」というVGから/dev/sdc2を切り離して追加する手順を示す。

確認

# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize  VFree 
  datavg   1   0   0 wz--n-  1.91G  1.91G
  extvg    1   0   0 wz--n- 36.27G 36.27G

# vgdisplay -v datavg
:
  --- Physical volumes ---
  PV Name             /dev/sdb1     
  PV UUID             fdPYw5-Rlfl-tJem-PD53-MLgv-OOcQ-yiYIXX
  PV Status           allocatable
  Total PE / Free PE  488 / 488
   
  PV Name             /dev/sdb2     
  PV UUID             GojV6F-Wky0-Tb8r-ioj4-tR3R-RL7f-NlPzhW
  PV Status           allocatable
  Total PE / Free PE  9052 / 9052

# vgdisplay -v extvg
:
  --- Physical volumes ---
  PV Name             /dev/sdc1     
  PV UUID             C8PCm2-3xJn-5kGk-oBy1-02XT-Tqwu-Hqkcb9
  PV Status           allocatable
  Total PE / Free PE  490 / 490
   
  PV Name             /dev/sdc2     
  PV UUID             0I7PNB-6kMt-3Pg5-Oxdi-qwPW-j3fR-hiLHLM
  PV Status           allocatable
  Total PE / Free PE  1462 / 1462

extvgから/dev/sdc2を切り離す

まずpvmoveを使用して対象PV内のPE(Physical Extent:物理エクステント)を同一VG内の別のPVに移動し、切り離し可能な状態にする。

# pvmove /dev/sdc2
  /dev/sdc2: Moved: 3.9%
  /dev/sdc2: Moved: 8.2%
:
  /dev/sdc2: Moved: 98.0%
  /dev/sdc2: Moved: 100.0%

次にvgreduceを使用して対象PVを切り離す。

# vgreduce extvg /dev/sdc2
  Removed "/dev/sdc2" from volume group "extvg"

/dev/sdc2が切り離されたことを確認する。

# vgdisplay -v extvg
:
  --- Physical volumes ---
  PV Name             /dev/sdc1     
  PV UUID             C8PCm2-3xJn-5kGk-oBy1-02XT-Tqwu-Hqkcb9
  PV Status           allocatable
  Total PE / Free PE  490 / 234

/dev/sdc2をdatavgに追加する

上記で切り離したPVを移動先VGに追加する。

# vgextend datavg /dev/sdc2
  Volume group "datavg" successfully extended

/dev/sdc2が追加されたことを確認する。

# vgdisplay -v datavg 
:
  --- Physical volumes ---
  PV Name             /dev/sdb1     
  PV UUID             fdPYw5-Rlfl-tJem-PD53-MLgv-OOcQ-yiYIXX
  PV Status           allocatable
  Total PE / Free PE  488 / 488
   
  PV Name             /dev/sdb2     
  PV UUID             GojV6F-Wky0-Tb8r-ioj4-tR3R-RL7f-NlPzhW
  PV Status           allocatable
  Total PE / Free PE  9052 / 8796
   
  PV Name             /dev/sdc2     
  PV UUID             0I7PNB-6kMt-3Pg5-Oxdi-qwPW-j3fR-hiLHLM
  PV Status           allocatable
  Total PE / Free PE  1462 / 1462

関連資料・記事

2008/1/7更新

対応バージョン: 8

ファイルシステム拡張

LVM上のファイルシステムを拡張するにはまず器となる論理ボリュームを拡張し、次に中身のファイルシステムを拡張する。

ここでは1GBのファイルシステムを500MB拡張する手順を示す。

まず論理ボリュームの拡張にはlvresizeを使用する。これはオンラインで実行可能である。

# lvresize -L +500M /dev/datavg/datalv 
  Extending logical volume datalv to 1.49 GB
  Logical volume datalv successfully resized

# lvdisplay /dev/datavg/datalv
  --- Logical volume ---
  LV Name             /dev/datavg/datalv
  VG Name             datavg
  LV UUID             ZjRBAD-ln4K-VIUQ-zVxL-L05a-0SAL-lObINy
  LV Write Access     read/write
  LV Status           available
  # open              1
  LV Size             1.49 GB
  Current LE          381
  Segments            1
  Allocation          inherit
  Read ahead sectors  0
  Block device        253:0

次にファイルシステムを拡張する。

ファイルシステムの種類によって使用するコマンドやオンラインリサイズが可能かどうかが異なるので注意する。

ここではext3のファイルシステムについて説明する。

ext3はオンラインリサイズが可能なので、ファイルシステムをマウントしたままext2onlineを実行すると、lvresizeで拡張しておいた論理ボリュームのサイズに合わせて自動的に領域が拡張される。

# df
Filesystem               1K-blocks  Used Available Use% Mounted on
:
/dev/mapper/datavg-datalv  1032088 34092    945568   4% /mnt

# ext2online /dev/datavg/datalv
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b

# df
Filesystem               1K-blocks  Used Available Use% Mounted on
:
/dev/mapper/datavg-datalv  1535856 34344   1423492   3% /mnt

ファイルシステム縮小

LVM上のファイルシステムを縮小する場合、拡張の時とは逆にまず中身のファイルシステムを縮小し、次に器である論理ボリュームを縮小する。

ファイルシステムの種類によって使用するコマンドやオンラインリサイズが可能かどうかが異なるので注意する。

ここではext3の1.5GBのファイルシステムを500MB縮小する手順を示す。

まずファイルシステムの縮小であるが、ext3はオンラインリサイズができないのでいったんアンマウントしてからfsck.ext3を使用してファイルシステムの整合性チェックを行った後にresize2fsにて領域を縮小し、再度マウントする。

# df
Filesystem               1K-blocks  Used Available Use% Mounted on
:
/dev/mapper/datavg-datalv  1535856 34344   1423492   3% /mnt

# umount /mnt

# fsck.ext3 -f /dev/datavg/datalv
e2fsck 1.38 (30-Jun-2005)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/datavg/datalv: 11/196608 files (9.1% non-contiguous), 14766/390144 blocks

# resize2fs /dev/datavg/datalv 1024M
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/datavg/datalv to 262144 (4k) blocks.
:
The filesystem on /dev/datavg/datalv is now 262144 blocks long.

# mount /dev/datavg/datalv /mnt

# df
Filesystem               1K-blocks  Used Available Use% Mounted on
:
/dev/mapper/datavg-datalv  1032088 34092    956056   4% /mnt

次に論理ボリュームを縮小する。

論理ボリュームのリサイズにはlvresizeを使用する。これはオンラインで実行可能である。

# lvresize -L -500M /dev/datavg/datalv 
  WARNING: Reducing active and open logical volume to 1.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce datalv? [y/n]: ← y
  Reducing logical volume datalv to 1.00 GB
  Logical volume datalv successfully resized

# lvdisplay /dev/datavg/datalv
  --- Logical volume ---
  LV Name             /dev/datavg/datalv
  VG Name             datavg
  LV UUID             ZjRBAD-ln4K-VIUQ-zVxL-L05a-0SAL-lObINy
  LV Write Access     read/write
  LV Status           available
  # open              1
  LV Size             1.00 GB
  Current LE          256
  Segments            1
  Allocation          inherit
  Read ahead sectors  0
  Block device        253:0

関連資料・記事

2008/1/7更新

対応バージョン: 8

作成済のLVMボリュームを削除する手順を示す。

ここでは以下のような構成のLVMを仮定して説明する。

物理ディスク/物理ボリューム(PV)

/dev/sda1

/dev/sda2

ボリュームグループ(VG)

datavg (/dev/sda1, /dev/sda2で構成)

論理ボリューム(LV)

datalv (datavgボリュームグループ内に作成)

マウントポイント

/mnt (datalv論理ボリュームをマウント)

アンマウント

まずマウントを解除する。/etc/fstabにマウント設定が記述してある場合は削除、あるいはコメントアウトする。

# umount /dev/datavg/datalv

論理ボリューム(LV)削除

次に論理ボリュームを削除する。引数には論理ボリューム名ではなくボリュームグループ名を指定する。

するとそのボリュームグループ内に存在する論理ボリュームを削除するかどうか聞いてくるので削除したい論理ボリュームに対して「y」を入力する。

# lvremove datavg
Do you really want to remove active logical volume "datalv"? [y/n]: y
  Logical volume "datalv" successfully removed

# lvdisplay

ボリュームグループ(VG)削除

論理ボリュームがすべて削除されたらボリュームグループを削除できる。

# vgremove datavg
  Volume group "datavg" successfully removed

# vgdisplay

物理ボリューム(PV)削除

物理ボリュームの構成を削除する。

# pvremove /dev/sda1
  Labels on physical volume "/dev/sda1" successfully wiped

# pvremove /dev/sda2
  Labels on physical volume "/dev/sda2" successfully wiped

# pvdisplay

パーティションタイプ再設定

最後にfdiskにて各パーティションのパーティションタイプを0x83(Linux)に設定し直す。

# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 40.9 GB, 40991662080 bytes
64 heads, 32 sectors/track, 39092 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x000f3cff

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1954     2000880   8e  Linux LVM
/dev/sda2            1955       39092    38029312   8e  Linux LVM

Command (m for help): t ← パーティション選択
Partition number (1-4): 1
Hex code (type L to list codes): 83
Changed system type of partition 1 to 83 (Linux)

Command (m for help): t ← パーティション選択
Partition number (1-4): 2
Hex code (type L to list codes): 83
Changed system type of partition 2 to 83 (Linux)

Command (m for help): p

Disk /dev/sda: 40.9 GB, 40991662080 bytes
64 heads, 32 sectors/track, 39092 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x000f3cff

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1954     2000880   83  Linux
/dev/sda2            1955       39092    38029312   83  Linux

Command (m for help): w ← パーティションテーブル保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

関連資料・記事

2008/1/7更新

対応バージョン: 8

LVM(Logical Volume Manager)を使ったボリュームを作成する手順を示す。

ここでは2つのパーティションが作成されているディスク「/dev/sda」(40GB)に対して新たに1つのファイルシステムを割り当てる手順を示す。

/dev/sda1 : 2GB
/dev/sda2 : 38GB

LVMパーティション作成

まずfdiskにて各パーティションのパーティションタイプを0x8e(Linux LVM)に設定する。

# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 40.9 GB, 40991662080 bytes
64 heads, 32 sectors/track, 39092 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x000f3cff

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1954     2000880   83  Linux
/dev/sda2            1955       39092    38029312   83  Linux

Command (m for help): t ← パーティション選択
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): t ← パーティション選択
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p
:
   Device Boot  Start    End    Blocks  Id  System
/dev/sda1           1   1954   2000880  8e  Linux LVM
/dev/sda2        1955  39092  38029312  8e  Linux LVM

Command (m for help): w ← パーティションテーブル保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

物理ボリューム(PV)作成

続いて各パーティションを物理ボリューム(PV:Physical Volume)として構成する。

# pvcreate /dev/sda1
  Physical volume "/dev/sda1" successfully created

# pvcreate /dev/sda2
  Physical volume "/dev/sda2" successfully created

# pvdisplay -C
  PV         VG  Fmt   Attr  PSize   PFree 
  /dev/sda1      lvm2  --     1.91G   1.91G
  /dev/sda2      lvm2  --    36.27G  36.27G

# pvdisplay
  --- NEW Physical volume ---
  PV Name          /dev/sda1
  VG Name
  PV Size          1.91 GB
  Allocatable      NO
  PE Size (KByte)  0
  Total PE         0
  Free PE          0
  Allocated PE     0
  PV UUID          qzXdag-S3Kz-sw0W-Coog-FpY2-YWir-FcWLZJ
   
  --- NEW Physical volume ---
  PV Name          /dev/sda2
  VG Name
  PV Size          36.27 GB
  Allocatable      NO
  PE Size (KByte)  0
  Total PE         0
  Free PE          0
  Allocated PE     0
  PV UUID          eFSYxh-7bZH-L0Q6-zrd5-KZDL-YgP1-Z92AAO

ボリュームグループ(VG)作成

物理ボリュームが作成できたらこれをボリュームグループ(VG:Volume Group)に追加する。

ここでは新たに「datavg」というボリュームグループを作成し、2つの物理ボリュームをそこに含める。

# vgcreate datavg /dev/sda1 /dev/sda2
  Volume group "datavg" successfully created

# vgdisplay -v datavg
    Using volume group(s) on command line
    Finding volume group "datavg"
  --- Volume group ---
  VG Name              datavg
  System ID
  Format               lvm2
  Metadata Areas       2
  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               2
  Act PV               2
  VG Size              38.17 GB
  PE Size              4.00 MB
  Total PE             9772
  Alloc PE / Size      0 / 0
  Free  PE / Size      9772 / 38.17 GB
  VG UUID              Z004bq-G1LS-625Q-AXYK-UywE-6DPr-52YEw6
 
  --- Physical volumes ---
  PV Name              /dev/sda1
  PV UUID              qzXdag-S3Kz-sw0W-Coog-FpY2-YWir-FcWLZJ
  PV Status            allocatable
  Total PE / Free PE   488 / 488
   
  PV Name              /dev/sda2
  PV UUID              eFSYxh-7bZH-L0Q6-zrd5-KZDL-YgP1-Z92AAO
  PV Status            allocatable
  Total PE / Free PE   9284 / 9284

論理ボリューム(LV)作成

ボリュームグループ作成後、実際にファイルシステムとしてマウントできる単位である論理ボリューム(LV:Logical Volume)を作成する。

ここでは1GBの「datalv」という論理ボリュームを作成する。

# lvcreate -L 1G -n datalv datavg
  Logical volume "datalv" created

# lvdisplay -C
  LV      VG     Attr   LSize Origin Snap%  Move Log Copy% 
  datalv  datavg -wi-a- 1.00G                              

# lvdisplay /dev/datavg/datalv 
  --- Logical volume ---
  LV Name             /dev/datavg/datalv
  VG Name             datavg
  LV UUID             B5ma9g-n23Z-3J1Q-d5iZ-he22-zZx4-aaSZuB
  LV Write Access     read/write
  LV Status           available
  # open              0
  LV Size             1.00 GB
  Current LE          256
  Segments            1
  Allocation          inherit
  Read ahead sectors  0
  Block device        253:0

ファイルシステム作成/マウント

最後にこの論理ボリュームに対してファイルシステムを作成し、任意のディレクトリにマウントする。

ファイルシステムの種類によって作成コマンドは異なるが、ここではext3を作成する。

# mkfs.ext3 /dev/datavg/datalv
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

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

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

# mount /dev/datavg/datalv /mnt

# cat /etc/mtab
:
/dev/mapper/datavg-datalv  /mnt  ext3  rw 0 0

# df /mnt
Filesystem                1K-blocks   Used Available Use% Mounted on
/dev/mapper/datavg-datalv   1032088  34092    945568   4% /mnt

以上で通常のファイルシステムと同じように使用できるようになった。

ここでボリュームグループの状態を見ると論理ボリュームの情報が追加されているのが確認できる。

# vgdisplay -v datavg
    Using volume group(s) on command line
    Finding volume group "datavg"
  --- Volume group ---
  VG Name               datavg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               38.17 GB
  PE Size               4.00 MB
  Total PE              9772
  Alloc PE / Size       256 / 1.00 GB ← 割当領域が増えている
  Free  PE / Size       9516 / 37.17 GB ← フリー領域が減っている
  VG UUID               Z004bq-G1LS-625Q-AXYK-UywE-6DPr-52YEw6
   
  --- Logical volume --- ← 論理ボリューム情報が追加されている
  LV Name               /dev/datavg/datalv
  VG Name               datavg
  LV UUID               B5ma9g-n23Z-3J1Q-d5iZ-he22-zZx4-aaSZuB
  LV Write Access       read/write
  LV Status             available
  # open                1
  LV Size               1.00 GB
  Current LE            256
  Segments              1
  Allocation            inherit
  Read ahead sectors    0
  Block device          253:0
   
  --- Physical volumes ---
  PV Name               /dev/sda1     
  PV UUID               qzXdag-S3Kz-sw0W-Coog-FpY2-YWir-FcWLZJ
  PV Status             allocatable
  Total PE / Free PE    488 / 488
   
  PV Name               /dev/sda2     
  PV UUID               eFSYxh-7bZH-L0Q6-zrd5-KZDL-YgP1-Z92AAO
  PV Status             allocatable
  Total PE / Free PE    9284 / 9028 ← フリー領域が減っている

ブート時にマウントを行いたい場合は/etc/fstabに以下のように記述する。

/dev/mapper/datavg-datalv  /mnt  ext3  defaults    0 0

関連資料・記事

2007/11/10更新

対応バージョン: 8

lspciコマンドを使用することによりPCIデバイスの詳細な情報が取得できる。

% lspci
00:00.0 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
00:00.1 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
00:00.2 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
00:00.3 Host bridge: VIA Technologies, Inc. PT890 Host Bridge
00:00.4 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
00:00.7 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge
00:0f.0 IDE interface: VIA Technologies, Inc. VT8251 AHCI/SATA 4-Port Controller
00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 07)
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 90)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8251 PCI to ISA Bridge
00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7c)
00:13.0 PCI bridge: VIA Technologies, Inc. VT8251 Host Bridge
00:13.1 PCI bridge: VIA Technologies, Inc. VT8251 PCI to PCI Bridge
01:00.0 VGA compatible controller: VIA Technologies, Inc. UniChrome Pro IGP (rev 01)
02:00.0 PCI bridge: VIA Technologies, Inc. VT8251 PCIE Root Port
02:00.1 PCI bridge: VIA Technologies, Inc. VT8251 PCIE Root Port

-vオプションを付けることにより、さらに詳細な情報が参照できる。

% lspci -v
00:00.0 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Subsystem: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Flags: bus master, medium devsel, latency 8
	Memory at fc000000 (32-bit, prefetchable) [size=32M]
	Capabilities: <access denied>
	Kernel driver in use: agpgart-via

00:00.1 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Subsystem: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Flags: bus master, medium devsel, latency 0

00:00.2 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Subsystem: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Flags: bus master, medium devsel, latency 0

00:00.3 Host bridge: VIA Technologies, Inc. PT890 Host Bridge
	Flags: bus master, medium devsel, latency 0

00:00.4 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Subsystem: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Flags: bus master, medium devsel, latency 0

00:00.7 Host bridge: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
	Flags: bus master, medium devsel, latency 0

00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge (prog-if 00 [Normal decode])
	Flags: bus master, 66MHz, medium devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	Memory behind bridge: f9e00000-fbefffff
	Prefetchable memory behind bridge: f1d00000-f9cfffff
	Capabilities: <access denied>

00:0f.0 IDE interface: VIA Technologies, Inc. VT8251 AHCI/SATA 4-Port Controller (prog-if 8f [Master SecP SecO PriP PriO])
	Subsystem: VIA Technologies, Inc. VT8251 AHCI/SATA 4-Port Controller
	Flags: bus master, medium devsel, latency 64, IRQ 221
	I/O ports at ec00 [size=8]
	I/O ports at e880 [size=4]
	I/O ports at e800 [size=8]
	I/O ports at e480 [size=4]
	I/O ports at e400 [size=16]
	Memory at fbfffc00 (32-bit, non-prefetchable) [size=1K]
	Capabilities: <access denied>
	Kernel driver in use: ahci
	Kernel modules: ahci

00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 07) (prog-if 8a [Master SecP PriP])
	Subsystem: VIA Technologies, Inc. VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE
	Flags: bus master, medium devsel, latency 32
	[virtual] Memory at 000001f0 (32-bit, non-prefetchable) [disabled] [size=8]
	[virtual] Memory at 000003f0 (type 3, non-prefetchable) [disabled] [size=1]
	[virtual] Memory at 00000170 (32-bit, non-prefetchable) [disabled] [size=8]
	[virtual] Memory at 00000370 (type 3, non-prefetchable) [disabled] [size=1]
	I/O ports at fc00 [size=16]
	Capabilities: <access denied>
	Kernel driver in use: pata_via
	Kernel modules: pata_via

00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90) (prog-if 00 [UHCI])
	Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
	Flags: bus master, medium devsel, latency 64, IRQ 17
	I/O ports at e080 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90) (prog-if 00 [UHCI])
	Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
	Flags: bus master, medium devsel, latency 64, IRQ 16
	I/O ports at e000 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90) (prog-if 00 [UHCI])
	Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
	Flags: bus master, medium devsel, latency 64, IRQ 18
	I/O ports at dc00 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90) (prog-if 00 [UHCI])
	Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
	Flags: bus master, medium devsel, latency 64, IRQ 19
	I/O ports at d880 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 90) (prog-if 20 [EHCI])
	Subsystem: VIA Technologies, Inc. USB 2.0
	Flags: bus master, medium devsel, latency 64, IRQ 16
	Memory at fbfff800 (32-bit, non-prefetchable) [size=256]
	Capabilities: <access denied>
	Kernel driver in use: ehci_hcd
	Kernel modules: ehci-hcd

00:11.0 ISA bridge: VIA Technologies, Inc. VT8251 PCI to ISA Bridge
	Subsystem: VIA Technologies, Inc. VT8251 PCI to ISA Bridge
	Flags: medium devsel
	Capabilities: <access denied>
	Kernel modules: i2c-viapro

00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
	Subsystem: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
	Flags: bus master, medium devsel, latency 128
	Capabilities: <access denied>

00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7c)
	Subsystem: ASUSTeK Computer Inc. Unknown device 80ed
	Flags: bus master, medium devsel, latency 64, IRQ 19
	I/O ports at d400 [size=256]
	Memory at fbfff400 (32-bit, non-prefetchable) [size=256]
	Capabilities: <access denied>
	Kernel driver in use: via-rhine
	Kernel modules: via-rhine

00:13.0 PCI bridge: VIA Technologies, Inc. VT8251 Host Bridge (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=02, subordinate=04, sec-latency=0

00:13.1 PCI bridge: VIA Technologies, Inc. VT8251 PCI to PCI Bridge (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=05, subordinate=05, sec-latency=0

01:00.0 VGA compatible controller: VIA Technologies, Inc. UniChrome Pro IGP (rev 01) (prog-if 00 [VGA controller])
	Subsystem: ASUSTeK Computer Inc. Unknown device 3344
	Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 20
	Memory at f4000000 (32-bit, prefetchable) [size=64M]
	Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
	Expansion ROM at fbef0000 [disabled] [size=64K]
	Capabilities: <access denied>

02:00.0 PCI bridge: VIA Technologies, Inc. VT8251 PCIE Root Port (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=02, secondary=03, subordinate=03, sec-latency=0
	Capabilities: <access denied>
	Kernel driver in use: pcieport-driver

02:00.1 PCI bridge: VIA Technologies, Inc. VT8251 PCIE Root Port (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=02, secondary=04, subordinate=04, sec-latency=0
	Capabilities: <access denied>
	Kernel driver in use: pcieport-driver

尚、PCIデバイスを含めハードウェア全般の情報についてはlshwコマンドにて取得できる(別途インストールが必要)。

関連資料・記事

2008/5/7更新

対応バージョン: B.02.12.01

lshwを使用することによりハードウェアの詳細な情報が取得できる。

オプションなしでハードウェア一覧がリストアップされる。

% sudo lshw
foo.bar.com
    description: Desktop Computer
    product: Prime Series
    vendor: ThirdWave Corporation
    version: System Version
    serial: System Serial Number
    width: 32 bits
:

この他-htmlオプション、-xmlオプションでそれぞれHTML、XML形式で情報が取得できる。

また、-shortオプションでクラス名を出力し、-classオプションにてクラス毎の情報が取得できる。

% sudo lshw -short
H/W path        Device     Class     Description
================================================
                           system    Prime Series
/0                         bus       P5V800-MX
/0/0                       memory    64KiB BIOS
/0/4                       processor Intel(R) Celeron(R) CPU 2.53GHz
/0/4/5                     memory    16KiB L1 cache
/0/4/6                     memory    256KiB L2 cache
/0/4/7                     memory    L3 cache
/0/25                      memory    512MiB System Memory
/0/25/0                    memory    512MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/25/1                    memory    DIMM [empty]
/0/100                     bridge    CN700/VN800/P4M800CE/Pro Host Bridge
/0/100/1                   bridge    VT8237 PCI Bridge
/0/100/1/0                 display   UniChrome Pro IGP
/0/100/f                   storage   VT8251 AHCI/SATA 4-Port Controller
/0/100/f.1      scsi0      storage   VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
/0/100/f.1/0    /dev/sda   disk      82GB HDS728080PLAT20
/0/100/f.1/0/1  /dev/sda1  volume    125MiB EXT3 volume
/0/100/f.1/0/2  /dev/sda2  volume    2047MiB Linux swap volume
/0/100/f.1/0/3  /dev/sda3  volume    74GiB EXT3 volume
/0/100/f.1/1    /dev/cdrom disk      DVDRAM GSA-H10N
/0/100/10                  bus       VT82xxxxx UHCI USB 1.1 Controller
/0/100/10/1     usb2       bus       UHCI Host Controller
/0/100/10.1                bus       VT82xxxxx UHCI USB 1.1 Controller
/0/100/10.1/1   usb3       bus       UHCI Host Controller
/0/100/10.1/1/1            generic   PS/2+USB Mouse
/0/100/10.1/1/2            generic   USB Keyboard
:

% sudo lshw -class processor
  *-cpu                   
       description: CPU
       product: Intel(R) Celeron(R) CPU 2.53GHz
       vendor: Intel Corp.
       physical id: 4
       bus info: cpu@0
       version: 15.4.9
       serial: 0000-0F49-0000-0000-0000-0000
       slot: LGA 775
       size: 2533MHz
       capacity: 2533MHz
       width: 64 bits
       clock: 133MHz
       capabilities: boot fpu fpu_exception wp vme de pse tsc msr pae
 mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr
 sse sse2 ss ht tm pbe nx x86-64 constant_tsc up pebs bts sync_rdtsc
 pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm
       configuration: id=0

2008/4/24更新

対応バージョン: 8

nscd(name service cache daemon)を使用することで最初の情報取得時のみLDAPサーバから検索を行い、以降はキャッシュされた値を使用して問い合わせのパフォーマンスを向上させることができる。

nscd設定

nscdの設定ファイルは/etc/nscd.confである。

基本的にデフォルトのままでよいが、必要に応じて適宜設定を変更する。

nscd有効化

# chkconfig --level 3 nscd on
# chkconfig --list nscd
nscd            0:off   1:off   2:off   3:on    4:off   5:off   6:off

nscd起動

# service nscd start

nscd効果測定

ある環境でnscdの有効/無効によってユーザ情報の検索にどの程度差が生まれるか調査した結果を記す。

調査には以下のようなスクリプト(test.sh)を用いた。

#!/bin/sh

cnt=1000

while [ $cnt -gt 0 ]; do
  id ldapuser > /dev/null
  cnt=`expr $cnt - 1`
done

nscd無効

% time ./test.sh

real    0m14.686s
user    0m1.743s
sys     0m2.518s

1000回のリクエストに15秒弱かかっている。

nscd有効

% time ./test.sh

real    0m1.676s
user    0m0.441s
sys     0m1.107s

nscdを有効にすると同じ1000回のリクエストが2秒弱で終了することが分かる。

2008/4/24更新

対応バージョン: 8

LDAPクライアントとしての設定を無効化するには以下の設定を行う。

設定

LDAP無効化

% sudo authconfig --disableldap --update

→ nss_ldapがdisableになる。

LDAP認証無効化

% sudo authconfig --disableldapauth --update

→ pam_ldapがdisableになる。

LDAPとTLSの併用を無効にする

% sudo authconfig --disableldaptls --update

→ LDAP+TLSがdisableになる。

確認

全ての設定内容は「authconfig --test」にて確認できる。以下は上記の設定を全て適用した場合の例である(LDAP関連設定のみ抜粋)。

% sudo authconfig --test
:
nss_ldap is disabled
 LDAP+TLS is disabled
:
pam_ldap is disabled
 LDAP+TLS is disabled
:

また、各設定ファイルのエントリからldapが削除される。

/etc/nsswitch.conf

(変更前)

passwd:  files ldap
shadow:  files ldap
group:   files ldap
:
netgroup:   files ldap
:
automount:  files ldap

(変更後)

passwd:  files
shadow:  files
group:   files
:
netgroup:   files
:
automount:  files

/etc/pam.d/system-auth-ac

(以下の行が削除される)

auth      sufficient  pam_ldap.so use_first_pass

account   [default=bad success=ok user_unknown=ignore] pam_ldap.so

password  sufficient  pam_ldap.so use_authtok

session   optional    pam_ldap.so

関連資料・記事

2008/4/24更新

対応バージョン: 8

FedoraをLDAPクライアントとして使用する、つまりログインデータベースとして通常の/etc/passwdなどに加えてLDAPサーバを使用する場合、以下の設定を行う。

設定

LDAP有効化

# authconfig --enableldap --update

→ nss_ldapがenableになる。

LDAP認証有効化

# authconfig --enableldapauth --update

→ pam_ldapがenableになる。

LDAPサーバ設定

# authconfig --ldapserver=<デフォルトのLDAPサーバ> --update

→ LDAP serverにLDAPサーバのURLがセットされる。

例)

# authconfig --ldapserver="ldap://127.0.0.1/" --update

LDAPベースDN設定

# authconfig --ldapbasedn=<デフォルトのLDAPベースDN> --update

→ LDAP base DNにLDAPのベースDNがセットされる。

例)

# authconfig --ldapbasedn="dc=example,dc=com" --update

LDAPとTLSの併用を有効にする

「Start TLS拡張機能」を有効にする場合は設定する。

# authconfig --enableldaptls --update

→ LDAP+TLSがenableになる。

確認

全ての設定内容は「authconfig --test」にて確認できる。以下は上記の設定を全て適用した場合の例である(LDAP関連設定のみ抜粋)。

# authconfig --test
:
nss_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "<LDAPサーバのURI>"
 LDAP base DN = "<LDAPベースDN>"
:
pam_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "<LDAPサーバのURI>"
 LDAP base DN = "<LDAPベースDN>"
:

また、各設定ファイルのエントリにldapが追加される。

/etc/nsswitch.conf

(変更前)

passwd:  files
shadow:  files
group:   files
:
netgroup:   nisplus
:
automount:  files nisplus

(変更後)

passwd:  files ldap
shadow:  files ldap
group:   files ldap
:
netgroup:   files ldap
:
automount:  files ldap

/etc/pam.d/system-auth-ac

(以下の行が追加される)

auth      sufficient  pam_ldap.so use_first_pass

account   [default=bad success=ok user_unknown=ignore] pam_ldap.so

password  sufficient  pam_ldap.so use_authtok

session   optional    pam_ldap.so

/etc/ldap.conf

(変更前)

:
#host 127.0.0.1
:
base dc=example,dc=com
:
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd
:

(変更後)

:
host <LDAPサーバ>
:
base <LDAPベースDN>
:
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon
:
uri <LDAPサーバのURI>
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
pam_password md5

/etc/openldap/ldap.conf

(以下の行が追加される)

URI <LDAPサーバのURI>
BASE <LDAPベースDN>
TLS_CACERTDIR /etc/openldap/cacerts

(*) 別途OpenLDAPをインストールした場合、ldap.confは/usr/local/etc/openldap配下のものを使用するので上記ファイルを同ディレクトリにコピーする必要がある。

関連資料・記事

2008/9/12更新

対応バージョン: 9

IPv6を無効にするには/etc/modprobe.confに以下の行を追加してシステムを再起動する。

install ipv6 /sbin/modprobe -n -i ipv6

IPv6を無効にするので関連するサービスも止めておくとよい。

% sudo chkconfig ip6tables off

2007/8/15更新

対応バージョン: 6

/etc/sysconfig/networkのFORWARD_IPV4をyesにし、ネットワークサービスを再起動する。

# service network restart

2006/7/12更新

対応バージョン: 6

まず必要なファイルをダウンロードし、以下の手順で導入する。

# sh grass5_i686-pc-linux-i18n-ipafull-gnu_install.sh \
grass5.0.3_i686-pc-linux-i18n-ipafull-gnu_bin.tar.gz \
/tmp/grass5 /tmp/bin

# mv /tmp/grass5/fonts/*.ttf /usr/share/fonts/japanese/TrueType/

# cd /usr/share/fonts/japanese/TrueType

# mv sazanami-gothic.ttf sazanami-gothic.ttf.org
# mv sazanami-mincho.ttf sazanami-mincho.ttf.org

# ln -s ipam.ttf sazanami-mincho.ttf
# ln -s ipag.ttf sazanami-gothic.ttf

# mkfontdir
# mkfontscale

# cd /etc/fonts/conf.d
# vi 25-no-hint-fedora.conf 40-generic-fedora.conf 64-nonlatin-fedora.conf

以下のフォント名を変更

Sazanami Mincho → IPAMincho
Sazanami Gothic → IPAGothic

参考までに、M+フォントとIPAフォントの合成およびデフォルト化の手順も紹介する。

前もって以下のサイトよりM+フォント(mplus-TESTFLIGHT-xxx.tar.gz)を入手しておくこと。

# yum install fontforge

# tar zxvf mplus-TESTFLIGHT-012.tar.gz

# cd mplus-TESTFLIGHT-012

# cp /usr/share/fonts/japanese/TrueType/ipag.ttf .

# fontforge -script m++ipa.pe

# mv M*IPAG.ttf /usr/share/fonts/japanese/TrueType

# cd /usr/share/fonts/japanese/TrueType

# mkfontdir
# mkfontscale

# cd /etc/fonts/conf.d

# vi 25-no-hint-fedora.conf 40-generic-fedora.conf 64-nonlatin-fedora.conf

以下のフォント名を変更
IPAGothic → M+2P+IPAG

2008/10/30更新

対応バージョン: 9

事象

NICが有効になっているにもかかわらず、Firefoxがオフラインモードで起動してしまう。

オンラインモードに変更していったんFirefoxを起動し直しても事象は変わらない。

分析

FirefoxはNICの動作状況をNetworkMangerに問い合わせているが、NetworkMangerがNICを管理する設定になっていない場合にこの事象が起こる。

対応としては以下の2通りの方法がある。

対応

NICをNetworkMangerで管理する場合 (*)

GNOMEメニューから「管理」>「ネットワーク」を選択してネットワーク設定画面を起動する。
設定したいNICを選択して「編集」をクリックし、「NetworkMangerで管理する」にチェックを入れる。
ネットワーク設定画面を閉じ、設定を保存する。
networkサービスを無効にする。
% sudo service network stop
% sudo chkconfig --del network
NetworkMangerを再起動する。
% sudo service NetworkManager restart

(*) NICに固定IPを割り振っている場合NetworkMangerがうまく動作せずDHCPクライアントとして振る舞おうとするので次の方法で対応する。

NICをNetworkMangerで管理しない場合

NetworkMangerサービスを無効にする。
% sudo service NetworkManager stop
% sudo chkconfig --del NetworkManager
networkサービスを有効にする。
% sudo chkconfig --level 2345 network on
% sudo chkconfig --add network
% sudo service network start

関連資料・記事

2008/3/2更新

対応バージョン: 8

fdiskはGPT(GUID Partition Table)をサポートしていないので、GPTのディスクを操作しようとすると問題が起こる可能性がある。

# fdisk /dev/sdb

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'!
The util fdisk doesn't support GPT. Use GNU Parted.

このような場合はGNU Partedを使用してディスクラベルを「msdos」に変更するとよい。

ただしこの操作によりパーティションテーブルを含めたディスク内の『全てのデータが削除される』ので、重要なデータはあらかじめバックアップを取っておくこと。

# parted /dev/sdb

(parted) mklabel

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

New disk label type?  [gpt]? ← msdos

(parted) q

この結果、fdiskでWARNINGが出なくなる。

2008/10/15更新

対応バージョン: 9

任意のサイズのファイルを新規に作成する場合、他のUNIX系OSで使用できるmkfileがないのでddを使用する。

例) 1GBのファイルを作成する場合

% dd if=/dev/zero of=test bs=1M count=1024

(*) ブロックサイズを1MBに設定して1024ブロック(1GB分)書き込む

関連資料・記事

2007/11/10更新

対応バージョン: 6,7,8

compat-libstdc++*パッケージをインストールする。

# yum install compat-libstdc++*

2007/11/10更新

対応バージョン: 6,7,8

目的に応じて以下の方法で設定する。

通常の環境変数

/etc/profileに定義する。

LD_LIBRARY_PATHの場合

/etc/ld.so.conf.d配下に任意の設定ファイル(拡張子.conf)を作成し、ldconfigを実行する。

例) /usr/local/libを追加する場合

# vi /etc/ld.so.conf.d/XXX.conf
/usr/local/lib

# /sbin/ldconfig

シェル環境(Bash)に対する環境変数

/etc/bashrcに定義する。

2007/10/10更新

対応バージョン: 6

これは認証サービスにLDAPサーバを使用している環境において、syslog(/etc/rc2.d/S12syslog)が起動する前にLDAPサーバが起動していないためにnss_ldapが同サーバにバインドできずにリトライを繰り返しているのが原因である。

例えば以下のようにしてsyslogよりもslapdが先に起動するようにすれば同事象は発生しなくなる。

# cd /etc/rc2.d
# ln -s ../init.d/slapd S11slapd

関連資料・記事

2008/6/6更新

対応バージョン: 9

Linuxのベンチマークを測定するには以下のようなツールを利用する。

姫野ベンチ

CPU

hdparm

HDD

HDBENCH clone

CPU/ビデオカード/HDD

Phoronix Test Suite

ハードウェア/ソフトウェアにわたる広範なベンチマーク測定

以下、導入が簡単なものから順にそれぞれ導入方法と使用方法を説明する。

姫野ベンチ

導入手順

以下からソースを入手する。

対応言語はFortranとC(static allocate/dynamic allocate)があり、問題サイズの指定(XL、L、M、S)はそれぞれ使用するメモリ量が異なるので必要に応じて選択する。

ここではC言語(static allocate)、サイズMを使用するものとし、以下の手順で導入する。

% 7z e cc_himenoBMTxp_m.lzh
% make
% sudo cp bmt /usr/local/bin

使用方法

bmtを起動する。

% bmt
mimax = 129 mjmax = 129 mkmax = 257
imax = 128 jmax = 128 kmax =256
 Start rehearsal measurement process.
 Measure the performance in 3 times.

 MFLOPS: 107.737056 time(s): 3.817771 1.733593e-03

 Now, start the actual measurement process.
 The loop will be excuted in 47 times
 This will take about one minute.
 Wait for a while

 Loop executed for 47 times
 Gosa : 1.505549e-03 
 MFLOPS measured : 423.242934	cpu : 15.225160
 Score based on Pentium III 600MHz : 5.161499

hdparm

導入手順

hdparmはFedora 9にはデフォルトでインストールされている。

使用方法

hdparmはベンチマークを測定する他にデバイスの状態を確認/制御したりデバイスへの各種設定を行うことができるが、ここではベンチマーク取得オプションを紹介する。

-T (キャッシュ読み込み)

ディスクアクセスなしにバッファキャッシュからデータを読み出す速度を測定する。

% sudo hdparm -T /dev/sda

/dev/sda:
 Timing cached reads: 774 MB in 2.00 seconds = 386.63 MB/sec
-t (デバイス読み込み)

バッファキャッシュを通してディスクから連続してデータを読み出すことができるかを測

定する。

% sudo hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 168 MB in 3.01 seconds = 55.82 MB/sec

HDBENCH clone

導入手順

以下からソースを入手する。

以下の手順で導入する。事前にgtk+-develをインストールしておく必要がある。

% tar zxvf hdbench-0.14.0.tar.gz
% cd hdbench-0.14.0
% ./configure
% make
% sudo make insatall

以下のファイルがインストールされる。

ツール本体

/usr/local/bin/hdbench

使用方法

hdbenchを起動し、計測したいものによって[CPU]、[VIDEO]、[DISK]の各ボタンを押す。[ALL]ボタンで全ての計測をまとめて実施できる。

Phoronix Test Suite

導入手順

以下からソースを入手する。

以下の手順で導入する。事前にphp-cliとwgetをインストールしておく必要がある。

% tar zxvf phoronix-test-suite-1.0.0.tar.gz
% cd phoronix-test-suite
% sudo ./install-sh

以下のファイルがインストールされる。

ツール本体

/usr/bin/phoronix-test-suite

関連ファイル

/usr/share/phoronix-test-suite配下

次にテストしたいパターンを入手する。

パターンには以下の2種類がある。

Suites

CPUやグラフィックカードなどデバイスに関するテストパターン

Tests

gzipやOpenSSL、SQLiteなどのソフトウェアに関するテストパターン

それぞれ利用可能なテストパターンを表示して必要なものをインストールして使用する。

% phoronix-test-suite list-suites
:
Do you agree to these terms and wish to proceed (Y/n)? ← y

====================================
Phoronix Test Suite - Suites
====================================

audio-encoding            - Audio Encoding                   [Type: System]
compilation               - Timed Code Compilation           [Type: Processor]
compression               - Timed File Compression           [Type: Processor]
computational-biology     - Computational Biology Test Suite [Type: Scientific]
cryptography              - Cryptography                     [Type: Processor]
gaming-closed             - Closed-Source Gaming             [Type: System]
gaming-free               - Free Software Gaming             [Type: System]
gaming                    - Gaming                           [Type: System]
gui-toolkits              - GUI Toolkits                     [Type: Graphics]
java                      - Java                             [Type: System]
molecular-dynamics        - Molecular Dynamics Test Suite    [Type: Processor]
multicore                 - Multi-Core                       [Type: Processor]
pcqs-desktop-graphics     - PCQS: Desktop Graphics           [Type: System]
pcqs-graphics             - PCQS: Graphics                   [Type: System]
pcqs-motherboard          - PCQS: Motherboard                [Type: Motherboard]
pcqs-server-motherboard   - PCQS: Server Motherboard         [Type: Motherboard]
pcqs-workstation-graphics - PCQS: Workstation Graphics       [Type: Graphics]
system-compliance         - System Compliance                [Type: System]
system-memory             - System Memory                    [Type: Memory]
universe-cli              - Universe CLI Test Suite          [Type: System]
universe-x                - Universe Test Suite              [Type: System]
universe                  - Universe Test Suite              [Type: System]
video-encoding            - Video Encoding                   [Type: System]

% phoronix-test-suite list-tests

====================================
Phoronix Test Suite - Tests
====================================

build-apache       - Timed Apache Compilation  [Status: VERIFIED, License: FREE]
build-imagemagick  - ImageMagick Compilation   [Status: VERIFIED, License: FREE]
build-linux-kernel - Timed Linux Kernel Compilation [Status: VERIFIED, License: FREE]
build-mplayer      - Timed MPlayer Compilation [Status: VERIFIED, License: FREE]
build-php          - Timed PHP Compilation     [Status: VERIFIED, License: FREE]
compliance-acpi    - Advanced Configuration and Power Interface [Status: VERIFIED, License: FREE]
compliance-ogl     - GLEW                      [Status: VERIFIED, License: FREE]
compliance-sensors - LM Sensors                [Status: VERIFIED, License: FREE]
compress-7zip      - 7-Zip Compression         [Status: VERIFIED, License: FREE]
compress-gzip      - Timed Gzip Compression    [Status: VERIFIED, License: FREE]
compress-lzma      - Timed LZMA Compression    [Status: VERIFIED, License: FREE]
compress-pbzip2    - Parallel BZIP2 Compression [Status: VERIFIED, License: FREE]
doom3              - Doom 3                    [Status: VERIFIED, License: NON-FREE]
encode-ape         - Monkey Audio Encoding     [Status: VERIFIED, License: FREE]
encode-flac        - FLAC Audio Encoding       [Status: VERIFIED, License: FREE]
encode-mp3         - LAME MP3 Encoding         [Status: VERIFIED, License: FREE]
encode-ogg         - Ogg Encoding              [Status: VERIFIED, License: FREE]
encode-wavpack     - WavPack Audio Encoding    [Status: VERIFIED, License: FREE]
espeak             - eSpeak Speech Engine      [Status: VERIFIED, License: FREE]
etqw-demo          - ET: Quake Wars Demo       [Status: VERIFIED, License: NON-FREE]
etqw               - ET: Quake Wars            [Status: VERIFIED, License: NON-FREE]
ffmpeg             - FFmpeg                    [Status: VERIFIED, License: FREE]
fgl-glxgears       - ATI fgl_glxgears          [Status: VERIFIED, License: RESTRICTED]
glmark             - GLMark                    [Status: VERIFIED, License: FREE]
gnupg              - GnuPG                     [Status: VERIFIED, License: FREE]
gtkperf            - GtkPerf                   [Status: VERIFIED, License: FREE]
hmmer              - Timed HMMer Search        [Status: VERIFIED, License: FREE]
iozone             - IOzone                    [Status: VERIFIED, License: FREE]
java-scimark2      - Java SciMark              [Status: VERIFIED, License: FREE]
mafft              - Timed MAFFT Alignment     [Status: VERIFIED, License: FREE]
md-gromacs         - GROMACS MD Benchmark      [Status: VERIFIED, License: FREE]
memory-bandwidth   - Bandwidth                 [Status: VERIFIED, License: FREE]
mencoder           - Mencoder                  [Status: VERIFIED, License: FREE]
mrbayes            - Timed MrBayes Analysis    [Status: VERIFIED, License: FREE]
nexuiz             - Nexuiz                    [Status: VERIFIED, License: FREE]
norsetto-shadow    - Norsetto Shadow           [Status: VERIFIED, License: FREE]
openarena          - OpenArena                 [Status: VERIFIED, License: FREE]
openssl            - OpenSSL                   [Status: VERIFIED, License: FREE]
pts-graph          - PTS Grapher               [Status: VERIFIED, License: FREE]
quake4             - Quake 4                   [Status: VERIFIED, License: NON-FREE]
ramspeed           - RAMspeed                  [Status: VERIFIED, License: FREE]
render-bench       - Render Bench              [Status: VERIFIED, License: FREE]
scimark2           - SciMark                   [Status: VERIFIED, License: FREE]
specviewperf10     - SPECViewPerf              [Status: VERIFIED, License: FREE]
specviewperf9      - SPECViewPerf              [Status: VERIFIED, License: FREE]
sqlite             - SQLite                    [Status: VERIFIED, License: FREE]
sunflow            - Sunflow Rendering System  [Status: VERIFIED, License: FREE]
super-pi           - Super PI                  [Status: VERIFIED, License: UNKNOWN]
tandem-xml         - Tandem XML                [Status: VERIFIED, License: FREE]
warsow             - Warsow                    [Status: VERIFIED, License: FREE]
x11perf            - x11perf                   [Status: VERIFIED, License: FREE]
xplane9            - X-Plane                   [Status: VERIFIED, License: FREE]
yafray             - YafRay                    [Status: VERIFIED, License: FREE]

この中でテストに使用したいパターンをインストールする。パターン毎にライセンスが異なるので注意すること。

ここではSuitesからcompilationとvideo-encoding、Testsからcompress-gzipとopensslをインストールする。

% phoronix-test-suite install compilation
% phoronix-test-suite install video-encoding
% phoronix-test-suite install compress-gzip
% phoronix-test-suite install openssl

各パターンは他のパターンに依存している場合が多いのでそれらも自動的にインストールされる。

上記4パターンをインストールした結果は以下のようになる。

% phoronix-test-suite list-installed-tests

=====================================
Phoronix Test Suite - Installed Tests
=====================================

build-apache       - Timed Apache Compilation      
build-imagemagick  - ImageMagick Compilation       
build-linux-kernel - Timed Linux Kernel Compilation
build-php          - Timed PHP Compilation         
compress-gzip      - Timed Gzip Compression        
ffmpeg             - FFmpeg                        
mencoder           - Mencoder                      
openssl            - OpenSSL                       

使用方法

runサブコマンドに続けてテストしたいパターンを指定する。

ここでは前述のvideo-encodingとopensslのベンチマークを測定してみる。

% phoronix-test-suite run video-encoding

Would you like to save these test results (Y/n)? ← 結果を保存するか?

====================================
Test Suite: video-encoding
====================================


====================================
Mencoder (Run 1 of 3)
====================================

Encoding Time: 159.37 Seconds

:
(同じテスト3回実施)
:

####################################
Mencoder:

159.37 Seconds
208.98 Seconds
196.98 Seconds

Average: 188.44 Seconds
####################################


====================================
FFmpeg (Run 1 of 3)
====================================

Encoding Time: 73.96 Seconds

:
(同じテスト3回実施)
:

####################################
FFmpeg:

73.96 Seconds
71.43 Seconds
65.74 Seconds

Average: 70.37 Seconds
####################################
% phoronix-test-suite run openssl

Would you like to save these test results (Y/n)? 

====================================
OpenSSL (Run 1 of 4)
====================================

+DTP:4096:private:rsa:10
+R1:60:4096:10.16
+DTP:4096:public:rsa:10
+R2:3099:4096:10.00
Forked child 0
Got: +F2:3:4096:0.169333:0.003227 from 0
OpenSSL 0.9.8g 19 Oct 2007
built on: Fri Jun  6 12:40:15 JST 2008
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial)
 idea(int) blowfish(idx) 
compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H
 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_PART_WORDS 
 -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: 
                  sign    verify    sign/s verify/s
rsa 4096 bits 0.169333s 0.003227s      5.9    309.9

:
(同じテストを4回実施)
:

####################################
OpenSSL:

5.9 Signs Per Second
5.6 Signs Per Second
5.4 Signs Per Second
5.9 Signs Per Second

Average: 5.70 Signs Per Second
####################################

この他にもテストパターンのアンインストールやベンチマーク結果の削除/再表示、システム情報の表示など様々な操作が可能である。

詳しくは引数なしでphoronix-test-suiteを実行すると利用可能な操作の一覧が表示される。

2008/8/29更新

対応バージョン: 9

avahi-tools同梱のコマンドの使用方法を説明する。avahi-browseについては以下を参照のこと。

関連資料・記事

avahi-browse-domains

ローカルネットワークの他に検索する外部ドメインをリストアップする。

% avahi-browse-domains -t
+  n/a  n/a zeroconf.org
+  n/a  n/a 0pointer.de

この設定は/etc/avahi/avahi-daemon.confの以下のパラメータで変更できる。

:
[server]
:
browse-domains=0pointer.de, zeroconf.org
:

avahi-discover

利用可能なサービスをリストアップするavahi-browseのGUI版。

ローカルネットワークの他に「Wide Area」として外部のドメインも検索する。この例では以下のドメインが検索されている。

0pointer.de
zeroconf.org

外部のドメインを検索したくない場合は/etc/avahi/avahi-daemon.confの以下のパラメータをnoにすればよい。

:
[wide-area]
enable-wide-area=yes
:

avahi-publish

一時的にサービスやホスト/IPアドレスのマッピングを定義して利用可能にする。

サービス定義(-sオプション)
avahi-publish -s <サービス名> <サービスタイプ> <サービス提供ポート> [<付加情報>]

例) SSHサービス

% avahi-publish -s sshserv _ssh._tcp 2022 "test ssh service"
Established under name 'sshserv'

% avahi-browse -r _ssh._tcp -t
+ eth0 IPv4 sshserv               SSH Remote Terminal  local
= eth0 IPv4 sshserv               SSH Remote Terminal  local
   hostname = [fedora.local]
   address = [192.168.0.1]
   port = [2022]
   txt = ["test ssh service"]
ホスト/IPアドレスのマッピング(-aオプション)
avahi-publish -a <ホスト名> <IPアドレス>

例)

% avahi-publish-address myhost.local 192.168.0.123
Established under name 'myhost.local'

avahi-publish-address

「avahi-publish -a」と同義。

avahi-publish-service

「avahi-publish -s」と同義。

avahi-resolve

IPアドレスからホスト名を得る、またはその逆を行う。

IPアドレス -> ホスト名(-aオプション)
avahi-resolve -a <IPアドレス>

例)

% avahi-resolve -a 192.168.0.1
192.168.0.1	fedora.local
ホスト名 -> IPアドレス(-nオプション)
avahi-resolve -n <ホスト名> [-4|-6]

例)

% avahi-resolve -n fedora.local -4 (IPv4)
fedora.local	192.168.0.1

% avahi-resolve -n fedora.local -6 (IPv6)
fedora.local	fe80::217:31ff:fe4f:9c7f

avahi-resolve-address

「avahi-resolve -a」と同義。

avahi-resolve-host-name

「avahi-resolve -n」と同義。

avahi-set-host-name

現在動作しているAvahiデーモン(avahi-daemon)に対してmDNS(Multicast DNS)ホストを設定する。

avahi-set-host-name <ホスト>

2008/8/28更新

対応バージョン: 9

Avahiで利用可能なサービスをリストアップするにはavahi-browseを使用する。

同コマンドは「avahi-tools」パッケージに同梱されているのでまずインストールする。

% sudo yum install avahi-tools

「avahi-tools」パッケージには以下のツールが含まれるが、ここではavahi-browseのみ説明する。

avahi-browse
avahi-browse-domains
avahi-discover
avahi-publish
avahi-publish-address
avahi-publish-service
avahi-resolve
avahi-resolve-address
avahi-resolve-host-name
avahi-set-host-name

関連資料・記事

全サービスリストアップ

全てのサービスをリストアップする場合は「-a」オプション付でavahi-browseを実行する。

% avahi-browse -a -t
+ eth0 IPv4 8CC06DD4D03779B0     _touch-able._tcp     local
+ eth0 IPv4 host_a               SSH Remote Terminal  local
+ eth0 IPv4 host_b               Web Site             local

この例では最初の行でiTunesのプレイリスト共有が、次の2行でhost_aとhost_bの2つのホストのリモートサービスがそれぞれリストアップされている。

-tオプションは一度リストアップした後にコマンドを終了させる指定で、これを付けないとサービスの有効/無効を常時監視するモードになる。

特定サービス詳細出力

特定のサービスについて詳細を出力したい場合は「-r <サービス>」オプション付でavahi-browseを実行する。

例えばWebサービス(Webサーバ)についての詳細を出力したい場合は以下のようにする。

% avahi-browse -r _http._tcp -t
+ eth0 IPv4 host_b               Web Site             local
= eth0 IPv4 host_b               Web Site             local
   hostname = [host_b.local]
   address = [192.168.0.1]
   port = [80]
   txt = []

関連資料・記事

うまく動作しない場合の対処方法

avahi-browseの結果が返ってこない

% avahi-browse -a
(結果が返ってこない)

avahi-browseはローカルで利用可能なサービスを取得するために224.0.0.251にmDNS(Multicast DNS)クエリを投げるが、宛先ポートが5353/udpなのでこれをファイアウォール等でブロックしていると結果が返ってこない。

ちなみに-aオプションを付けた場合は以下のクエリが発行される。

_services._dns-sd._udp.local

avahi-browseがエラーになる

% avahi-browse -a
Failed to create client object: Daemon not running

Avahiのデーモン(avahi-daemon)が起動していないので起動する。

(Fedoraの場合)

% sudo service avahi-daemon start

2008/8/27更新

対応バージョン: 9

FedoraでZeroconf(Zero Configuration Networking)を利用するにはAvahiを使用する。Appleでの実装はBonjourである。

まずZeroconfで必要な要素とAvahiにおける実装の対応を示す。

Addressing

AutoIP(*)によってIPアドレスの付与を行う仕組み。

(*) MicrosoftではAPIPA(Automatic Private IP Addressing)と呼ぶ。

Naming

mDNS(Multicast DNS)によってサービスの名前割当を行う仕組み。

名前は以下のような命名規約によって割り当てられる。

<ホスト名>.<サービス名>.<プロトコル名>.<ドメイン名>

(*) サービス名とプロトコル名は先頭が「_」で始まる。

(*) サービス名にはIANAが管理しているWELL KNOWN PORT NUMBERSが使われる(http、sshなど)。

(*) ドメイン名は特に指定しなければデフォルトで「local」が使われる。

例) ネットワークプリンタの場合

prt01._ipp._tcp.local

avahiではavahi-daemonがこの機能を提供する。

Browsing

DNS-SD(DNS Service Discovery)によってネットワーク上のサービスを検出する仕組み。

avahiではavahi-dnsconfdがこの機能を提供する。

サービス追加

avahiで新たにサービスを追加するには/etc/avahi/services配下に「<サービス名>.service」というファイルを作成して設定をXMLで記述する。

例えばWebサーバをサービスとして追加する場合、記述内容は以下のようになる。

% hostname
fedora

% sudo vi /etc/avahi/services/http.service

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_http._tcp</type>
    <port>80</port>
  </service>
</service-group>

以下、必要最低限のタグについて説明する。それ以外はavahi.serviceのmanを参照のこと。

service-group

サービスの定義

一つの要素と一つ以上の要素を持つ必要がある。

name replace-wildcards="yes|no"

ネットワーク上に通知されるサービス名

replace-wildcards属性が"yes"の場合、値に"%h"と記述しておくと自ホスト名に置換される。デフォルトは"no"。

service protocol="ipv4|ipv6|any"

サービスの詳細定義

protocol属性によってサポートするネットワークプロトコルを指定する。デフォルトは"any"(IPv4とIPv6双方をサポート)。

type

サービスタイプ

サービス名とサービスプロトコル名を一緒に定義する(例:_http._tcp)。

port

サービス提供ポート

このファイルを作成し終わると自動的にネットワーク上にサービスの通知が行われ(*)、例えばMac OS X上のSafariでブックマークバーのBonjourメニューにWebサーバが表示される。

尚、SafariのブックマークバーにBonjourメニューを表示するにはあらかじめ環境設定で以下のように指定しておく必要がある。

(*) サービスの自動通知が行われるためにはあらかじめavahi-daemonが起動している必要がある。Fedoraではデフォルトで起動する設定になっている。

% chkconfig --list avahi-daemon
avahi-daemon  0:off  1:off  2:off  3:on  4:on  5:on  6:off

% ps ax|grep avahi
 2282 ?  Ss  0:00 avahi-daemon: running [fedora.local]
 2283 ?  Ss  0:00 avahi-daemon: chroot helper

関連資料・記事

2009/1/1更新

対応バージョン: 10

autofsでダイレクトマップを使う手順を示す。

ここでは/dev/sdb1(ext3)を/fooにオートマウントするものとする。

autofs停止

% sudo service autofs stop

マスターマップ設定ファイル編集

マスターマップの設定ファイルにダイレクトマップの設定を追加する。

% sudo vi /etc/auto.master
/-      /etc/auto.direct

ダイレクトマップ設定ファイル編集

マウントポイント、オプション、対象デバイスをそれぞれ指定する。

% sudo vi /etc/auto.direct
/foo    -fstype=ext3    :/dev/sdb1

マウントポイント作成

% sudo mkdir /foo

autofs起動

% sudo service autofs start

マウント試験

ダイレクトマップ対象マウントポイントにアクセスすると指定したデバイスがオートマウントされる。

% ls /foo
:

% mount
:
/dev/sdb1 on /foo type ext3 (rw)

関連資料・記事