Linux伺服器 Linux伺服器

資工所專業課程上課教材

資工所專業課程 > 課程內容 > 專題二 - 實體主機母系統 (Host) 的設計

專題二 - 實體主機母系統 (Host) 的設計

上次更新日期 2019/02/25

作為虛擬主機的母系統之用,應該盡量減少不必要的服務,同時降低可以連線操作的人數!讓系統的穩定性提高。 此外,由於作為虛擬機器的原生母系統,其效能得要進行一些調整與設計,這樣你的虛擬機器運作會比較順暢些。

母系統的整理

底下為本週我們需要完成的任務:

  1. 系統軟體自動更新與維護:
    • 先檢查時間,網路自動校時!
    • 修改 yum 來源,直接指向崑山計中
    • 進行一次全系統更新
    • 觀察一下核心的項目 (rpm -qa | grep kernel | sort) 以及核心位置的目錄資料 (/lib/modules)
    • 在 /root/bin 底下,建立一隻名為 maintain.sh 的 shell script,且每日 1:20 執行這個指令。
    • 在 maintain.sh 裡面:
      • 先對我們主機所在環境可以網路校時的主機進行校時的任務: ntpdate 120.114.100.1
      • 進行全系統更新
  2. 讓系統維護狀態可以讓你瞧見:
    • 因為我們的環境裡面已經有既有的 mail server,所以無須重新自己設定 mail server,因為目的不同! 我們只需要讓這部 server 的訊息,可以傳送到外部的 public mail server 即可。
    • 修改 /etc/postfix/main.cf 的內容,將 relayhost 設定為 [mail.ksu.edu.tw] 的模樣, 重新啟動 postfix 之後,就支援信件轉送到 relayhost 的機器上了!
    • 再加上 /etc/aliases 修改 root 的收件人成為 root: root,yourname@mail.ksu.edu.tw 這樣, 當 root 有信件時,就可以送一份給你在 mail.ksu.edu.tw 上面的帳號!如果沒有,那可能還是收不到...
  3. 系統安全強化:
    • 未來可能會開發一些奇怪的東西,因此建議 SELinux 設定改為 permissive 即可。
    • 將不必要的服務關閉,對 Internet 提供服務的,只需要 port 22 即可
      • 記得讓 root 不能登入系統
      • 記得讓管理員一般帳號可以透過 sudo 切換身份
      • 記得 sshd_config 將 DNS 反查功能關閉
    • 將 firewalld 服務關閉,改成 iptables 的狀態。
      • 預設的防火牆規則啟動
      • 放行全系的 ssh 連線
      • 單純使用 iptables 的轉址,讓外部可以透過 port 5050 連線到你系統上的 port 22
      • 記得需要處理一下其他可能需要針對你常用的 IP 進行完全解鎖的功能。
      • 記得 ip_forward 需要啟用喔!
    • 定期觀察你的磁碟陣列狀態:
      • lsblk
      • cat /proc/mdstat
      • mdadm --detail /dev/md126 (注意看 State 必須要是 clean 才好!)
      • 透過 smart 查看系統上面的所有硬碟資訊: smartctl --scan
      • 透過 smart 列出兩顆實體硬碟的狀態: smartctl --all /dev/sda
      • 透過 smart 自我測試磁碟的好壞: smartctl -t [short|long] /dev/sda
  4. 系統效能調整:
    • 先透過 CentOS 官方提供的效能調校服務 (tuned) 來處理預設的效能問題:
      • 先透過 tuned-adm list 來查看目前的系統自動調整效能
      • 可以使用 tuned-adm profile XXX 來設定好使用的 profile
      • 現在,請將你的 tuned profile 指定為 guest-host 或者是 performance-xxx 的相關類型!
    • 可以針對主機的網路參數進行優化:
      net.core.optmem_max     =  262144
      net.core.rmem_default   =  262144
      net.core.wmem_default   =  262144
      net.core.rmem_max       = 8388608
      net.core.wmem_max       = 8388608
      net.ipv4.tcp_rmem       = 4096 87380 8388608
      net.ipv4.tcp_wmem       = 4096 65536 8388608
      net.ipv4.tcp_tw_reuse           = 1
      net.ipv4.tcp_tw_recycle         = 1
      net.ipv4.tcp_window_scaling     = 1
      net.ipv4.tcp_sack               = 0
      net.ipv4.tcp_timestamps         = 0
      net.ipv4.tcp_syncookies         = 0
      net.core.netdev_max_backlog     = 10000
      net.ipv4.ip_forward           = 1
      
      可以將上述的資料寫入 /etc/sysctl.d/somename.conf ,未來會自動生效,或者使用『 sysctl -p filename 』立刻啟動!
    • 網卡的效能調整:
      # ip link show
      # ethtool -i [nicname]
      # vim /etc/rc.d/rc.local
      for nic in [nicname]
      do
              ifconfig ${nic} txqueuelen 10000
              ethtool -G ${nic} rx 4096 tx 4096
              ethtool -K ${nic} lro off gro off
      done
      
      # chmod a+x /etc/rc.d/rc.local
      
      可將上述的資料寫入 /etc/rc.d/rc.local,每次自動生效
    • 修改磁碟的效能
      # lsblk -ti
      # vim /etc/rc.d/rc.local
      for hdd in sda sdb
      do
      	echo 8192     > /sys/block/${hdd}/queue/read_ahead_kb
      	echo 8192     > /sys/block/${hdd}/queue/max_sectors_kb
      	echo deadline > /sys/block/${hdd}/queue/scheduler
      done
      

下週行前規劃

請先參考 libvirtd 的啟用、 virsh 指令的操作、 qemu-img 指令的操作,以及 xml 環境的設計!