linux备忘录-文件系统管理
Extx 文件系统原理
block group
每个分区(partition)的组成为 boot sector -> block group -> block group -> block group -> ...
而每个block group的组成为 super block -> 文件系统描述 -> 区块对应表(block bitmap) -> inode对应表(inode bitmap) -> inode Table -> Data Block
文件系统描述
描述每个block group开始和结束的block号码。以及每一个区段(superblock、bitmap、inodemap、datablock)分别介于哪一个block号码之间。
block bitmap
用于描述block的使用情况,哪些block为空,哪些block已经在使用。
inode bitmap
用于描述inode的使用情况,哪些inode没在用,哪些inode已经在使用。
通过dumpe2fs观察文件系统
dumpe2fs [-bh] 装置文件名
dumpe2fs -h 仅列出superblock的数据
superblock inode block
superblock 记录文件系统的整体信息,如inode/block的总量、使用量、剩余量、以及文件系统的格式和相关信息。
superblock记录着
- block和inode的总量。
- 未使用和已经使用的block和inode数量。
- block和inode的大小
- 文件系统的挂载时间,最近一个写入数据的时间,最近一个检查硬盘的时间。
- 文件系统是否被挂载的标志 valid bit。未挂载为0、挂载为1。
一般,superblock的大小为1024bytes。
除了第一个block goup具有superblock,其他不一定具有superblock。若其他blockgroup有,则只是**对superblock的备份。
- block
inode 记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的block号
inode 记录着
- 档案的权限 rwx
- 档案的拥有者和群组
- 档案的容量
- 档案的三个时间ctime,atime,mtime
- 档案的特殊权限 SUID、SGID、SBIT
- 档案真正的内容指向,指向block区
inode的大小和数量在格式化后就不能变。
每个inode的大小为128bytes。
每个档案占用一个inode。
文件系统能够建立的档案数量与inode的数量有关。
inode记录block号码的区域定义为12个直接、一个间接、一个双间接和一个三间接记录区。
block直接为 -> 数据block
block间接为 -> 间接block -> 数据block
block双间接为 -> 间接block -> 间接block -> 数据block
block三间接为 -> 间接block -> 间接block -> 间接block -> 数据block
block 实际记录档案的内容,若档案太大,会占用多个block
每个block的大小可以为1kB、2KB、4kB。
原则上,block的大小和数量格式化后就不能改变。
每个block只能放置一个档案的内容。
档案大会占用多个block,档案小会占用一个block,并浪费block其余空间。
文件与目录
目录
每个目录的block记录着目录下的文件名和对应的inode号
日志文件系统
例如,文档创建开始记录日志,文档创建结束记录日志,这种方式有利于数据一致性检查
挂载相关
将 硬盘的文件系统 与 目录树 结合的方式称为 挂载。文件系统必须挂载到目录树的某个目录后,才能被使用。
文件系统最顶层目录的inode号 一般为 2。
通过ls -l /lib/modules/$(uname -r)/kernel/fs 可以查看linux支持的文件系统
通过cat /proc/filesystems 可以查看linux目前加载的文件系统。
VFS(virtual filesystem switch) 会帮助我们管理文件系统。
iso的挂载和制作
iso的挂载
通过命令 mount -o loop /tmp/xx.iso /mnt 进行挂载。
制作大档案进行挂载(制作iso映像)
dd if=/dev/zero of=/home/loopdev bs=1M connt=512 制作/home/loopdev大小为512M的档案,内容为空。
if 指定 input file
of 指定 output file
bs 指定每个block的大小
count 指定有多少个block
然后进行格式化
mkfs -t ext3 /home/loopdev
然后进行挂载
mount -o loop /home/loop/dev /media/cdrom
查看过载情况
df 或 mount
建立 swap partition
通过fdisk分割磁盘块,并需要修改system id
通过 fdisk的 t 修改系统ID
通过mkswap进行格式化
mkswap /dev/hdc7
free通过swapon将swap启动
swapon /dev/hdc7
free- 通过free观察内存的用量
通过swapoff关掉swap file
知识点
数据更改后只会从clean变成dirty,数据从内存到硬盘是异步的。可通过sync命令同步写入到硬盘。
linux会将常用的档案或数据放在主存储器的缓冲区,以加快文件系统的读写,因此linux的物理内存最后都会别用光。
挂载注意:
单一文件系统不应该重复挂载到不同挂载点。
单一目录不应该重复挂载多个文件系统。
挂载点目录理论上应该为空目录。
挂载的一些限制:
根目录/必须挂载,而且必须先于其他挂载点挂载。
挂载点必须为已经建立的目录
挂载点同一时间只能挂载一次
partition同一时间只能挂载一次
不能再挂载点目录进行取消挂载
目录 /etc/fstab 和 /etc/mtab 是开机挂载相关的目录
/etc/fstab 后面的两个数字的意义
第一个数字 是否进行dump备份
0 不做dump备份
1 每天进行dump备份
2 不定日期进行dump备份
第二个数字 是否以fsck检查扇区
0 不检查
1 最早被检验
2 检验,不是最早,一般根目录设定为1最早进行检验。
通过 mount -a 对 /etc/fstab 进行测试,否则影响开机
通过 df 查看 挂载信息。
单人模式下根目录 是只读的。可通过 mount -n -o remount,rw / 重新挂载改成读写。
linux支持的文件系统在 /lib/modules/$(uname -r)/kernel/fs 下
/etc/filesystems 系统指定的测试挂载文件系统类型
/proc/filesystems 系统已经加载的文件系统类型 d
当通过ls /dev下面的装置时,group后面的是 major号 和 minor号。可以称为主装置号和次装置号。例如
/dev/hda major为 3 minor为 0~63。
/dev/hdb major为 3 minor为 64~127。
/dev/sda major为 8 minor为 0~15。
/dev/sdb major为 8 minor为 16~31。
基本上,linux2.6之后,硬件文件名都能被系统实时产生。要手动处理装置档案,可通过 mknod命令。
文件系统命令
- dumpe2fs (观察文件系统的各部分,superblock inode block等)
df (查看目前挂载的装置,查看整体磁盘使用量)
df -h 以GB、MB等方式显示
df -h /etc 查看/etc的可用磁盘容量。
df -ih 显示可用的inode数量。- e2fsck (进行数据一致性检查,inode bitmap、block bitmap、superblock等元数据的一致性)
- sync (在内存中dirty的数据同步写入硬盘)
du (查看文件系统磁盘使用量,默认以kB为单位)
du -a 档案的容量也列举出来
du -s /* 目录的容量ln (制作链接档)
ln srcfile dst_linkfile 创建硬链接
ln -s srcfile dst_linkfile 创建软链接
硬链接不占用inode和block,软链接占用inode和block
du -sd;df -i 查看当前目录的总大小和inode使用情况fdisk (进行磁盘分区,仅对装置起作用,只有root才能执行)
df / 找出根目录所在磁盘
fdisk /dev/sda 对/dev/sda进行操作
fdisk -l 列出所有装置的分区情况partprobe (强制让核心重新捕捉partition table)
在fdisk进行分区后使用
mkfs (格式化分区 make file system)
mkfs [-t 文件系统格式] 装置文件名
mke2fs (自定义格式户分区)
mke2fs -b [1024|2048|4096] 指定block大小
mke2fs -j 创建ext3文件系统,默认为ext2
mke2fs -L LABEL 设定文件系统的label
mke2fs -i size 设定每多少字节分配一个inodefsck (进行文件系统检测修复)
fsck -t type 指定文件系统类型
fsck -A 依据/etc/fstab的内容,对需要的装置扫描一遍。
fsck -a 自动修复,不需要老按y
fsck -C 扫描过程中使用直方图显示进度
fsck -f 强制检查clean的地方
最好在卸载情况下扫描mount (挂载命令)
mount -a 根据/etc/fstab对未挂载的文件系统进行挂载
mount -l 显示目前的挂载信息,及label
mount -t type 指定文件系统类型
mount -n 默认会将挂载信息写入/etc/mtab,-n则不写入
mount -L 通过label进行挂载
mount -o 后接挂载参数
mount 装置文件名 挂载点
mount /dev/sda5 /mnt
mount -t iso9660 /dev/cdrom /media 挂载光盘
mount -t vfat /dev/fd0 /media 挂载软盘
mount -p loop /root/xxx.iso /mnt 挂载iso映像文件。
fdisk -l 找出U盘的装置文件名
mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/flash 挂载U盘,不能是NTFS格式
mount -o remount,rw,auto / 重新挂载根目录,并加入参数rw,auto
mount --bind /home /mnt/home 将某个目录挂载到其他目录
mount -L "LABEL" /mnt 通过Label进行挂载
挂载参数 -o
async/sync 设定磁盘是否以异步方式运作,默认为async异步
auto/noauto 是否注定测试挂载
rw/ro 设定读写还是只读
exec/noexec 设定是否可执行
user/nouser 是否允许用户通过mount挂载
suid/nosuid 是否允许suid的存在
usrquota 启动文件系统支持磁盘配额
grpquota 启动文件系统支持群组磁盘配额
defaults 默认参数umount (取消挂载)
umount [-fn] 装置文件名或挂载点
umount -f 强制取消挂载
umount -n 不更新 /etc/mtabmknod (手动设置装置档案)
mknod 装置文件名 [bcp] [major] [minor]
参数 b 为设定装置名称成为一个周边存储设备档案,例如硬盘。
参数 c 为设定装置名称成为一个周边输入设备档案,例如鼠标、键盘。
参数 p 为设定装置名称成为一个FIFO档案。
mknod /dev/hdc10 b 22 10
mknod /tmp/testpipe pe2label (格式化之后修改文件系统的label)
e2label 装置文件名 newLabelName
e2label /dev/hdc10 "my_label" 修改/dev/hdc10的LABEL为my_label
dumpe2fs -h /dev/hdc10 可以查看文献系统的labeltune2fs ()
tune2fs [-jlL] 装置号
tune2fs -l 类似于 dumpe2fs -h
tune2fs -j 将ext2升级为ext3
tune2fs -L 修改文件系统的LABELhdparm (侦测和修改IDE接口的硬盘参数)
hdparm -Tt /dev/sda 可以测试SATA硬盘的读取效能
- mkswap (格式化swap分区)
- swapon (加载swap分区)
- swapoff (卸载swap分区)
parted
parted 装置 [指定[参数]]
parted /dev/sda print 列出分割表信息
parted /dev/sda mkpart logical ext3 19.2GB 19.7GB //创建逻辑分区
parted /dev/sda rm 8 删除8号分区
其他知识点
硬链接
硬链接不能跨文件系统
硬链接不能对目录进行
参考
鸟哥的Linux私房菜 第三版
linux备忘录-文件系统管理的更多相关文章
- linux btrfs文件系统管理与应用
btrfs文件系统管理与应用 1.btrfs文件系统 基本介绍 btrfs文件系统在CentOS7.x上属于技术预览版 btrfs文件系统英文名:B-tree FileSystem或者Butter ...
- linux的文件系统管理(ext4-tune2fs-e2fsck-xfs文件系统)
文件系统管理 文件系统是Linux系统存放文件的空间.文件系统的类型有很多种,CentOS支持多种文件系统,目前常用的是ext4和xfs文件系统.我们以ext4文件系统为例来说明对文件系统的管理. U ...
- Linux高级文件系统管理(8)
如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的公平使用,磁碟配额 (Quota) 就是一项非常有用的工具,另外,如果你的用户常常抱怨磁盘容量不够用,那么更进阶的文 ...
- Linux学习 -- 文件系统管理
1 分区和文件系统 分区类型 主分区:<= 4个 扩展分区:只能有一个,也算主分区的一种 不能存储数据和格式化,只能用来包含逻辑分区 逻辑分区:扩展分区中划分的 IDE--最多59个 ...
- Linux进阶文件系统管理之RAID
RAID 1.引言 RAID全称Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即独立冗余磁 ...
- linux备忘录-基本命令
基本命令 将命令分类为获取信息类,文件管理类,目录管理类,文本处理类,系统类,工具类. 获取信息类 uname # 输出所有信息 # 一行输出,空格分割 uname -a # 输出内核名称 uname ...
- 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍
目录 1.了解硬盘结构(了解即可) (1)硬盘的逻辑结构 (2)硬盘接口 2.Linux文件系统介绍 (1)Linux文件系统的特性 (2)Linux常见文件系统 3.整理一下对文件系统的认识 在了解 ...
- Linux磁盘及文件系统管理
在LINUX中我们知道一个很重要的概念,那就是"一切皆文件",这里的一切表示所有在LINUX系统的对象,自然也包括了LINUX中的硬盘设备.在LINUX中所有设备都被抽象成一个文件 ...
- linux下fdisk分区管理、文件系统管理、挂载文件系统等
分区管理工具有:fdisk, parted, sfdisk fdisk:对于一块硬盘来讲,最多只能管理15分区: # fdisk -l [-u] [device...] 查看硬盘设备分区信息 # f ...
随机推荐
- base_lr, blobs_lr
caffe里面,原来以为是不可以随便调整学习率的,现在看来是可以的.base_lr是适用于所有层的学习率,而针对单个层,可以通过增加两个blobs_lr,用来调整该层的学习率,为什么是两个呢,因为一个 ...
- HashMap的使用
HashMap的使用 import java.util.HashMap; import java.util.Iterator; //HashMap<key, value>():键值对的形式 ...
- Liunx 配置sshd服务
简介 SSH(Secure Shell)是一种能够提供安全远程登录会话的协议,也是目前远程管理Linux系统最首选的方式,因为传统的ftp或telnet服务是不安全的,它们会把帐号口令和数据资料等数据 ...
- juicer
function financingBodyTable(){ var jsonData = { FinancingBodyJSON:${relaListArr}//list数组 } var addMo ...
- 解决方法:SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正(转载)
引用:http://luowei1371984.blog.163.com/blog/static/44041589201491844323885/ SQL2008运行select count(*) f ...
- px与em的区别,权重的优先级
px与em的区别,权重的优先级 PX特点:px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.EM特点:1. em的值并不是固定的:2. em会继承父级元素的字体大小. 权重 ...
- php 微信公众号图文消息回复的实现 与access_token
//代码如下 <?phpclass IndexAction extends Action { public function __construct(){ } public function i ...
- HDU 6274 二分+预处理(CCPC K题
#include"bits/stdc++.h" #define db double #define ll long long #define vec vector<ll> ...
- 2015 acm taipei L-Reward the Troop(uvalive 7465)(找规律)
原题链接 就大概说的是一个将军要给部下发勋章,他的部下以和别人不一样的勋章为荣,但是他没这么多钱,所以问你最少要多少钱 要求是每个人的上司是他的上两级,他的下两级是他的部下,每个人的勋章不能和他的上司 ...
- SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。
可以查看到pycharm右下角文件的编码方式, 如果编码方式不一致,则在设置中修改编码方式: http://jingyan.baidu.com/article/c843ea0ba55f0977931e ...