Linux下的文件系统以及磁盘操作-程序员宅基地

技术标签: 运维  操作系统  

在文件系统方面,Linux可以算得上操作系统中的 “瑞士军刀”。Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统,而“什么是文件系统”?文件系统是对一个存储设备上的数据和元数据进行组织的机制。
常见的文件系统:ext2、ext3、ext4、xfs、jfs、reiserfs、iso9660、swap、VFAT、

VFS等
例如:EXT2 XFS JFS REISERF3等都是单个文件系统使用
说到文件系统,就要说一下硬盘,硬盘出厂后的第一次格式化叫做低级格式化,其作用主要是为了创建磁道,同一个编号的磁道形成一个柱面,分区时则是按照柱面进行分区,从外到里从低到高进行划分。每一个分区可以独立的创建一个文件系统。
Linux 以一组通用对象的角度看待所有文件系统。这些对象是超级块(superblock)、inode、dentry 和文件。超级块在每个文件系统的根上,超级块描述和维护文件系统的状态。文件系统中管理的每个对象(文件或目录)在 Linux 中表示为一个 inode。

inode 包含管理文件系统中的对象所需的所有元数据(包括可以在对象上执行的操作)。另一组结构称为 dentry,它们用来实现名称和 inode 之间的映射,有一个目录缓存用来保存最近使用的 dentry。dentry 还维护目录和文件之间的关系,从而支持在文件系统中移动。最后,VFS 文件表示一个打开的文件;注:inode:用于存放权限,属主属组,大小,类型,磁盘块的指向;目录:每一个目录需要一个inode,存放文件名;位图:索引inode 非为0/1;磁盘块位图:标志磁盘块有没有被使用。
和文件系统有联系的命令:
1、ln:
格式:ln [options] SRC DST 默认创建的是硬链接(不能跨分区),从文件系统的实现上来说,硬链接其实就是将一个文件的的的inode号多次利用,具有不同的指针,只要结点的连接数不是0,文件就一直存在,不管你删除的是源文件还是连接的文件。
常用参数:-s:创建软连接,是一个独立的文件,使用了一个新的inode号,引用的路径,而且可以为目录创建,并且可以跨分区。
因此在对某些文件进行复制,剪切和删除时其实质分别是:复制:将存有的数据所在的磁盘块进行复制一份,并使用新的inode号,建立相应的映射,而剪切则不动数据块,只是将inode号中的文件路径映射修改了,这就是为什么有时候我们在同一个分区上移动一个很大的文件时,也能迅速完成的原因,而删除则是将inode号标识为0,清除其信息,然后将磁盘块标识为未使用,当有新的数据存入时就将原来的数据覆盖,由此当误删了一些数据时只要还未向原有位置写入新的数据时,那些被误删的数据均是可以找回的,像一些软件上的粉碎功能则是想原文件数据存储的位置重新写入01代码,从而达到删除原数据的目的。
2、文件管理
(1).du:用于估算目录和文件的使用量
参数:
-h:单位换算,使大小以M单位显示
-s:显示目录以及目录中所有文件的大小
例如:#du -sh /etc

(2).df:用于显示当前系统磁盘的使用情况
-h:单位换算
-i:显示inode的使用情况
例如:#df -ih

(3).fdisk:磁盘管理
-l:列出当前系统的每一个磁盘及其当前分区的情况
例如:#fdisk -l

(4).压缩工具gzip/bzip2/zip/compress/xz/7z
[1]gzip:压缩文件-->gunzip:解压文件
例如:#gzip FILENAME 
#gunzip FILEMAME
参数:
-d:解压缩
-c:gzip -c messages > messages.gz 压缩后保留源文件
-t:测试压缩文件压缩以后是否完整
-#:(1-9)指定压缩比,默认是6.
zcat:在不解压的情况下查看文件

[3]zip:可以压缩目录
格式:zip [选项] 压缩后的文件名.zip 需要压缩的文件
例如:#zip message.zip message
例如:#zip myfilezip.zip message inittab 压缩多个文件
unzip:解压缩

