第1章 磁盤空間不足
執行個體1-1 no space left on device 原因 如何排查與解決
1.inode df -i ; 找出系統中目錄大小大于1M 确認之後 删除大量小檔案
2.block df -h ; du -sh 一層一層查找 确認之後 删除檔案
第2章 檔案屬性
2.1 檔案類型:
2.1.1 擴充名
.conf 配置檔案
.sh 腳本
.tar.gz 壓縮包
.py python腳本
2.1.2 檔案類型:
1.二進制檔案(指令)
2.文本檔案(text)
3.資料檔案(data)需要單獨指令檢視
f file 檔案
d dir 目錄
l softlink 軟連接配接
b block 塊裝置
c character 字元裝置
p pipe 管道
s socket 套接字
[root@oldboyedu50-lnb /tmp]# file /bin/ls /etc/hosts /tmp/etc-pai.tar.gz
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
/etc/hosts: ASCII text
/tmp/etc-pai.tar.gz: gzip compressed data, from Unix, last modified: Fri Jul 20 02:39:55 2018
[root@oldboyedu50-lnb /tmp]# ll etc.tar.gz
-rw-r--r-- 1 root root 9734648 Jul 20 01:41 etc.tar.gz
[root@oldboyedu50-lnb /tmp]# mv etc.tar.gz etc.txt
[root@oldboyedu50-lnb /tmp]# ll etc.txt
-rw-r--r-- 1 root root 9734648 Jul 20 01:41 etc.txt
2.2 檔案權限
r----read 可讀 4
w----write 可寫 2
x----execute 可執行 1
- 0
2.2.1 權限的計算
-rw- r-- r-- 2 root root 186 Jul 26 11:19 /etc/hosts
420 400 400
6 4 4
1.字元轉換數字
-rw-r----- 640
-r--r--r-- 444
-rw-r--r-- 644
-rw------- 600
2.數字轉換字元
644 -rw-r--r--
755 -rwxr-xr-x
400 -r--------
640 -rw-r-----
2.3 連結:
軟連接配接(softlink 或 符号連結 symlink) 硬連結 (hard link)
2.3.1 硬連結:
在同一個磁盤分區中,檔案的inode号碼相同,互為硬連結
1.特點 同一個分區中 inode相同的檔案,互為硬連結
2.防止誤删除
3.徹底删除一個檔案條件:
檔案硬連結數為0(rm)
建立硬連結 ln指令建立
[root@oldboyedu50-lnb /oldboy]# echo oldboyedu.com > oldboy.txt
[root@oldboyedu50-lnb /oldboy]# ll oldboy.txt
-rw-r--r-- 1 root root 14 Jul 27 21:49 oldboy.txt
[root@oldboyedu50-lnb /oldboy]# ln oldboy.txt oldboy.txt-hard
-rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt
[root@oldboyedu50-lnb /oldboy]# ll -i oldboy.txt oldboy.txt-hard
1046996 -rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt
1046996 -rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt-hard
2.3.2 軟連接配接:
相當于windows快捷方式 存放的源檔案的位置
建立軟連接配接
[root@oldboyedu50-lnb /oldboy]# ln -s oldboy.txt oldboy.txt-soft
[root@oldboyedu50-lnb /oldboy]# ls -l oldboy.txt*
-rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt-hard
lrwxrwxrwx 1 root root 10 Jul 27 22:09 oldboy.txt-soft -> oldboy.txt
lrwxrwxrwx 1 root root 18 Jul 27 22:16 oldboy.txt-soft2 -> /oldboy/oldboy.txt
[root@oldboyedu50-lnb /oldboy]# mv alex.txt oldboy.txt
2.4 檔案删除原理:
1.硬連接配接數為0 rm
2.程序調用數為0 是否有人使用
2.4.1 如何檢視 被占用的檔案
lsof |grep oldboy.txt tail -f /oldboy/oldboy.txt
list open files
[root@oldboyedu50-lnb /oldboy]# lsof |grep oldboy.txt
tail 3755 root 3r REG 8,3 14 1046996 /oldboy/oldboy.txt
指令或服務名稱 檔案大小 inode号碼 檔案名
執行個體2-1 模拟 檔案沒有被徹底删除(i_link)為0 程序調用數(i_count)不為0
seq 500000000 >>/var/log/messages
1.檢視磁盤使用
[root@oldboyedu50-lnb /oldboy]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 17G 1.1G 95% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
[root@oldboyedu50-lnb /oldboy]# du -sh /*|sort -h |tail -1
16G /var
[root@oldboyedu50-lnb /oldboy]# du -sh /var/*|sort -h|tail -1
16G /var/log
[root@oldboyedu50-lnb /oldboy]# du -sh /var/log/*|sort -h|tail -1
16G /var/log/messages
2.删除這個檔案
[root@oldboyedu50-lnb /oldboy]# ll /var/log/messages
-rw------- 1 root root 16197811985 Jul 27 23:00 /var/log/messages
tmpfs 931M 0 931M 0% /dev/shm
[root@oldboyedu50-lnb /oldboy]# \rm -f /var/log/messages
3.磁盤空間不足 繼續通過du -sh 排查
[root@oldboyedu50-lnb /oldboy]# du -sh /* |sort -h |tail
du: cannot access `/proc/3800/task/3800/fd/4': No such file or directory
du: cannot access `/proc/3800/task/3800/fdinfo/4': No such file or directory
du: cannot access `/proc/3800/fd/4': No such file or directory
du: cannot access `/proc/3800/fdinfo/4': No such file or directory
376K /root
7.6M /bin
16M /sbin
27M /lib64
30M /etc
38M /boot
80M /var
114M /tmp
214M /lib
1.1G /usr
4. 原因:檔案沒有被徹底删除
找出這個被占用檔案
[root@oldboyedu50-lnb /oldboy]# lsof |grep messages
rsyslogd 1412 root 4w REG 8,3 16197811985 392705 /var/log/messages (deleted)
5.解決
#deleted lsof标記 表示檔案硬連結數為0 程序調用數不為0
#程序調用數為0 ==== 重新開機服務/軟體
[root@oldboyedu50-lnb /oldboy]# /etc/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
/dev/sda3 19G 1.6G 17G 9% /
tmpfs 931M 0 931M 0% /dev/shm