-i inode節點號
-h 人類可讀node
ls -lhi 1703938 drwxr-xr-x 2 rsync rsync 4.0K Jun 7 07:24 gameserver1 第一列:文件的索引節點號(人的身份證,linux系統惟一) 系統讀取文件時首先經過文件名找到inode,而後才能讀取文件內容。 第二列:文件的類型和權限,第一個字符文件的類型,後九個字符是文件的權限,最後一個字符.是和selinux相關的標識 第三列:硬連接的數量,同一個文件的不一樣的訪問路口 第四列:文件或目錄所屬的用戶,屬主 linux裏面文件和程序的存在必需要有用戶和組知足的存在需求 第五列:文件或目錄所屬的組 第六列:文件大小 第七列:第八列:第九列:文件的修改時間 對應的是-mtime時間,默認是月日時分 ctime是屬性的改變,atime訪問 第十列:文件名稱 文件名不算文件的屬性
inode 索引節點,英文就是 index node
硬盤要存儲數據,首先要分區,而後格式化建立文件系統,最後存儲數據mysql
每一個linux存儲設備或存儲設備的分區被格式化爲ext4文件系統後(管理文件的一種機制),通常生成2部分,inode和blocklinux
block是用來存儲數據的用的。
inode就是用來存儲數據屬性信息的(至關於ls -l的結果),inode屬性信息包括不限於文件大小,屬主,歸屬的用戶組,文件權限,文件類型,修改時間,還包含指向文件實體的指針,可是inode裏面惟獨不包含文件名,還會爲每一個文件進行信息索引,就是inode的數值。sql
書的目錄索引就至關於inode,每一頁至關於block,整本書就是一個扇區shell
stat 顯示文件,文件系統狀態(查看文件屬性)
stat /etc/hosts 也能夠查看inode,詳細的查看文件信息數據庫
[root@Poppy ~]# stat /etc/hosts File: ‘/etc/hosts’ Size: 204 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 1183348 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-06-19 14:10:17.421425118 +0800 Modify: 2018-06-14 14:05:07.713140443 +0800 Change: 2018-06-14 14:05:07.716140534 +0800 Birth: -
由於inode要存放文件的屬性,因此每一個inode自己是有大小的,centos5默認大小事128字節,centos6是256字節,inode的大小在文件系統被格式化建立文件系統以後定下來的,格式化之後就沒法更改inode大小,格式化以前能夠經過參數指定inode的大小,可是通常不須要改apache
文件系統的默認inode大小 [root@Poppy ~]# dumpe2fs /dev/vda1|grep -i "inode size" dumpe2fs 1.42.9 (28-Dec-2013) Inode size: 256 文件系統inode總量以及剩餘量 [root@Poppy ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vda1 2621440 151967 2469473 6% / devtmpfs 233122 320 232802 1% /dev tmpfs 235465 1 235464 1% /dev/shm tmpfs 235465 406 235059 1% /run tmpfs 235465 16 235449 1% /sys/fs/cgroup tmpfs 235465 1 235464 1% /run/user/0 磁盤空間是否滿了,第一個是inode是否滿了,第二個事block滿了 磁盤滿了的特徵 no space device left on
咱們總結一下inode節點windows
1. 磁盤被分區並格式化爲ext3/ext4文件系統後會生成必定數量的inode和block 2. inode稱爲索引節點,它的做用就是存放文件的屬性信息以及做爲文件的索引(指向文件的實體) 3. ext3/ext4文件系統的block存放的是文件的實際內容 4. inode是磁盤上的一塊存儲空間,centos6非啓動分區inode默認大小256字節,centos5是128字節 5. inode的表現形式是一串數字,不一樣的文件對應的inode(一串數字)在文件系統裏是惟一的。 6. inode相同的文件,互爲硬連接文件 7. ext3/ext4文件系統下,一個文件被建立後至少要佔用一個inode和一個block 8. ext3/ext4文件系統下,正常狀況下一個文件佔用且只能佔用一個inode 9. block是用來存儲數據的,每一個block大小通常有1k,2k,4k幾種,其中引導分區等爲1k,其餘普通分區爲4k 10. 若是一個文件很大,可能佔多個block,若是文件很小,至少也要佔一個block,而且這個block的剩餘空間就浪費了,即沒法在存儲其餘數據了 11. inode大小和block總量查看 [root@Poppy ~]# dumpe2fs /dev/vda1 |egrep -i "block size|inode size" dumpe2fs 1.42.9 (28-Dec-2013) Block size: 4096 Inode size: 256 [root@Poppy ~]# dumpe2fs /dev/vda1 |egrep -i "block count|inode count" dumpe2fs 1.42.9 (28-Dec-2013) Inode count: 2621440 Block count: 10485248 Reserved block count: 524262 默認block count通常會大於inode count的數量 12. 查看inode的總量和使用量命令 df -i 13. 查看文件的inode ls -li 或 stat /etc/hosts 14. 改變inode大小 格式化的時候: mkfs.ext4 -b 2048 -I 256 /dev/sda
1. block塊centos
1. 磁盤讀取數據是按block爲單位讀取的 2. 一個文件可能佔用多個block。可是每讀取一個block就會消耗一次磁盤i/o 3. 若是要提高磁盤io性能,那麼就要儘量一次性讀取數據儘可能的多 4. 一個block只能存放一個文件的內容,不管內容有多小。若是blcok默認是4K大小,那麼存放一個1K的文件,剩餘3K就不能存放別的文件,只能浪費了 5. block太大,例如4k,文件都是0.1k,浪費磁盤空間,可是訪問性能高 6. block過小,例如1k,文件都是1000k,消耗大量磁盤I/O 7. block的大小設置十四載格式化分區時候肯定的,mkfs.ext4 -b 2048 -I 256 /dev/vda/ 8. 企業裏文件都比較大(通常大於4K),block設置大一些會提高磁盤訪問效率 9. ext3/ext4文件系統,通常都是設置爲4k
2. inode和block的總結bash
1. 磁盤被分區格式化文件系統後,會分爲inode和block倆部份內容 2. inode存放文件的屬性以及指向文件實體的指針,文件名不在inode裏,通常上級目錄的block裏 3. 訪問文件,經過文件名---inode---blocks 4. inode通常狀況下大小是256b,block大小1,2,4k,默認是4k,注意,引導分區等特殊分區除外 5. 經過df -i查看inode的數量以及使用狀況,dumpe2fs /dev/vda1 查看inode及block的大小及數量 6. 一個文件至少要佔用一個inode及一個block,多個文件能夠佔用同一個inode(硬連接),相同文件 7. 一個block只能被一個文件使用,若是文件很小block很大,剩餘空間浪費,沒法繼續被其餘文件使用 8. block不是越大越好,要根據業務的文件大小進行選擇,通常默認4k 9. 能夠在格式化的時候改變inode及block的大小
ls -lhi 1703938 drwxr-xr-x 2 rsync rsync 4.0K Jun 7 07:24 gameserver1
一 文件類型
在inux系統中,一切皆文件
普通文件的建立:touch cp > tar
1. 普通文件包括:
2. 目錄文件
[root@Poppy joker]# tree -Ld 1 /joker 顯示目錄結構 /joker ├── gameserver1 ├── gameserver2 ├── scripts └── tools 4 directories -L layer層數, -d目錄
3. 字符設備文件
字符設備或塊設備 [root@Poppy joker]# ls -al /dev/tty crw-rw-rw- 1 root tty 5, 0 Jun 12 11:33 /dev/tty
4. 塊設備文件
什麼是塊設備,就是存放數據的,就是磁盤 [root@Poppy ~]# find /dev -type b|xargs ls -l brw-rw---- 1 root disk 253, 0 Jun 6 14:09 /dev/vda brw-rw---- 1 root disk 253, 1 Jun 6 14:10 /dev/vda1
5. 套接字文件
用於網絡通訊的,數據庫mysql.sock
[root@Poppy ~]# find /dev -type s |xargs ls -l srw-rw-rw- 1 root root 0 Jun 6 22:09 /dev/log
6. 符號連接文件
快捷方式,指向文件的實體
[root@Poppy ~]# find /application/ -type l|xargs ls -l lrwxrwxrwx 1 root root 26 Jun 13 10:30 /application/apache -> /application/apache2.4.33/
7. 管道文件
特殊的文件類型,主要是解決多個程序同時訪問一個文件所形成的錯誤,第一個字符爲p
8. 擴展名文件
linux中的文件是不須要擴展名的,爲了 兼容window,便於咱們大多數習慣了windows的用戶區分文件的不一樣
如何查看文件類型:
[root@Poppy joker]# file a a: ASCII text [root@Poppy joker]# file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped [root@Poppy joker]# file /var/log/wtmp /var/log/wtmp: data
二 權限位
- 沒有權限 0 , r 4 w 2 x 1
前三位 屬主權限位(用戶權限位),中三位 屬組權限位(用戶組),後三位 其它用戶權限位
三 關於.
.與selinux相關的狀態,若是把selinux關閉,目錄文件將不會有這個.
一種是硬連接,還有一種是軟鏈接或符號連接
1. 硬連接
經過ln命令建立的硬連接,而經過ln -s建立的連接是軟連接
命令演示 ln 源文件 目標文件 ln -s 源文件 目標文件,不能事先存在
硬連接是經過inode來進行連接,在linux系統中,多個文件名指向同一個索引節點是正常容許的,這種狀況的文件就稱爲硬連接文件。硬連接文件就至關於文件的另一個入口。做用之一是容許一個文件擁有多個有效路徑名,以防止誤刪除。
[root@Poppy joker]# echo 1 > a [root@Poppy joker]# ln a b [root@Poppy joker]# ls -lhi total 744K 1717994 -rw-r--r-- 2 root root 2 Jun 20 14:06 a 1717994 -rw-r--r-- 2 root root 2 Jun 20 14:06 b 因此即便你刪除了a,還能經過b來恢復重定向
linux下文件刪除的原理
只要文件的inode還有一個以上的硬連接,只刪除其中一個硬連接並不影響inode自己和其它的連接,只有當文件的最後一個連接被刪除後,被刪除的文件的數據塊纔會被釋放。
i_link(硬連接數量),爲0,文件就被刪除。
i_count(進程引用計數),爲0,文件就被刪除。
文件的刪除條件爲,i_link和i_count都爲0,纔可刪除文件,雖然刪除仍是刪除的inode節點,並非真正刪除內容,可是後面產生的新數據會覆蓋這些數據
若是你刪除文件,可是磁盤仍是沒有釋放空間,多數由於進程還在調用這個文件,能夠重啓服務,或者經過重定向清空文件
硬連接知識小結:
1. 具備相同inode節點號的多個文件是互爲硬連接文件 2. 刪除硬連接文件或者刪除源文件任意之一,文件實體並未被刪除 3. 只有刪除了源文件及全部對應的硬連接文件,文件實體纔會被刪除 4. 當全部的硬連接文件及源文件被刪除後,再存放新的數據會佔用這個文件的空間,或者磁盤fsck檢查的時候,刪除的數據也會被系統回收 5. 硬連接文件就是文件的另外一個入口 6. 能夠經過給文件設置硬連接文件,來防止重要文件被誤刪除 7. 經過執行命令「ln 源文件 硬連接文件」,便可完成建立硬連接 8. 硬連接文件是普通文件,所以能夠用rm命令刪除 9. 對於靜態文件來說,當對應硬連接數爲0,文件就被刪除,ls -l第三列就是
2. 軟連接
快捷方式,就是一個指向
[root@Poppy joker]# ls -lhi a b 1717994 -rw-r--r-- 1 root root 0 Jun 20 14:50 a 1717995 lrwxrwxrwx 1 root root 1 Jun 20 14:50 b -> a 訪問軟連接的時候其實軟連接保存了源文件的路徑地址
軟鏈接知識小結:
建立軟鏈接源文件是須要存在的,要建立的軟鏈接文件是不能存在的,是要用ln命令建立的 1. 軟鏈接相似windows的快捷方式(能夠經過readlink查看其指向) 2. 軟鏈接相似一個文件文件,裏面存放的是源文件的路徑,指向源文件實體 3. 刪除源文件,軟鏈接文件依然存在,可是沒法訪問指向的源文件路徑內容了 4. 失效的時候通常是白字紅底閃爍提示 5. 執行命令「ln -s 源文件 軟鏈接文件」,便可完成建立軟連接(目標不能存在) 6. 軟鏈接和源文件是不一樣類型的文件,也是不一樣的文件。inode號也不相同 7. 軟鏈接文件的文件類型爲l,能夠用rm命令刪除
目錄軟鏈接知識:
.爲何是當前目錄,由於它與當前目錄互爲硬連接 [root@Poppy joker]# ls -aldi gameserver1 gameserver1/. 1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1 1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1/. ..爲何是上級目錄,由於它與上級目錄互爲硬連接 [root@Poppy joker]# ls -aldi gameserver1 gameserver1/. gameserver1/2/.. 1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1 1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1/. 1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1/2/.. 1. 對於目錄,不能夠建立硬連接,可是能夠建立軟連接 2. 對於目錄的軟鏈接是生產場景運維中的經常使用的技巧 3. 目錄的硬連接不能跨越文件系統 4. 每一個目錄下面都有一個硬連接「.」號,和對應上級目錄的硬連接」..「 5. 再敷目錄裏建立一個子目錄,父目錄的鏈接數增長1(每一個子目錄裏都有..來指向父目錄),可是再父目錄裏建立文件,父目錄的鏈接數不會增長
linux是一個多用戶,多任務的操做系統
用戶的角色是經過uid和gid識別的,特別是uid,在linux系統運維工做中,一個uid是惟一標識一個系統用戶的帳號(至關於咱們的身份證),用戶系統帳號的名稱其實給人看的,linux系統能識別僅僅是uid和gid這樣的數字
1. 超級用戶
root是超級用戶,uid和gid都是0,擁有最高的管理權限
2. 普通用戶
500-65535 普通用戶 su -root 角色切換 sudo ls 受權
3. 虛擬用戶
1-499 虛擬用戶 安裝軟件時候自帶的用戶,不能登陸的用戶
4. 用戶相關的文件
# /etc/passwd 用戶的配置文件 帳號名稱 帳號密碼 帳號uid 帳號gid 用戶說明 用戶家目錄 shell解釋器 [root@Poppy conf]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin # /etc/shadow 用戶口令文件 帳號名稱 帳號密碼 最近更改密碼的時間 禁止修改密碼的天數 用戶必須更改口令的天數 警告更改密碼的期限 不活動時間 失效時間 標誌 # /etc/group 組的配置文件 用戶組名 用戶組密碼 gid 用戶組成員 # /etc/gshadow 組的口令文件
文件或者目錄的大小
modify修改時間 mtime 通常修改文件內容的時候 change改變時間 ctime 文件的屬性改變,大小,權限等 access訪問時間 atime 訪問文件內容的時候 [root@Poppy conf]# ls -l --time-style=long-iso total 124 drwxr-xr-x 2 root root 4096 2018-06-13 16:46 extra -rw-r--r-- 1 root root 18566 2018-06-13 16:05 httpd.conf -rw-r--r-- 1 root root 18410 2018-06-13 15:07 httpd.conf.bak -rw-r--r-- 1 root root 13077 2018-06-13 10:24 magic -rw-r--r-- 1 root root 60847 2018-06-13 10:24 mime.types drwxr-xr-x 3 root root 4096 2018-06-13 10:24 original 查看文件的時間屬性 stat 後面接文件或者屬性 [root@Poppy conf]# stat /joker/ File: ‘/joker/’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd01h/64769d Inode: 1703937 Links: 6 Access: (0755/drwxr-xr-x) Uid: ( 1000/ rsync) Gid: ( 1000/ rsync) Access: 2018-06-20 14:55:54.246604690 +0800 Modify: 2018-06-20 14:55:53.766590115 +0800 Change: 2018-06-20 14:55:53.766590115 +0800 Birth: -
不在inode裏,而是在上級目錄的block裏