歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 關於Linux的Inode

關於Linux的Inode

日期:2017/2/28 16:08:02   编辑:Linux教程
Inode是linux/unix操作系統中的一種數據結構,包含了各文件相關的一些重要信息。在創建文件系統時,就會同時創建大量的inode。一般inode表會占用文件系統磁盤空間的1%。 與Inode相關的還有一個概念就是inumber。這兩個概念很相關,但不一樣。Inode是指的數據結構,而inumber是索引編號,實際上就是inode的標識編號,也可以中inode編號。Inumber只是文件相關信息中的一項信息而以。 我們對一個文件進行操作,如vi編輯,系統是在inode表中找到inode編號(inumber),才允許我們打開該inode。當文件的inode分派給一個用戶時,另一個用戶要操作這個文件時,就要等該inode釋放了才可以操作。 Inode是數據結構,這個結構是什麼樣的呢?都包含了哪些主要信息呢? Inode的結構:
  • inode 編號[inumber]
  • 用來識別文件類型,以及用於 stat C 函數的模式信息
  • 文件的鏈接數目 [ln -s ]
  • 屬主的 UID
  • 屬主的組 ID (GID)
  • 文件的大小
  • 文件所使用的磁盤塊的實際數目
  • 最近一次修改的時間

  • 注意事項

    Inodes數不夠的後果:無法創建新的文件,mysql啟動不了,apache啟動不了等很多系統錯誤,網站無法運行.


  • 最近一次訪問的時間
  • 最近一次更改的時間
  • 下面通過實例來了解一下inode。
    //用df -i來查一下磁盤空間
    # df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/sda1 7913472 126186 7787286 2% /

    可以看到Inode的使用情況。

    //ll -i來查一個文件的inumber
    #ll -i /bin/ping
    1032194 -rwsr-xr-x 1 root root 33272 Apr 14 2006 /bin/ping

    //通過stat來查文件的信息,可以去inode的結構對比一下
    # stat /bin/ping
    File: `/bin/ping'
    Size: 33272 Blocks: 80 IO Block: 4096 regular file
    Device: 801h/2049d Inode: 1032194 Links: 1
    Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2009-08-04 11:13:08.000000000 +0800
    Modify: 2006-04-14 21:16:26.000000000 +0800
    Change: 2009-07-01 14:04:44.000000000 +0800

    ######################################
    下面來個inode的實踐操作:
    當我們要rm一個文件時,如果這個文件[-file.txt]是以“-”開始的,當我們執行rm -時,系統以為“-”後接是命令的參數,所以會報錯。
    如:
    # ll
    -rw-r--r-- 1 root root 28 Aug 6 15:07 -file.txt
    # rm -file.txt
    rm: invalid option -- l
    Try `rm --help' for more information.

    那麼我們就可以通過操作文件的inumber來rm文件。如:
    # ll -i
    7110667 -rw-r--r-- 1 root root 28 Aug 6 15:07 -file.txt
    # find . -inum 7110667 -exec rm {} \;

    同樣也可以進行rm以外如mv的操作,如:
    # find . -inum 7110667 -exec mv {} file.txt \;



    [root@XYS002 data_root]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/sda3 767232 8289 758943 2% /
    /dev/sda10 28639232 4006 28635226 1% /data
    /dev/sda9 512512 24 512488 1% /tmp
    /dev/sda8 1280000 113539 1166461 9% /usr
    /dev/sda7 1280000 2224 1277776 1% /var
    /dev/sda6 1280000 80 1279920 1% /home
    tmpfs 504292 1 504291 1% /dev/shm
    /dev/sda6 1280000 80 1279920 1% /home

    塊大小*inodes = *k 就是磁盤大小 (塊大小默認是4096K) 即 一個塊大小=4KB 改變塊大小: umount -f /dev/設備
    mkfs.ext3 -i 4096 /dev/設備
    1280000*4096/1024*1024=5000M 我設的值是這個沒錯
    不過這只是磁盤大小哈 不是文件夾可以存多少文件 一個i節點就是一個文件 df -i 中的inodes值大小就是改分區的可存放文件個數 比如:/dev/sda6 1280000 80 1279920 1% /home /home可以存放1280000個文件 1280000個文件*塊大小=分區的大小
    Copyright © Linux教程網 All Rights Reserved