设为首页 收藏本站
查看: 540|回复: 0

[经验分享] Linux文件系统管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-8 08:14:56 | 显示全部楼层 |阅读模式
一、磁盘简介
    当前常用的磁盘还是机械硬盘HDD,但固态硬盘SSD的应用越来越广泛了。常见的机械硬盘有U盘、光盘、软盘、硬件和磁带等,机械硬盘能够永久存储数据(在不用通电的情况下)。

    磁盘是如何存储数据的呢?总的来说采用磁性碟片来存储数据。磁盘有很多同轴磁盘片叠成,每个磁盘片有两个磁盘面都可以用来存储数据。磁盘面上有很多同心圆的磁道,存取数据时磁盘转动,使磁头沿这些磁道运动。由于各个同心圆磁道周长不同,每个磁道存储的数据量是不同的,所以磁盘是按照磁盘上划分的扇区来存储数据的,每个扇区的大小是512bytes,每次存取数据时所有盘片的所有盘面都进行存储。磁盘在出厂时由厂家进行低级格式化,为磁盘划分磁盘柱面(不同盘面上相同磁道组成同一柱面)。磁盘分区是按照柱面划分的,分区是磁盘的逻辑边界,划分分区可以划分磁盘为多个文件系统。

    硬盘的主引导记录分区列表MBR(master boot record)从磁盘的第0磁道第0柱面第1扇区开始,共512bytes:
      前446bytes存储bootloader引导程序,用于在计算机开机时引导磁盘
      接着64bytes中每16字节标识一个分区,最多4个主分区也可以是3个主分区+1个扩展分区或两个主分区+两个扩展分区
      最后2bytes用于标记MBR是否有效(magic number)

二、Linux文件系统

    为了加快数据的存储速度,Linux文件系统将磁盘划分为一个一个的磁盘块,块大小有1024,2048,4096kb几种,一个磁盘块最多只能存储一个文件(但该文件可以有多个路径,即硬链接)。每个磁盘块对应一个inode节点。所有inode存放在同一个源数据区域里,当系统需要访问某个磁盘块的文件时,首先从该数据区域里读取这个/些磁盘块的对应inode节点,最后才访问这些磁盘块,这样系统就可以只查看这个数据区里的inode节点信息就可以找到对应磁盘块的文件,而不用扫描整个磁盘,加快了数据的读取速度。   

    多个磁盘块组成一个数据块组,每个块组都有一个块位图和一个inode表。bitmap块位图,用于管理(标识)空闲数据块。inode表与数据块的物理磁盘位置越近,数据读取时的寻道时间越短,所以将整个文件系统分成多个小的块组能加快数据读取。块组描述符表记录了每个块组从几块开始几块结束。
    超级块用于存放文件系统信息,包括保存块组个数,每个块组包含多少个磁盘块,每个磁盘快的大小,空闲磁盘块,已用磁盘块,空闲inode,已用inode。

    ext2_inode中包含的数据:mode、owner info、size、timestamps、direct blocks、data、indirect blocks、double inditect、triple indirect。

    ext3是一种日志文件系统(journal file system)。日志文件系统在相对非文件系统新增了一个日志区,日志区用于系统崩溃后的数据恢复。日志的写入方式包括顺写、回写(实际数据先写入主文件系统,元数据再写入日志系统)和全日志(元数据和实际数据同时分别写入日志系统和主文件系统)。日志文件系统的数据存储速度较慢,但在很多对数据安全性要求高的领域有很大作用。

三、链接文件
  硬链接--指向同一inode的不同路径
    1.只能对文件创建,不能应用于目录
    2.不能跨文件系统
    3.创建硬链接会增加文件被文件被链接的次数
  符号链接--软链接文件存放的是它所指向的文件的文件名,大小为文件名字符串的大小
    1.可应用于目录
    2.可以跨文件系统
    3.不会增加被链接文件的链接次数
    4.其大小为指定的路径所包含的字符个数
  命令:ln -s、-v

四、创建设备文件
    命令 mknod [OPTION]... NAME TYPE [MAJOR MINOR]
      -m  mode        指定创建文件的权限
      NAME TYPE       包含b、c(设备文件包括块设备b是按块为单位,随机访问的设备,字符设备c是按字节为单位的线性设备)
      [MAJOR MINOR]   包括主设备号MAJOR munber(用于标识设备类型)和次设备号MINOR number(用于标识同一种类型中不同设备)

五、显示磁盘的使用情况report file system disk space usage
    df
      -i, --inodes   显示inode的使用情况list inode information instead of block usage
      -h, --human-readable  
      -P, --portability   use the POSIX output format

六、查看磁盘的分区列表信息 manipulate disk partition table
fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
  -m   查看帮助
  p:显示当前硬件的分区,包括没保存的改动
  n:创建新分区
  e:扩展分区
  d:删除一个分区
  w:保存退出
  q:不保存退出
  t:修改分区类型
  l:显示所支持的所有类型、查看当前系统识别了几块硬盘

七、查看内核
[iyunv@bogon ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1     512000 sda1
   8        2    2048000 sda2
   8        3    1257472 sda3
   8        4          1 sda4
   8        5   17149952 sda5
  11        0    1048575 sr0

八、重读分区表
  partprobe
  partx

九、创建Linux文件系统build a Linux filesystem
mkfs [options] [-t type] [fs-options] device [size]
mkfs是一个交互式的命令

十、虚拟文件系统 VFS(Virtual Filesystem Switch)
     Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统。由于文件系统类型的不同,调用机制也不同,系统调用难以支持多种文件系统,VFS解决了这个难题,VFS提供了系统调用(用户进程)和文件系统之间的抽象接口,使用户进程可以方便地调用文件系统。
   linux支持的文件系统类型 FAT32(vfat)、NTFS、、SO9660、extended(ext2、ext3、ext4)、CIFS、xfs、reiserfs、jfs、nfs、ocfs2、gfs2、swap等

十一、Linux分区
    Linux所有分区(物理)都必须挂载在某个目录(逻辑)上才能进行数据读写操作。所有的目录逻辑上都包含于根目录下的,根下的目录只是作为其它分区的转接入口,要访问某个分区就要先引用根下的目录(根分区自引用)。





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-124055-1-1.html 上篇帖子: Raid管理详解 下篇帖子: Ubuntu下安装搜狗输入法 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表