- 浏览: 280778 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
chenxliang:
2016年10月26、27日,上海浦东,Postgres中国用 ...
用JDBC连接Postgres(Postgres学习笔记1) -
cuiran:
不错,讲的很详细。
web.xml 中的listener、 filter、servlet 加载顺序及其详解 -
i_am_birdman:
PostgreSQL的管理启动服务pg_ctl -D /pat ...
PostgreSql 数据库备份恢复 删除 建立 -
i_am_birdman:
songshuang 写道现在觉悟也不晚!加油!
加油呵呵
人生规划啊 -
songshuang:
现在觉悟也不晚!加油!
人生规划啊
文件系统是 linux 的 一个十分基础的知识,同时也是学习 linux 的必备知识。
本文将站在一个较高的视图来了解linux 的文件系统, 主要包 括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接硬链接、和常见目录的介绍。相信有了这些知识对于深入的学习 linux 会 有一定的帮助。 文章例子主要是基于 ubuntu发行版 。
如有不对之处请大家多多指出。
1. Linux 磁 盘分区和目录
Linux 发行版本之间的差别很少,差别主要表现在系统管 理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Windows 的文件结构是多个并列的树状结 构,最顶部的是不同的磁盘(分区),如: C , D , E , F 等。
Linux 的文件结构是单个的树状结构 . 可以 用 tree 进 行展示。 在 Ubuntu 下 安装 tree ( sudo apt-get install tree ) , 并可通过命令来查看。
每次安装系统的时候我们都会进行分区, Linux 下 磁盘分区和目录的关系如下:
– 任何一个分区都必须挂载到某个目录上。
– 目录是逻辑上的区分。分区是物理上的区分。
– 磁盘 Linux 分区都必须挂载到目录树中的某个具体 的目录上才能进行读写操作。
– 根目录是所有 Linux 的文件和目录所在的地方,需要挂载上 一个磁盘分区。
以下是我们可能存在的一种目录和分区关系:
图1:目录和分区关系
Q: 如何查看分区和目录及使用情况?
– fdisk 查看硬盘分区表
– df :查看分区使用情况
– du: 查看文件占用空间情况
Q: 为什么要分区,如何分区?
– 可以把不同资料,分别放入不同分区中管理,降低风险。
– 大硬盘搜索范围大,效率低
– 磁盘配合只能对分区做设定
– /home /var /usr/local 经常是单独分区,因为经常会操作,容易产生碎 片
2. Mount 挂 载和 NFS 简 介
挂载的概念 :当要使用某个设备时,例如要读取硬盘中的一个格式化好的分 区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为 “ 挂载点( mount point ) ” , 这样才可以读取这些设备,而这些对应的动作就是 “ 挂载 ” 。 将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东 西都是文件。 Mount 命 令可以实现挂载:
mount [-fnrsvw] [-t vfstype] [-o options] device dir
Q :所有的磁盘分区都必须被挂载上才能使用,那 么我们机器上的硬盘分区是如何被挂载的?
A :这主要是它利用了 /etc/fstab 文件。每次内核加载它知道 从这里开始 mount 文 件系统。每次系统启动会根据该文件定义自动挂载。若没有被自动挂载,分区将不能使用。 如下是我的 /etc/fstab 的定义,主要是根据装机的 分区来的:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
#/dev/sda1 被自动挂载到 /
UUID=cb1934d0-4b72-4bbf-9fad-885d2a8eeeb1 / ext3 relatime,errors=remount-ro 0 1
# /dev/sda5 被自动挂载到分区 /home
UUID=c40f813b-bb0e-463e-aa85-5092a17c9b94 /home ext3 relatime 0 2
#/dev/sda7 被自动挂载到 /work
UUID=0f918e7e-721a-41c6-af82-f92352a568af /work ext3 relatime 0 2
# 分区 /dev/sda6 被自动挂载到 swap
UUID=2f8bdd05-6f8e-4a6b-b166-12bb52591a1f none swap sw 0 0
Q :移动硬盘如何挂载?如何挂载一个新的分区?
移动硬盘有驱动模块会自动挂载,如果有个新硬盘,要先进行分区,并通过 mount 命 令挂载到某个文件夹。如果要自动挂载则可以修改 /etc/fstab 文件 .
NFS 简 介: NFS 相 信在很多地方都有广泛使用,是一个非常好的文件共享方式。我们公司所使用的上传服务就是把文件上传到某台网络服务器上,中间就是通过 NFS 实 现。
使用 NFS 客户端可以透明的地访问服务器端的文件。 NFS 也 是通过 mount 来 实现,底层是通过 NFS 通 信协议实现。基本原理:
图2:NFS基本原理
Ubuntu 下面 Ubuntu 下的例子
服务端 :
$apt-get install nfs-kernel-server
vi /etc/exports 添加 nfs 目 录 : /personal/nfs_share
10.1.60.34(rw,sync,no_root_squash)
$sudo exportfs -r
$sudo /etc/init.d/portmap start
$sudo /etc/init.d/nfs-kernel-server start
客户端 :
$sudo apt-get install nfs-common
$sudo mount 10.19.34.76:/personal/nfs_share ~/nfsshare 例 子:
3. 文 件类型
Linux 下面的文件类型主要有:
a) 普通文件 : C 语 言元代码、 SHELL 脚 本、二进制的可执行文件等。分为纯文本和二进制。
b) 目录文件 :目录,存 储文件的唯一地方。
c) 链接文件 :指向同一 个文件或目录的的文件。
d) 特殊文件 :与系统外 设相关的,通常在 /dev 下 面。分为块设备和字符设备。
可以通过 ls –l, file, stat 几个命令来 查看文件的类型等相关信息。
4. 文件存储结构
Linux
正
统的文件系统
(
如
ext2
、
ext3)
一个文件由目录项、
inode
和
数据块组成。
目录项
:
包括文件名和
inode
节
点号。
Inode
:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。
数据块
:
文件的具体内容存放地。
Linux 正统的文件系统 ( 如 ext2 、 3 等 ) 将 硬盘分区时会划分出目录块、 inode Table 区块和 data block 数据区域。 一个文件由一个目录项、 inode 和数据区域块组成。 Inode 包 含文件的属性 ( 如 读写属性、 owner 等, 以及指向数据块的指针 ) , 数据区域块则是文件内容。 当 查看某个文件时,会先从 inode table 中查出文件属性及数据存放点,再从数据块中读取数据。
站在 2w 英尺视图,文件存储结构大概如下:
图3:文件存储结构2w英尺视图
其中目录项的结构如下 ( 每个文件的目录项存储在改文件所属目录的文件 内容里 ) :
图4:目录项结构
其中文件的 inode 结构如下( inode 里 所包含的文件信息可以通过 stat filename 查看得到):
图5:inode结构
以上只反映大体的结构, linux 文件系统本身在不断发展。但是以上 概念基本是不变的。且如 ext2 、 ext3 、 ext4 文 件系统也存在很大差别,如果要了解可以查看专门的文件系统介绍。
5. 软 连接、硬链接
软链接和硬链接是我们常见的两种概念:
硬连接 :是给文件一个 副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中 [color=red] 任意一个 [/color] 其 余的文件将不受影响。
软连接 : 也叫 符号连接 , 他 只是对源文件在新的位置建立一个“快捷(借用一下 wondows 常用词)”,所以,当源文件删除 时,符号连接的文件将成为无源之水 -> 仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使 用、引用都是直接调用源文件的。
具体关系可以看下图:
图5:软链接和硬链接
从图上可以看出硬链接和软链接的区别:
1 :硬链接原文件和新文件的 inode 编号一致。而软链接不一样。
2 :对原文件删除,会导致软链接不可用,而硬链接不受影响。
3 :对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。
6. 文 件目录管理命令
磁盘和文件空间
fdisk df du
文件目录与管理
cd pwd mkdir rmdir ls cp rm mv
查看文件内容
cat:
cat [file]
查
看文件的内容。全程式concatenate的意思,将文件内容连续输出到屏幕上。第一行到最后一行显示。
tac:
tac [file]
和
cat刚好相反 是从最后一行到第一行的方式查看。
cat有个比较不好的地方时当文件比较大时 候没办法看清楚,这个时候可以用more或者Less命令。
more:
more [file]
如
果使用grep或者find等命令时,可以配合使用more一页一页的查看。如果看到一半想退出,则敲入’q’即可退出。
less:
less
[file]
less比more更有弹性,可以上下翻页。
如果只想读取文件的头几行或者文件的末尾几
行,可以用head或tail.
head –n [file]:读取文件的前n行。
tail –n [file]:读取文件末尾n行。
以上命令都是用于查看字符文件,二进制文件
出来的都是乱码,要看二进制文件的内容,可以用od命令,如查看一个MP3文件里面的内容:
od shijiemori.mp3
文件目录与权限
chmod chown chgrp umask
文件查找
which:
which [filename]
该命令用于查询通过PATH路
径到该路径内查找可执行文件。
如:Which passwd:查找可执行文件passwd
whereis:
whereis
[-bmsu] [keyword]
该命令用于把相关字的文件和目录都列出来。(Linux
会将文件都记录在一个文件数据库里面,该命令式从数据库去查询,所以速度比较快,Linux每天会更新该数据库)
locate:
locate [filename]
该命令用于把相关字的文件
和目录都列出来。查找数据特别快,也是通过数据库方式来查询。但是数据库一周更新一次,所以可能有些存在数据查不到。可以去修改配置文件。
find:
find [path] [参数] [keyword]
该命令用于
在指定路径下查找文件。不是通过数据来查询,所以速度会比较慢。
7. 常 见目录解释
Linux 各种发行版的目录结构基本一致,各个目录简单介绍如下:
目录 |
描述 |
/ |
根目录 |
/bin |
做为基础系统所需要的最基础的命令就是放在这 里。比如 ls 、 cp 、 mkdir 等命令;功能和 /usr/bin 类 似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。 |
/boot |
Linux 的 内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文 件都位于这个目录中。在一般情况下, GRUB 或 LILO 系统引导管理器也位于这个目录;启动装载文件存放位置,如 kernels,initrd,grub 。 一般是一个独立的分区 。 |
/dev |
一些必要的设备 , 声卡、磁盘等。还 有如 /dev/null. /dev/console /dev/zero /dev/full 等 。 |
/etc |
系统的配置文件存放地 . 一些服务器的配置文件也在这里;比如用户帐号及密码配置文件; /etc/opt: /opt 对应的配置文件 /etc/X11:Xwindows 系 统配置文件 /etc/xml:XML 配 置文件 …… |
/home |
用户工作目录,和个人配置文件,如个人环境变 量等,所有的账号分配一个工作目录。一般是一个独立的分区。 |
/lib |
库文件存放地。bin 和sbin 需要的库文件。类似windows 的DLL 。 |
/media |
可拆卸的媒介挂载点,如CD-ROMs 、移动硬盘、U 盘,系统默认会挂载到这里 来。 |
/mnt |
临时挂载文件系统。这个目录一般是用于存放挂 载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab 的定义。 |
/opt |
可选的应用程序包。 |
/proc |
操作系统运行时,进程(正在运行中的程序)信 息及内核信息(比如cpu 、硬盘分区、内存信息等)存放在这里。/proc 目录伪装的文件系统proc 的挂载目录,proc 并不是真正的文件系统,它的定义可以参见 /etc/fstab 。 |
/root |
Root 用 户的工作目录 |
/sbin |
和bin 类 似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所需要使用得到的。 |
/tmp |
系统的临时文件,一般系统重启不会被保存。 |
/usr |
包含了系统用户工具和程序。 /usr/bin : 非必须的普通用户可执行命令 /usr/include : 标准头文件 /usr/lib:/usr/bin/ 和 /usr/sbin/ 的库文件 /usr/sbin: 非 必须的可执行文件 /usr/src: 内 核源码 /usr/X11R6:X Window System, Version 11, Release 6. |
/srv |
该目录存放一些服务启动之后需要提取的数据 |
发表评论
-
linux的.bash_history
2013-02-23 15:52 13419今天看到一个人写的文章,说通过.bash_history来获取 ... -
shell 的 && 和 ||
2013-02-18 18:15 1037Shell && 和 || shell 在执 ... -
在网卡上绑定多个ip
2012-05-11 09:36 907如果要在eth0网卡设备上添加两个lP别名192.168.8. ... -
echo -e
2012-03-10 10:09 977[Gogo_yueyue@ShadowFiend ~] ... -
SSH无密码自动登录
2012-03-03 11:41 1008[root@ShadowFiend Gogo_yu ... -
ip端口请求转发(dnat)
2012-02-20 22:59 2472[福建]Mr.G(51061358) 21:26:14 有个 ... -
ulimit
2012-02-17 11:47 986通过 ulimit 改善系统性能[url] http://ww ... -
linux tree 命令
2012-02-17 10:57 1476http://www.centerkey.com/tree/上 ... -
centos64位安装Adobe Flash Player
2012-01-17 21:19 1149从ADOBE网站上下载了个RPM (http://get.ad ... -
linux 防火墙 终端修改
2011-11-30 10:17 1203之前一直在图形用户界面修改的防火墙端口。这次因为某台服务器没有 ... -
SQLite入门与分析(一)---简介
2011-10-09 11:07 848写在前面:出于项目 ... -
/linux/null
2011-09-23 14:58 944/dev/null 2>&1 详解 ... -
R,Rserve安装
2011-08-15 09:50 2236统计计算引擎用R做。 R的安装: ... -
Linux服务器性能评估与优化(没事多看看)
2011-07-25 09:40 720原文地址:http://www.itlearner.com/a ... -
删除Openoffice.org
2011-07-08 11:06 1016这个问题前后困扰我快半个月了,你妹的,Openoffice问题 ... -
linux上ln命令详细说明
2011-06-29 20:56 1290ln是linux中又一个非常重 ... -
dia 安装
2011-05-13 14:35 1649Configuration: Source code ... -
linux root 用户vi颜色 普通用户vi有颜色?--转
2011-05-11 19:56 2218vi是没有颜色的,vim是有颜色的。可是系统中没有安装vim。 ... -
wordpress安装过程
2011-05-10 20:27 2103安装前提:PHP ,Apache ,Mysql都已经安装。其实 ... -
./configure 时提示权限不足
2011-05-09 13:53 1405真是悲剧。。 chomd 777 configure ...
相关推荐
Linux文件系统是操作系统的核心组成部分,它负责管理和组织磁盘上的数据,使得用户能方便地存储、检索和管理文件。在Linux系统中,文件系统扮演着至关重要的角色,它提供了以下三个主要功能: 1. **便于磁盘空间的...
Linux文件系统简介 嵌入式文件系统的几种解决方案 直接针对Flash设备的实现方案 基于DOC设备的JFFS. 基于MTD设备的JFFS VFS和JFFSZ 32MTD抽象层和 文件系统体系结构的设计 支持MTD设备JFFSZ的实现 3JFFSZ映象文件的...
#### Linux 文件系统简介 Linux中的文件系统是一种高效且灵活的数据组织方式。它不仅管理着文件与目录,还将硬件设备视为特殊类型的文件来处理。这样的设计理念简化了系统的整体架构,同时也提高了其可扩展性。 ##...
(8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝。 (9)del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10)check:检测并恢复文件...
本次实验是关于Linux文件系统及文件管理的上机操作,旨在让学生深入理解和熟练运用Linux操作系统中的文件系统管理和文件操作。实验涵盖了文件系统的格式化、挂载与卸载,目录和文件的创建、移动、复制、删除,以及...
"Linux文件系统的模拟实现" Linux文件系统是操作系统的核心组件之一,负责管理存储设备上的数据组织和访问。 Linux文件系统的模拟实现是指通过软件模拟实现一个Linux文件系统,来加深对文件系统的理解。 文件系统...
Linux 文件系统与文件管理实验报告 Linux 操作系统是一种广泛使用的操作系统,它提供了强大的文件系统管理功能。本实验报告将对 Linux 文件系统和文件管理进行详细的介绍。 一、实验项目:用户与组管理 Linux ...
C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...
本篇将深入探讨Linux文件系统的结构,并阐述进程如何操作文件。 首先,Linux文件系统采用了一种层次式的目录结构,这种结构起始于根目录 `/`。所有其他目录和文件都是从这个根目录开始的,通过斜线 `/` 分隔的路径...
这篇学习资料详细介绍了Linux文件系统的一些关键概念和技术。 1. 文件系统类型 Linux支持多种文件系统类型,如EXT2、EXT3、EXT4、XFS、Btrfs、FAT、NTFS等。EXT4是目前最常用的一种,它在EXT2的基础上进行了优化,...
linux文件系统btrfs介绍,设计原理
Linux文件系统是Linux操作系统的核心组成部分,它负责管理和存储数据,为用户提供访问文件和目录的统一接口。Linux的一大特性是支持多种文件系统,包括但不限于ext、ext2、xia、minix、umsdos、msdos、vfat、proc、...
Linux 文件系统源码是了解操作系统核心机制的重要组成部分,特别是对于那些想要深入理解Linux内核以及文件系统工作原理的开发者和研究者来说。在这个压缩包中,包含了一系列的源码文件,涉及到了多种不同的文件系统...
在Linux操作系统中,文件系统是...通过这个项目,开发者不仅可以深入了解Linux文件系统的运作机制,还能提升C语言编程和系统级编程的能力,对于想要深入学习Linux内核和文件系统的人员来说,这是一个很好的实践机会。
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux...
基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux...
本文主要探讨了在Red Hat 9.0环境下Linux文件系统的管理,包括磁盘管理的各个方面。 1. Linux 文件系统类型 Linux 支持多种文件系统,如ext2、ext3和ext4,其中Red Hat 9.0默认使用ext3文件系统。ext3是一种日志...
Linux文件系统是Linux操作系统的核心组成部分,它负责组织和管理存储设备上的数据,为用户提供有序、高效的数据访问方式。本文将深入解析Linux文件系统的概念,并提供一份精通Linux文件系统的指南。 一、Linux文件...