linux文件系统

Linux 文件系统

余生颓废 提交于 2019-11-29 14:29:13
文件系统的作用 数据存放在硬盘中, 但是linux不会让用户直接针对磁盘进行操作,这太底层了,对用户说,想存储个文件还得去学学硬盘的构成??? linux推出文件系统作为 用户和底层针对磁盘读写 之间的缓冲, 文件系统是一种结构, 用来组织管理文件, 比如磁盘的可用信息, 已占用和剩下的空间 常见的文件系统 名称 描述 ext2 Linux基本文件系统 ext3 ext2的增强版本 ext4 ext文件系统的第四个版本, centos6常用 xfs centos7使用 swap 交换文件系统 nfs 网络文件系统,适合Linux或Unix机器间共享 smbfs 适合Linux或Unix和windows机器间共享 vfat windows早期文件系统 ntfs windows默认文件系统,功能非常强大 so9660 CD光盘的只读文件系统 GFS google专用存储海量搜索数据而设计的专用文件系统 reiserfs 早期linux使用的日志功能的文件系统 VFS(虚拟文件系统) Linux支持多文件系统 Linux内核是采用 vfs 虚拟文件系统,通过这个中间层对各类文件系统提供了完美的支持,对于用户来说,这些文件系统几乎是透明的,用户不再需要关系底层的文件系统的具体实现 VFS 基本结构 super block dentry inode data 什么是 块?

lvm逻辑卷的建立、扩容和减容等操作方法

淺唱寂寞╮ 提交于 2019-11-29 10:25:08
前言的介绍: LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分LVM区管理的灵活性。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。 LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:   *物理存储介质(Thephysicalmedia)   这里指系统的存储设备:硬盘,是存储系统最低层的存储单元。   *物理卷(physicalvolume)   物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。   *卷组(VolumeGroup)   LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成

Docker镜像(六)

梦想与她 提交于 2019-11-29 09:40:24
一、镜像是什么   镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。 1. UnionFS(联合文件系统)   Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。   特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。 2. Docker镜像加载原理   docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统叫做UnionFS。    bootfs(boot file system) 主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux

08.构建根文件系统

元气小坏坏 提交于 2019-11-29 07:48:43
 终于自动挂载文件系统成功了!!!出错的地方两个!!!   第一,恢复出厂设置一定要用eop下载uboot,dnw下载的不行!!!最后记得erase nand params!!   第二,set bootargs noinitrd root=/dev/nfs nfsroot=202.193.61.195:/work/nfs_root/first_fs ip=202.193.61.196:202.193.61.195:202.193.61.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0   参数解读:  nfsroot=202.193.61.195: ubuntu ip地址  /work/nfs_root/first_fs要挂载的目录  ip=202.193.61.196: 单板ip(恢复出厂设置后记得先配置ip,手动挂载下能不能成功,可以成功的话再修改bootargs自动挂载!)  202.193.61.195: 依然是ubuntu ip !!!!!注意!!!  202.193.61.1: 网关,只要处于同一网段就好。  255.255.255.0:: 子网掩码  eth0: 网卡,一般都是0  off 是否自动配置 off就可以 下面回顾下整个过程! 最小根文件系统的组成:1.dev/console /dev

zz文件系统磁盘布局与I/O映射

别等时光非礼了梦想. 提交于 2019-11-29 06:48:57
http://www.sysnote.org/2015/08/06/fs-io-map/ 本文主要对文件系统的磁盘布局进行概要的梳理,并在此基础上分析文件系统I/O到块I/O的映射机制。 1.文件系统磁盘布局 首先文件系统层面来阐述文件与块设备的关系。 1.1文件描述符与inode 应用程序在访问文件时都会先打开文件,在内核中,对应每个进程,都会有一个文件描述符表表示这个进程打开的文件,但是用户程序不能直接访问内核中的文件描述符表,而只能使用文件描述符表的索引(一个整数),这些索引就被称为文件描述符。当调用open 打开一个文件或创建一个新文件时,内核分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。 文件描述表中每一项都是一个指针,指向一个用于描述打开的文件的数据块–file对象,file对象中描述了文件的打开模式,读写位置等重要信息,当进程打开一个文件时,内核就会创建一个新的file对象。需要注意的是,file对象不是专属于某个进程的,不同进程的文件描述符表中的指针可以指向相同的file对象,从而共享这个打开的文件。file对象有引用计数,记录了引用这个对象的文件描述符个数,只有当引用计数为0时,内核才销毁file对象,因此某个进程关闭文件,不影响与之共享同一个file对象的进程。 file对象中包含一个指针,指向dentry对象

第四季-专题4-嵌入式文件系统

别等时光非礼了梦想. 提交于 2019-11-29 04:19:47
专题4-嵌入式文件系统 建立根文件系统目录与文件 目录和目录中的文件就是文件系统。 (1) 创建目录 #mkdir rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var #mkdir usr/bin usr/lib usr/sbin lib/modules (2) 创建设备文件 Linux系统中的绝大多数文件,都是以文件的方式来存储的。Linux系统的中的dev文件专门用来存放这些文件。 #cd rootfs/dev #mknod -m 666 console c 5 1 #mknod -m 666 null c 1 3 (3) 加入配置文件 将压缩包拷贝到这节课的目录下 #tar etc.tar.gz #mv etc/* …/root/etc/ -rf (4) 添加内核模块 内核的一部分文件在内核中,另一部分功能的实现,需要内核模块的实现,现在将内核模块的路径指向我们的创建的根文件系统。 #cd …/linux #make modules ARCH=arm CROSS_COMPILE=arm-linux- #make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs (5) 编译busybox Busybox: 嵌入式开发中的瑞士军刀

