任務(wù):
- 上次內(nèi)容回顧
- 本次內(nèi)容
- 定時(shí)任務(wù)
3.1 簡介
3.2 cron分類
3.3 cron使用指南
3.4 定時(shí)任務(wù)規(guī)則
3.5 定時(shí)任務(wù)的特殊符號
3.6 定時(shí)任務(wù)故障 - 書寫定時(shí)任務(wù)的時(shí)候 盡量使用腳本
- 腳本或命令 在定時(shí)任務(wù)中要定向到空或追加到文件
- 環(huán)境變量
- 定時(shí)任務(wù)案例
- 定時(shí)任務(wù)備份項(xiàng)目
3.7 總結(jié) - 磁盤管理
4.1 raid 級別及應(yīng)用場景
4.2 磁盤分區(qū)格式化與掛載
4.3 磁盤相關(guān)命令
5.總結(jié)
任務(wù):
[面試題]老男孩教育-三劍客筆試題集合
http://www.itdecent.cn/p/61d8883719ac
用戶相關(guān)面試題
- 定時(shí)任務(wù)
- 磁盤管理體系
1. 上次內(nèi)容回顧
- 把文件中的回車替換為空格
[root@oldboy64-yl ~]# seq 10 > num.txt
[root@oldboy64-yl ~]# cat num.txt
1
2
3
4
5
6
7
8
9
10
[root@oldboy64-yl ~]# tr '\n' ' ' < num.txt
1 2 3 4 5 6 7 8 9 10 [root@oldboy64-yl ~]#
- sed直接替換失敗原因
[root@oldboy64-yl ~]# sed 's#\n# #g' num.txt
1
2
3
4
5
6
7
8
9
10
# sed命令是1行1行處理 sed會把每一行讀取到內(nèi)存中(不會存入回車)
[root@oldboy64-yl ~]# sed ':label $!N;s#\n# #g;t label' num.txt
1 2 3 4 5 6 7 8 9 10
[root@oldboy64-yl ~]#
- 【一題試水平】 利用sed命令將test.txt中所有的回車替換成空格?
- http://www.itdecent.cn/p/25aab4d9f1ea
2. 本次內(nèi)容
- 定時(shí)任務(wù) 服務(wù)
定時(shí)執(zhí)行命令/腳本
定時(shí)進(jìn)行備份 - 磁盤管理體系
raid級別
磁盤分區(qū) 格式化 掛載
命令
3.定時(shí)任務(wù)
3.1 簡介
- 鬧鐘--->定時(shí)任務(wù)
定時(shí)任務(wù)服務(wù) crond(服務(wù)名稱)cronie 企業(yè)必備 atd 一次性的服務(wù) anoncron 服務(wù)器非7*24小時(shí)運(yùn)行
3.2 cron分類
| crond分類 | |
|---|---|
| 系統(tǒng)的定時(shí)任務(wù) | 1.系統(tǒng)中毒 2.定時(shí)日志切割(輪詢) |
| 用戶的定時(shí)任務(wù) |
[root@oldboy64-yl ~]# ll -d /etc/cron*
drwxr-xr-x. 2 root root 36 Jul 14 12:55 /etc/cron.d
drwxr-xr-x. 2 root root 57 Jul 11 23:45 /etc/cron.daily #里面的內(nèi)容每天1次
-rw------- 1 root root 0 Apr 11 2018 /etc/cron.deny #拒絕 黑名單
drwxr-xr-x. 2 root root 22 Jun 30 17:48 /etc/cron.hourly #每小時(shí)
drwxr-xr-x. 2 root root 6 Jun 10 2014 /etc/cron.monthly #每個(gè)月
-rw-r--r-- 1 root root 451 Jun 10 2014 /etc/crontab #系統(tǒng)定時(shí)任務(wù)配置
drwxr-xr-x. 2 root root 6 Jun 10 2014 /etc/cron.weekly #每周
[root@oldboy64-yl ~]#
- 系統(tǒng)定時(shí)任務(wù)+logrotate 日志切割(輪詢)
[root@oldboy64-yl ~]# ll /var/log/messages* /var/log/secure*
-rw------- 1 root root 151983 Aug 11 21:30 /var/log/messages
-rw------- 1 root root 67232 Jul 21 09:19 /var/log/messages-20190721
-rw------- 1 root root 83605 Jul 28 09:25 /var/log/messages-20190728
-rw------- 1 root root 85992 Aug 4 10:40 /var/log/messages-20190804
-rw------- 1 root root 723550 Aug 11 09:47 /var/log/messages-20190811
-rw------- 1 root root 2716 Aug 11 21:02 /var/log/secure
-rw------- 1 root root 21620 Jul 21 08:28 /var/log/secure-20190721
-rw------- 1 root root 7328 Jul 28 09:22 /var/log/secure-20190728
-rw------- 1 root root 26373 Aug 4 09:10 /var/log/secure-20190804
-rw------- 1 root root 65170 Aug 11 09:43 /var/log/secure-20190811
[root@oldboy64-yl ~]# ls /etc/cron.daily/
logrotate man-db.cron mlocate
[root@oldboy64-yl ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
[root@oldboy64-yl ~]# file /etc/cron.daily/logrotate
/etc/cron.daily/logrotate: POSIX shell script, ASCII text executable
[root@oldboy64-yl ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
[root@oldboy64-yl ~]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
[root@oldboy64-yl ~]#
3.3 cron使用指南
| 命令和文件 | 假設(shè)當(dāng)前root用戶 | |
|---|---|---|
| crontab | cron定時(shí)任務(wù)table(表) | |
| -e 編輯(與vi類似) | vi /var/spool/cron/root | |
| -l 顯示定時(shí)任務(wù) | cat /var/spool/cron/root | |
| /var/spool/cron/ | 用戶定時(shí)任務(wù)的配置文件目錄 | |
| /var/log/cron | 定時(shí)任務(wù)的日志文件 |
3.4 定時(shí)任務(wù)規(guī)則
- 定時(shí)任務(wù)格式:什么時(shí)間 做什么(命令或腳本)
[root@oldboy64-yl ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
[root@oldboy64-yl ~]#
| 第一個(gè)位置(min) | 第二個(gè)位置(hour) | 第三個(gè)位置 | 第4個(gè)位置 | 第五個(gè)位置 | 最后位置 |
|---|---|---|---|---|---|
| * | * | * | * | * | 命令或腳本 |
| 分鐘*相當(dāng)于是0-59 每分鐘 | 小時(shí) * 0-23 | 天 1-31 | 月份 1-12 | 周幾(1-6)0或7周日 |
- 分時(shí)日月周
- 每周日早上9:30 來上學(xué) (go to school)
30 09 * * 00 go to school
- 周日的半夜12點(diǎn),去 dbj
* 00 * * 00 dbj
書寫定時(shí)任務(wù)的時(shí)候 每個(gè)小時(shí)執(zhí)行 分鐘位置一般是整點(diǎn)00
00 00 * * 00 dbj
- 注意: 不要日期和周一起寫
- 練習(xí)題
寫一條計(jì)劃任務(wù),在每天晚上的3:05分執(zhí)行腳本/usr/script/#sh
05 03 * * * sh /usr/script/#sh
crontab里0 2 * * 1 /data/postmail/shell/a.sh表示什么
含義?
每周一凌晨2點(diǎn)執(zhí)行腳本/data/postmail/shell/a.sh
執(zhí)行腳本注意事項(xiàng):
[root@oldboy64-yl ~]# /etc/init.d/network
Usage: /etc/init.d/network {start|stop|status|restart|force-reload}
[root@oldboy64-yl ~]# sh /etc/init.d/network
Usage: /etc/init.d/network {start|stop|status|restart|force-reload}
[root@oldboy64-yl ~]# ll `which sh bash`
-rwxr-xr-x. 1 root root 964608 Oct 31 2018 /usr/bin/bash
lrwxrwxrwx. 1 root root 4 Jun 30 17:47 /usr/bin/sh -> bash
[root@oldboy64-yl ~]# #對這個(gè)腳本有讀權(quán)限就行
[root@oldboy64-yl ~]# #不需要執(zhí)行權(quán)限
3.5 定時(shí)任務(wù)的特殊符號
| 符號 | ||
|---|---|---|
| * | 每 | * * * * * |
| xx/n 每nxx執(zhí)行1次 | */2 * * * * cmd | */2 每2分鐘 每隔2分鐘 一樣的 |
| - | 7-11 | |
| , | 1,3,4 |
- 每隔xxx分鐘
每分鐘
* * * * * date >> /root/time.log
*/1 * * * * CMD
每個(gè)小時(shí)的第1分鐘
01 * * * * CMD3
- 每2分鐘把自己的名字寫入到/root/name.log
定時(shí)任務(wù)書寫流程
1.命令行測試命令OK?
2.書寫腳本 測試腳本
3.書寫定時(shí)任務(wù)規(guī)則 每分鐘
4.書寫定時(shí)任務(wù)規(guī)則 要求 檢查
1,檢查結(jié)果(追加 打包備份)
2,定時(shí)任務(wù)的日志
1.命令行
[root@oldboy64-yl ~]# echo lidao
lidao
[root@oldboy64-yl ~]# echo lidao `hostname`
lidao oldboy64-yl
[root@oldboy64-yl ~]# echo lidao `hostname`>> /root/name.log
[root@oldboy64-yl ~]# cat /root/name.log
lidao oldboy64-yl
#2.書寫定時(shí)任務(wù)
[root@oldboy64-yl ~]# crontab -l
#print name to file by yl at 20190812
*/2 * * * * echo lidao `hostname` >> /root/name.log
[root@oldboy64-yl ~]# tail -f /root/name.log
lidao oldboy64-yl
lidao oldboy64-yl

- 每天晚上12點(diǎn)打包備份 /etc/ 目錄到/backup下面 (保證每天的備份不
同) - 打包備份 命令行
[root@oldboy64-yl ~]# #1.命令行
[root@oldboy64-yl ~]# mkdir -p /backup/
[root@oldboy64-yl ~]# tar zcf /backup/etc.tar.gz /etc/
tar: Removing leading `/' from member names
[root@oldboy64-yl ~]# date +%F
2019-08-12
[root@oldboy64-yl ~]# date +%F_%H
2019-08-12_00
[root@oldboy64-yl ~]# date +%F_%Y-%m-%d
2019-08-12_2019-08-12
[root@oldboy64-yl ~]# date +%T_%H:%M:%S
00:12:36_00:12:36
[root@oldboy64-yl ~]# date +%w
1
[root@oldboy64-yl ~]# tar zcf /backup/etc-`date +%F`.tar.gz /etc/
tar: Removing leading `/' from member names
[root@oldboy64-yl ~]# ll /backup/
total 19984
-rw-r--r-- 1 root root 10228098 Aug 12 00:15 etc-2019-08-12.tar.gz
-rw-r--r-- 1 root root 10228098 Aug 12 00:15 etc.tar.gz
- 腳本與測試
[root@oldboy64-yl ~]# cat /server/scripts/bak.sh
#!/bin/bash/
cd / &&\
tar zcf /backup/etc-`date +%F`.tar.gz /etc/
[root@oldboy64-yl ~]# sh /server/scripts/bak.sh
tar: Removing leading `/' from member names
[root@oldboy64-yl ~]# ll /backup/
total 19984
-rw-r--r-- 1 root root 10228098 Aug 12 00:23 etc-2019-08-12.tar.gz
-rw-r--r-- 1 root root 10228098 Aug 12 00:15 etc.tar.gz
[root@oldboy64-yl ~]#
- 書寫定時(shí)任務(wù) 每分鐘執(zhí)行 測試
[root@oldboy64-yl ~]# crontab -l
#*/2 * * * * echo lidao `hostname` >> /root/name.log
#backup etc by yl at 20190812
* * * * * sh /server/scripts/bak.sh
[root@oldboy64-yl ~]#
[root@oldboy64-yl ~]# tail -f /var/log/cron
Aug 12 00:05:01 oldboy64-yl crond[6438]: (root) RELOAD (/var/spool/cron/root)
Aug 12 00:10:01 oldboy64-yl CROND[11574]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Aug 12 00:20:01 oldboy64-yl CROND[11637]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Aug 12 00:29:12 oldboy64-yl crontab[11688]: (root) BEGIN EDIT (root)
Aug 12 00:30:01 oldboy64-yl CROND[11691]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Aug 12 00:30:22 oldboy64-yl crontab[11688]: (root) REPLACE (root)
Aug 12 00:30:22 oldboy64-yl crontab[11688]: (root) END EDIT (root)
Aug 12 00:30:41 oldboy64-yl crontab[11695]: (root) LIST (root)
Aug 12 00:31:01 oldboy64-yl crond[6438]: (root) RELOAD (/var/spool/cron/root)
Aug 12 00:31:01 oldboy64-yl CROND[11697]: (root) CMD (sh /server/scripts/bak.sh)
Aug 12 00:32:01 oldboy64-yl CROND[11744]: (root) CMD (sh /server/scripts/bak.sh)
[root@oldboy64-yl ~]# ll /backup/
total 19984
-rw-r--r-- 1 root root 10228098 Aug 12 00:33 etc-2019-08-12.tar.gz
- 測試完成 修改時(shí)間為要求時(shí)間
[root@oldboy64-yl ~]# crontab -l
#*/2 * * * * echo lidao `hostname` >> /root/name.log
#backup etc by yl at 20190812
00 00 * * * sh /server/scripts/bak.sh
- 有一個(gè)/opt/backup.sh腳本,如何在10月的每天早上06到18每3小時(shí)
執(zhí)行并在13點(diǎn)單獨(dú)執(zhí)行一次。
\00 06-18/3,13 * 10 * sh /opt/bcakup.sh
3.6 定時(shí)任務(wù)故障
1. 書寫定時(shí)任務(wù)的時(shí)候 盡量使用腳本
- %
- 顯示腳本執(zhí)行過程
[root@oldboy64-yl ~]# sh -x /server/scripts/bak.sh
+ cd /
++ date +%F
+ tar zcf /backup/etc-2019-08-12.tar.gz /etc/
tar: Removing leading `/' from member names
[root@oldboy64-yl ~]#
# 帶+號行的 表示執(zhí)行過程
# +越多表示優(yōu)先執(zhí)行
# 沒有+ 號表示輸出 顯示到屏幕的內(nèi)容
2.腳本或命令 在定時(shí)任務(wù)中要定向到空或追加到文件
| 符號 | ||
|---|---|---|
| 定向到空 | >/dev/null 2>&1 &>/dev/null | 1>/dev/null 2>/dev/null 錯(cuò)誤正確信息都寫入到文件中 /dev/null 黑洞 命令或腳本 |
| 追加到文件 | >>/tmp/cron.log 2>&1 &>>/tmp/cron.log | 文件相當(dāng)于是 日志 |
#print name to file by yl at 20190812
#*/2 * * * * echo lidao `hostname` >> /root/name.log 2>&1
#backup etc by yl at 20190812
#00 00 * * * sh /server/scripts/bak.sh >/dev/null 2>&1
[root@oldboy64-yl ~]#
- 沒有定向到空或追加到文件
1,系統(tǒng)會有大量的你有1個(gè)新郵件的提示(postfix 郵件服務(wù)開啟)
您在 /var/spool/mail/root 中有新郵件
2,postfix服務(wù)關(guān)閉了,郵件無法發(fā)出 在郵件緩存目錄中生成大量小文件/var/spool/postfix/maildrop/
3. 環(huán)境變量
- 每分鐘顯示當(dāng)前系統(tǒng)ip地址和主機(jī)名,時(shí)間 追加到/tmp/ip.log中
- 命令行執(zhí)行腳本OK,定時(shí)任務(wù)運(yùn)行腳本PATH只有/bin和/usr/bin無法識別
/sbin/ip a
hostname
date
- 小結(jié):
定時(shí)任務(wù)執(zhí)行腳本坑:定時(shí)任務(wù)運(yùn)行腳本PATH只有/bin和/usr/bin其他的路徑無法識別
寫備份腳本
4. 定時(shí)任務(wù)案例
把/etc打包備份到/backup/10.0.0.200/etc-2018-11-11.tar.gz
[root@oldboy64-yl ~]# ipadd=10.0.0.200
[root@oldboy64-yl ~]# echo $ipadd
10.0.0.200
[root@oldboy64-yl ~]# touch $ipadd.txt
[root@oldboy64-yl ~]# ll
total 180420
-rw-r--r-- 1 root root 0 Aug 11 15:25 10.0.0.200
[root@oldboy64-yl ~]# ipadd=`hostname -I|awk '{print $1}'`
[root@oldboy64-yl ~]# echo $ipadd
10.0.0.200
[root@oldboy64-yl ~]# echo $ipadd.log
10.0.0.200.log
[root@oldboy64-yl ~]# ipadd=`hostname -I`
[root@oldboy64-yl ~]# echo $ipadd.log
10.0.0.200 .log
- 腳本內(nèi)容及測試
[root@oldboy64-yl ~]# cat /server/scripts/bak-etc-v2.sh
#!/bin/bash
ipaddr=`hostname -I|awk '{print $1}'`
dtime=`date +%F`
mkdir -p /backup/$ipaddr
tar zcf /backup/$ipaddr/etc-$dtime.tar.gz /etc/
[root@oldboy64-yl ~]# ll /backup/
total 19984
-rw-r--r-- 1 root root 10228109 Aug 12 17:35 etc-2019-08-12.tar.gz
-rw-r--r-- 1 root root 10228098 Aug 12 00:15 etc.tar.gz
[root@oldboy64-yl ~]# \rm -f /backup/*
[root@oldboy64-yl ~]# ll /backup/
total 0
[root@oldboy64-yl ~]# sh /server/scripts/bak-etc-v2.sh
tar: Removing leading `/' from member names
[root@oldboy64-yl ~]# ll /backup/10.0.0.200/
total 9992
-rw-r--r-- 1 root root 10228109 Aug 12 19:26 etc-2019-08-12.tar.gz
[root@oldboy64-yl ~]# tree /backup/
/backup/
└── 10.0.0.200
└── etc-2019-08-12.tar.gz
1 directory, 1 file
[root@oldboy64-yl ~]#
[root@oldboy64-yl ~]# crontab -l |tail -3
#backup etc
* * * * * sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1
[root@oldboy64-yl ~]#
#日志
[root@oldboy64-yl ~]# tail -f /var/log/cron
Aug 12 19:34:27 oldboy64-yl crontab[12915]: (root) END EDIT (root)
Aug 12 19:35:01 oldboy64-yl crond[6438]: (root) RELOAD (/var/spool/cron/root)
Aug 12 19:35:01 oldboy64-yl CROND[12934]: (root) CMD (sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1)
Aug 12 19:36:01 oldboy64-yl CROND[12949]: (root) CMD (sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1)
Aug 12 19:37:01 oldboy64-yl CROND[12974]: (root) CMD (sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1)
Aug 12 19:38:01 oldboy64-yl CROND[12990]: (root) CMD (sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1)
Aug 12 19:39:01 oldboy64-yl CROND[13004]: (root) CMD (sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1)
Aug 12 19:39:19 oldboy64-yl crontab[13014]: (root) LIST (root)
Aug 12 19:40:01 oldboy64-yl CROND[13018]: (root) CMD (sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1)
#打包備份成功
[root@oldboy64-yl ~]# tree /backup/
/backup/
└── 10.0.0.200
└── etc-2019-08-12.tar.gz
1 directory, 1 file
[root@oldboy64-yl ~]# ll /backup/10.0.0.200/etc-2019-08-12.tar.gz
-rw-r--r-- 1 root root 8126464 Aug 12 19:42 /backup/10.0.0.200/etc-2019-08-12.tar.gz
[root@oldboy64-yl ~]#
- 修改定時(shí)任務(wù)時(shí)間為要求的時(shí)間
[root@oldboy64-yl ~]# crontab -l
#print name to file by yl at 20190812
#*/2 * * * * echo lidao `hostname` >> /root/name.log 2>&1
#backup etc by yl at 20190812
#00 00 * * * sh /server/scripts/bak.sh >/dev/null 2>&1
#backup etc
00 00 * * * sh /server/scripts/bak-etc-v2.sh >/dev/null 2>&1
- 打包備份 /etc/rc.local /etc/fstab /var/spool/cron 到/backup
[root@oldboy64-yl ~]# tar zchf /backup/conf.tar.gz /etc/rc.local /etc/fstab /var/spool/cron/
tar: Removing leading `/' from member names
[root@oldboy64-yl ~]# ll /mnt/
total 0
[root@oldboy64-yl ~]# tar xf /backup/conf.tar.gz -C /mnt/
[root@oldboy64-yl ~]# ll /mnt/etc/
total 8
-rw-r--r-- 1 root root 568 Aug 11 18:04 fstab
-rwxr-xr-x 1 root root 473 Oct 31 2018 rc.local
[root@oldboy64-yl ~]# ll /mnt/var/spool/cron
total 4
-rw------- 1 root root 260 Aug 12 19:44 root
[root@oldboy64-yl ~]#
5. 定時(shí)任務(wù)備份項(xiàng)目
要求:
- 把/etc打包備份到/backup/10.0.0.200/etc-2018-11-11.tar.gz
- 把這個(gè)目錄下面 /backup/ip命名目錄下面 7天之前的備份刪除
- 刪除7天之前的備份但是要保留每周1的備份
[root@oldboy64-yl ~]# cat /server/scripts/bak-etc-v3.sh
#!/bin/bash
ipaddr=`hostname -I|awk '{print $1}'`
dtime=`date +%F_%w`
mkdir -p /backup/$ipaddr
#backup
tar zcf /backup/$ipaddr/etc-$dtime.tar.gz /etc/
#del
#find /backup/$ipaddr -type f -name "*.tar.gz" -mtime +7|xargs rm -f
find /backup/$ipaddr -type f -name "*.tar.gz" ! -name "*_1.tar.gz" |xargs rm -f
[root@oldboy64-yl ~]#
3.7 總結(jié)
- 格式 特殊符號
- 命令和腳本
- 變量 檢查腳本執(zhí)行過程
- 備份 定時(shí)執(zhí)行命令或腳本
4. 磁盤管理
raid 級別及應(yīng)用場景
磁盤分區(qū)格式化與掛載
no space left on device 故障
磁盤相關(guān)命令
4.1 raid 級別及應(yīng)用場景
- raid 磁盤冗余陣列
獲取更高的容量
獲取更高的性能
獲取更高的冗余(安全) - raid級別
| raid | 至少需要幾塊硬盤 | 性能 | 容量 | 冗余 | 應(yīng)用場景 |
|---|---|---|---|---|---|
| raid 0 條帶 | 1(安裝系統(tǒng)的時(shí)候必須要做raid) | 最快的 | 所有硬盤綜合 | 只要壞一塊都丟了 | |
| raid 1 鏡像 | 2 | 寫入慢 讀取相當(dāng)于是1塊硬盤 | 所有硬盤容量的一半 | 可以壞一半 | |
| raid 5 | 3 | 寫入慢 讀取OK | 損失一塊硬盤容量 | 壞一塊硬盤 | |
| raid 10 | 4塊 增加硬盤兩倍 | 讀寫性能很高 | 所有硬盤容量的一半 | 壞一半 |

4.2 磁盤分區(qū)格式化與掛載
- 環(huán)境準(zhǔn)備
[root@oldboy64-yl /]# fdisk -l |grep 'sd[a-z]'
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 2508799 1048576 82 Linux swap / Solaris
/dev/sda3 2508800 41943039 19717120 83 Linux
Disk /dev/sdb: 213 MB, 213909504 bytes, 417792 sectors
Disk /dev/sdc: 213 MB, 213909504 bytes, 417792 sectors
[root@oldboy64-yl /]#
| 磁盤相關(guān)詞匯 |
|---|
| 主分區(qū) |
| 擴(kuò)展分區(qū) |
| 邏輯分區(qū) |
-
磁盤開頭512字節(jié)
446 MBR 主引導(dǎo)記錄 引導(dǎo)系統(tǒng)啟動
image.png - 分區(qū)命令
fdisk
parted - /dev/sda sd(sas/sata/scsi)hd(ide)
- /dev/vdxx
- sas
serial (sata)
attached (+)
scsi
| fdisk | |
|---|---|
| p | 顯示磁盤分區(qū)信息 |
| n | 創(chuàng)建新磁盤分區(qū) |
| d | 刪除分區(qū) |
| w | 保存并退出 |
| q | 不保存退出 |
| 單詞記錄 | |
| primary | 主分區(qū) |
| extended | 擴(kuò)展分區(qū) |
| logical | 邏輯分區(qū) |
| default | 默認(rèn) |
[root@oldboy64-yl ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-417791, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-417791, default 417791): +10M
Partition 1 of type Linux and of size 10 MiB is set
Command (m for help): p
Disk /dev/sdb: 213 MB, 213909504 bytes, 417792 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 label type: dos
Disk identifier: 0x758985a6
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboy64-yl ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Aug 12 20:49 /dev/sdb
brw-rw---- 1 root disk 8, 17 Aug 12 20:49 /dev/sdb1
[root@oldboy64-yl ~]#
- 磁盤分區(qū) 格式化 掛載流程
[root@oldboy64-lnb ~]# #給/dev/sdb 進(jìn)行分區(qū) 只分1個(gè)分區(qū)
所有容量都給這個(gè)分區(qū)
[root@oldboy64-lnb ~]# #把/dev/sdb1 掛載到/mnt
#1.磁盤分區(qū)
[root@oldboy64-yl ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): p
Disk /dev/sdb: 213 MB, 213909504 bytes, 417792 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 label type: dos
Disk identifier: 0x758985a6
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-417791, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-417791, default 417791):
Using default value 417791
Partition 1 of type Linux and of size 203 MiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#2.磁盤格式化
[root@oldboy64-yl ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=12992 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=51968, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@oldboy64-yl ~]#
# xfs 文件系統(tǒng)類型 centos 7 默認(rèn)的
# ext4 centos 6 默認(rèn)的
# ext3 5
#3.磁盤掛載
[root@oldboy64-yl ~]# mount /dev/sdb1 /mnt
[root@oldboy64-yl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.3G 17G 12% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb1 200M 11M 190M 6% /mnt
[root@oldboy64-yl ~]#
#4. 永久掛載
#方法1./etc/rc.local
mount /dev/sdb1 /data
#方法2./etc/fstab
#開機(jī)自動掛載列表
| /etc/fstab 第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 |
|---|---|---|---|---|---|
| UUID或設(shè)備名稱 | 掛載點(diǎn)(目錄或swap) | 文件系統(tǒng)類型(xfs或ext4或swap) | 掛載參數(shù)(default) | 是否備份(dump) | 是否開機(jī)自動檢查(fsck) |
- 如何查詢設(shè)備的uuid
[root@oldboy64-yl ~]# ll /dev/sdb1
brw-rw---- 1 root disk 8, 17 Aug 12 21:04 /dev/sdb1
[root@oldboy64-yl ~]# blkid
/dev/sda1: UUID="daff218d-4ecc-484c-a479-efabd96c0467" TYPE="xfs"
/dev/sda2: UUID="f8a73e41-694e-4e02-bbb0-3dbc06d90f25" TYPE="swap"
/dev/sda3: UUID="47ec2d05-84dd-4131-86ec-426c706e9c01" TYPE="xfs"
/dev/sdb1: UUID="fe74cc6c-00b2-4c1d-9be2-7aac764412b8" TYPE="xfs"
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
[root@oldboy64-yl ~]#
[root@oldboy64-yl ~]# tail -1 /etc/fstab
/dev/sdb1 /data xfs defaults 0 0
[root@oldboy64-yl ~]# mount -a
[root@oldboy64-yl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.3G 17G 12% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 200M 11M 190M 6% /data
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
[root@oldboy64-yl ~]#
- parted使用指南
| parted(支持tab鍵) | |
|---|---|
| p | 顯示磁盤信息 |
| mklabel(mktable) | 創(chuàng)建磁盤分區(qū)表:dos(mbr)gpt |
| mkpart | 創(chuàng)建分區(qū) |
| rm | 刪除分區(qū) |
| q | 退出 |
| mbr | 最多支持4個(gè)主分區(qū) | 不支持2tb以上硬盤 |
|---|---|---|
| gpt | 最多支持70 80個(gè)主分區(qū) | 支持大硬盤 |
[root@oldboy64-yl ~]# parted /dev/sdc
GNU Parted 3.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of
commands.
(parted) mklabel gpt
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
(parted) mkpart
Partition name? []? primary
File system type? [ext2]? xfs
Start? 0
End? 10
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: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 10.0MB 9983kB primary
(parted) mkpart primary 10 20
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 10.0MB 9983kB primary
2 10.5MB 19.9MB 9437kB primary
(parted) q
Information: You may need to update /etc/fstab.
4.3 磁盤相關(guān)命令
| 磁盤命令集合 | |
|---|---|
| fdisk | |
| parted | |
| mount | |
| unmount | |
| dd | 創(chuàng)建指定大小文件 或測試磁盤性能(連續(xù)寫入) |
| fsck | 檢查磁盤 -a |
| fio | 隨機(jī)的讀寫速度 |
| dd | if | of | bs | count |
|---|---|---|---|---|
| input file | output file | block size | 次數(shù) | |
| /dev/zero 白洞 | 每次復(fù)制多少 | |||
| 1k 100 1M(大寫) |
5.總結(jié)
定時(shí)任務(wù)
http://www.itdecent.cn/p/d902ef6d3cf5
【面試題】定時(shí)任務(wù)磁盤
raid級別
磁盤分區(qū)格式化及掛載
測試磁盤性能 dd fio hdparm
