Proxmox VEのセットアップ手順（初期設定編）

#はじめに
[Proxmox VEのセットアップ手順（インストール編）](http://qiita.com/juze9/items/15ffe7eb0feed675552e)の続きです。

#初期設定（SSH接続のrootユーザーから）
##USBメモリーへインストールしたときに起動に失敗する場合の対策
rootdelay=2を恒久化する。

```
nano /etc/default/grub
#>GRUB_CMDLINE_LINUX_DEFAULT="quiet"
#↓
#>GRUB_CMDLINE_LINUX_DEFAULT="quiet rootdelay=2"
update-grub
```
- [Proxmox Install on USB-Device | Proxmox Support Forum](https://forum.proxmox.com/threads/proxmox-install-on-usb-device.12922/)
- [Gave up waiting for root device ( UNIX ) - やまものブログ - Yahoo!ブログ](http://blogs.yahoo.co.jp/wyamamo/26077421.html)

##ZFSにインストールした場合、GRUBのUUID指定を無効化する

```
nano /etc/default/grub
#GRUB_DISABLE_LINUX_UUID=true
↓
GRUB_DISABLE_LINUX_UUID=true

update-grub
```

##SSHデーモンの設定
```
#authorized_keysに公開鍵を登録する
nano /root/.ssh/authorized_keys
#>ssh-rsa ...
#>ssh-rsa ...
#>ssh-rsa ...

#公開鍵認証で再接続

#SSHデーモンのパスワード認証を禁止
##自動
sed -i -r -e 's/^#? *(PermitRootLogin) .*$/\1 without-password/' \
          -e 's/^#? *(PasswordAuthentication) .*$/\1 no/' /etc/ssh/sshd_config &&
/etc/init.d/ssh restart

##手動
nano /etc/ssh/sshd_config
#>PermitRootLogin yes
#↓
#>PermitRootLogin without-password

#>#PasswordAuthentication yes
#↓
#>PasswordAuthentication no

/etc/init.d/ssh restart
```

##Proxmox VEのリポジトリーを変更する
```
#自動
sed -i -r 's!^(deb https://enterprise\.proxmox\.com/debian jessie pve-enterprise)$!#\1!' /etc/apt/sources.list.d/pve-enterprise.list &&
cat << EOT >> /etc/apt/sources.list

# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use
deb http://download.proxmox.com/debian jessie pve-no-subscription
EOT

#手動
nano /etc/apt/sources.list.d/pve-enterprise.list
#>deb https://enterprise.proxmox.com/debian jessie pve-enterprise
#↓
#>#deb https://enterprise.proxmox.com/debian jessie pve-enterprise

nano /etc/apt/sources.list
#追加
#># PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use
#>deb http://download.proxmox.com/debian jessie pve-no-subscription
```
- [Package repositories - Proxmox VE](https://pve.proxmox.com/wiki/Package_repositories)

##パッケージを更新
```
apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade

#IPv6が原因で遅いとき
apt-get update -o Acquire::ForceIPv4=true &&
apt-get upgrade -y -o Acquire::ForceIPv4=true &&
apt-get dist-upgrade -y -o Acquire::ForceIPv4=true
```

##管理用一般ユーザーを追加
[Proxmox VEでLXCのDebian 8をセットアップ](http://qiita.com/juze9/items/71ccefc2e976d74e42b9#%E7%AE%A1%E7%90%86%E7%94%A8%E4%B8%80%E8%88%AC%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E8%BF%BD%E5%8A%A0ssh%E6%8E%A5%E7%B6%9A%E3%81%AEroot%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8B%E3%82%89)を参照。

##その他
Proxmox VEの設定は/etc/pve/に、localのストレージは/var/lib/vz/にあります。

#その他セットアップ（SSH接続の管理用一般ユーザーから）
##日本語化
[Proxmox VEでLXCのDebian 8をセットアップ](http://qiita.com/juze9/items/71ccefc2e976d74e42b9#%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E6%97%A5%E6%9C%AC%E6%99%82%E9%96%93%E5%8C%96)を参照。

##NTPサーバーを変更
NTPクライアントはデフォルトでsystemd-timesyncdが有効になっている。

```
sudo nano /etc/systemd/timesyncd.conf #この中を書き換えて ntp.nict.jp にでもサーバーを変更する
#>[Time]
#>Servers=ntp.nict.jp

sudo systemctl restart systemd-timesyncd.service #設定を反映させるため再起動

timedatectl #有効であることを確認
sudo systemctl status systemd-timesyncd.service #実行履歴確認
```

##Gmailにメールが飛ぶようにする
* [Proxmox VEでGmailを送る - Qiita](http://qiita.com/juze9/items/a2e5aaba0858731ccc17)

##WOLを投げられるようにする
```
sudo apt-get install -y wakeonlan
wakeonlan <mac>
```

##IPv6がつながらない場合
おまじない。

```
ip a #状況確認
sudo nano /etc/network/interfaces
#追記
#>iface vmbr0 inet6 auto
#>	privext 2
```

##CPUのクロックが動的に変わるようにする
```
#状況確認
grep MHz /proc/cpuinfo #現在のクロック確認
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor #現在のモード確認

#cpufrequtilsをインストール
sudo apt-get install -y cpufrequtils #インストール
sudo echo 'GOVERNOR="powersave"' > /etc/default/cpufrequtils #Sandy Bridge以降
sudo echo 'GOVERNOR="ondemand"' > /etc/default/cpufrequtils #その他
sudo /etc/init.d/cpufrequtils restart #再起動

#yesコマンドで負荷を掛ける（CPU4スレッド）
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &

kill %1 %2 %3 %4

#stressコマンドで負荷を掛ける（CPU4スレッド・メモリー60GB）
sudo apt-get install -y stress
sudo stress --cpu 4 --vm 60 --vm-bytes 1G --timeout 1m

#現在のクロック確認
grep MHz /proc/cpuinfo

#powersaveまたはondemandになっていることを確認
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
```
* [CPU 周波数スケーリング - ArchWiki](https://wiki.archlinuxjp.org/index.php/CPU_%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0)
* [CPUの動作周波数をコントロールする - Linux Mintのメモ](https://sites.google.com/site/linuxnomemo/mint-setting/cpufrequtils)

##SkylakeのiGPU対応
```
echo 'deb http://ftp.debian.org/debian jessie-backports main contrib' >> /etc/apt/sources.list &&
apt-get update &&
apt-get install -t jessie-backports -y xserver-xorg-video-intel
```

##SSDに一週間に一回trimコマンドを発行する
```
sudo nano /etc/fstab #SSDをマウント
#>PARTUUID=... /mnt/ssd ext4 defaults,noatime,nofail 0 2 #data=wightbackは付けるとマウントしなかったため付けていない

sudo nano /etc/cron.weekly/fstrim
#>#!/bin/sh
#>fstrim -a

sudo chmod 755 /etc/cron.weekly/fstrim #実行属性を付ける
```

##アイドル時にHDDの電源が切れるようにする
```
sudo nano /etc/hdparm.conf
#追加（240=20分）
#>/dev/disk/by-id/... {
#>        spindown_time = 240
#>}
/etc/init.d/hdparm restart

hdparm -C /dev/sdx #確認
```

##S.M.A.R.T.を確認する
```
sudo apt-get install -y smartmontools #インストール
sudo smartctl -c /dev/<device> #確認
sudo systemctl disable smartd.service && sudo systemctl stop smartd.service #常駐させない
```
##ZFS周り
* [ZFS(Linux)の私的セットアップ手順 - Qiita](http://qiita.com/juze9/items/563b67b9f2d67d1fa270)
* [ZFS on Linuxでスナップショットを作成し一定期間経過後破棄 - Qiita](http://qiita.com/juze9/items/d417547623681ebef266)
* [zfs send recvを楽にする（SSH対応版） - Qiita](http://qiita.com/juze9/items/8036aa9b294d4de01589)
* [Proxmox VEのZFS Rootの複製 - Qiita](http://qiita.com/juze9/items/82df9508a4bfeefcd3d1)

##ログを削減（USBメモリー対応）
###/etc/rsyslog.conf変更前
```
#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err

#
# Logging for INN news system.
#
news.crit			/var/log/news/news.crit
news.err			/var/log/news/news.err
news.notice			-/var/log/news/news.notice

#
# Some "catch-all" log files.
#
*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none		-/var/log/messages
```

###/etc/rsyslog.conf変更後
```
#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.error;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
#daemon.*			-/var/log/daemon.log
#kern.*				-/var/log/kern.log
#lpr.*				-/var/log/lpr.log
#mail.*				-/var/log/mail.log
#user.*				-/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info			-/var/log/mail.info
#mail.warn			-/var/log/mail.warn
#mail.err			/var/log/mail.err

#
# Logging for INN news system.
#
#news.crit			/var/log/news/news.crit
#news.err			/var/log/news/news.err
#news.notice			-/var/log/news/news.notice

#
# Some "catch-all" log files.
#
#*.=debug;\
#	auth,authpriv.none;\
#	news.none;mail.none	-/var/log/debug
#*.=info;*.=notice;*.=warn;\
#	auth,authpriv.none;\
#	cron,daemon.none;\
#	mail,news.none		-/var/log/messages
```

###書き出さないようにしたログを削除、再起動
```
sudo rm /var/log/cron.log*
sudo rm /var/log/daemon.log*
sudo rm /var/log/kern.log*
sudo rm /var/log/lpr.log*
sudo rm /var/log/mail.log*
sudo rm /var/log/messages*
sudo rm /var/log/user.log*
sudo rm /var/log/mail.info*
sudo rm /var/log/mail.warn*
sudo rm /var/log/mail.err*
sudo rm /var/log/news/news.crit*
sudo rm /var/log/news/news.err*
sudo rm /var/log/news/news.notice*
sudo rm /var/log/debug*

sudo /etc/init.d/rsyslog restart
```