[Linux] linux文件系統學習


linux系統支持很多種文件系統。

1. 如何確認當前系統掛載了哪些文件系統?
使用mount命令可以查看當前系統上已經掛載了哪些文件系統,

 

lqt@lqt-ThinkPad-T420:~$ mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)

 

通過如下命令也可以實時的查看當前系統上掛在的文件系統

 

lqt@lqt-ThinkPad-T420:~$ cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=4022676k,nr_inodes=1005669,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=1612588k,mode=755 0 0
/dev/disk/by-uuid/f38fd44a-b1b5-4636-970e-826dba3c398d / ext4 rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0

 

2. linux ext2文件系統?
ext2文件系統分區是由inode以及block這兩個部分組成,
其中inode用來存儲文件的屬性信息;而block區域則用來存儲實際的文件內容。
因為這個原因,所以可能會存在兩個比較極端的情況:
磁盤中的文件size都很小,造成了磁盤上的inode都被用完但是block區域卻仍然有大量剩余從而造成磁盤空間浪費;
磁盤上的文件size都很大,造成了磁盤上放了為數不多的幾個文件后block區域就被用完從而造成inode空間的浪費。
ext2文件系統由於缺少日志系統,從而給系統管理帶來不便,所以在ext3文件系統中增加了日志系統,即:
ext3 = ext2 + 日志系統

 

3. 關於inode的一點說明?
常規情況下,一個inode即對應着一個文件。
但是由於硬連接的存在(硬鏈接是一個inode,但是block中有文件內容的多份copy),所以也是有特例的存在。
正式inode與block的划分,從而讓創建文件的硬鏈接和軟連接提供了可能。
另外inode結構是不包含文件名信息的。

 

4. VFS?
linux提供了VFS,這讓應用程序編程變得簡單,因為應用程序不用去考慮不同文件系統的差異。

 

5. 為什么在同一個文件系統中move會很快,而在不同文件系統中move會很慢呢?
因為在同一個文件系統中copy,不需要move block區域中的數據區,而只需要修改inode信息;
而在不同文件系統中move,不但要修改inode信息,同時block區域中存放的文件信息也必須要
copy到另一個文件系統中。

 

6. 偽文件系統?
偽文件系統是從內存中創建的文件系統。一旦系統斷電文件系統中的內容就會丟失。

7. 如何查看文件系統的使用情況?
(1)使用df命令可以幫助我們實現這一需求,

 

lqt@lqt-ThinkPad-T420:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       458G  122G  314G  28% /
udev            3.9G  4.0K  3.9G   1% /dev
tmpfs           1.6G  1.1M  1.6G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G  472K  3.9G   1% /run/shm

 

(2)使用stat命令進行查看,利用-f選項來查看指定文件所在的文件系統信息,

 

lqt@lqt-ThinkPad-T420:~$ stat /dev
  File: `/dev'
  Size: 4360          Blocks: 0          IO Block: 4096   directory
Device: 5h/5d    Inode: 1025        Links: 16
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-08-06 17:58:17.344020754 +0800
Modify: 2014-08-06 12:00:37.641852226 +0800
Change: 2014-08-06 12:00:37.641852226 +0800
 Birth: -

 

8. 如何確認當前系統中可以支持哪些文件系統?
使用cat /proc/filesystems可以查看,
其中第一列nodev表示該類型文件不需要掛載在一個塊設備上,否則就需要掛在一個塊設備上;
第二列表示當前系統中支持的文件系統類型。

 

lqt@lqt-ThinkPad-T420:~$ cat /proc/filesystems 
nodev    sysfs
nodev    rootfs
nodev    bdev
nodev    proc
nodev    cgroup
nodev    cpuset
nodev    tmpfs
nodev    devtmpfs
nodev    debugfs
nodev    securityfs
nodev    sockfs
nodev    pipefs
nodev    anon_inodefs
nodev    devpts
    ext3
    ext4
nodev    ramfs
nodev    hugetlbfs
nodev    ecryptfs
    fuseblk
nodev    fuse
nodev    fusectl
nodev    pstore
nodev    mqueue
nodev    binfmt_misc
    vfat

 

9. 如何加載一個文件系統?
方法一:由於系統啟動時會通過讀取/etc/fstab來配置那些固定的文件系統,所以針對那些
需要固定加載的文件系統,我們可以在/etc/fstab中配置好;
方法二:系統啟動后,根據需要,自行加載文件系統。

 

lqt@lqt-ThinkPad-T420:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=f38fd44a-b1b5-4636-970e-826dba3c398d /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=e60359f1-99ef-4b52-b081-f76f90e590fb none            swap    sw              0       0

none /tmp_fs tmpfs nodev 0 0

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM