2016年1月9日 星期六

Windows 7採用固態硬碟SSD系統優化大全

Windows 7採用固態硬碟SSD系統優化大全
 

1.硬碟改為AHCI 模式,提高硬碟的使用效能,如果安裝作業系統前沒有將BIOS的硬碟模式改為AHCI模式的話,請在 Windows 7 修改 registry 機碼,再重新開機進入 BIOS 改為 AHCI模式。
操作:輸入指令 regedit執行登錄檔編輯程式,尋找[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci]將 start 預設值3改為0,重新開機進入BIOS改為 AHCI模式。

2.停止dirty shutdown event 的頻繁寫入記錄 TimeStampInterval
操作:輸入指令 regedit執行登錄檔編輯程式,尋找[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability]將TimeStampInterval 預設值 1 改為 0

3.關閉自動清除硬碟中分頁檔案的內容
操作:輸入指令 regedit執行登錄檔編輯程式,尋找[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management]將ClearPageFileAtShutdown的值改成0

4.停用Superfetch/Prefetch和Search Indexing服務,Superfetch/Prefetch主要用於傳統硬碟預先讀取軟體加快載入速度,但 SSD 讀取速度快不需要此功能。Search Indexing會建立檔案索引,而且不斷地在系統內執行,對 SSD會造成額外的寫入耗損。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令 services.msc,找 Superfetch及Windows Search服務點兩下,服務狀態按[停止],啟動類型改為[停用],停用後可以刪除 c:\windows\prefetch 目錄內的檔案文件。

5.啟用TRIM功能,Windows 7 新增 TRIM 功能,在 SSD硬碟刪除檔案時可立即將資料存放區刪除,不像傳統硬碟需等待下次再有寫入動作時再進行抹除及複寫的動作。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令fsutil  behavior  query  DisableDeleteNotify
顯示 DisableDeleteNotify = 0 表示TRIM功能已啟用

6.關閉磁碟重組的自動排程,磁碟重組是針對傳統硬碟因檔案區塊分散影響讀取效能而設計,SSD無需執行任何「磁碟重組」作業。Windows 7 的磁碟重組是自動排程,需要手動停止自動磁碟重組。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令dfrgui,選[設定排程]/取消勾選[依排程執行(建議)]/[確定]。

7.停用休眠功能
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令 powercfg  -h  off

8.停用8.3格式檔案名稱,在建立檔案時為保留對較舊的程式相容,會同時多產生一個8.3規格的檔名。如果用戶不會再使用很舊的程式,可以讓系統省掉這個工作。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令fsutil  behavior  set  disable8dot3  1

9.停止 ReadyBoot tracing,Windows 7每次啟動時都會有大量 tracing 日誌動作,其中的 ReadyBoot tracing 會建立c:\windows\prefetch\readyboot\readyboot.etl 文件日誌,上限20MB然後又會自動清空,如此頻繁地複寫 tracing log只會額外耗用電腦資源。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令 perfmon,選[資料搜集器集合工具]/[啟動事件追蹤工具階段]/點兩下[ ReadyBoot],切換至[追蹤工具階段],取消勾選[已啟用],再按[確定]

10.關閉Windows客戶經驗改進計畫(CEIP),停止搜集系統分析資料報告,在 Windows 7 內有多個自動排程執行系統分析,將資料報告上傳給Microsoft。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令 gpedit.msc,展開[電腦設定]/[系統管理範本]/ [系統]/[網際網絡通訊管理]/[網際網絡通訊設定]/點兩下"關閉 Windows 客戶經驗改進計劃",勾選"已啟用"。

11.停用 Windows 7 的客戶經驗改進計畫的排程,讓這些自動排程停止系統分析。
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令  taskschd.msc,展開[工作排程器程式庫]/[Microsoft]/[Windows]/ [Customer Experience Improvement Program],依序選取中間的三個排程Consolidator、KernelCeipTask、 UsbCeip並點選右下角的[停用],接著繼續點選[工作排程器程式庫]/[Microsoft]/[Windows] /[RAC],選取中間的排程 RacTask及右下角的[停用]。

12.加快開機速度:CPU多核心、記憶體數量、GUI畫面
操作:執行[附屬應用程式]的[命令提示字元]或輸入指令 cmd出現命令提示字元視窗,再輸入指令msconfig,切換至[開機]/選[進階選項],勾選[處理器數目]然後調整到最多,右邊勾選[最大記憶體],按[確定]。

13.調整[關閉硬碟前的時間],在傳統硬碟才需要設定幾分鐘沒有使用就讓硬碟省電停止運轉。
操作:進入[控制台]/ [硬體和音效]/ [電源選項]/點選目前所選用的電源計畫右側的[變更計畫設定]/[變更進階電源設定],選[硬碟]/[關閉硬碟前的時間]/[設定]調成"永不",按[確定]。

