Linux學(xué)習(xí)第7周定時(shí)任務(wù)與磁盤管理

任務(wù):

  1. 上次內(nèi)容回顧
  2. 本次內(nèi)容
  3. 定時(shí)任務(wù)
    3.1 簡介
    3.2 cron分類
    3.3 cron使用指南
    3.4 定時(shí)任務(wù)規(guī)則
    3.5 定時(shí)任務(wù)的特殊符號
    3.6 定時(shí)任務(wù)故障
  4. 書寫定時(shí)任務(wù)的時(shí)候 盡量使用腳本
  5. 腳本或命令 在定時(shí)任務(wù)中要定向到空或追加到文件
  6. 環(huán)境變量
  7. 定時(shí)任務(wù)案例
  8. 定時(shí)任務(wù)備份項(xiàng)目
    3.7 總結(jié)
  9. 磁盤管理
    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 ~]# 

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
image.png
  • 每天晚上12點(diǎn)打包備份 /etc/ 目錄到/backup下面 (保證每天的備份不
    同)
    1. 打包備份 命令行
[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
    1. 腳本與測試
[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 ~]# 
    1. 書寫定時(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
    1. 測試完成 修改時(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)目

要求:

  1. 把/etc打包備份到/backup/10.0.0.200/etc-2018-11-11.tar.gz
  2. 把這個(gè)目錄下面 /backup/ip命名目錄下面 7天之前的備份刪除
  3. 刪除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塊 增加硬盤兩倍 讀寫性能很高 所有硬盤容量的一半 壞一半
image.png

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 觀其大綱 第1部分Linux的基礎(chǔ)知識第1章Linux概述第2章Linux系統(tǒng)的安裝KickStart開始自動安裝...
    周少言閱讀 1,664評論 1 10
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,304評論 0 5
  • raid0: mdadm –assemble /dev/md0 /dev/sda1 /dev/sdb1 使用sda...
    SkTj閱讀 4,044評論 0 0
  • 今天看到一位朋友寫的mysql筆記總結(jié),覺得寫的很詳細(xì)很用心,這里轉(zhuǎn)載一下,供大家參考下,也希望大家能關(guān)注他原文地...
    信仰與初衷閱讀 4,826評論 0 30
  • 今天上午奶奶把我的磁鐵積木拿出來了,我要玩一會積木。 我正在想要拼什么的時(shí)候,抬頭看了看窗外,看見有一些像...
    田田糖糖閱讀 141評論 0 0

友情鏈接更多精彩內(nèi)容