ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2017年1月14日土曜日

Schoo / Webサーバー運用のためのLinux実践 3rd

Schooのメモ


メモ

RTO
Recovery Time Objective
障害から復旧までの目標時間
参照:RPOとRTOの考え方
ちなみに、RPOはRecovery Point Objectiveで、復旧させる時点のことらしいです。

Ansible
構成管理ツール

KNOPPIX
Optimal Diskからの起動を前提としたLinux distribution

OS不調時の対処
  • OSの再インストール
  • 代理boot
  • Snapshotからの復元
  • Orchestrationシステムからの復元

>grub でOS起動が止まった場合
/boot/grub2/grub.cfgが読み込めていない可能性がある

Virtual BoxでISOファイルから立ち上げる
マシンを停止させる
設定
ストレージ
IDE Controllerで光学式ディスクを追加
(今回はLive DVDにチェックを入れてみました)
システム
Boot OrderでOpticalを一番上にする
マシンを起動する
Troubleshooting
Rescue a CentOS system
1) Continue
$ chroot /mnt/sysimage
$ cd /boot/grub2
$ grub2-mkconfig -o /boot/grub2/grub.cfg $ exit $ exit

自動再起動
起動中のkernelパニックに有効な対処は再起動
自動再起動を設定することで、素早く対処することができる
$ cat /proc/sys/kernel/panic
0
kernel.panicオプションの値で、1以上だとシステムが停止したら自動で再起動する

- 設定 -
$ vi /usr/lib/sysctl.d/00-system.conf
~
kernel.panic = 10
$ sysctl -p 00-system.conf # 設定の反映
$ sysctl kernel.panic
kernel.panic=10 # 設定の確認

カーネルパニックを起こしてみる
echo c > /procy/sysrq-trigger
実際に10秒ぐらいで再起動かかった
ただ、ログイン必要ですね。。。。
現地には行かなくても済むけど、サービス断の短期化の効果は小さい

Schoo / Webサーバー運用のためのLinux実践 2nd

Schooのメモ


メモ

UEFI
Unified Extensible Firmware Interface
UEFIはBIOSに変わるブートローダ

grub2-mkconfigがない場合
yum install -y grub2でインストールしたgrub2-toolの中に入っているみたいでした。

起動ログの標準出力
$ cat /etc/default/grub
~
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhbg quiet crashkernel=auto biosdevname=0 net.ifnames=0"
~
$ grub2-mkconfig -o /boot/grub2/grub.cfg # 修正を実体に反映させる

rootパスワード紛失時の変更
CentOS6まで:シングルユーザーモードでrootパスワードリセット
CentOS7:シングルユーザーモードへの移行にrootパスワードが必要に!
-> 初期ramディスク=initramfsマウント時点で処理を止める
(=rootfsロード前)

rd.breakオプションで処理を止める
起動ブートローダ選択時にeを押す
linux16で始まる行の最後に、「rd.break」と入力
ctrl xを押す
swithc_root:/# というプロンプトになります。
# mount -o remount,rw /sysroot #/sysrootを読み書き可能で再マウント
(読み取り専用になっているらしい)
# chroot /sysroot # rootディレクトリの変更
# LANG=C # asciiコードを文字コードとして使用 # passwd root # rootユーザのパスワード変更
# passwd root
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens update successfully.
exit -> exitで改めてブートする

SELinuxの停止
$ getenforce
enabled
$ vi /etc/selinux/config
SELINUX=disabled
$ getenforce
Disabled

Schoo / Webサーバー運用のためのLinux実践 1st

Schooのメモ


メモ

OS起動の流れ
  1. BIOS起動@Mother Board
    1. ハードウェア初期化
    2. ブーとデバイス検索
  2. ブートローダ読み込み@Storage
    1. kernel展開
    2. rootfs mount
    3. Systemdの起動

FHS
Filesystem Hierarchy Standard
/(ルート)を頂点とした、階層構造のファイルシステム基準のこと

BIOS
マザボのROMに格納されている
POST(Power On Self Test)を最初に実行し、HW不良の有無を確認する

ブートローダ
kernelを起動するプログラム
LILO/ GRUB / GRUB2などがある
CentOS6=GRUB
CentOS7=GRUB2

rootfs
/(ルート)ディレクトリを管理するファイルシステム
まぁ名前の通りですね

rootfsをmountする前に、
初期ramディスク(initramfs)からデバイスドライバをロードする

grub.cfgの編集
GRUB2のコンフィグファイルである/boot/grub2/grub.cfgは直接編集できない
編集用の/etc/default/grubを編集したのちに、grub2-mkconfigコマンドで反映させる

