9、磁盘及文件系统

磁盘及文件系统

硬盘的物理构成:

    扇区(sector)、磁道(track)、磁头、柱面(cylinder)

分区:就是记录每一个分区的起始柱面和结束柱面。分区信息存放在0柱面0磁头1扇区上:MBR 主引导记录(446字节)+DPT磁盘分区表(64字节)+结束标志(2个字节)

      硬盘的主引导记录(MBR)是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存,并发挥作用,然后才将控制权交给主分区(活动分区)内的

  操作系统,并用主分区信息表来管理硬盘。

文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

    block :数据存储的最小单元

    inode:索引节点,全局唯一编号,除了记录文件的属性外,同时还具有指针功能,指向文件内容放置的快

        (里面保存的是文件的权限,所有者,所属主等基本信息)

1、文件的拥有者与用户组(owner/group)

2、文件的访问模式(read/write/excute)

3、文件的类型(type)

4、文件建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改时间(mtime)

5、文件的大小

6、定义文件属性的标志(flag),如setUID...

7、文件真正内容的指针(pointer)

创建目录:分配一个inode和至少一个block

          inode记录该目录的相关属性,并指向分配到的那个快;

  block记录在这个目录下的相关文件(或目录)的关联性

创建文件:分配至少一个inode与相对于该文件大小的快数量

          inode不记录文件名,而是记录文件的相关属性,文件名记录在目录所属的block区域

例如:读取/etc/crontab的流程如下:

    1、操作系统根据根目录(/)的相关数据可获取/etc目录所在的inode,并读取/etc这个目录所有相关属性

2、根据/etc的inode的数据,可以获取/etc目录下所有文件的关联数据是放置在哪一个block中,并前往该block读取文件的关联性内容

3、由上步骤的block中,可以知道crontab文件的inode所在地,并前往该inode

4、由上步骤的inode中,可以获取crontab文件的所有属性,并前往由inode所指向的block区域,获取crontab文件内容

块组:block group 对用户是不可见的,子逻辑区域,有个超级标示区

文件系统构成:(dumpe2fs 可以查看)

    superblock(超级块):记录整个文件系统相关信息

    1、block与inode的总量

2、未使用和已使用的inode/block数量

3、文件系统的载入时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息

4、有效位的值,已载入为0,未载入为1

group description(组描述):记录此block由何处开始记录

    block bitmap(快位图):此处记录block是否使用

inode bitmap(inode位图):此处记录inode是否使用

inode table(inode表):为每个inode的数据存放区

data block(数据块):为每个block的数据存放区


metadata  bitmap (块位图)dentry 目录项

创建文件:先在目录下创建一个条目,把名字和iNode对应上,回到源数据,指定块位置

删除文件:删除条目里面的名字和iNode对应关系,将对应的iNode标记为0

          通过inode号码来删除文件:find ./ -inum 400935 -exec rm -rf {} \;  

          extundelete: linux下高效数据恢复工具 http://extundelete.sourceforge.net/  安装时需要的依赖包 e2fsprogs-lib e2fsprogs-devel

复制文件:不同的inode和block

剪切文件:同一个分区,inode号和磁盘块位置都没有变,只是把条目里面的名字改变了一下

链接:硬链接和软链接(符号链接),多个文件指向同一个iNode,硬链接;符号连接,指向的是源文件的路径,而不是文件块

ln (link) [-s -v]  源文件  链接

硬链接:在某个目录下的block中增加一个文件关联数据,不会用到inode与磁盘空间

        只能对文件进行创建,为了避免循环引用

        不能跨文件系统,可以在不同目录下

创建硬链接可以增加文件被连接的次数

符号链接:建立一个独立的文件,这个文件会让数据的读取指向它连接的文件内容

        可以对目录创建

可以跨文件系统

不会增加被链接文件的链接次数

其大小为指定路径所包含的字符个数

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

du    查看文件大小  [-s -h ] 

-s 只分别计算命令列中每个参数所占的总用量

-h 做单位转换

df  查看硬盘使用情况

-i  查看inode的使用情况

-P 不换行显示

-h  做单位转换

设备文件:

b:块设备文件,以块为单位,随机访问

c: 以字符为单位,是线性设备,访问时有先后顺序

例:ls -l /dev

主设备号(标示设备类型,major number)   

次设备号(标示同一类型的不同设备,minor number)

创建设备文件:mknod  -m name type major ninor

硬盘的设备文件名:

IDE ATA  :hd

SATA  SCSI USB :sd

a b c ....来区别同一种类型下的不同设备

IDE:    第一个IDE口,控制器,主 从hda  hdb

第二个IDE口,主从  hdc hdd

fdisk 查看当前系统识别的硬盘和分区的情况

fdisk -l [/dev/to/smoe_device_file]

还可用来管理分区

fdisk /dev/sda

p:显示当前硬件的分区,包括没有保存的改动

n:创建一个新的分区

d:删除一个分区

w:保存并退出

q:不保存退出

t:修改分区类型(文件系统类型)

l:显示所支持的所有类型

cat /proc/partitions  查看分区

partprobe  [/dev/sda]  通知操作系统分区表的变化

partx -a [/dev/sda]    告诉内核磁盘分区是否存在及其编号

cat /proc/filesystem  查看文件系统类型

高级格式化:mkfs -t ext4

mkfs -t msdos /dev/hdb3

mkfs.ext2 、mkfs.ext3 、mke2fs

-b:分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。

-i:设定inode大小

-N:设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。

-c:在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢

