1、階段知識回顧java
服務器硬件,提高用戶的體驗(大型網站門戶網站數據放在內存,中小型企業放在磁盤)儘可能把請求往前推:memcached,redisnode
Buffer與Cache區別:mysql
buffer:觀看視頻的時候 轉圈,數據放在你的內存,存放這些數據的空間buffer區域 緩衝區,bufferinglinux
cache:提升觀看速度 ,主要是用來給用戶讀取在內存中的區域cache,緩存區。web
寫buffer 讀cache面試
寫緩衝 讀緩存redis
radis卡:sql
查看端口是否開啓:telnet,netstat -lntp ,ss -lntupshell
ps -ef :正在運行的進程。數據庫
安裝常見軟件:
[root@oldboy-01 ~]# yum install tree telnet nc nmap lrzsz dos2unix -y
nc與telnet用法基本相同。
nmap -p22 10.0.0.201 查看端口是否開啓
lrzssz :rz:上傳
sz:下載,sz /etc/hosts
永久修改主機名:/etc/sysconfig/network,修改配置文件。
修改主機名解析:/etc/hosts
幫助命令:
man ls,ls --help
vim 相關知識:
光標移動:
左下右上:hjkl
gg:第一行
G:最後一行,100G
光標移動到行尾:$
光標移動到行首:0或者^
vim編譯模式:
當前行下一行插入一行並進入編輯:o
光標位置至行尾刪除並進入編輯:C
光標位置至行尾位置刪除,不進入編輯:D,$d
光標移動至行尾,並進入編輯模式:A
複製光標所在行:yy
黏貼:p,屢次黏貼3p,4p
刪除/剪切:dd
刪除當前行至文件尾部:dG
vim常見故障:
編輯模式查找:/
繼續向下查找:n
繼續向上查找:N
撤銷當前的操做:u
撤銷剛纔的操做:ctrl+r
2、定時任務
(一)定時任務介紹
crond
atd:一次性
ana:不是7x24小時服務器
crond:
[root@oldboy-01 ~]# rpm -qa | grep cronie cronie-1.4.4-16.el6_8.2.x86_64 cronie-anacron-1.4.4-16.el6_8.2.x86_64 [root@oldboy-01 ~]# rpm -ql cronie /etc/cron.d /etc/cron.d/0hourly /etc/cron.deny /etc/pam.d/crond /etc/rc.d/init.d/crond /etc/sysconfig/crond /usr/bin/crontab /usr/sbin/crond /usr/share/doc/cronie-1.4.4 /usr/share/doc/cronie-1.4.4/AUTHORS /usr/share/doc/cronie-1.4.4/COPYING /usr/share/doc/cronie-1.4.4/ChangeLog /usr/share/doc/cronie-1.4.4/INSTALL /usr/share/doc/cronie-1.4.4/README /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz /usr/share/man/man8/cron.8.gz /usr/share/man/man8/crond.8.gz /var/spool/cron [root@oldboy-01 ~]#
系統的定時任務:系統會自動運行裏面的內容,系統中毒的時候。
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
系統定時任務+logrotate命令完成對日誌的日誌切割/日誌輪詢。
/etc/crontat #系統定時任務的配置文件之一。
用戶定時任務:
[root@oldboy-01 ~]# crontab -l
編輯模式:
[root@oldboy-01 ~]# crontab -e
定時任務存放的位置:
[root@oldboy-01 ~]# cat /var/spool/cron/root #root用戶名
確認crond正在運行:
方法1:
[root@oldboy-01 ~]# /etc/init.d/crond status
方法2:
[root@oldboy-01 ~]# ps -ef | grep crond
查看是否開機自啓動:
[root@oldboy-01 ~]# chkconfig | grep cron
crontab -r #刪除全部定時任務,沒有提示確認。
crontab 命令:有語法檢查功能。
crontab -e :==vim /var/spool/cron/root
crontab -l :==cat /var/spool/cron/root
定時任務的日誌文件:
/var/log/cron
定時任務黑名單,哪些用戶禁止使用定時任務:
/etc/cron.deny#用戶的名字寫進去
(二)定時任務格式
什麼時間作什麼事?
格式:時間 命令
時間:分、時、日、月、星期(0-6)
避免日和星期同時寫入。
定時任務中特殊符號:
星號(*):表示每的意思。
斜線(/n):每隔n
crontab中命令使用絕對路徑
[root@oldboy-01 ~]# crontab -e #print name to file by cyc */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
查看日誌:
[root@oldboy-01 ~]# tail -f /var/log/cron
減號(-):表示範圍 :
00 09-11 * * * cmd,整時運行;* 09-11 * * cmd,每分鐘運行
逗號(,):不連續的範圍,如:7,9,11等。
例子:* * * * * echo oldboy >> /oldboy.txt #每分鐘將名字追加到oldboy.txt中。
定時任務注意事項:
①測試號命令
②命令放入腳本中
③測試腳本
④檢查結果
(三)定時任務九局箴言
①定時任務以前加註釋
②使用腳本替代命令定時任務。腳本通常放在,/server/scripts。使用sh命令進行執行。
③定時任務date中的%百分號。默認表示換行,因此須要在%號前加撬棍。date +%F
④運行腳本使用,/bin/sh
⑤定時任務中命令或者腳本結果(正確錯誤)定向到黑洞(>/dev/null 2>&1),或者定向到文件:>/oldboy.txt 2>&1。
若是不定向:
郵件的軟件沒有開啓:大量小文件放在:[root@oldboy-01 ~]# ll /var/spool/postfix/maildrop/
郵件的軟件開啓:會有 you have new mail in /var/spool/mail/root
快捷鍵:A,光標移動到行尾,並進入編輯模式。DG:刪除當前行至文件尾部。
⑥避免沒必要要的程序及命令輸出。如:tar zcf,tar zcvf
⑦打包壓縮使用相對路徑(切換到目標目錄的上一級打包目錄)
cd /進入到被打包目錄的上一級目錄
cd /
tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
cd / && tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
⑧定時任務腳本中程序文件,儘可能使用絕對路徑
⑨系統與命令位置有關的環境變量問題
定時任務運行腳本的時候能夠識別的path只有/usr/bin 和/bin
定時任務腳本中的ifconfig ip ntpdate 提示command not found
解決方法:
使用絕對路徑,/sbin/ifconfig 使用絕對路徑。
在腳本開頭從新定義一個PATH。export PATH=/usr/local/sbin ...//
/bin /sbin
/usr/bin /usr/sbin
/usr/local/bin /usr/local/sbin
JAVA tomcat 裏面通常須要從新定義path環境變量
ifconfig eth0 | awk -F '[ :]+' 'NR==2{print $4}'
java環境變量:在腳本開頭添加export的環境變量。
rm -f #刪除大量文件會報錯。
須要:ls | xargs rm -f
(三)用戶管理
(1)開機自啓動
①/etc/rc.local
②經過chkconfig
如何讓腳本放在chkconfig
①腳本放在/etc/init.d/oldboyd
vim /etc/init.d/oldboyd
添加頭:#chkconfig: 2345 99 99
echo oldboy
②增長腳本執行權限
chmod +x /etc/init.d/oldboyd
③chkconfig --add oldboyd
④查看:chkconfig | grep oldboyd
chkconfig 背後的故事
s--stop
k--kill
[root@oldboy-01 maildrop]# chkconfig iptables on [root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt lrwxrwxrwx. 1 root root 18 Dec 18 00:36 S08iptables -> ../init.d/iptables [root@oldboy-01 maildrop]# chkconfig iptables off [root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables [root@oldboy-01 maildrop]#
驗證:
[root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables lrwxrwxrwx. 1 root root 20 Dec 18 00:43 S08iptables -> /etc/init.d/iptables [root@oldboy-01 maildrop]# chkconfig | grep ipt iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oldboy-01 maildrop]# mv /etc/rc3.d/K92iptables /tmp/ [root@oldboy-01 maildrop]# mv /etc/rc3.d/S08iptables /tmp/ [root@oldboy-01 maildrop]# chkconfig | grep ipt iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt [root@oldboy-01 maildrop]# [root@oldboy-01 maildrop]# [root@oldboy-01 maildrop]# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables [root@oldboy-01 maildrop]# chkconfig | grep ipt iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off [root@oldboy-01 maildrop]#
cat /etc/init.d/iptables
08開機順序
92關機順序
(2)用戶管理
用戶分類:
root:uid,0
虛擬用戶:uid,1-499
用戶的命令解釋器:/sbin/nologin
普通用戶:uid>500
用戶相關文件:
/etc/passwd 用戶信息
/etc/shadown 用戶密碼信息
/etc/group 用戶的用戶信息
/etc/gshadow 用戶組密碼信息
[root@oldboy-01 maildrop]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash [root@oldboy-01 maildrop]# tail -2 /etc/passwd qemu:x:107:107:qemu user:/:/sbin/nologin lisi:x:1011:1011::/home/lisi:/bin/bash [root@oldboy-01 maildrop]#
第一列:用戶
第二列:密碼,x
第三列:uid,1011
第四列:gid,1011
第五列:用戶說明信息(手工添加默認空,系統添加用戶有),添加的用戶空的,root是root
第六列:家目錄,:/home/lisi
第七列:用戶使用的命令解釋器,shell,/bin/bash,/sbin/nologin(虛擬用戶)
[root@oldboy-01 maildrop]# cat /etc/shells /bin/sh /bin/bash 默認 /sbin/nologin 虛擬機用戶 /bin/dash ubuntu /bin/tcsh unix /bin/csh unix 升級版
/etc/default/useradd:添加用戶的時候默認信息
[root@oldboy-01 ~]# ls -la /etc/skel/
drwxr-xr-x. 2 root root 4096 Nov 2 2018 .
drwxr-xr-x. 84 root root 12288 Dec 15 16:29 ..
-rw-r--r--. 1 root root 18 Mar 23 2017 .bash_logout #用戶退出會運行這裏的命令
-rw-r--r--. 1 root root 176 Mar 23 2017 .bash_profile #/etc/profile
-rw-r--r--. 1 root root 124 Mar 23 2017 .bashrc #/etc/bashrc
/etc/skel:
新用戶的老家的模板(新用戶家目錄的樣子)
請問以下登陸環境故障的原理及解決辦法?
-bash-4.1$
解決辦法:
①cp /home/oldboy/.bash* ~
②cp /etc/skel/.bash* ~
用戶管理之添加和刪除用戶:
點(當前目錄),星號(*)全部
useradd :
-u:指定uid
-s:指定使用的shell,默認/bin/bash,能夠手工設置/sbin/nologin
-M:表示不建立家目錄,通常建立虛擬用戶使用
-g:指定用戶屬於組(組名字)添加用戶的時候,默認建立一個用戶名同樣的組
-c:建立用戶指定用戶信息
添加一個用戶oldboy666指定uid爲888禁止用戶登陸系統,不建立家目錄。
[root@oldboy-01 ~]# useradd -s /sbin/noloin -u 888 oldboy666 -M [root@oldboy-01 ~]# id oldboy666 uid=888(oldboy666) gid=1013(oldboy666) groups=1013(oldboy666) [root@oldboy-01 ~]#
[root@oldboy-01 ~]# userdel oldboy666
後者在/etc/passwd 相應的用戶名加註釋
userdel -r :刪除用戶全部信息
usermod:修改用戶信息
-s:修改用戶使用的shell
-g:修改用戶組
-G:修改用戶屬於多個組
[root@oldboy-01 ~]# usermod -c 'xuniyonghu' zhangsan666 [root@oldboy-01 ~]# grep zhangsan666 /etc/passwd zhangsan666:x:1012:1012:xuniyonghu:/home/zhangsan666:/bin/bash [root@oldboy-01 ~]# [root@oldboy-01 ~]# usermod -g oldboy zhangsan666 [root@oldboy-01 ~]# id zhangsan666 uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy) [root@oldboy-01 ~]# [root@oldboy-01 ~]# usermod -G root,alex888,alex666 zhangsan666 [root@oldboy-01 ~]# id zhangsan666 uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy),0(root),1013(alex666),1014(alex888) [root@oldboy-01 ~]#
設置用戶密碼:
方法1: passwd oldboy 方法2 [root@oldboy-01 ~]# echo '123' | passwd --stdin oldboy Changing password for user oldboy. passwd: all authentication tokens updated successfully. [root@oldboy-01 ~]# history -c
密碼保存工具:keepass,
用戶管理之如何加強系統安全性和指紋驗證
①最小化安裝
②保護好root,進制root遠程登陸
修改遠程鏈接端口22
/var/log/secure 登陸日誌分析
③文件權限:
給系統經常使用命令+i
系統配置文件+a
④給文件或者命令作一個指紋
[root@oldboy-01 oldboy]# md5sum oldboy.txt 9cd0ec3f04d4b8ed2d752663b91bdc80 oldboy.txt [root@oldboy-01 oldboy]# echo 'zhangsan' >> oldboy.txt [root@oldboy-01 oldboy]# md5sum oldboy.txt 890e6d1a7a855c028d1186c3f0e3aa6e oldboy.txt [root@oldboy-01 oldboy]# md5sum oldboy.txt > polic.log [root@oldboy-01 oldboy]# cat polic.log 890e6d1a7a855c028d1186c3f0e3aa6e oldboy.txt [root@oldboy-01 oldboy]# md5sum -c polic.log oldboy.txt: OK [root@oldboy-01 oldboy]# echo 'zhangsa1n' >> oldboy.txt [root@oldboy-01 oldboy]# md5sum -c polic.log oldboy.txt: FAILED md5sum: WARNING: 1 of 1 computed checksum did NOT match [root@oldboy-01 oldboy]# 放入定時任務+md5sum定時檢測
面試題:
chown:修改文件或者目錄全部者和屬於的用戶組
-R:遞歸修改文件和目錄的全部者和用戶組
chown oldboy oldboy.txt#只修改文件的全部者
chown oldboy.oldboy oldboy.txt #修改用戶的全部者和所屬主
用戶組相關:
groupadd
建立用戶組
-g指定用戶組的gid數字
添加一個虛擬用戶mysql,指定用戶uid gid 都是999
方法1 [root@oldboy-01 /]# useradd -s /sbin/nologin -u 997 -M mysql [root@oldboy-01 /]# id mysql uid=997(mysql) gid=997(mysql) groups=997(mysql) 方法2 [root@oldboy-01 /]# groupadd -g 996 mysql1 [root@oldboy-01 /]# useradd -s /sbin/nologin -M -u 996 -g mysql mysql1 [root@oldboy-01 /]# id mysql1 uid=996(mysql1) gid=997(mysql) groups=997(mysql) [root@oldboy-01 /]#
查詢用戶信息:
id 用戶
/etc/group :查看用戶裏的用戶
w:
[root@oldboy-01 /]# w 02:33:33 up 1 day, 12:42, 1 user, load average: 0.08, 0.08, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 Wed01 0.00s 0.27s 0.01s w [root@oldboy-01 /]#
第一行:
第一列:當前系統時間
第二列:系統運行時間
第三列:遠程鏈接用戶數量
第四列:系統負載信息
第二行:
第一列:遠程登陸用戶名字
第二列:tty
第三列:從哪裏登陸的
最後一列:用戶在作什麼。
查詢系統性能命令:
w
uptime
top:uptime,free h,ps -ef,M,P
htop
iotop:顯示系統中每一個進程使用的磁盤io
iftop:查看網絡流量
last:查看用戶登陸信息
lastlog:系統中全部用戶最近登陸信息
Linux尚方寶劍(sudo)
ll /var/log/secure
su與su - :表示切換用戶的時候更新環境變量
如何使用:
[oldboy@oldboy-01 ~]$ sudo -l We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for oldboy:
配置sudu:
[root@oldboy-01 ~]# visudo 93 oldboy ALL=(ALL) /bin/ls,/bin/touch [root@oldboy-01 ~]#visudo -c
使用步驟:
[root@oldboy-01 ~]# su - oldboy [oldboy@oldboy-01 ~]$ sudo -l [sudo] password for oldboy: Matching Defaults entries for oldboy on this host: !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User oldboy may run the following commands on this host: (ALL) /bin/ls, (ALL) /bin/touch [oldboy@oldboy-01 ~]$ sudo ls /root/ access.log etc.bak.gz luffy.city oldboy.txt-hard anaconda-ks.cfg ifcfg-eth0 oldboy-2017-10-20 oldboy.txt.hard data install.log oldboy.txt oldboy.txt-soft etc.bak2.gz install.log.syslog oldboy.txt.bak [oldboy@oldboy-01 ~]$ sudo touch /root/alex.txt [oldboy@oldboy-01 ~]$ sudo ls /root/alex.txt /root/alex.txt [oldboy@oldboy-01 ~]$
visudo ==vim /etc/sudoers
受權命令:oldboy ALL=(ALL) /bin/ls, /bin/touch
C:刪除光標位置至行尾,並進入編輯模式。
A:進入行尾,並進入編輯模式。
若是受權全部:
oldboy ALL=(ALL) /bin/,而且排除su
94 oldboy ALL=(ALL) /bin/*, !/bin/su #根據ls -/bin 查看可使用的命令。
正常sudo須要密碼,在權限前增長:(NOPASSWD:),能夠不用使用輸入密碼。
(四)記錄用戶的操做記錄
①齊治的堡壘機:商業
②gateone web跳板機
③py開發的開源跳板機
Jumpserver部署
crazyEYC
④shell跳板機
3、磁盤
(一)磁盤結構
(1)磁盤基礎
分類:機械硬盤,固態硬盤
磁盤外部結構:盤片,主軸,磁頭
磁盤接口:
SAS:服務器標配。生成環境。15k轉數。
SATA:家庭電腦多用,容量大,價格便宜。性能要求不高,容量不大,線下服務。
SCSI:速度較快,造價較高。
PCI-E:通常爲固態硬盤,較快。較貴。大規模讀寫。高併發。
5400:rpm,每分鐘轉數。
磁盤內部組成:磁頭,磁道,扇區
盤面數量==磁頭數量,主要用來讀寫速度。
磁道:主要存放數據,以主軸爲圓心的的區域。
扇區:一個磁盤上最小存儲數據單位。默認512字節。
柱面:相同的盤面組成圓柱體。柱面的數量和磁道的數量相等。
磁頭讀取數據是按照柱面進行讀寫。磁頭的切換從0磁盤切換爲1磁頭。磁道的變化(尋道)
單元塊:表示一個柱面的大小。
(2)機械磁盤和固態硬盤區別
機械硬盤:容量大的價格低,抗打擊能力弱,讀寫速度慢,數據恢復容易,無限壽命。
固態機械硬盤:容量小价格貴,抗打擊能力強,讀寫速度快,數據恢復難,讀寫次數1-2萬次左右。
注意:重要數據放在機械硬盤。
(3)磁盤大小計算
[root@oldboy-01 ~]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders 255磁頭,63扇區/磁道 1305柱面 Units = cylinders of 16065 * 512 = 8225280 bytes 單元塊大小==柱面大小 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00015468
磁盤大小:柱面大小*柱面數量,柱面由磁道大小組成。
每一個柱面的大小=磁盤的大小*磁頭的數量
磁道的大小=扇區的大小*每一個磁道扇區大小
總結:512x63x255x1305字節byte
bit位,1Byte=8bits
單位換算:1KB=1024Byte
公式計算:
[root@oldboy-01 ~]# awk 'BEGIN{print 8225280*1305/1024/1024/1024}' 9.99681 [root@oldboy-01 ~]#
(二)raid卡
(1)raid卡基礎知識
磁盤冗餘陣列:
得到更大的容量
得到更高的性能
得到更強的安全性
陣列卡:
基礎raid卡
高級raid卡
(2)raid級別:
級別 最少硬盤 安全冗餘 可用容量 性能 使用場景 舉例
Raid0 1 最低 全部之和 讀寫最快 不要求安全只要求速度 數據庫從庫
Raid1 只能2塊 100% 一半 寫入慢,讀取正常 只追求安全,不追求速度 系統盤
Raid5 至少3(校驗) 最多損壞一塊 損失一塊盤的容量 寫入速度慢,讀取正常 要求安全,不要求速度 普通數據庫
Raid10 4 能夠損壞一半 損失全部硬盤一半的容量 讀寫速度很快 對於安全和速度都要的 數據庫主庫,存儲
raid5+spare:raid5+熱備盤,平時不用,損壞時候當即頂上。
raid10:兩個raid1,將兩個raid1作raid0。
(3)磁盤分區:
磁盤分區表:
位置:0磁頭0磁道1扇區:前446字節mbr主引導記錄
64字節的分區表
55AA表示的是結束標記
64字節分區表:主分區-擴展分區-邏輯分區
3個主分區,1個擴展分區(若是想使用,須要在擴展分區下建立邏輯分區)
存儲數據只有兩個分區:主分區和邏輯分區。
主分區:存放數據分區,最多有4個。
擴展分區:沒法直接使用,最多隻能有一個,必需要在擴展分區中建立邏輯分區纔可以使用。
邏輯分區:存放數據分區。
(4)磁盤命名:
sas/sata/scsi接口:以sd開頭
第一塊sas硬盤:sda
第三塊sas硬盤:sdc
分區命名:主分區,邏輯分區:1-4
邏輯分區:從5開始
磁盤格式化工具:fdisk(小於2個t),parted(大於2個t)
ctrl+u:刪除光標位置至行首。
建立磁盤分區過程:
[root@oldboy-01 ~]# fdisk -l | grep '/dev/sd[a-c]' Disk /dev/sda: 10.7 GB, 10737418240 bytes /dev/sda1 * 1 26 204800 83 Linux /dev/sda2 26 124 786432 82 Linux swap / Solaris /dev/sda3 124 1306 9493504 83 Linux Disk /dev/sdb: 106 MB, 106954752 bytes Disk /dev/sdc: 106 MB, 106954752 bytes [root@oldboy-01 ~]# fdisk -cu /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x5e6202b7. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (2048-208895, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): +30M Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): n Command action e extended p primary partition (1-4) e Partition number (1-4): 2 First sector (63488-208895, default 63488): Using default value 63488 Last sector, +sectors or +size{K,M,G} (63488-208895, default 208895): Using default value 208895 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First sector (65536-208895, default 65536): Using default value 65536 Last sector, +sectors or +size{K,M,G} (65536-208895, default 208895): +30M Command (m for help): p Disk /dev/sdb: 106 MB, 106954752 bytes 64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5e6202b7 Device Boot Start End Blocks Id System /dev/sdb1 2048 63487 30720 83 Linux /dev/sdb2 63488 208895 72704 5 Extended /dev/sdb5 65536 126975 30720 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@oldboy-01 ~]# ls -l /dev/sdb* brw-rw---- 1 root disk 8, 16 Dec 24 01:05 /dev/sdb brw-rw---- 1 root disk 8, 17 Dec 24 01:05 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Dec 24 01:05 /dev/sdb2 brw-rw---- 1 root disk 8, 21 Dec 24 01:05 /dev/sdb5 [root@oldboy-01 ~]#
(5)磁盤分區:
[root@oldboy-01 ~]# fdisk -cu /dev/sdb Command (m for help): p Disk /dev/sdb: 106 MB, 106954752 bytes 64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5e6202b7 Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (2048-208895, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): Using default value 208895 Command (m for help): p Disk /dev/sdb: 106 MB, 106954752 bytes 64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5e6202b7 Device Boot Start End Blocks Id System /dev/sdb1 2048 208895 103424 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@oldboy-01 ~]# ls -l /dev/sdb* brw-rw---- 1 root disk 8, 16 Dec 24 01:09 /dev/sdb brw-rw---- 1 root disk 8, 17 Dec 24 01:09 /dev/sdb1
通知系統磁盤分區:
[root@oldboy-01 ~]# partprobe /dev/sdb
建立文件系統:
[root@oldboy-01 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 25896 inodes, 103424 blocks 5171 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 13 block groups 8192 blocks per group, 8192 fragments per group 1992 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 39 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
關閉磁盤自動檢查功能:
[root@oldboy-01 ~]# tune2fs -c 0 -i 0 /dev/sdb1 tune2fs 1.41.12 (17-May-2010) Setting maximal mount count to -1 Setting interval between checks to 0 seconds [root@oldboy-01 ~]#
-c:關閉每掛載多少次進行磁盤檢查功能
-i:關閉每一個180天就進行磁盤檢查功能
磁盤分區掛載:
[root@oldboy-01 ~]# mount /dev/sdb1 /mnt/ [root@oldboy-01 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.9G 6.5G 23% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdb1 94M 1.6M 88M 2% /mnt [root@oldboy-01 ~]#
(6)永久開機自動掛載:
方法1:
將命令(mount /dev/sdb1 /mnt/)放入:/etc/rc.local
方法2:
/etc/fstab
vim /etc/fstab /dev/sdb1 /mnt ext4 defaults 0 0
(8)磁盤分區小結:
第一步:建立分區並通知系統分區表變化:fdisk,partprobe
第二步:格式化建立文件系統並關閉磁盤檢查
mkfs.ext4 /dev/sdb1
tune2fs -c 0 -i 0 /dev/sdb1
第三步:掛載和自動掛載
mount /dev/sdb1 /mnt
開機自動掛載:
/etc/rc.local
/etc/fstab
注意:卸載,umount /mnt
磁盤分區實戰
fdisk:
磁盤大小小於2TB
fdisk支持MBR
parted:
主要用於給磁盤大於2TB的進行分區
基於GPT分區表
print:顯示磁盤分區表信息
mklabel:建立磁盤分區表
gpt
msdos(mbr)
mkpart:建立分區
rm:刪除分區
q:退出不保存
建立分區:
[root@oldboy-01 ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: /dev/sdc: unrecognised disk label (parted) mklabel gpt (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags
建立磁盤:
[root@oldboy-01 ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: /dev/sdc: unrecognised disk label (parted) mklabel gpt (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted) mkpart primary 0 30 Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel? I (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 30.0MB 30.0MB primary (parted) mkpart primary 30 60 (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 30.0MB 30.0MB primary 2 30.4MB 59.8MB 29.4MB primary (parted) q Information: You may need to update /etc/fstab. [root@oldboy-01 ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) q [root@oldboy-01 ~]# parted /dev/sdc p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 30.0MB 30.0MB primary 2 30.4MB 59.8MB 29.4MB primary [root@oldboy-01 ~]#
(9)案例:java環境內存不足
建立控件文件塊: [root@oldboy-01 ~]# dd if=/dev/zero of=/tmp/100m bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.0815905 s, 129 MB/s 查看文件類型: [root@oldboy-01 ~]# file /tmp/100m /tmp/100m: data 將文件類型變成swap: [root@oldboy-01 ~]# mkswap /tmp/100m mkswap: /tmp/100m: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 10236 KiB no label, UUID=dc24e68c-5375-42ed-9199-5d8c0ca2968d 查看文件類型: [root@oldboy-01 ~]# file /tmp/100m /tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 2559 pages [root@oldboy-01 ~]# free -h total used free shared buffers cached Mem: 980M 344M 636M 248K 51M 109M -/+ buffers/cache: 183M 797M Swap: 767M 0B 767M 增長系統的swap生效: [root@oldboy-01 ~]# swapon /tmp/100m [root@oldboy-01 ~]# free -h total used free shared buffers cached Mem: 980M 346M 634M 248K 51M 109M -/+ buffers/cache: 185M 795M Swap: 777M 0B 777M 查看swapon [root@oldboy-01 ~]# swapon -s Filename Type Size Used Priority /dev/sda2 partition 786428 0 -1 /tmp/100m file 10236 0 -2 [root@oldboy-01 ~]#
永久生效:
方法1:/etc/rc.local
swapon /tmp/100m
方法2:/etc/fstab
/tmp/100m swap swap defaults 0 0
linux特色:會把使用過的命令和數據臨時存放在內存中,cache和buffer
linux文件系統:inode,blok,superblock
查看文件的superblock:
[root@oldboy-01 ~]# dumpe2fs /dev/sda3
常見的文件系統:
openSUSElinux默認的文件系統:ReiserFS文件系統
大量小文件。
IBM的AIX使用的jfs日誌文件系統。
centos7採用XFS文件系統。
mysql業務會選擇xfs。
centos6採用ext4文件系統。
視頻下載,流媒體,數據庫,小文件業務。
centos5採用ext3文件系統。
ext2:沒有日誌,藍汛的cache業務,CDN網站加速服務。
一個分區只能一種文件系統。