arp_cache設定

arp_cache: neighbor table overflow!

#sysctl -w net.ipv4.neigh.default.gc_thresh3=8192
#sysctl -w net.ipv4.neigh.default.gc_thresh2=8192
#sysctl -w net.ipv4.neigh.default.gc_thresh1=4096

https://www.serveradminblog.com/2011/02/neighbour-table-overflow-sysctl-conf-tunning/

廣告

怎麼增大Linux系統的open file(s)上限

 

#查看或設置open file限制

ulimit -n

 

@soft limit,軟限制,用戶可以上調軟限製到硬限制

ulimit -Sn

@hard limit,硬限制,非root用戶不能修改

ulimit -Hn

如果沒有指明,則同時修改軟限制和硬限制。

 

#臨時修改和永久修改

臨時修改只對當前會話有效,登出和重啟後都恢復系統設置。

@臨時修改

使用ulimit命令,以修改open file(s)為例。

ulimit -n 1024000

查看修改結果

ulimit -n

1024000

@永久修改

在/etc/security/limits.conf

或者在/etc/security/limits.d/目錄下添加一個文件。

具體格式參考/etc/security/limits.conf

 

#open file(s)上限

open file(s)kernel級別有2個配置,分別是:

fs.nr_open,進程級別

fs.file-MAX,系統級別

fs.nr_open默認設置的上限是1048576,所以用戶的open file(s)不可能超過這個上限。

@sysctl命令修改上限(臨時)

#sysctl -w fs.nr_open = 10000000

#ulimit -n 10000000

#ulimit -n

10000000

@修改上限(永久)

到/etc/sysctl.conf中

例如:

#echo“fs.nr_open = 10000000”>> /etc/sysctl.conf

#echo“fs.file-max = 11000000”>> /etc/sysctl.conf

注意:fs.nr_open總是應該小於等於fs.file-max。

 

#查看當前打開的文件數:

#sysctl fs.file-nr

fs.file-nr = 1760 0 11000000

 

參考:

http://www.chengweiyang.cn/2015/11/14/how-to-enlarge-linux-open-files-upper-cell/

Understanding Metaclass

http://blog.jobbole.com/21351/

http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python

Understanding Systemd Units, Unit Files and Directives

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

Git GC and reflog expire

git reflog expire –expire=now –all # Expire reflog immediately
git gc –prune=now # Remove dangling loose objects
git repack -ad # Remove dangling objects from packfiles (optional)
git fsck –unreachable # Check loose objects connectivity and validity

http://stevelorek.com/how-to-shrink-a-git-repository.html

https://gitbook.tw/chapters/faq/remove-files-from-git.html

https://stackoverflow.com/questions/5277467/how-can-i-clean-my-git-folder-cleaned-up-my-project-directory-but-git-is-sti

https://ithelp.ithome.com.tw/articles/10138150

Python magic methods & mixin

Magic methods: http://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-methods.html

Mixin: https://news.ycombinator.com/item?id=7994505

Docker image size optimization

Basic:
https://philipzheng.gitbooks.io/docker_practice/content/image/create.html

Advanced:

https://ypereirareis.github.io/blog/2016/02/15/docker-image-size-optimization/

[Python] Get socket name

import socket

def get_addr4():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((“8.8.8.8″, 80))
ip = s.getsockname()[0]
s.close()
return ip

print get_addr4()

Docker 從入門到實踐

# 匯入image
cat centos7.tar | sudo docker import – test/centos:7
# 進入centos
sudo docker run –name centos -it test/centos:7 bash
# 啟動已休眠的container
sudo docker start centos
# 執行已啟動的container
sudo docker exec -it centos bash
# 匯出container
sudo docker export centos > centos.tar
#存入image
sudo docker commit -m “Added nodejs" -a “John" debian test/centos:v2

https://philipzheng.gitbooks.io/docker_practice/content/image/create.html

RHEL / CentOS 7 安裝 NFS Server

NFS Server 安裝
安裝 NFS:
# yum install nfs-utils nfs-utils-lib

設定分享的目錄, 以下是 /var/nfsshare:
# mkdir /var/nfsshare
# chmod -R 777 /var/nfsshare/

開啟 /etc/exports 檔案, 加入以下內容:
/var/nfsshare 192.168.0.11(rw,sync,no_root_squash,no_all_squash)

啟動 NFS Server, 設定開機自動執行及在 firewalld 開放 NFS:
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl enable nfs-lock
# systemctl enable nfs-idmap
# systemctl start rpcbind
# systemctl start nfs-server
# systemctl start nfs-lock
# systemctl start nfs-idmap
# firewall-cmd –permanent –zone=public –add-service=nfs
# firewall-cmd –permanent –zone=public –add-service=rpc-bind
# firewall-cmd –reload

