zoukankan      html  css  js  c++  java
  • 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文件系统这部分学习的一点总结。
    在这里很多东西介绍的还比较简单,后面有机会会在新的博文中逐个详细的进行学习,敬请关注!

  • 相关阅读:
    关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)
    关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别
    关于重装系统那点事
    CentOS 中文支持
    CentOS下 Yum 损坏与重建
    [转] Linux 中提高 VsFTP 服务器的安全性
    java之正则表达式的使用1
    [转载]java正则表达式
    myeclipse10修改全局jsp编码格式为gbk
    好的网站
  • 原文地址:https://www.cnblogs.com/riskyer/p/3343320.html
Copyright © 2011-2022 走看看