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