[4]tar:文件的归档工具
tar tarfile.tar 文件或目录
-c:创建归档
-x:展开归档
-f:归档后文件名
-t:不展开查看归档中的文件
-v:显示整个归档回展开的过程
-z:在创建直接压缩 gzip
-j:在创建直接压缩 bzip2
-C:指定展开之后存放路径
例如:#tar -cf mytar.tar message inittab 创建归档
例如:#tar -xf mytar.tar
例如:#tar -tf mytar.tar
例如:#tar -zcf 
例如:#tar -zxf
例如:#tar xf mytar.tar.gz -C /tmp/test

3、分区:在硬盘的0扇区0磁道存放的是MBR其大小是512个字节,其中前446哥字节是引导扇区俗称“BootLoader”,存放的是系统启动的引导,其中的64个字节是FAT分区列表,每16个字节可以引导一个主分区,而这就是我们通常所说的一块硬盘,只能创建最多4个主分区,或者3主一扩展,剩下的2哥字节是封装码占用。
当分区表出现错误或者被破坏的时候,就无法正常进入系统,所以要对系统的分区表进行备份.
命令:
sfdisk:保存备份分区表信息
-d:#sfdisk -d /dev/sdb > /root/sdb.part.bak   将某个磁盘的分区表保存
#sfdisk /dev/sdb < /root/sdb.part.bak

Linux识别磁盘设备规则:IDE或者ATA设备被识别为hd;SATA、SCSI、USB等设备被识别为sd; 多块磁盘设备时用a,b,c等字母加以区别,形如:/dev/hda  /dev/hdb   /dev/sda   /dev/sdb

创建分区:fdisk /dev/sda
其中的子命令:
w:保存修改并退出
p:显示磁盘列表
n:添加一个新的分区
d:删除一个分区
q:放弃修改并退出
在分区创建完成之后,并不是立即生效,需要使用命令:
partprobe /dev/sda    通知内核重新扫描磁盘sda信息,后若不跟磁盘名,则会扫描所有的磁盘

4、格式化:这次的格式化被称为高级格式化
在linux下任何的磁盘或分区没有进行格式化是不能使用的
mkfs -t TYPE DEVICE
例如:#mkfs -t ext3 /dev/sdb1 
-L:指定卷标
例如:#e2label /dev/sdb1显示其卷标
例如:#e2label /dev/sdb1 HELLO 设置卷标

mke2fs /dev/sdb2
-j:把对应的磁盘分区创建为ext3类型
-L:指定卷标
-b:指定块大小{1024|2048|4096}  
-c:创建文件系统时是否要检查磁盘是否有坏道
-i:指定一个比例,每多少个字节使用一个inode号{128默认|256}
-N:直接指定inode的个数
-m:指定预留给管理员的磁盘百分比

5、挂载
在Linux下任何一个存储设备想要被访问,必须将这个设备与根下的一个目录相关联起来,作为一个访问接口,而这个过程叫做挂载,去除关联关系就叫做卸载。
格式:mount 设备 挂载点
例如#mount 显示当前所有已经挂载的文件系统
#mount /dev/cdrom /media 将dev下的cdrom磁盘挂载到media
参数格式:mount [-t fstype] [option] 设备 挂载点
-a:挂载所有的文件系统 /etc/fstab  #mount -a
-n:挂载时不更新/etc/mtab文件
-r:只读挂载
-w:读写挂载
-L label:指定卷标进行挂载
-U:指定uuid进行挂载
-o:明确指定挂载选项
    async:异步写入
    atime:当访问时自动更新时间
    auto:可以自动挂载
    exec:允许具有执行权限的文件执行
    nouser:禁止普通用户挂载此设备
    remount:重新挂载(某个属性没打开,需要打开时使用此项)
    ro:只读
    rw:只写
例如:#mount -o ro /dev/sdb1 /mnt 以只读方式将dev下的sdb1分区挂载到/mnt
例如:#mount -o remount,rw /mnt 
loop:挂载一个本地设备
例如:#mount -o loop rhci.iso /mnt    挂载一个iso

6、umount:设备卸载
umount 挂载点/挂载的设备
例如:#umount /dev/sdb2
blkid DEV:查看设备的文件类型

7、检查文件系统
(1).fsck检查文件系统的不一致(具体检查inode与文件不一致)
参数:-t FILETYPE:指定检测的文件系统的类型
例如:#fsck -e ext3
efsck:用来专门检测ext类的文件系统
参数:-f:强行进行检测
-p:自动修复文件系统的不一致
-B:指定磁盘块的大小