14.關閉硬碟的寫入快取緩衝區
操作:進入[控制台]/[系統及安全性]/系統內的[裝置管理員]/[磁碟機],在SSD硬碟按右鍵選[內容],切換至[原則],取消勾選[關閉裝置的 Windows 寫入快取緩衝區排清]。

15.關閉系統還原,如擔心系統中毒或損壞,可定期使用控制台的建立系統映像。
操作:在檔案總管或桌面的「電腦」按滑鼠右鍵選[內容],選左邊的[進階系統設定]/切換至[系統保護]/選[本機磁碟C:]/[設定]/[關閉系統保護]/[刪除]/[繼續]將所有還原點刪除。

16.減少或關閉Pagefile分頁檔
操作:在檔案總管或桌面的「電腦」按滑鼠右鍵選[內容],選左邊的[進階系統設定]/切換至[進階]/選[效能]的[設定]/再切換至[進階]/選[虛擬記憶體]的[變更],取消選取最上方的[自動管理所有磁碟的分頁檔大小],選[C]碟/如果記憶體夠大就選[沒有分頁檔]/ [設定],不然就選[自訂大小]/輸入起始大小及最大值(建議輸入記憶體的一半),接著按[確定]後重新啟動電腦

2015年12月28日 星期一

VMWARE ESXI 匯入 OVF 失敗 : the task was canceled by a user

用ESXI 5.5匯出OVF或OVA後,要重新部署到ESXI主機時,會出現"the task was canceled by a user"的錯誤訊息,然後就中斷部署。

原因是匯出虛擬機時,其光碟機設定,有掛載ISO檔導致。

解決辦法:

1. 修改匯出的 OVF 設定檔

step.1 用 NotePad 編輯 OVF 檔

 

將 cdrom type 從 ISO 改為 atapi

從中找到
<rasd:ResourceSubType>vmware.cdrom.iso</rasd:ResourceSubType>

修改為
<rasd:ResourceSubType>vmware.cdrom.atapi</rasd:ResourceSubType>


若是單一的OVA檔請用7zip或winrar解開 修改 OVF


2.刪除*.rm檔

3.匯入


另一個辦法是將原來掛載的CD裝置掛到新的database store裡
但是相對麻煩就是。



2015年12月14日 星期一

Linux 排程 log 相關 (cron)

crontab :crontab 這個指令所設定的工作將會持續循環的進行,可循環的時間為分鐘、小時、每週、每月或每年等。

主要指令
crontab [-u username] [-l|-e|-r]

選項與參數:
-u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作排程;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除所有的 crontab 的工作內容,若僅要移除一項,請用 -e 去編輯。

#crontab -e
#會進入vi 編譯畫面讓做排程編譯

#crontab -r
#將該帳號所有排程移除

#crontab -l
#將所有排程清單List出來

Crontab -e 的畫面如下:


 Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


假設


==============================

