---------------キャパシティプランニング
Tips
CPU(ALL) : top, vmstat, iostat, mpstat
CPU(PID) : top, ps -u
CPU(Load): top, uptime, w
MEM(ALL) : top, free, vmstat, sar -r
MEM(PID) : top, ps -u
SWAP(USE): top, free, vmstat, sar-S, swapon -s
SWAP(IO) : vmstat
DISK(IO) : iostat, iotop, vmstat, sar-b
Net(IO) : iptraf, netstat -i, sar -n DEV|EDEV, ss
PID : top, psree-p, ps aux, lsof
# sar
sadcコマンドが収集したBinaryをテキストに変換
sadfはsarの出力形式を変更できる
# sadf [Option] -- [sar option]
/var/log/sa/sa日付 に記録
%user, %nice, %system: プロセスの割合
%iowait, %steal, %idle:時間の割合
-u CPU
-P 1 1番目CPU
-r 物理メモリ
-S スワップ領域
-b ディスクIO
-n DEV|EDEV ネットワークIOの情報
-f 取得するファイルの指定
/usr/lib/sa/sa1 sadc
/usr/lib/sa/sa2 sar
# vmstat
procs
r:実行待ち数
b:IO待ち等で割り込み不可のスリープ状態
w:スワップアウトされた
memory
swpd:使用中のスワップ領域
free:空いてる物理メモリ
buff:バッファキャッシュ
cache:ページキャッシュ
swap
si:スワップイン
so:スワップアウト
io
bi:デバイスからの読み取りブロック
bo:書き込みブロック
system
in:割り込み回数
cs:コンテキストスイッチ
cpu
us:ユーザープロセスの割合
sy:カーネルの割合
id:アイドルの割合
wa:ウェイトの割合
st:バーチャルに使用された割合
# netstat -i
TX:送信(Transfer)
RX:受信(Receiver)
# w
現在時刻 稼働時間 ユーザー数 負荷平均(1,5,15分)
LOGIN@ ログイン時刻@16:03分記載
# iostat(CPU使用率とディスクIO)
# iotop(ディスクIOの情報をプロセス毎に)
# pstree
-p: PID
# iptraf
# sar (sadc)
-u cpU
-r memoRy
-b diski/o
-n Network
collectd
/etc/collectd.conf
LoadPlugin
---------------Linuxカーネル
Module
# depmod (update /lib/modules/(VERSION)/modules.dep)
# lsmod listed enable module
# modinfo module info
# insmod loading module
# rmmod unload
# modprobe probe load unload (-r unload, -f force, -l list, --show-depends)
binはバイナリ、libはモジュール
modprobe.conf
alias eth1 tg3 (eth1実行時にtg3をロード)
option パラメータ設定
install ロード
remove アンロード
# modprobe
: load(default)
-r: remove
-f: force
-l: listed
--show-depends
KernelParameter
即座に設定反映可能
/proc/sys以下にパラメータ操作用の仮想ファイルがある
sysctlは一時的、恒久変更の場合設定ファイルを変更
基本、初期時点で自動設定が入っている
# sysctl [param] view
-w write
-a list
恒久変更
/etc/sysctl.conf
/etc/sysctl.d以下のファイル
フォーマット
Slash:cat /proc/sys/kernel/keys/maxbytes
colon:# sysctl kernel.keys.maxbytes
colon:cat /etc/sysctl.conf
Kernel本体
/usr/src/linux/kernel/ :ソース本体
/usr/src/linux/kernel/Makefile :makeの動作だけ
/usr/src/linux/Makefile :バージョンとmakeの動作
/usr/src/linux/.config :カーネルビルド用の設定ファイル
KernelUpGrade
自動でカーネルモジュールをリビルドする
# dkms [Dynamic Kernel Module Support]
# make option
mrproper, oldconfig, all, modules_install, install
初期化 継承 ビルド インストール
config :対話的
menuconfig :ターミナルGUI
xconfig :X上のGUI
defconfig :デフォ設定の設定ファイル作成
oldconfig :現在のカーネル設定を継承
cloneconfig :oldconfigと同じ
clean :設定ファイルを除いてクリーンに
mrproper :設定ファイルを含めてクリーンに
udev
本体:/etc/udev/udev.conf
個別:/etc/udev/rules.d
# udevadm : した三つまとめて
# udevcontrol : 動作/停止
# udevinfo : デバイス情報表示
# udevmonitor : 動作状況の監視出力
# uname
-s: カーネル名
-r: カーネルバージョン Revision
-n: ホスト名
-m: ハードウェア
-p: CPUタイプ cPu
-a: 全部 All
InitRamDisk
# mkinit rd
# mkinit ramfs
# dracut
# mount -o loop initrd.img /mnt/ram
/boot
grub/
grub.cfg GRUB2
menu.lst GRUB
grub.conf GRUB
vmlinuz カーネルイメージ
system.map カーネルアドレスマップ
initrd.img 初期RAMディスクイメージ
config/ ビルド時の設定
---------------システムの起動
Tips
起動時に2度マウントされる。
fsckによる検査修復後、RWでマウントする
FAT:SYSLINUX
cdrom:ISOLINUX
isolinux.cfg/
isolinux.cfg
PXE:PXELINUX
BootLoader: pxelinux.0
Configure : pxelinux.cfg/
DHCP & TFTP
EXT:EXTLINUX
syslinux --install /dev/sdb1
GRUB
/boot/grub/device.map 「(hd0) /dev/sda」
表示名: title CentOS
/の場所:root (hd0,0) (GRUB2 set root)
本体 : kernel /vmlunuz-2.6.18.e15 (GRUB2 linux)
初期RAM:initrd /initrd-2.6.18.el5.img
オプション
nosmp|maxcpus=0
1 s single など
UEFI
概念:ESP(EFI System Partition)
UEFI Shell:OS外からデバイスドライバやTCP/IPが利用
efibootmgr:OS上から操作する
OtherBootLoader
systemd-boot(UEFI): ESP パーティションにアクセスできること
U-boot: OpenSourceステージ分割可能
isohdfpx.bin: ISOLINUXイメージでMBRコードのブートに起動
efiboot.img: UEFIでISOLINUX使ってブートする
bootx64.efi: UEFIのブートマネージャーでUEFI起動時にロードされる
SecureBoot: X.509証明書を用いて起動制限する。Win8以降に割とある
shim.efi
grubx64.efi
systemd(Unit)
service(サービスの操作)
mount(ファイルシステムをマウント)
device(udevのデバイス)
target (ユニットのグループ化)
サービス起動
chkconfig redhut
insserv SUSE
-r: off
: on
update-ec.d Debian
update-rc.d [Option] Service [Operation] [Pri] [RunLv] .
defaults
start
stop
remove -f
/etc/init.d/ は存在し実スクリプトもあるが全レベル分
/etc/rc3.d に3で起動するスクリプトのリンクだけ入れる
起動スクリプト
K27test, S45TESTのようなもの
K(Kill),S(Start)でKから選出され若番から作動する
---------------ファイルシステムとデバイス
FileSystem--
ext2 ×
ext3 ○
ext4 ○ 1EiBサポート
btrfs ○ サブボリュームやスナップショット
xfs ○
iso9660 CDROM
FAT 古いWindowsやISOLINUXなど
NTFS XP以降のWindowsで
NFS ネットワークファイルシステム
tmpfs RAMディスク
swap 物理メモリのスワップ先
ZFS ○ Solarisが使うbtrfsのパクリ
VFS ファイルシステムではない。異なるファイルシステム間のラッパー(?)
ext2/ext3
データブロック ファイルの実体を保持する
iノードブロック メタ情報(ファイル名/サイズ/パーミッション)を保持(128byte)
スーパーブロック マウント回数やブロックサイズなど全体の情報
# mkfs
# mke2fs
# fsck
# e2fsck
# tune2fs
# e2label
# dumpe2fs
# debugfs
# mke2fs
-m root用予備領域
-L ボリュームラベル設定
-t ファイルシステムの種類
# mkisofs
-o 出力先
-J Jolietフォーマット(Windows)
-R RockRidgeフォーマット(UNIX)
-udf DVDのフォーマット
XFS
# mkfs.xfs
# xfsrestore Restore
# xfsdump Backup
# xfs_admin
# xfs_check
# xfs_info
btrfs
# btrfs filesystem show
# btrfs subvolume create
# btrfs subvolume delete
# btrfs subvolume list
# btrfs subvolume snapshot
fstab
LABEL=/boot (eq必須)
UUID
# blkid
/dev/disk/by-uuid
オートマウント
どのディレクトリのどのデバイスをどのファイルシステムでマウントするか
設定:/etc/auto.master 他にauto.cdromなど
左からマウントポイント、マップファイル、オプション
直接:/-
関節:/auto
---------------高度なストレージ管理
LVM
# pvcreate 作成
# pvremove 削除
# pvmove 内容を移動
# pvdisplay 情報表示
# vgcreate 作成
# vgremove 削除
# vgextend PVを追加
# vgreduce PVを削除
# vgdisplay 情報表示
# lvcreate 作成 (-L サイズ; -n 名前; -s スナップショット)
# lvremove 削除
# lvextend 拡張
# lvreduce 縮小
# lvdisplay 情報表示
# hdparam
-i 詳細情報
-I 直接詳細情報
-t BufferCacheオフの読み込み速度計測
-T BufferCacheのみの読み込み速度計測
-c(0/1) 32bitI/O
-d(0/1) DMAモード
-W(0/1) ライトキャッシュ
# mdadm [--manage] RAIDデバイス [Option] デバイス1 デバイス2
Misc
-Q --query 状態表示(/proc/mdstat)
-D --detail 詳細情報
-S --stop 停止
Manage
-a --add 追加
-r --remove 削除
-f --fail 不良マーク付与
Create
-l --level=レベル
-n --raid-devices=使用デバイス数
-x --spare-devices=予備デバイス数
---------------ネットワーク構成
# arp
-i インターフェース
-a 表示対象のホスト名指定
-d 削除対象のホスト名指定
-n IPアドレスのまま
-s IP+MACの対応をキャッシュに追加
-f ファイルの中身をキャッシュに追加
# netstat(new ss)
-lantu は共通
-i インターフェース統計/内部TCP情報
-r ルーティングテーブル/名前解決
# tcpdump
-i 対象インターフェース
-n IPアドレスのまま
-X 16進数&ASCIIで表示
条件式(space区切り)
host
port
tcp/udp/icmp/arp
src/dst
# iw obj command (無線)
dev [インターフェース名]
link
scan
connect/disconnect
station dump
phy [phy1]
interface add/del
info
# namp
-sT -sU -sP スキャンタイプ(TCP/UDP/Ping)
-p ポート範囲指定
-F 辞書スキャン
-O OS識別
---------------システムの保守
# tips
+ tar xf file.tar [取り出したいファイル名]
+ gzip -c [StdOut] -c(cat)
+ ログイン後表示:/etc/motd
+ ログイン前表示:/etc/issue
+ ログイン中表示:wall
# rsync
-a: 属性保持
-e: 転送方法
-v: 詳細出力
-z: 圧縮転送
--delete 転送先削除
# patch
usage: patch [option] < [PatchFile]
usage: cat [PatchFile] | patch [option]
patch-kernel
-pN: (0: 修正しない, 1:先頭パスを削る, n:n階層分ディレクトリを削る)
-d: 作業ディレクトリの指定
-R: 適用を取り消す(ロールバック)
sample: gzip -dc patch-2.6.38.5.gz | patch -p1
Build
# make
configure : Makefileの自動生成
Makefile : installやuninstallでの挙動を記載する指示ファイル
make : ソフトウェアのビルド
su(必要に応じて)
make install: パスの通ったディレクトリに配置しアクセス権等の設定も行う
clean : コンパイルで生成された全ファイルを削除