(2).dumpe2fs:详细的显示ext2 ext3文件系统的信息
参数:-f:即使文件系统不一致也要详细显示其信息
-h:只显示超级块的详细信息
例如:#dumpe2fs /dev/sda
tune2fs:修改ext类的文件系统的属性
参数:-j:将ext2文件类型升级为ext3(不影响磁盘上的数据)
-m:修改保留给root用户的磁盘块与inode的百分比
-r:直接指定块的个数
-L:设定卷标
-l:显示超级快的信息
-c:修改每隔多少次挂载后进行自检 
-i:设定每隔多少天进行一次自检,默认单位是天
-u:指定使用者
-o:指定默认的挂载功能

(3).交换分区swap(必须是一个独立的分区,其作用相当与windows中的虚拟内存,当物理内存即将用完或者不够使用时才会使用到交换分区)
free -m:以M为单位显示内存信息
格式化:mkswap
参数:-L:指定卷标
启用交换分区:swapon DEV
关闭交换分区:swapoff DEV
启动全部:swapon -a
检查其状态:swapon -s

(4).创建一个本地回环文件,也可以理解为复制,可以说是直接复制磁盘块
格式:dd if=FILE of=FILE bs=NU count=NU
if=FILE:要复制的文件
of=FILE:目标
bs:一次复制的单位多大,默认单位字节
count:复制多少个块
#dd if=/etc/issue of=/tmp/abc
#dd if=/dev/sda of=/root/mbr.bak bs=512 count=1 备份mbr Mater Boot Record
#dd if=/dev/zero of=/var/swapfile bs=1M count=1 建一个1M本地回环文件

/dev/null
/dev/zero 用于初始化一个分区

(5)./ect/fstab 开机自动挂载的文件系统 
6个字段:
DEV-name | DEV-label | DEV-uuid
挂载点:
文件系统类型:
挂载选项(defaults);
转储频率:备份{0,1,2}{从不备份,一天一次,两天一次}
自检次序:{0,1,2}{从不,第一,第二},第一只能为根








本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/785156,如需转载请自行联系原作者
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34194359/article/details/89902231

智能推荐

学会学习-程序员宅基地

文章浏览阅读101次。 英文原文:Relearning to Learn 译/张健欣本文要点阅读和理解是不够的,你还需要记住你学的内容。进行主动阅读——你的大脑充分理解这些概念并将它变成你自己的东西。放慢你的大脑,做有创意的笔记,而且反复阅读是没有用的,测验才有效。经常反思你读过的东西并进行联想。管理你的学习队列和“离线存储”(例如书签、印象笔记或者wikis)。..._杰普软件公司陈朦朦

百年IBM:值得全球商界研究的转型变革典范-程序员宅基地

文章浏览阅读333次。IBM 成立于 1911 年,至今已有 108 年的历史。IBM 的历史,就是现代计算机的发展史。  IBM 百年的发展历史简单来说就是一个个危机促使下,由几代传奇 CEO 推动的转型变革史。  IBM 几次成功转型告诉我们:企业的发展不能背离时代趋势,没有永远成功的企业,只有不断适应时代的企业。“居安”要“思危”是任何企业管理者都要有的战略思维。企业转型要有勇气剥离旧业务,在趋势面前的妥..._企业的发展不能背离社会的趋势

莫比乌斯函数(完全平方数,GCDispower)_数学中mu(d)是什么意思-程序员宅基地