CentOS7のランレベル
数字ではなく、UNITの値で操作する

起動レベル対応表
  • CentOS6 : CentOS7
  • 0 : poweroff.target
  • 1 : rescue.target
  • 2-4 : multi-user.target
  • 5 : graphical.target
  • 6 : reboot.target
まぁ慣れれば、7の方が分かりやすそうですね。

起動レベルの変更(システム起動時)
起動中にe
linux16で始まる行で systemd.unit=rescue.xxx ctrl + x で起動

起動レベルの変更(システム起動中)
systemctl isolate xxx.target

DAS
Direct Attached Storage
1つのサーバがあるストレージを占有する方式
クライアントからDASへアクセスする場合は、
クライアント -> サーバ -> ストレージという流れになり、
アクセス速度は高速ではない。

Schoo / Webサーバー運用のためのLinux実践 - 5th/6th

Schooさんの授業のメモ


メモ

fdisk -l
接続されているディスクの一覧表示

IDEとSCSIでデバイスファイルが違うんですね
/dev/hda IDEタイプHDD
/dev/sda SCSIタイプHDD
参考:/dev/hdaとか/dev/sdaとはなんぞや?

パーティションの種類
  1. 基本パーティション
  2. 拡張パーティション
  3. 論理パーティション

基本パーティション
4個までしか作れない上、4個作ってしまうとそれ以上パーティショニングが実行できない。

拡張パーティション
論理パーティションを格納するためのパーティション
拡張パーティション自体はデータを保存できない

論理パーティション
拡張パーティション内に作成される、データ格納用のパーティション


fdisk /dev/sd?
追加したディスクに対してディスクのパーティションを作成する
n -> p -> Enter -> Enter -> +nG (サイズに該当) -> w(終了)

mkfs -t xfs /dev/sdn
centosは上
ubuntuはmkfs.xfsをインストする

blkid /dev/
デバイスのファイルシステムを確認できる

マウント
一時的なマウントと永続的なマウントがある

mount -t xfs -o defaults /dev/ /
一時的なマウント

/etc/fstab
$ cat fstab
LABEL=cloudimg-rootfs / ext4 defaults 0 0
/dev/sdb1 /mnt ext2 defaults 0 0

mount -a
fstabの内容に沿ってマウントしてくれる。
シャットダウンで永続的マウントを確認する前に、
こちらで確認する

そもそもVirtual Boxへの仮想HDDの追加方法
Virtual Box -> マシンを選択しSetting※停止中であること
-> Storage -> box-diskを含むControllerの右横のディスクの追加ボタン
-> 今回はvmdkを追加しました。
これで、/dev/sdbからsdc,sddへと追加されます。

fdisk /dev/sdn
コマンド (m でヘルプ):t
※ パーティションのシステム ID を変更する
8e Linux LVM

partprobe
inform the OS of partition table changes(man)
パーティションの内容を変更したら、念のためOSに変更を通知する

Physical Extent
物理ディスク(デバイス)を仮想的に分割する最小単位

Physical Volume
物理ディスク(デバイス)を PE単位で分割した仮想ボリューム
Physical Volume=物理ボリュームという割には仮想的なボリュームです。

pvcreate /dev/device_file1 /dev/device_file2
Physical Volumeの作成

pvdisplay /dev/device_file1 /dev/device_file2
Physical Volumeの詳細表示

vgcreate volutemGropu /dev/device_file1 /dev/device_file2
Volume Groupの作成

vgdisplay -v volutemGroup
Volume Groupの確認

lvcreate -L nM -n logicalVolume volumeGroup
Logical Volumeの作成

lvdisplay volumeGroup/logicalVolume
Logical Volumeの確認

LVのサイズを変更するには、
パーティションのサイズの変更
ファイルシステムのサイズを変更

lvextend -L 50M /dev/volumeGroup/logicalVolume
パーティションのサイズの変更

xfs_growfs /dev/volumeGroup/logicalVolume
ファイルシステムのサイズを変更

Schoo / Webサーバー運用のためのLinux実践 4th

Linuxはまだまだ入門者の域を抜けられないので、少しSchooで勉強


メモ

ファイルシステム
ディスクベースとメモリベースに分けられる
ディスクベース:xfs, ext n, btrfs メモリベース:tmpfs

ttyコマンド
接続している仮想端末のデバイスファイル名を出力する

dd if=/dev/zero of=/boot/grub2/sample bs=4000 count=10
/dev/zero=Linuxのスペシャルファイルの一つ。全てNULL文字