NFS Client 安裝
# yum install nfs-utils

建立 NFS 目錄掛載點:
mkdir -p /mnt/nfs/var/nfsshare

現在可以用 mount 指令掛載 192.168.0.10 分享出來的目錄:
# mount -t nfs 192.168.0.10:/var/nfsshare /mnt/nfs/var/nfsshare/

如果需要下次重新開機後就會自動掛載, 現在開啟 /etc/fstab, 加入以下內容:
192.168.0.10:/var/nfsshare /mnt/nfs/var/nfsshare nfs defaults 0 0

留意上面的 192.168.0.10 是 NFS Server 的 IP, 需要根據自己的情況修改。

—–

Fix the problem CentOS 7 won’t auto-mount NFS on boot

Append text to the end of /usr/lib/systemd/system/nfs-idmap.service

[Install]
WantedBy=multi-user.target

Append text to the end of /usr/lib/systemd/system/nfs-lock.service

[Install]
WantedBy=nfs.target

Enable related services

systemctl enable nfs-idmapd.service 
systemctl enable rpc-statd.service 

systemctl enable rpcbind.socket

systemctl status nfs-idmapd.service -l
systemctl status rpc-statd.service –l

Then restarted the OS, I got it.

shutdown -r now

Check whether mount works

systemctl start rpcbind
systemctl enable rpcbind
mount -a

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

建置 NFS Server 有三個重點組態檔:
/etc/exports
/etc/hosts.allow
/etc/hosts.deny

通常編輯 /etc/exports 就能讓 NFS 運作。

當一個 request 進來,伺服器會依序這樣作:
一、首先檢查是不是 hosts.allow 裡列的client,如果是就允許存取,如果不是就到下一個檢查。
二、接著檢查是不是 hosts.deny 裡列的client,如果是就拒絕存取,如果不是就到下一個檢查。
三、若這個 client 不在 hosts.allow 也不在 hosts.deny,那就允許這個 client 存取。

//————————————————
(安裝 NFS 套件)
apt-get update &&
apt-get install nfs-kernel-server

=>修改 /etc/default/portmap
確認 -i 127.0.0.1 是註解掉的

(禁止主機和伺服器進行NFS連接)
=>修改 /etc/hosts.deny
——————————
ALL:ALL
——————————
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
——————————

(允許主機和伺服器進行NFS連接)
=>修改 /etc/hosts.allow
——————————
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
——————————
portmap: 192.168.0.
lockd:   192.168.0.
rquotad: 192.168.0.
mountd:  192.168.0.
statd:   192.168.0.
——————————

(NFS掛載目錄及權限)
=>修改 /etc/exports
——————————
/home/sw/open_fd *(rw,sync,no_root_squash)
/home/sw/share_folder 192.168.0.*(rw,sync,no_root_squash)
——————————
更新
sudo exportfs -ra
sudo /etc/init.d/nfs-kernel-server restart

權限方面常見的參數(小括號內的參數):
rw:read-write,可讀寫的權限。
ro:read-only,唯讀的權限。
sync:資料同步寫入到記憶體與硬碟當中。
async:資料會先暫存於記憶體當中,而非直接寫入硬碟。
no_root_squash:登入 NFS 的使用者,如果是 root 時,對於這個分享的目錄來說,使用者具有 root 的權限。
root_squash:登入 NFS 的使用者,如果是 root 時,對於這個分享的目錄來說,使用者的權限都會被壓縮成為匿名使用者。
all_squash:不論登入 NFS 的使用者身份為何,使用者的權限都會被壓縮成為匿名使用者。

(檢查配置)
showmount -e NFS-SERVER-IP
(e.g)
showmount -e 192.168.13.5

(掛載遠端目錄)
mount -t nfs NFS-SERVER-IP:SHARE-PATH-FD MOUNT
mount -F nfs [-o mount-options] server:/directory /mount-point
(e.g)
mount -t nfs 192.168.13.15:/home/sw/open_fd /mnt

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

Reference URL:

https://www.phpini.com/linux/rhel-centos-7-install-nfs-server

https://unix.stackexchange.com/questions/211688/cannot-start-nfs-in-centos-7-failed-to-issue-method-call-no-such-file-or-direc

http://welkinchen.pixnet.net/blog/post/5251478-ubuntu-nfs-連線

https://dywang.csie.cyut.edu.tw/dywang/rhce7/node61.html