LVM增大缩小分区,复现减小分区报错并修复

岁酱吖の 提交于 2019-11-29 04:19:39
LVM的安装和LVM的在线增大比较简单,不记录,LVM的分区离线缩小坑较多 要缩小LVM设备为/dev/mapper/test-lv_test 的大小为200M 第一步:卸载设备(减小文件系统时需要卸载,文件系统和resize工具都不支持在线减小。) umount /dev/mapper/test-lv_test 第二步:执行文件系统检查(先检查一下分区的完整性。) fsck -f /dev/mapper/test-lv_test 第三步:调整文件系统大小(将文件系统减小到200M) resize2fs /dev/mapper/test-lv_test 200M 第四步:缩小分区 lvreduce -L 200M /dev/mapper/test-lv_test 将分区缩小到200M PS:参数:-200M 缩小了200M,参数:200M 缩小到200M [root@master ~]# mkfs.ext3 /dev/mapper/test-lv_test mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=1024 (log=0) 分块大小=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128016 inodes, 512000 blocks 25600 blocks

Linux常用命令(八)

风格不统一 提交于 2019-11-29 04:13:59
挂载命令 1、mount:查看所有挂载的盘符 2、mount -a:挂载所有的盘符,由于Linux开机就已经直接将所有的系统盘符挂载了,所以执行这条命令不会有什么效果 3、mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 选项:   -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660(默认的光盘挂载文件系统类型是iso9660,同时光盘的设备文件名是/dev/sr0,写成/dev/cdrom也行)   -o 特殊选项:可以指定挂载的额外选项(remount重新挂载,exec可在挂载文件系统下执行可执行文件,noexec不可在挂载文件系统下执行可执行文件) 4、umount 设备文件名或者挂载点:卸载命令,只要是设备文件名或者挂载点其中一个就行,但是不能跟两个,这样第二次卸载的时候就会出问题 5、fdisk -l:识别出系统中已经挂载的U盘,即查看U盘设备文件名 6、mount -t vfat /dev/sdb1 /mnt/usb:挂载U盘,/dev/sdb1是上一条命令识别出来的 小提示: 1、为什么Linux开机就已经将所有的盘符挂载了呢? 原因:在/etc/fstab文件中,写的是所有开机即挂载的盘符,而像我们在安装的时候已经创建的挂载的盘符就写在这个文件里面,所以它们开机自动挂载 2、既然能将需要挂载的盘符写在

深入理解Linux文件系统(一)

不想你离开。 提交于 2019-11-29 03:28:03
inode和block概述 文件数据包括元信息与实际数据 文件存储在硬盘上,硬盘最小储存单位是 “扇区”,每个扇区储存512字节。 block(块) 中文译名为“索引节点”,也叫i节点 用于存储文件元信息 1、inode的内容 inode 包含很多的文件元信息,但不包含文件名,例如 文件的字节数 文件拥有着的UserID 文件的GropuID 文件的读、写、执行权限 文件的时间戳 目录文件的结构 目录也是一种文件 目录文件的结构 每一个inode都有一个号码,操作系统用inode号码来识别不同的文件 Linux系统内部不使用文件名,而是用inode号码来识别文件 对于用户来说,文件只是inode号码便于识别的别称 inode号码 (1)、系统找到这个文件名对应的inode号码 (2)、通过inode号码获取inode信息 (3)、根据inode信息,找到文件数据所在的block,读出数据 inode的大小 inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节 格式化文件系统时确定inode总数 使用df-i可以查看每个硬盘分区的inode总数和已经使用的数量 实际操作 1、我们在opt里输入mkdir abc创建一个空目录,输入 touch aaa.txt再abc目录里里创建一个空文件,可以通过ls -i 查看文件的inode节点号 2、也可stat

第七周学习总结

你离开我真会死。 提交于 2019-11-29 03:16:28
1.Centos 5.6的启动流程 linux:kernel +rootfs+(int) kernel : 进程管理(系统调用),内存管理,网络管理,驱动程序,文件系统。安全功能。 rootfs: glibc 标准库 库:函数集合, function:调用接口 库文件(二进制程序)没有自我独立的运行的入口,只能在被调用时使用。 过程调用:procedure 不返回值,只是做了一些事 函数调用:function必须有返回值 程序: 内核设计流派: 汇编语言实现的内核,效率高但是不易移植 单内核(宏内核)设计: 把所有功能做成一个程序每一个功能在程序中使用线程来实现 () 微内核:每一功能都是由子系统实现的然后在使用中央调配系统实现某个功能就让子程序系统之间相互通信 单内核:linux 微内核:windows, solaris linux 内核 支持模块化,.ko(内核模块,对象) 用户空间的库叫.so 支持模块的装卸载。(很多内核的都可以模块化)按需装载模块 组成部分: 1.核心文件 /boot/vmlinux-VERSION(内核的版本号)-release(rpm包的发行号) 2.模块文件:/lib/modules/内核版本号+rpm包得发行号/(内核模块相互以来的文件 )真正存放内核模块的文件在kernal目录中 /lib/modules/内核版本-rpm发行版本/kernal