歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

關於Linux的Inode

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