[Linux] linux文件系統學習

linux系統支持不少種文件系統。node

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

 

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 + 日誌系統
ide

 

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

 

4. VFS?
linux提供了VFS,這讓應用程序編程變得簡單,由於應用程序不用去考慮不一樣文件系統的差別。
this

 

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

 

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

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選項來查看指定文件所在的文件系統信息,code

 

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
相關文章
相關標籤/搜索