crond讀取檔案位置
/var/spool/cron/*    #cron執行讀取位置,若直接改寫則會生效,相對的若語法錯誤則就無法執行。
/etc/cron.d/*          #以時間做為區分,由
/etc/crontab           #同上,但不依USER區分。


/etc/cron.allow       #允許使用者使用cron的清單(白名單)
/etc/cron.deny        #拒絕使用者使用cron的清單(黑名單)
這兩者中,allow 比deny優先。


在伺服器維護日常作業裡常會用到,
Cron服務於每分鐘都會去讀取/etc/crontab 與 /var/spool/cron 的內容

故新增cron指令後並不需要做重啟服務的動作,
cron將會於下個分鐘來臨時自動讀取並依規則執行
crond 的執行程式存放在/usr/bin/crontab 


crond 執行的log完會存放在/var/log/cron 
/var/log/cron 

故可由此確認被執行的排程。
==============
參考來源:鳥哥
http://linux.vbird.org/linux_basic/0430cron.php

2015年12月12日 星期六

Elasticsearch, Logstash, and Kibana 4

==============

Java 1.8+Elasticsearch 2.0+Kibana 4.2.0(失敗)
後降版至Kibana 3 成功
之後再補上筆記
==============




參考網址:
http://www.chenshake.com/centos-install-7-x-elk-elasticsearchlogstashkibana/

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html

https://www.digitalocean.com/community/tutorial_series/centralized-logging-with-logstash-and-kibana-on-centos-7

http://zettadata.blogspot.tw/2014/09/elkelastic-searchlogstashkibanalog.html

http://icodding.blogspot.tw/2015/09/centos-elkelastic-searchlogstashkibana.html?showComment=1446104855572


看了許多文章和測試後目前自己設計的實驗架構如下:

Java 1.8

sudo  yum install java-1.8.0-openjdk httpd unzip


Elasticsearch 2.0

安裝
sudo vi /etc/yum.repos.d/elasticsearch.repo

Java 1.8

yum install java-1.8.0-openjdk httpd unzip

Elastic Search
Logstash

Kibana

https://download.elastic.co/kibana/kibana/kibana-4.2.0-linux-x64.tar.gz



安裝Elastic Search
下載公鑰
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch

在 /etc/yum.repos.d/ 目錄下新增檔案,例如 elasticsearch.repo,內容如下
vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-2.0]
name=Elasticsearch repository for 2.0.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.3/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1




安裝Elastersearch
yum install elasticsearch

設定Elasticsearch
編輯 /etc/elasticsearch/elasticsearch.yml
sudo vi /etc/elasticsearch/elasticsearch.yml
cluster.name: "LogCluster"
node.name: "LogMaster"
node.master: true
node.data: true

path.conf: /etc/elasticsearch
path.data: /datapool/data1
path.work: /datapool/work
path.logs: /datapool/log

mkdir /datapool
mkdir /datapool/data1
mkdir /datapool/work
mkdir /datapool/log

將服務加入系統
sudo chkconfig --add elasticsearch

啟動服務
sudo /etc/init.d/elasticsearch start

測試啟動是否成功
curl localhost:9200/_nodes/process?pretty



防火牆開啟
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=5403/tcp
sudo firewall-cmd --permanent --zone=public --add-port=5601/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9200/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9300/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all


安裝Logstash
安裝金鑰
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch

在 /etc/yum.repos.d/ 目錄下新增檔案,例如 logstash.repo,內容如下
sudo vi /etc/yum.repos.d/logstash.repo
[logstash-2.0]
name=logstash repository for 2.0.x packages
baseurl=http://packages.elasticsearch.org/logstash/2.0/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

安裝Logstash
sudo yum install logstash

配置logstash,如下是Logstash的配置文件
==
sudo vi /etc/logstash/conf.d/logstasg_access.conf
==
sudo vi /etc/logstash/conf.d/01_apache_logstasg_input.conf
input {
file {
path => "/var/log/httpd/access_log"
type => "apache" # a type to identify those logs (will need this later)
}
}

filter {
if [type] == "apache" { # this is where we use the type from the input section
grok {
match => [ "message", "%{COMBINEDAPACHELOG}" ]
}
date {
# Try to pull the timestamp from the 'timestamp' field (parsed above with
# grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
if [user-agent] != "-" and [user-agent] != "" {
useragent {
add_tag => [ "UA" ]
source => "user-agent"
}
}
if "UA" in [tags] {
if [device] == "Other" { mutate { remove_field => "device" } }
if [name] == "Other" { mutate { remove_field => "name" } }
if [os] == "Other" { mutate { remove_field => "os" } }
}
}
}


sudo vi /etc/logstash/conf.d/02_apache_logstasg_output.conf

output {
elasticsearch {
host => "lsap.adtc.com.tw"
cluster => "elasticsearch"
node_name => "Elektra Natchios"
}
}

啟動 logstash 服務
cd /opt/logstash/bin/
./logstash

安裝Kibana 4.2.0(結構改變 需再研究)

sudo wget   https://download.elastic.co/kibana/kibana/kibana-4.2.0-linux-x64.tar.gz &&  gunzip kibana-4.2.0-linux-x64.tar.gz && tar -xvf kibana-4.2.0-linux-x64.tar && mv kibana-4.2.0-linux-x64  kibana && sudo mv kibana  /var/www/html/


安裝Kibana 3.1.2
wget  https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.zip &&  unzip kibana-3.1.2.zip &&  mv kibana-3.1.2  kibana && mv kibana  /var/www/html/


設定apache
vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerAdmin edwin.chen@adtc.com.tw
DocumentRoot /var/www/html/kibana
ServerName lsap.adtc.com.tw
ErrorLog logs/kibana.opsnotes.net-error_log
CustomLog logs/kibana.opsnotes.net-access_log common
</VirtualHost>

設定防火牆
#
# 開啟HTTP 80 port
#
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#
# 設定ElasticSearch使用的port 9200-9300
#
iptables -A INPUT -p tcp --dport 9200:9300 -j ACCEPT

重啟 apache 服務
service httpd restart




sudo vim /etc/init.d/logstash

LS_USER=root
LS_GROUP=root

※為讀取LOG需改變權限為root
(應該可以透過SU更改)

==================
20161216 5.Xtest



#===JAVA=====
yum -y install net-tools
yum -y install java-1.8.0-openjdk.x86_64
yum -y install wget vim
echo $JAVA_HOME
/usr/sbin/alternatives --config java
java -version
vim /etc/profile

find /usr/lib/jvm/java-1.x.x-openjdk

export JAVA_HOME="path that you found"
export PATH=$JAVA_HOME/bin:$PATH

vim /root/.bash_profile
echo $JAVA_HOME
#===JAVA=====
#===elasticsearch

vim /etc/hosts
nmtui

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.4.3/elasticsearch-2.4.3.rpm
rpm -ivh elasticsearch-2.1.1.rpm

vim /etc/elasticsearch/elasticsearch.yml
vim  /etc/sysconfig/elasticsearch
vim  /usr/lib/systemd/system/elasticsearch.service
 vim /etc/sysconfig/elasticsearch

firewall-cmd --permanent --add-port={9200/tcp,9300/tcp}
firewall-cmd --reload
sudo systemctl start elasticsearch.service
sudo systemctl status elasticsearch.service



cd /usr/share/elasticsearch/bin
./plugin install lmenezes/elasticsearch-kopf

hostname -F /etc/hostname

#kibana-5.x

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

echo "[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md" | tee /etc/yum.repos.d/kibana.repo

yum install -y kibana

firewall-cmd --permanent --add-port=5601/tcp
firewall-cmd --reload
systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana.service


vim config/kibana.yml
elasticsearch.url

Cent / Redhat Dns hosts 修改

更改CentOS /Redhat主機名稱步驟
假設此主機為mydns.net下的一部電腦,需命名為dns,
那麼FQDN(長主機名稱)為dns.mydns.net,
且有一個對外固定IP為140.116.86.xxx
則修改步驟如下
1.開啟終端機
2.執行 hostname確認目前主機名稱
   例如:localhost.localdomain
3.使用系統管理者權限備份 /etc/sysconfig/network 檔案
4.使用系統管理者權限,編輯/etc/sysconfig/network檔案
   假設原始內容為:
    NETWORKING=yes
    HOSTNAME=localhost.localdomain
   將其修改如下後存檔
    NETWORKING=yes
    HOSTNAME=dns.mydns.net
5.使用系統管理者權限備份/etc/hosts檔案

PS.於CentOS內的hosts 檔案方式並非系統要求的格式
但至CentOS7時也並未修改,其表示格式如下:

IP   FQDN   hostname


6.使用系統管理者權限,編輯/etc/hosts檔案
   假設原始內容為:
   127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
   ::1           localhost localhost.localdomain localhost6 localhost6.localdomain6
   將其修改如下後存檔

   127.0.0.1 dns.mypractice.net dns 
   ::1           dns.mypractice.net dns 
   60.250.oo.xx dns.mypractice.net dns
7.重開機
8.執行指令測試設定結果,檢查是否設定正確
    i.執行hostname(或cat /proc/sys/kernal/hostname)
      執行結果--> dns.mypractice.net
    ii.執行hostname -f
      執行結果-->dns.mypractice.net
    iii.執行hostname -i
      執行結果-->127.0.0.1 127.0.0.1 60.250.oo.xx
    iv.執行hostname -I
      執行結果-->60.250.oo.xx
後記:
若透過(hostname dns.mypractice.net)指令更改,
並重啟動網路(/etc/init.d/network/restart  或 service network restart)後,
只要重開機,
設定的新主機名稱就會還原為設定前的主機名稱,
若要永久更改主機名稱,請依照上列步驟更改

硬碟空間不足(inode)

前陣子遇到個很有趣的問題

硬碟空間足夠卻顯示硬碟空間不足無法寫入的情況

使用

df -h

發現硬碟空間容量都還有40%以上,但是為什麼會顯示這情形呢?

此時下

df -i

會發現裡面 inode 使用率 100%

兇手就是你呀....

原因是有許多瑣碎零散的檔案存放在硬碟中
故導致I node 被占用完

此時


方法有二

一、增加Inode 空間

二、查詢系統Inode占用空間清除不必要的零碎檔案

可透過

du -sm /*

查看占用的空間大小會以M為單位顯示於表頭,以下這組亦然。

du --max -depth=1 -B M|sort -g







2015年11月4日 星期三

rsync

在Linux 環境的檔案傳輸通常會使用CP

但當在丟到USB隨身碟時會有檔案複製不確定是否完成的疑慮

之前便是使用sync 藉由此指令來確認檔案是否寫入完成

後來找了找發現了rsync這套指令
似乎也不錯用


rsync --progress 顯示檔案傳輸的進度

參考網址說是給無聊的人用的
但我就是那個有需要這東西的無聊人士QAQ





====
參考網址
http://blog.xuite.net/jyoutw/xtech/20025390-rsync%E5%8F%83%E6%95%B8%E8%A9%B3%E8%A7%A3--990209

http://ericbbs.blogspot.tw/2009/08/rsync.html