本稿ではLinux認定試験のLPICで必要とされる知識のうち見直すべきポイントをまとめます。
キャパシティプランニング
topコマンド一行目の右端3つの数字は何を表すか
過去1分・5分・15分のCPU平均負荷。この数値がCPUのコア数を上回っているかどうかが一つの判断軸。
topコマンド三行目のsy/hi/si/stを説明せよ
- sy(system):カーネルがCPUを利用している時間の割合
- hi(hardware interrupt request):ハードウェアの割り込み要求時間の割合
- si(software interrupt request):ソフトウェアの割り込み要求時間の割合
- st(steal):仮想環境においてゲストOSがCPUを割り当てられなかった時間の割合
バッファとスワップの違いを説明せよ
- バッファ:ディスクI/Oを高速化するために利用される一時的なメモリ領域
- スワップ:ディスク上に作成
バッファとキャッシュの違いを説明せよ
- バッファ:主に書き込みを最適化する
- キャッシュ:主に読み込みを最適化する
vmstatで表示されるr/bを説明せよ
- r(runnable processes):実行可能なプロセス数
- b(blocked processes):I/O待ちでブロックされているプロセス数
vmstatで表示されるsi/so/bi/boを説明せよ
- si:ディスクから「swap in」されているメモリサイズ [KB/s]
- so:ディスクに「swap out」しているメモリサイズ [KB/s]
- bi:ブロックデバイスから「受け取った」ブロック数 [ブロック/s]
- bo:ブロックデバイスに「送られた」ブロック数 [ブロック/s]
vmstatはVirtual Memory Statisticsなので主体はあくまでもメモリで,メモリからのin/outを考えます。
sysstatパッケージの代表的な構成を説明せよ
- sadc(System Activity Data Collector):システム状況を収集
- sar(System Activity Reporter):収集データを表示
sarコマンドでディスクの入出力情報を表示する
sar -b -f /var/log/sa10
block deviceで覚えましょう。
sarコマンドでネットワークインタフェース情報を表示する
sar -n DEV -f /var/log/sa10
networkで覚えましょう。
sarコマンドでメモリ関連情報を表示する
sar -r -f /var/log/sa10
ramで覚えましょう。
sarコマンドでCPU関連情報を表示する
sar -u -f /var/log/sa10
usageで覚えましょう。usageはmemory usageとしても使える語ですが,メモリにはramがあると先におさえてしまうとよいでしょう。
sadfコマンドとは何か
System Activity Data Formatの略称と考えられ,sarコマンドで収集したデータを各種フォーマットで表示するツールのことを指す
Netperfでサーバー側がListenするためのコマンド
netserver
Netperfでクライアント側がサーバ側に接続するためのコマンド
netperf -H {IPアドレス}
NetperfとIptrafの違いを説明せよ
- Netperf:クライアント・サーバモデルでネットワーク性能を測定する
- Iptraf:インタフェースのトラフィックを解析する
システム監視のツールを列挙せよ
- collectd:軽量なデータ収集ツール
- Nagios:通知機能が強力な死活監視
- Icinga2:Web UIを備えたNagiosの改良版
- MRTG:SNMPベースのシンプルなネットワークトラフィック監視
- Cacti:Web UIを備えたMRTG の進化版
現在使用中のスワップサイズを調べる方法
- swapon -s
- cat /proc/swaps
カーネルの構成要素
カーネルのバージョンを表示するコマンド
- uname -r
- cat /proc/version
カーネルモジュールの操作コマンドのうちmodXXのようにmodがprefixとなるものを挙げよ
- modprobe
- modinfo
lsmodと等価な操作
cat /proc/modules
modprobeコマンドが参照するmoduleの依存関係を記述するファイルおよびそれを作成するコマンド
- /lib/modules/{カーネルバージョン}/modules.dep
- depmod
カーネルの再構築時ではカーネルのコンパイルとモジュールのコンパイルはどちらが先か
カーネルのコンパイル
モジュールはカーネルのバージョンに依存すると理解しましょう。一方,下で説明する通りinstallはモジュールの次にカーネルという順番になります。
現在のカーネルの.configを新しい設定に反映する
cp /path/to/old/kernel/.config /path/to/new/kernel/
cd /path/to/new/kernel/
make oldconfig
# カーネルとモジュールのコンパイル
make
# モジュールのインストール
make modules_install
make install
DKMSを説明せよ
カーネルのアップグレード後でもモジュールが問題なく動作し続けるように,モジュールの自動ビルドと管理を行うツール
/proc/sys/net/ipv4/ip_forwardのカーネルパラメータを1に設定せよ
sysctl -w net,ipv4.ip_forward=1
この設定は再起動によりリセットされます。
再起動後もカーネルパラメータを書き換えておくためのファイル
/etc/sysctl.conf
初期RAMディスクを作成するコマンドを列挙せよ
- mkinitrd(Make Initial RAM Disk)
- mkinitramfs(Make Initial RAM FileSystem)
- dracut(DRive Initramfs Creation Utility)
sysfsをもとにシステムが認識しているデバイス情報を出力するコマンド
udevadm info -q {表示する情報} -n /dev/sda1
{表示する情報}にはpathやenvなどを指定できます。allも指定できます。
udevを監視するコマンド
udevadm monitor
システムの起動プロセス
Redhat系でサービスの自動起動・自動停止を設定するコマンド
chkconfig --level 235 httpd on
Debian系でサービスの自動起動・自動停止を設定するコマンド
update-rc.d httpd start 20 2 3 5 .
ランレベルを指定した場合は優先度の指定は必須です。
SUSE系でサービスの自動起動・自動停止を設定するコマンド
insserv
systemctl enableとsystemctl disableで操作の対象となるファイルを述べよ
- systemctl enable:/usr/lib/systemd/systemのデフォルトの設定でシンボリックリンクを作成する
- systemctl disable:/etc/systemd/systemのカスタマイズされた設定でシンボリックリンクを削除する
/usrはインストールされたソフトウェアの「デフォルト設定」を持っている場所で,/etcはシステム管理者が行うカスタマイズや設定を格納する場所です。/usr/libは/libとなる場合もあります。
journalctlを永続化する場合の設定
/etc/systemd/journald.confにStorage=persistentを記述してsystemctl restart systemd-journaldを実行
GRUB Legacyの設定ファイル
/boot/grub/menu.list
GRUB2の設定ファイル
/etc/default/grubを編集してgrub-mkconfigコマンドを実行することで下記を生成する。
- /boot/grub/grub.cfg
- /boot/efi/EFI/{id}/grub.cfg
GRUBにおけるパーティションの識別方法を述べよ
- /boot/grub/device.mapに(hd0) /dev/sdaという対応を定義
- /dev/sda1という最初のパーティションは(hd0,0)となる
sda1は1始まり,hd(0,0)は0始まりである点に注意してください。
GRUB2におけるパーティションの識別方法を述べよ
- /dev/sda1という最初のパーティションは(hd0,1)となる
GRUB2ではdevice.mapは使われず自動で構成される点に注意してください。
PXEを一言で説明せよ
DHCPとTFTPによりネットワーク経由でブートを行う方式のこと
高度なストレージ管理
RAIDアレイの作成を行う
mdadm -C /dev/md0 --level 1 --raid-devices 2 --spare-devices 1 /dev/sdc5 /dev/sdc6 /dev/sdc7
作成は大文字の-Cであること,およびmdadmはMultiple Devices Administratorの略称であることをおさえましょう。
RAIDアレイの状態を確認する
cat /proc/mdstat
RAIDアレイを構成するディスクの一つに不良マークを付けるオプション
-f
論理ボリュームのアクセス先
/dev/{ボリュームグループ名}/{論理ボリューム名}
論理ボリュームのマッピング先
/dev/mapper/{ボリュームグループ名}-{論理ボリューム名}
df -TのTは何を意味するか
typeのこと。ext4やxfsなどのファイルシステムの種類まで表示してくれるようになる。
LVMを用いたバックアップの作成方法
# 論理ボリュームの作成コマンドのオプションで-sを指定して断面を取得
lvcreate -s -n snap0 /dev/samplevg/lv01
# dumpしてバックアップの作成 (0はフルバックアップ、uはバックアップ履歴の保存、fはバックアップ先の指定)
dump 0uf /dev/st0 /dev/samplevg/snap0
lvcreate -sで作られる断面は単なる断面ではなく同期を続けてくれる特殊な断面です。
ハードディスクのパラメータを確認する
- IDEハードディスク:hdparam /dev/hda
- SCSI:sdparam /dev/sda(こちらが主流)
sdparamはディスクの回転を止めることもできます。
SSDの寿命を縮めないためのマウント時の策
noatimeオプションを指定する
noatimeオプションとはファイルへのアクセス時にアクセス時刻(atime)を更新しないようにする設定で,書き込み回数の上限があるSSDに対して効果的です。
iSCSIイニシエータ経由でiSCSIターゲットの情報を確認するコマンド
iscsiadm
ファイルシステムの操作
UUIDの確認方法
- blkid
- ls- l /dev/disk/by-uuid/
再マウントのオプション
mount -o remount /data
アクティブなスワップ領域の表示
- swanon -s
- cat /proc/swaps
CD-ROMの標準フォーマットおよびそのファイルシステムを作成するコマンド
- ISO9660
- mkisofs -o -R /tmp/etc.iso /etc
-RはLinuxに近い形でイメージを作成するためのオプションです。
ISOファイルのマウント
mount -o loop /tmp/etc.iso /mnt/cdrom
-o loopは仮想的に作った/etcのディスクイメージをディスクとして扱うためのオプションです。
スーパーブロックの内容を表示するコマンド
dumpe2fs /dev/sdb2
ルートファイルシステムのチェックを行う方法
shutdown -F -r now
fsckでバックアップを行うコマンド
fsck -b {ブロック番号} /dev/sdb2
xfs_repairの-nオプション
チェックだけ行って修正は行わない
XFSのバックアップのセッションIDを確認する
xfsrestore -I
ext4をbtrfsに変換するコマンド
btrfs-convert /dev/sdc1
オートマウントの全般的な設定を行うファイルとその例を記述せよ
/etc/auto.masterファイル
# {マウントベース} {マップファイル}
/mnt/auto /etc/auto.dvdrom
オートマウントの具体を設定するファイルとその例を記述せよ
/etc/auto.{作成するディレクトリ名}であり,上記例でいうと/etc/auto.dvdromとなる
# {マウントベースの下に作成するディレクトリ} {マウントオプション} {デバイスファイル名}
dvdrom -fstype=udf,no :dev/sr0
これらの設定により「/mnt/auto/dvdromが必要になったタイミングでディレクトリが自動作成されて/dev/sr0が自動的にマウントされると同時に,デフォルトで約5分間アクセスがなければアンマウントしてくれる」という挙動になります。
オートマウントの設定を記述するファイルを変更した場合の扱いを述べよ
- /etc/auto.master:autofsサービスの再起動が必要
- /etc/auto.{作成するディレクトリ名}:autofsサービスの再起動は不要
ネットワーク
arpキャッシュに手動で追加する方法
arp -s example.com 00:01:02:03:04:05
指定したインタフェースを監視するコマンド
tcpdump
UNIXドメインソケットとは
localhost内のプロセス間通信。TCP/IPのような通信ではなく,ファイルシステム上のパスを使ってソケットを識別し,カーネル内部で通信を処理する。
ポートスキャンを行う方法
- TCP:nc -vz 192.168.1.10 1-1000
- UDP:nc -vzu 192.168.1.10 1-1000
vはverbose,zはzero I/O modeを指していて,zはポートスキャンモードを表していると理解しましょう。
iwconfigとiwの違い
iwの方が新しく,デバイス名を指定する前にdevを入れる。
iwconfig wlp1s0
is dev wlp1s0 link
/etc/hostsと/etc/networksの違い
- /etc/hosts:{IPアドレス} {ホスト名}の順番
- /etc/networks:{ホスト名} {IPアドレス}の順番
リッチな経路確認コマンド
mtr
システムメンテナンス
/dev/st0にバックアップされた/varの中から/var/log/secureを抽出する
tar xvf /dev/st0 var/log/secure
相対パスを指定するためvarには/が不要である点に注意してください。
/dev/st0と/dev/nst0の違いを説明せよ
- /dev/st0:自動でテープの巻き戻しする
- /dev/nst0:自動でタープの巻き戻しはしない
stはSCSI Tape,nはnon-rewindingと覚えましょう。
問題演習で引っかかったポイント
freeコマンドでスワップの使用率は確認できるか
できる
vmstatは搭載されている物理メモリの総用量を確認できるか
できない
psコマンドで全てのプロセスのCPU利用率やメモリ利用率を表示させる
ps aux
同等のコマンドにps -dfがあると思いきや,-dfではCPU利用率やメモリ利用率は表示されません。-oでpidや%cpuを抽出しないといけず面倒なので,おそらく試験で狙われやすいのはハイフン無しのps auxでしょう。
xz -dcを説明せよ
- -d:解凍する
- -c:標準出力へ
「現在稼働中のカーネルのバージョンは/usr/src/linux/Makefileで確認できる」は正しいか
正しくない。そのMakefileを使ってコンパイルされたカーネルが現在稼働しているとは限らないため。
make cleanで.configは削除されるか
削除されない。make mrproperを利用する。
mrは意味がなさそうですが,こじつけで「make make really proper」と覚えてしいましょう。
「初期RAMディスクは/boot以下に配置される」は正しいか
正しい
GRUBのバージョンはいくつまでがLegacyでいくつからがGRUB2になるか
- 〜0.97:GRUB Legacy
- 1.9〜:GRUB2
menu.listのrootパラメータには何を指定するか
カーネルイメージが格納されているパーティション。GRUB Legacyであればhd(0,0)でGRUB2であればhd(0,1)
PXEブートにSYSLINUXサーバは必要か
必要ない。ディストリビューションを配布するNFSサーバとPXEサーバが必要。
/etc/fstabでデフォルトのオプションを設定する指定方法
defaults
複数形であることに十分注意してください。
/etc/fstabの2列目にswapと書かれている設定は正しいか
正しい。swapの場合はディレクトリみたいに/から始めずにswapと指定することで「swap領域として利用されている」ということを明示する。
btrfsファイルシステムの使用状況を確認する
btrfs filesystem df /mnt
読み取り専用でマウントする
mount -o ro
vgcreateの-sオプション
エクステントのサイズ。スナップショットではないため注意する。
転送のエラーや取りこぼしを表示
netstat -i
カーネルの設定が保存されるファイル
/usr/src/linux/.config
.configureでない点に注意してください。
mkoldconfigとmake oldconfigはどちらが正しいか
make oldconfig
コンパイル後にカーネルモジュールを適切なディレクトリに配置する
make modules_install
modules.depの更新
depmod
PCIデバイスの1番目(=0番)のバス・8番のスロットに関する情報を確認する
lspci -vv -s 0:8
カーネルパラメータの更新を行うコマンド
sysctl
postfix.serviceを自動起動させる
systemctl enable postfix.service
/etc/fstabでproc /proc proc defaults 0 0という設定は正しい書式か
正しい。仮想ファイルシステムを作成する場合はこのような指定になる。
iw wlan0 essid lpicは正しいか
正しくない。以下のいずれかが正しい。
- iwconfig wlan0 essid lpic
- iw dev wlan0 connect lpic
hosts.denyをすり抜ける原因を二つ述べよ
- 通信元がrcpwrapperをサポートしていないプログラムであること
- hosts.allowで許可されていること
ipコマンドでIPv6アドレスのインタフェースをeth0に追加する
ip -6 addr add 2001:db8::1/64 dev eth0
ipコマンドはipconfig/route/arpをあわせたような機能をもつため,ipの後にlink/addr/route/neghborのような操作対象を明示して使います。
ルートファイルシステムのマウントとカーネルモジュールのロードはどちらが先か
カーネルモジュールのロード
vgcreateとlvcreateはどちらが先か
vgcreate
論理ボリュームはボリュームグループ内に作られます。
リモートのファイルサーバのI/O情報を取得するコマンド
- cifsiostat
- nfsiostat
- nfsstat
CIFSは主にWindows環境でのファイル共有を実現するためのプロトコルです。cifsstatが存在しない点に十分注意してください。
「udevadm monitorで新しいデバイスが接続されたことを検知できる」は正しいか
正しくない。udevルールの生成やイベントの表示ができる。
SSDで使用されていない領域を破棄するコマンド
fstrim
trimfsではない点に注意してください。
sysstatでcronにより定期実行されるプログラムを説明せよ
- sa1:サーバーの情報を収集して「saXX」ファイルを出力する(XXは日付)
- sa2:sarコマンドを実行することによりsa1の出力saXXを1日の結果としてsarXXファイルにまとめる
Linuxのモジュールのソースコードは本体に同梱されているか
同梱されている
fstabファイルの設定内で特定のユーザに書き込み権限を与えるオプション
uid
UEFIの設定を操作するコマンド
efibootmgr
スワップ領域を追加する際にmkswap/swapon以外にコマンドは利用するか
ddを利用して追加する領域分のファイルを確保する
sarでメモリの使用率は表示できるか
できる
/dev/nst0に対しtarコマンドを2回連続で実行した際の挙動
次のファイルが読み出され,すでにあるファイルは上書きされ,ないファイルは新しく保存される
Linux Unified Key Setupの情報を表示するコマンドはluksInfoとluksDumpではどちらが正しいか
luksDump
「CPUがidleなときはユーザの入力待ちである可能性が高い」は正しいか
正しくない。ユーザの入力待ちの場合はidleにならないらしい。
make modules_installとmake install_modulesのどちらが正しいか
make modules_install
特定のプロセスが使用しているファイルやネットワークコネクションを表示できるコマンド
lsof
topでI/O情報は確認できるか
できない。だからiotopがある。
リアルタイムでトラフィックを監視する軽量ツール
iptraf
systemdのユニットファイルに関する変更を確認するコマンド
systemd-delta
syslinuxとextlinuxの違い
- syslinux:FATファイルシステム・USB・CD/DVDなどに対応した軽量なブートローダ
- extlinux:ext系のファイルシステムで利用されるブートローダ
RAIDを自動検出するためのパーティションタイプコード
0xFD
SSDの性能を最大限に引き出すための新しいインターフェース,もしくはプロトコル
NVMe
Non-Volatile Memory Expressの略称です。
SCSIにおける識別子
WWID
iSCSIにおける識別子
WWN
192.168.1.1のHTTP(S)をポートスキャンする
nmap -p 80,443 192.168.1.1
テープを操作するコマンド
mt
magnetic tape(磁気テープ)と覚えましょう。
カーネルコンフィグレーションの手順
- make mrproper
- make menuconfig
- make
- make modules_install
- make install
コマンドのソースをダウンロードしてmakeする前にMakefileを作る際は./configureを叩きます。
DKMSの説明として「必要なタイミングでモジュールをロードするツール」は正しいか
正しくない。ロードではなくビルドとインストール。
patchでカーネルにパッチは当てられるか
当てられない。patch-kernelを利用する。
「/etc/sysctlはカーネル起動時にmakeコマンドにより参照されるファイルである」は正しいか
正しくない。initプロセスの中で参照されて起動中のカーネルパラメータを変更する。
initramfsのメリット
「ファイルシステムではない」ので「ドライバが必要ない」ことや「メモリ効率がよい」こと
Wi-Fiインタフェースの信号レベルを出力するコマンド
iw phy (phy0 info)
iw devでは信号レベルは出力されません。
ルーティングの設定におけるgwとviaの使い分け
- gw:主にrouteコマンドで使われる
- via:主にip routeコマンドで使われる
tracerouteでデフォルトで使われるプロトコル
UDP(ICMPを使う場合は-lを指定する)
非ルートユーザが./comfigureでインストール先を指定するオプション
--prefix
覚えるべきディレクトリ・ファイル
sadcによるログ
/var/log/saXX
sa10など,XXには日付が入ります。
freeコマンド以上に詳細なメモリの情報が格納されている
/proc/meminfo
カーネルソースの格納場所
/usr/source/linux
/proc以下のPCI関連のディレクトリ
/proc/bus/pci
/proc以下のUSB関連のディレクトリ
/proc/bus/usb
カーネルが認識しているデバイス
/proc/devices
複数形であることに注意してください。
カーネルの設定ファイル
/boot/config-<kernel_version>
UEFIでブートローダから呼び出されるファイル名
shim.efi
カーネルソースのドキュメントが置かれているディレクトリ
/usr/src/linux/Documentation
Documentでない点に注意してください。
コメント