Linux磁盘与文件系统

一、硬盘结构

1、扇区(sector):是最小的物理存储单位,每个扇区512bytes

2、将扇区围成一个圆,就是柱面(cylinder,是分区(partition)最小单位

3、第一扇区包括:

主引导区(master boot record,mbr):446bytes

分区表(partition table):64bytes,只能记录4

二、各种接口磁盘在Linux中文件名

1、/dev/sd[a-p][1-15]:SCSI,SATA,USB,Flash随身碟等

2、/dev/hd[a-d][1-63]:IDE接口设备

三、磁盘分区

1、主分区和逻辑分区最多只能有4个(硬盘限制)

2、扩展分区只能有一个(操作系统限制)

3、逻辑分区是有扩展分区分出来的

4、能被格式化的只有逻辑分区和主分区

5、逻辑分区linux系统中IDE可有59个(5-63),SATA可有115-15

四、Linux文件系统

1、inode :存放文件权限和属性,一个文件只有一个,同时记录次档案数据所在的block号码

它包含:

(1)该档案的存取模式(read/write/execute

(2)拥有者与群组(owner/group

(3)容量

(4)建立或创建时间(ctime

(5)最近读取时间(atime

(6)最近修改时间(mtime

(7)定义档案特性的旗帜(flag,如:SUID

(8)该档案真正指向的内容block

特点:

1inode:文件系统一开始将规划好了inode,block,除非重新格式化或resize2fs命令

2)每个inode大小为128bytes,记录一个block号码庶4byte

3)每个档案有且只有一个

4)因此文件系统能够建立的档案数量与inode有关

5)系统读取文件时先找到indoe,并分析inode中所记录的权限与用户权限是否相符,然后才读取

6)一个block只能存放一个文件的数据,如果文件太小,则空着

2、data block: 存放实际数据,可能会占多个

3、superblock : 记录整个文件系统信息,一般1024bytes,dumpe2fs查看

包括:

(1)inode,block,总量,使用量,剩余量,

(2)blockinode大小(block1,2,4indoe128bytes

(3)filesystem的挂载时间,最近写入时间,最近效验磁盘(fsck)等

(4)一个valid bit数值,若文件系统已经挂在为0,反之为1

(5)事实上除了第一superblock,后续不一定有,有的话也是对备份

这种文件系统称为:索引式文件系统(indexed allocation

4、Filesystem Description(文件系统描述)

描述每个block group的开始与结束的block号码,以及说明每个区段(superblock,bitmap,inodemap,data block)分别介于哪一个block号码之间,可以恋情dumpe2fs查看

5、block bitmap(区块对照)

可以查看到那些block是空的

6、inode bitmap(inode 对照表)

为使用的inode号码

事实上:在格式化时将硬盘分成几个区块群组(block group,每个区块都有自己的inode.block,superblock,文件系统的最前端是启动扇区

data block:

Block大小

1K

2K

4K

最大单一文件

16GB

256G

2TB

最大文件系统容量

2T

8TB

16TB

7、目录

一个目录分配一个inode和至少一表block,其中inode记录该目录的相关全乡和属性,并记录分配到那块block号码,而block则记录在这个目录下的文件名与该文件所占的inode号码数据

查看档案所占用inode号码 :ls -li

查看目录:ls -d /bin /boot /proc /lost+found /sbin

文件读取过程:ll -di / /etc /etc/passwd

实例:

dumpe2fs [-bh] 装置文件名

b:列出保留为坏轨的部分

h:仅列出superblock的数据

8、EXT2/EXT3档案存取与日志式文件系统

ext1新增一个档案的步骤:

(1)先确定用户对预增加的目录有没w,x权限

(2)根据inode bitmap找到没有用的inode号码,并将新档案权限/属性写入

(3)根据block bitmap找到没有用的block号码,并将数据写入到block中,且根性inode指向该block号码

(4)将刚刚写入的indoeblock数据同步更新到indoe bitmapblock bitmap中,然后更新superblock内容

一般来说,inode table data block称为数据区域,至于superblockblock bitmap,inode bitmap等,等称metadata(中介资料)

如果出问题了可以用e2fsck检查,但是这样太耗时

ext2新增一个档案的步骤:

(1)开始:当系统写入档案时,先在日志记录块中记录某个档案准备写入数据

(2)实际写入:开始写入档案和权限,并更新metadata

(3)结束:完成metadata的更新后,在日志记录块中完成该档案的记录

如果出现问题,可以通过日志找到具体出问题的问位置,做针对性修复,省时

9、异步处理

当一个文件加载到内存中,如果内容没有更改,将文件设定为clean,如果内容被更改,标记为dirty,系统会不定期的将dirty的数据写入到磁盘,可以用sync手动写入

10、挂载

将文件系统与目录结合动作称为挂载

ll -di / /proc : 最顶层inode一般为2/proc 1

ll -di / /.. /. :可以看到三个目录是同一个

11、VSFVirtual Filesystem Switch

所有的文件系统都是通过VSF访问的,就相当于他封装了底层,你在上面的操作是一样的

查看linux支持那些文件系统:

ll /lib/modules/$(uname -r)/kernel/fs

查看当前已经加载到内存中支持的系统

cat /proc/filesystems

dumpe2fs 查看

1、首先找到根目录

df 

2、dumpe2fs /dev/sda1

五、常用命令

1、磁盘与目录容量

df : 列出文件系统整体磁盘使用量

df [-ahikHTm] 目录或文件名

a:所有文件系统,包括/proc

k:kb

m:mb

h:自动显示合适的格式

H1000进位

T:连同分区(partition)文件系统(filesystem)名称

i:不用硬盘容量,而以inode数量显示

如:

df -h

df -h /etc :显示/etc下面可用磁盘容量

df -hi

du:评估文件系统使用量(常用在目录上)

du [-ahskm] 档案或名称

a:所有,默认统计目录底下

h:容易阅读方式显示

s:列出总量

S:不包括子目录

k:kb

m:mb

如:

检查根目录底下每个目录所占用容量:du -sm /*

六、实体链接和符号链接

1、Hard Link(实体链接,硬式连结,实际连结)

就是在某个文件夹下增加了一条关联到inode档案

一般来说,设定硬连结时,硬盘空间和inode的数目都不会变,它只是在某个目录的block中多增加一条关联数据,但也有特殊时候,如果恰巧这个block装不下这条数据了,那么就只能在找一个block继续存该条记录

缺点:

不能跨文件系统

不能link目录

创建:

ln /etc/crontab .

cp -l /etc/crontab /tt

2、Symbolic Link(符号链接,快捷方式)

建立一个独立文件,指向link文件名。所以档案删除,该链接就失效了

创建:

ln -s t t2 

cp -s t t1

要链接的文件名有多长,则该链接文件就有多大,每个英文1bytes

可以用du -sb; df -i .查看使用量

3、目录链接数量

当新建一个目录时,该目录本身就有两个连接

如:/tmp/test 和 /tmptest/. 是一个目录

上能目录增加1/tmp/test/..

七、磁盘分割,格式化,效验,挂在

1、一般使用磁盘步骤

(1)对磁盘分区

(2)对分区格式化

(3)如果有必要,对分区效验

(4)在linux上挂载

2、分区

fdisk [-l] 装置名称名称

l : 输出后面装置名称所有分区内容。如果没有装置名称则列出整个系统分区

分区步骤:

1、df / 找到根目录

2、fdisk /dev/sda 进入工作界面

常用命令:

d   delete a partition

n   add a new partition

p   print the partition table

q   quit without saving changes

w   write table to disk and exit

强制让核心从新捕捉partition table : partprobe

3、磁盘格式化

1mkfsmake filesystem)创建文件系统

mkfs [-t 文件系统格式装置名称

t : ext3,ext2,vfat

:mkfs -t ext3 /dev/sda5

(2)mke2fs 

b:block大小,目前支持102420484096

i:inode大小

c:一次快速测试,两次读写测试

L:label名称

j:本来mke2fsext2,加上-j会加入journal而成为ext3

如:mke2fs -j -L "test" -i 8192 -b 2048 /dev/sda5 

ext3格式,labe等于test8192bytes分配一个inodeblock大小2048bytes

4、fsckbadblocks

(1)fsck,要卸载文件系统

t:类型

A:根据/etc/fstab从新扫描

a:自动修复,不需要按y

y:某些文件系统只支持-y

C:显示进度

f:强制检查

D:针对文件系统下的目录进行优化配置

fsck -C -f -t ext3 /dev/sda5

(2)badblocks

s:进度

v:可以看到进度

w:使用写入测试

八、挂载,卸载

注意:

(1)单一文件系统不应挂在到不同的挂在点

(2)单一目录不应挂在多个文件系统

(3)目录理论上要为空。如果不为空,原来的内容被屏蔽

1、挂载

mount -a

mount [-l]

mount [-t  文件系统] [-L labe] [-o 额外选项] [-n] 装置名称 挂在点

a:根据/etc/fstab的数据将所有未挂在的挂载上

l:并显示label

t:格式,ext2,ext3,vfat,reiserfs,iso9660,nfs,cifs,smbfs,后三种为网络文件类型

n:默认情况下,系统将实际挂在日情况写入/etc/mtab中,反之

L:除了用装置名称挂载还可以用label

/etc/filesystems:系统制定的测试挂在文件系统

/etc/filesystems:linux已经加载的文件系统类型

ls /lib/modules/$(uname -r)/kernel/fs,相关文件系统类型的驱动

如:

mount -l : 挂载详情

mount -t /dev/cdrom /mnt/cdrom

mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/flash : 指定字符

mount -o remount,rw,auto / :重新挂在根目录

mount --bind /home /mnt/home :挂载目录

使用label挂在:

dumpe2fs -h /dev/hdc6 : 找到label

mount -L "test" /mnt/temp/ : 挂载

label挂载优缺点:

不论磁盘名怎么变,插在那个IDE,STAT接口,都不影响

如果两个label重复就严重了

2、卸载

umount [-fn] 装置或挂载点

f:强制

n:不更新/etc/mtab

查看是否卸载:dfmount -l

注意:如果是目录则一定要是挂载点

3、mknod

4、e2label修改label

e2label 装置名称 新label

5、tune2fs [-jlL] 装置

l:dumpe2fs -h ,读取superblock数据

j:ext2ext3

L:e2label相同

6、hdparmIDE硬盘常用)

7、开机挂载

/etc/fstab/etc/mtab

(1)/必须优先其他目录

(2)挂载点必须先建立好

(3)同一时间挂载点只能挂在一次,分区也是

(4)如要卸载,需要退出目录

fstab文件:

device mount point filesystem parameters  dump fsck

装置或label 挂载点 文件系统 参数 备份 检查

参数:

备份:

0不做,1每天,2不定期,通常01

检验:

0不检查,1最早检查,21

8、loop挂载(挂载映像)

9、建立大档案制作loop装置档案

(1)建立大档案

dd if=/dev/zero of=/home/loopdev bs=1M count=512

if : input file/dev/zero,一直输出0装置

of:output file

bs:block大小

count:建立多少个

(2)建立文件系统

mkfs -t ext3 /home/ren/loopdev

(3)挂载

mount -o loop /home/loopdev /mnt/test

另外参考xen软件

10、交换空间(swap)置换

(1)新增一个分区当作swap

分区:并更改id82partprobe

格式化:mkswap /dev/sda6

使用:swapon /dev/sda6

观察:free

(2)大档案

创建大档案:dd if=/dev/zero of=/home/ren/tempswap bs=1M count=512

格式化:mkswap /dev/sda6

使用:swapon /dev/sda6

观察:free

查看当前使用swap分区:swapon -s

关闭swap分区:swapoff /home/ren/tempswap

注意:

(1)在核心2.4.10以后,单一swap没有2gb限制

(2)最多只能32swap

(3)不能超过系统最大寻址能力

11、磁盘空间浪费(p295

du -sb /etc

ll -s

12、parted分割磁盘(可用于2T以上)

parted [装置] [指令 [参数]]

新增:mkpart [primary | logical | extended] [ext3 | vfat] 开始 结束

分割表:print

删除:rm [partition]

如:

parted /dev/sda print : 打印分割资料

查看帮助:man partedparted /dev/sda help mkparted

建立逻辑分区:parted /dev/sda mkpart extended ext3 21.0GB 21.2GB 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值