linux文件系统学习

linux系统支持很多种文件系统。

1. 如何确认当前系统挂载了哪些文件系统?
使用mount命令可以查看当前系统上已经挂载了哪些文件系统,
sh-# mount
rootfs on / type rootfs (rw)
none on /proc type proc (rw,relatime)
none on /sys type sysfs (rw,relatime)
none on /tmp type tmpfs (rw,relatime)
none on /opt type tmpfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda1 on /tmp/mnt/usb/sda1 type vfat (rw,noatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=utf8,shortname=mixed,errors=continue)
sh-#
sh-#

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. 如何查看文件系统的使用情况?
使用df命令可以帮助我们实现这一需求。
sh-# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                57.1M     57.1M         0 100% /
none                    142.2M    396.0K    141.8M   0% /tmp
none                    142.2M         0    142.2M   0% /opt
/dev/sda1                 3.7G    799.2M      2.9G  21% /tmp/mnt/usb/sda1
ubi2:perm                50.6M     24.0K     50.6M   0% /perm
sh-#

8. 如何确认当前系统中可以支持哪些文件系统?
使用cat /proc/filesystems可以查看,
其中第一列nodev表示该类型文件不需要挂载在一个块设备上,否则就需要挂在一个块设备上;
第二列表示当前系统中支持的文件系统类型。
sh-# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   tmpfs
nodev   debugfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   devpts
        ext2
        squashfs
nodev   ramfs
        vfat
nodev   mqueue
nodev   mtd_inodefs
nodev   ubifs
        ntfs

9. 如何加载一个文件系统?
方法一:由于系统启动时会通过读取/etc/fstab来配置那些固定的文件系统,所以针对那些
需要固定加载的文件系统,我们可以在/etc/fstab中配置好;
方法二:系统启动后,根据需要,自行加载文件系统。
sh-# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                       <dump>  <pass>
/dev/root       /               auto    noauto,rw,errors=remount-rw     0 0
none            /proc           proc    defaults                0 0
none            /sys            sysfs   defaults                0 0
none            /dev/pts        devpts  noauto,gid=5,mode=620   0 0
none            /tmp            tmpfs   defaults                0 0
none            /opt            tmpfs   defaults                0 0
none            /dev/shm        tmpfs   noauto                  0 0
sh-#

10. 有时候我们并不关心系统中诸如tmpfs,proc等类型的文件系统,而只要查看系统中瓜子啊的
硬盘及分区情况。那要如何查看呢?
可以使用fdisk -l来查看系统中挂载的硬盘及分区情况。
sh-# fdisk -l

Disk /dev/sda: 4002 MB, 4002910208 bytes
32 heads, 63 sectors/track, 3878 cylinders
Units = cylinders of 2016 * 512 = 1032192 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1   *           1        3878     3908992+  b Win95 FAT32

以上是关于linux文件系统这部分学习的一点总结。
在这里很多东西介绍的还比较简单,后面有机会会在新的博文中逐个详细的进行学习,敬请关注!

 

posted on 2013-09-27 19:03  you Richer  阅读(416)  评论(0编辑  收藏  举报