-L:预设该分区的标签label

-j:建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

查看磁盘超级块的信息:

    tune2fs -l /dev/sda[n]  调整ext2/ext3/ext4文件系统参数

    dumpe2fs -h /dev/sda[n]  显示ext2/ext3/ext4文件系统信息

二.swap

swap分区:主要是用来内存过载使用,可以和内存上暂停进程的页面保存在swap分区中,再次启用时再分配页面,pageoutswap分区:主要是用来内存过载使用,可以和内存上暂停进程的页面保存在swap分区中,再次启用时再分配页面,pageout pagein ,swap out swap in ,发现有频繁的换进和换出的时候就需要加内存。

1.虚拟内存:

虚拟地址:线性地址;

页面的换进和换出,允许了内存的过载使用

计存器1纳秒,缓存10纳秒,内存10毫秒,磁盘秒

free 查看物理内存和交换空间使用情况

-m

buffers 缓冲  cached 缓存

fdisk命令中,调整分区类型为82;

创建交换分区:

格式化:# mkswap /dev/sda8,先调整分区类型为82,fdisk,

-L LABEL

swapon /dev/sda8,启用该交换空间

-a:启用所有的定义在/etc/fstab文件中的交换设备

swapoff /dev/sda8

回环设备

loopback, 使用软件来模拟实现硬件

创建一个镜像文件,120G,当作一个硬件设备来使用

dd命令:

if=数据来源

of=数据存储目标

bs=1

count=2

seek=#: 创建数据文件时,跳过的空间大小;

dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1

dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1

可用来备份和恢复mbr

dd if=/dev/zero of=/var/swapfile  bs=1M count=1024

seek 跳过多大的空间

mkswap 格式化为swap分区

    1、通过fdisk创建swap分区或者使用dd命令创建一个虚拟内存的文件

  dd if=/dev/zero of=/tmp/swap bs=1M count=1024

2、mkswap进行swap分区格式化

3、swapon 激活swap分区

  swapoff 关闭swap分区

mount:挂载命令

    命令格式:mount [-t vfstype] [-o options] device dir

-a 挂载fstab中提到的所有文件系统

-o remount 重新挂载已挂载的文件系统

-o loop:用来把一个文件当成硬盘分区挂接上系统

    -o ro:采用只读方式挂接设备

    -o rw:采用读写方式挂接设备

挂接光盘镜像文件

1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

        #cp /dev/cdrom /home/sunky/mydisk.iso 或

        #dd if=/dev/cdrom of=/home/sunky/mydisk.iso

2、挂载光盘镜像文件

    #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

三.自动挂载

文件系统的配置文件/etc/fstab

OS在初始时,会自动挂载此文件中定义的每个文件系统

要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率(每多少天做一次完全备份) 文件系统检测次序(只有根可以为1)

/dev/sda5 /mnt/test ext4 defaults 0 0

mount -a:挂载/etc/fstab文件中定义的所有文件系统

/etc/fstab文件  实现开机自动挂载

    设备  挂载点  文件系统类型  挂载参数  是否执行备份命令dump  是否启动使用fsck扫描磁盘

fuser: 验正进程正在使用的文件或套接字文件

-v: 查看某文件上正在运行的进程

-k:

-m:针对目录,也就是挂载点,一般和-k 一起使用

fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程

wodim --devices 查看设备名(没有挂载的光盘)

练习:

1、创建一个5G的分区,文件系统为ext4,卷标为MYDATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;

2、创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备;

# mkdir /var/swaptemp

# dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512

# mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile

/etc/fstab

/var/swaptemp/swapfile  swap swap defaults 0 0

3、上述第一问,如何让其自动挂载的同时启用ACL功能;

/etc/fstab

LABEL='MYDATA' /data ext4 defaults,acl 0 0

Linux: 查看VFS结构图

VFS:virtual filesystem  ,interface:system call

当前,除了Linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统,比如reiserfs, xfs, Windows的vfat NTFS,

网络文件系统nfs 以及flash 文件系统jffs2, yaffs/yaffs2 ubifs。

linux通过叫做VFS的中间层对这些文件系统提供了完美的支持。

VFS存在的意义

        1. 向上,对应用层提供一个标准的文件操作接口;

        2. 对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;

        3. VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,

    使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;

        4. 此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单

        VFS 是一种软件机制,也许称它为 Linux 的文件系统管理者更确切点,与它相关的数据结构只存在于物理内存当中。

所以在每次系统初始化期间,Linux 都首先要在内存当中构造一棵 VFS 的目录树(在 Linux 的源代码里称之为 namespace),

实际上便是在内存中建立相应的数据结构。

VFS: virtual filesystem  中间层

每个分区都是一个单独的文件系统

物理和逻辑之间的关系

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • 一个基本的计算机系统由“硬件”和“软件”组成,一台Linux设备,主要的组成如下图所示: 一般情况下,我们所说的L...
    时待吾阅读 1,616评论 0 16
  • Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。 内核、shell和文件系统一起形成了基本...
    请爱护小动物阅读 2,538评论 0 22
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,230评论 1 17
  • 我很想家 我离家很远 出来念书 还要两个月左右才能回去 上面那张图片是我的吐槽 现居地空气质量不佳几乎没山没好水 ...
    幾良阅读 215评论 0 0
  • 我把《想开一个店》这本书送给你来读: 其实,不管是学生、上班族、还是创业者,我们都有一个开店梦;有的想开咖啡店,有...
    郑不同阅读 200评论 0 0