du
オプションなどがうろ覚え
du -h dir/file

df -i
inodeの使用状況の表示

ls
デフォルト=ファイル名の昇順
-U=ディレクトリ内の順番で出力
-S=サイズで降順
r, h, t, l, 1あたりは使うのでわかるんですけどね、ここら辺はU,Sはなかなか使わないですね。

echo
Schoo関係ないけど、仕事中に調べた事項
-eをつけないと¥nを改行コードとして扱わない!
-nをつけると、echoの最後の改行はなくなる

VFS
Virtual File System
Linuxのファイル管理システム
@ITさんの記事を後で読もう。

dd(1) で空ファイルを作るときは /dev/zero より seek
こちらの記事が勉強になりました。(dd(1) で空ファイルを作るときは /dev/zero より seek )

/dev/null
これもLinuxのスペシャルファイルの一つ。
明示的に消去する際に使いますね。

2016年11月23日水曜日

<Linux>uniqコマンドでソートする理由

最近、無知無能を実感します。$ cat file | sort | uniq ってしょっちゅう実行してたけど、なんでsortが必要か理解していなかった。
sortする必要性があるのは、uniqコマンドは隣接行しか確認しないからですね。sortしないと重複行が消えない。

man uniqの結果をベタ貼り

The uniq utility reads the specified input_file comparing adjacent lines, 
and writes a copy of each unique input line to the output_file.  

和訳してみた

uniqコマンドは隣接行を比較しつつ入力ファイルを読み込み、ユニークな入力行のコピーを出力ファイルに書き込みます。

標準出力なども、shellがuniqを実行して、ファイルをOSに渡して出力させているってことなのかな。
いつも「~コマンドを叩くと標準出力に..が出る」みたいな言い方をしてしまうけど、正確に言うと
「ターミナル→shell→OS→スクリーン」ですかね。

<Linux>chmod [u|g|o|a]<+|-><w|x|r> file

さすがにchmod +xはよく使うので、+とrwxはそれぞれの権限を付与するというのは知っている。

しかし、chmod u+x fileと書かれた時に、「?」となったので、メモとして投稿します。
パーミッションは、所有者ユーザー・グループ・その他のユーザにそれぞれ設定できて、
u+ / o- とパーミッションの付与・剥奪の対象を選択できる。
指定がなければ、a+ / a- と同じで全てに対して操作する。

2016年11月22日火曜日

<Linux>which -aなんて使ったことなかった。。。

何事もマニュアルや公式ドキュメント当たって調べてみるべきですね。
perlの本読んでたらwhich -a perlと載っていました。
whichコマンドにもオプションが存在していたって知らなかった。。。

-a オプションをつけると、引数に指定したコマンド(実行ファイル)の場所を全て列挙する。
javaなど、複数のバージョンの実行ファイルなどあった場合に、全てのファイルの位置が出るそうです。
デフォルトは一番初めのもののみ。

以下、自分の環境での man whichのベタ張りです。
NAME
     which -- locate a program file in the user's path

SYNOPSIS
     which [-as] program ...

DESCRIPTION
     The which utility takes a list of command names and searches 
     the path for each executable file that would be run had these commands actually been
     invoked.

     The following options are available:

     -a      List all instances of executables found (instead of just the first one of each).

     -s      No output, just return 0 if any of the executables are found, or 1 if none are found.

     Some shells may provide a builtin which command which is similar or identical to this utility.  
     Consult the builtin(1) manual page.

SEE ALSO
     builtin(1), csh(1), find(1), locate(1), whereis(1)

HISTORY
     The which command first appeared in FreeBSD 2.1.

AUTHORS
     The which utility was originally written in Perl and was contributed 
     by Wolfram Schneider .  The current version of which was
     rewritten in C by Daniel Papasian .

ちなみに、引数は複数取れるというのは今日初めて知りました。

$ which java perl
/usr/bin/java
/usr/bin/perl

2016年11月4日金曜日

<Linux>crontabってファイル読み込めるんですね

知らないことばかりですわ、全く

crontabコマンドってバックアップファイルから設定を反映することができるなんて。。。

今までおどおどcrontab -e やらcrontab -l を打っていたのがアホらしい。

manを読んでもしっかり書いてあるしね


SYNOPSIS
     crontab [-u user] file
     crontab [-u user] { -l | -r | -e }

DESCRIPTION
...
     The first form of this command is used to install a new crontab from some named file or standard input if
     the pseudo-filename `-' is given.