文章浏览阅读503次。文章目录一、定义1.内容及解释2.应用场景二、性质1.积性函数·gcd(a,b)=1,μ(ab)=μ(a)μ(b)gcd(a,b)=1,\mu{(ab)=\mu(a)\mu(b)}gcd(a,b)=1,μ(ab)=μ(a)μ(b)简单证明2.∑d∣nμ(d)={1n=10n>1\sum_{d|n}\mu(d)=\begin{cases}1 & n=1 \\0 & n>1 \\\end{cases}∑d∣n​μ(d)={10​n=1n>1​简单证明三、筛法1.求单个函数值2._数学中mu(d)是什么意思

怎么查看自由幻想服务器返回的信息,burpsuite查看响应返回信息-程序员宅基地

文章浏览阅读339次。分析burpsuite响应返回的信息。GET请求在myeclipse中创建一个web工程,在地址栏中输入访问地址:http://127.0.0.1:8080/HttpDemo/index.jsp之后,我们可以在Chrome中查看浏览器向服务器发送的get请求,请求的格式如下所示:GET /HttpDemo/index.jsp?userName=min&password=lingchao H..._自由幻想服务端

stata根据字符串变量分组时出现type mismatch如何解决_stata type mismatch-程序员宅基地

文章浏览阅读3.1w次,点赞7次,收藏22次。**stata根据字符串变量分组时出现type mismatch如何解决**使用encode变量将字符串变量转换为long类型的变量之后仍然没有办法正常的生成分组变量,所以我采用了先生成一组虚拟变量,然后对虚拟变量分组最终生成分组变量的方法。数据如图所示,leixing变量的数据类型时str,我的目的时对其分组生成虚拟变量,让国有企业为0 私营企业为1,步骤操作如下:encode leixing ,gen(kind) //将字符串变量转化为数值型变量label drop kind // 上_stata type mismatch

华为前员工揭密华为“薪酬真相”_华为每天加班有钱吗-程序员宅基地

文章浏览阅读2.3k次。 我的情况:1978年生,北方某省会城市人,男,2000年毕业于北京某知名大学电子通讯相关专业,同年7月加入华为,经过技术支援部的一营实习,而后在市场部做产品线,即下过办事处,又待过总部,还去海外支援过三、四个月,于2003年下半年离职,工号22%%%,现闲居北京。  声明:本人所写均为本人亲身经历和华为同事的转述,但为避免透露真实身份,具体时间地点在不影响理解的前提下有所更改,请勿对号_华为每天加班有钱吗

随便推点

JFlash ARM对stm32程序的读取和烧录_stm32怎么读取程序-程序员宅基地

文章浏览阅读3.8w次,点赞12次,收藏86次。本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了!在我们装了JLINK驱动后再根目录下找到JFlash ARM ,运行。读取Flash程序:第一步:Option-->Project Settings-->CPU下选择 Device 在下拉菜单中找到自己的芯片型号后点击确定。第二步:Tar_stm32怎么读取程序

【Linux】使用腾讯云搭建CentOS的Linux编程学习环境,实现多用户使用同一个云服务器_一台服务器如何对多人使用-程序员宅基地

文章浏览阅读5.6k次,点赞49次,收藏88次。本篇博客将告诉你如何配置Linux环境,以及多人使用同一个服务器。博客中部分错误已进行修改_一台服务器如何对多人使用

cf C. Duff and Weight Lifting (二进制编码_好题)-程序员宅基地

文章浏览阅读714次。已知一堆数列,找出k的元素使得 2a1 + 2a2 + ... + 2ak = 2x 我们使用二进制编码来实现,最高位为1,其余都为0,才能保证存在2^x这样一个数字!!!!这个还有一个要注意的是: 要用ios::sync_with_stdio(false);关闭同步,因为数据量大,会超时Recently, Duff has been pract

hdoj 2098 分拆素数和_hdoj 分拆素数和-程序员宅基地

文章浏览阅读306次。分拆素数和Problem Description把一个偶数拆成两个不同素数的和,有几种拆法呢? Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。 Output对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。 Sample Input30260_hdoj 分拆素数和

NOI/1.5编程基础之循环控制/21:角谷猜想_noi1.5角谷猜想-程序员宅基地

文章浏览阅读642次。1.题目21:角谷猜想查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。输入一个正整数N(N <= 2,0..._noi1.5角谷猜想

win11装了Ubuntu系统,切换到 wim11,蓝牙耳机显示已连接,但耳机无声音,且声音外放正常_ubuntu蓝牙连接但用不了-程序员宅基地

文章浏览阅读582次,点赞8次,收藏10次。发现蓝牙耳机已经被识别音频,也可能没有被识别为音频设备,而是显示其他设备,这样会导致输出设备上没有耳机这一选项,则点击。这时输出设备中就有耳机选项了,蓝牙能正常播放声音了。,发现耳机是连接正常的,点击页面的。右键蓝牙耳机,点击属性,将除了。的选项都勾选上,然后应用、确定。去设置蓝牙耳机的服务。_ubuntu蓝牙连接但用不了

推荐文章

热门文章

相关标签