第五章 Linux磁盘与文件系统管理

2023-11-11

目录

认识EXT2文件系统

EXT2/EXT3文件的访问与日志文件系统的功能

VFS

文件系统的简单操作

磁盘与目录的容量:df、du

连接文件:ln

硬连接和复制的区别

磁盘的分区、格式化、检验与挂载

磁盘分区:fdisk

磁盘检查:fsck、badblocks

磁盘挂载与卸载:mount、umount

修改磁盘参数

设置开机挂载

交换分区(swap)的创建


认识EXT2文件系统

在Linux中一块磁盘会被分成多个group族,一个group族的分区如下图所示:

系统中的文件信息都是存放在block块中的,super block中记录了block块的使用及剩余的情况;文件系统描述信息记录了文件系统的信息;块位图记录了当前的block块的使用及剩余情况;iNode位图中记录了那些iNode的使用情况;iNode表中记录了文件存放记录(类似于书本的目录)

  • iNode表中一个inode值最大是128字节,每指向一个block块就消耗4个字节;也就是说一条iNode记录能指向32个block块
  • 其中inode表中划分了12个直接区、1个间接区、1个二间接区、1个三间接区,当存储一个大文件的时候,会同时占据多个block块
  • 当查找一个文件的时候,首先去查找根的inode信息,在根的inode信息中找到下一层目录所在的位置,再去寻找下一层目录的inode信息…如此反复知道找到文件所在为止

查看文件block的iNode编号:ls -i /test/xx

注:i参数表示的iNode编号

 

查看一个文件所分布的block信息:filefrag -v install.log

 

EXT2/EXT3文件的访问与日志文件系统的功能

在Linux中,当我们往block块中写入文件时系统首先会在iNode位图中寻找一个空的inode,然后将文件的属性写入到inode表中;然后系统会去查找块位图,根据块位图将文件写入到空白的block块中;之后系统会更新块位图和inode位图记录,最后更新super block;

ext3文件系统比ext2文件系统多了一个日志功能

日志功能:当写入文件的时候,突然出现断电的时候就会导致inode表中的记录来不及更新;有了日志功能之后,当下次开机的时候系统会自动检测进行到哪一步,从而继续更新inode表

查看日志:dumpe2fs /dev/sda1/ | more

 

VFS

Linux有很多的文件系统,如ext2、ext3、vfat等;当我们写了一个程序需要在文件系统中执行的时候,并没有考虑是否兼容不同的文件系统问题;这是因为用到了VFS,用户并不直接接触底层的文件系统,而是由VFS虚拟文件系统根据不同的需要自动选择调用何种文件系统

 

文件系统的简单操作

磁盘与目录的容量:df、du

磁盘与目录的容量: df -hT

注:h参数表示显示单位;T参数表示显示文件系统的类型

 

查看文件夹大小:du -s /boot

注:s参数表示只查看文件夹的总大小;h参数表示显示单位

 

连接文件:ln

连接文件分为硬连接、软连接(就相当于快捷方式),其中硬连接是Unix和Linux中专有的一个概念,其它操作系统中没有

创建软连接:ln -s xx xx1

注:s参数表示软连接

 

创建硬连接:ln passwd aa

 

硬连接和复制的区别

总结:硬连接相当于同一个文件,两个名字;而复制则是两个独立的文件

            Inode是不能跨分区连接的

 

磁盘的分区、格式化、检验与挂载

磁盘分区:fdisk

查看分区:fdisk -l

 

创建分区:fdisk /dev/sda

注:硬盘划分数量: 主分区 + 扩展分区 <=4,这是由于分区表中的64个字节,每标记一个主分区就会消耗16个字节,所以最多划分4个主分区;如果需要划分更多的分区,就需要划分一个扩展分区,然后在扩展分区中划分逻辑分区

注:扩展分区中只能划分逻辑分区,不能划分主分区;第一个逻辑分区默认是从5开始的;划分好的分区需要格式化,格式化之后还需要将分区挂载到目录中

 

创建完分区之后更新分区表:partprobe /dev/sda 

格式化分区:mkfs –t ext3 /dev/sda3 或者 mkfs.ext3 /dev/sda3 (分区必须要格式化之后才能使用)

挂载分区:mount /dev/sda3 /mnt

 

磁盘检查:fsck、badblocks

硬盘自检:fsck -f -C /dev/sda5

注:f参数表示强制;C参数表示显示自检进度

 

检测磁盘坏道:badblocks -sv /dev/sda5

注:sv参数表示检测完成之后将结果显示在屏幕上

 

磁盘挂载与卸载:mount、umount

磁盘挂载

格式:命令 + 设备 + 目录

mount /dev/sda3 /mnt                     将sda3分区挂载到/mnt目录下

mount –o remount , ro /mnt            以只读的方式重新挂载

mount –o remount , rw /mnt           以读写的方式重新挂载

mount –o remount , noexec /mnt   以无权限方式重新挂载

 

磁盘卸载

格式:命令 + 外部设备或者挂载点

umount  /mnt

 

修改磁盘参数

查看硬盘的操作参数:tune2fs –h

例如:

更改卷标:tune2fs –L xx /dev/sda5

更改最大挂载次数:tune2fs –c 100 /dev/sda5             (-C表示当前挂载了多少次)

修改50%预保留空间:tune2fs –m 50 /dev/sda5

 

设置开机挂载

设置开机自动挂载磁盘:gedit /etc/fstab

注:由于挂载磁盘只在一次生效,重启后就失效了,所以需要编辑etc文件夹下的fstab文件设置开机自动挂载磁盘

 

特殊设备loop挂载:mount –o loop xx.iso /mnt

注:镜像文件不刻录就挂载使用,挂载镜像一定要加loop

 

交换分区(swap)的创建

交换分区为的是解决早期内存太小的问题;早期内存太小无法运行大的程序,所以在硬盘中划分出一个交换分区作为内存使用(Windos中虚拟内存的概念)

查看交换分区:cat /proc/swaps


创建交换分区方法一:通过划分一个分区来创建swap分区

1、fdisk /dev/sda    先划分swap类型的分区

2、partprobe /dev/sda    更新分区表

3、mkswap /dev/sda6    格式化成交换分区

4、swapon /dev/sda6     激活分区                   --对应的关闭为swapoff

注:如果需要开机就启用,同样需要在/etc/fstab中编辑

 

创建交换分区方法二:可以使用目录创建一个swap分区(适用于没有多余可用分区的情况)

1、dd if=/dev/zero of=file bs=1M count=100    创建一个100M的空间

2、mkswap file            格式化成交换分区

3、swapon file             激活分区

4、cat /proc/swaps      查看创建的交换分区

注:如果需要开机就启用,同样需要在/etc/fstab中编辑

注:dd if=/dev/zero of=file bs=1M count=100这个命令的意思是:在/dev下面的zero大小是无限的,创建一个文件file,用bs来定义zero的大小;count是代表个数;即用100个为1M的bs创建一个file文件

 


原创文章,转载请注明出处

 

 

 

 

 

                       

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第五章 Linux磁盘与文件系统管理 的相关文章

  • 配置yum源挂载mount /dev/sr0 /iso报错mount: 在 /dev/sr0 上找不到媒体

    span class token punctuation span root 64 localhost span class token punctuation span span class token comment umount de
  • usb连接ubuntu,fdisk -l 查不出usb信息

    问题 xff1a 想要通过usb连接在虚拟机上的Ubuntu xff0c 但连接上后linux系统有图标但是却是灰色的 xff0c 在虚拟机 可移动设备 xff0c 那里的USB 断开与主机连接也是灰色 通过fdisk l 查不到usb信息
  • linux mount 远程服务器共享目录

    NFS是文件系统 在网络存储方面我们应该有所了解 那么针对NFS服务器的安装和设置我们来详细介绍一下 首先让我们看一下NFS服务器的安装步骤 一 NFS服务器的安装 检查linux系统中是否安装了nfs utils和portmap两个软件包
  • VMware ESXI虚拟机磁盘在线扩容后fdisk -l 找不到问题解决

    VMware ESXI虚拟机磁盘在线扩容后fdisk l 找不到问题解决 在VMware ESXI终端页面为虚拟机新增磁盘后 xff0c 进入虚拟机执行fdisk l 找不到新增的盘 重启系统肯定是可以解决的 xff0c 但是机器有在跑测试
  • 挂载别的系统挂掉的磁盘解决步骤,mount: unknown filesystem type ‘LVM2_member‘ 报错

    挂载别的系统挂掉的磁盘解决步骤 1 在新的虚机添加磁盘 按照下边操作步骤即可使linux系统重新读取并识别到新硬盘 xff1a 1 1 确定主机总线号 xff1a root 64 iNeedle ls sys class scsi host
  • mount: RPC: Unable to receive; errno = No route to host

    环境 xff1a gec2440开发板 VMware8 0 43 Ubuntu10 04 uboot xff0c kernel xff0c rootfs都是之前做好的 xff0c 调试驱动都反复用过很多次 今天只是搬了台电脑 xff0c 换
  • mount:No medium found

    使用vmware时 xff0c 科技将iso作为系统的镜像 但是 xff0c 在配置yum源的时候 xff0c 可能会遇到这样的问题 究其原因 xff0c 是由于镜像文件未启动 解决方法 xff1a 右击 xff0c 点击连接 xff0c
  • 如何在 Linux 中挂载 NFS 共享

    网络文件系统 NFS 是一种分布式文件系统协议 允许您通过网络共享远程目录 使用 NFS 您可以在系统上安装远程目录并像使用本地文件一样使用远程文件 在 Linux 和 UNIX 操作系统上 您可以使用mount命令将共享 NFS 目录挂载
  • 如何在 Linux 中挂载和卸载文件系统

    在 Linux 和 UNIX 操作系统上 您可以使用mount用于在目录树中的特定安装点附加 安装 文件系统和可移动设备 例如 USB 闪存驱动器 的命令 The umount命令从目录树中分离 卸载 已安装的文件系统 在本教程中 我们将介
  • 第五章 Linux磁盘与文件系统管理

    目录 认识EXT2文件系统 EXT2 EXT3文件的访问与日志文件系统的功能 VFS 文件系统的简单操作 磁盘与目录的容量 df du 连接文件 ln 硬连接和复制的区别 磁盘的分区 格式化 检验与挂载 磁盘分区 fdisk 磁盘检查 fs
  • Linux磁盘管理

    lsblk 使用lsblk命令可以以tree的形式展示所有设备的信息 lsblk命令的英文是 list block 即用于列出所有可用块设备的信息 而且还能显示他们之间的依赖关系 但是它不会列出RAM盘的信息 使用者权限 所有用户 语法格式
  • 安装 davfs2 卷时无法打开 docker 容器中的熔断器设备

    当我尝试在 docker 容器上挂载 davfs2 卷时遇到以下错误 geoserver 8e8091d97157 mount owncloud sbin mount davfs loading kernel module fuse sbi
  • 如何将容器文件挂载到我的 Docker 主机?

    我想将文件从 Docker 容器装载到我的 Docker 主机 数据卷对我来说不是解决方案 因为它们是从 docker 主机挂载到 docker 容器 而我需要相反的方式 Thanks 当 docker 挂载卷时 它会将容器内的目录与该卷的
  • 如何从 lxc 挂载文件夹

    我有 lxc 它有一个正在运行的应用程序 要在自己的计算机 Ubuntu 13 10 上编辑此应用程序的代码 我想挂载一个目录lxc 如何才能做到这一点 例如 var lib lxc ubuntu 12 04 rootfs home 安装在
  • 如何使用 Python 观察和监控新创建文件的 ftp 安装点

    我可以使用观看本地目录inotify基于内核子系统的解决方案 还有一些 python 项目也在 inotify 之上工作 例如pyinotify https github com seb m pyinotify pyInotify http
  • 作为另一个用户安装共享文件夹(vbox)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 很抱歉在这里问这个问题 但我尝试了服务器故障 但 4 天都没有得到任何答复 那里的相关问题 https serverfault com questio
  • s3 安装在容器内。如何将其暴露给主机?

    我一直在考虑是否有一个容器可以安装 s3 桶并将其暴露在外面 I used https github com FindHotel aws s3 mount https github com FindHotel aws s3 mount将 s
  • 将 IntelliJ IDEA 缓存/索引目录移动到 RAM

    我正在尝试移动caches and index从 IntelliJ IDEA 配置目录到 RAM 挂载点的目录 tmp使用符号链接 我已经添加 tmpfs tmp ramdisk tmpfs defaults size 1024M x gv
  • Docker 未知标志 --mount

    我想使用 mount 将目录从主机挂载到容器flag over volume但我得到 这仅在使用安装标志时才会出现 而不是在使用卷时出现 Command docker run d it name devtest mount type bin
  • 在AWS EC2上挂载NVME磁盘

    所以我在每个节点上使用 NVME 磁盘创建了 i3 large 这是我的过程 lsblk gt nvme0n1 检查 nvme 是否尚未安装 sudo mkfs ext4 E nodiscard dev nvme0n1 sudo mount

随机推荐

  • 图像处理-双边滤波原理

    双边滤波 Bilateral filter 是一种可以去噪保边的滤波器 之所以可以达到此效果 是因为滤波器是由两个函数构成 一个函数是由几何空间距离决定滤波器系数 另一个由像素差值决定滤波器系数 原理示意图如下 双边滤波器中 输出像素的值依
  • Midjourney如何集成到自己(个人/企业)的平台(二)

    前面一篇写了需要准备东西 如何注册discord平台账号 如何登录discord创建个人服务器把Midjourney机器人授权添加到个人服务器中 并且开通订阅 这篇文章主要讲如何自定义机器人 设置自定义机器人 并授权添加到个人服务器中 1
  • 【Arthas】Arthas mc内存动态编译原理

    1 概述 转载 Arthas mc内存动态编译原理 2 开篇 Arthas支持通过mc命令进行java文件的内存动态编译 mc Memory Compiler 内存编译器 编译 java文件生成 class 从JDK1 6开始引入了Java
  • 手握6项特许经营权,慧居科技如何展现“光与热”?

    作为国内三北地区第二大跨省供热服务供应商 慧居科技在7月10日即将港股上市 尽管目前受经济影响 港股市场处在低迷状态 但供热行业作为公用事业板块属刚性需求 由于受经济周期影响小 经营业绩稳定 反而成为市场的优质板块 吸引了不少的资本关注 7
  • Mac 电脑鼠标和触摸板滚动方向不一致的问题【已解决】

    当我们使用鼠标连接到 MacBook 时 会发现无论怎么设置 鼠标和触摸板的滚动方向都是相反的 导致不能同时使用鼠标和触摸板 解决方法 我安装了下面的程序 它只允许您反转鼠标的滚动行为 Scroll Reverser for Mac OS
  • 【人脸生成】HiSD-通过层级风格解耦实现图到图的迁移

    Image to image Translation via Hierarchical Style Disentanglement 厦大 西交 腾讯 清晰易读 用公布的模型在自有数据上实测不及预期 但仍是值得尝试的方法 这是我看的第一篇人脸
  • SQL基础常用语句:DDL、 DML、DQL

    下面跟我一起来学习SQL基础知识 一 SQL基础与DDL 1 1 SQL的概述 SQL全称 Structured Query Language 结构化查询语言 用于访问和处理数据库的标准的计算机语言 SQL语言1974年由Boyce和Cha
  • bitset优化例题

    1 bitset 优化背包 https loj ac p 515 题意 给 n 个 lt n 的数 每个数有取值范围 a i b i 令 x 为 n 个数的平方和 求能构成的 x 的个数 样例 5 1 2 2 3 3 4 4 5 5 6 2
  • js小程序ios日期解析失败NAN兼容

    小程序中ios使用 new Date 的时候 如果有 分隔符 将会解析失败 如果日期过短也会解析失败 比如只有 2022 08 年月这样也解析不出来 下面工具能解决上述问题 但是在手动创建字符串时间 建议使用 2022 08 01 斜杠等方
  • 第一次在linux服务器上部署项目,遇到的问题总结(包括mysql安装,jar打开遇到的问题)

    第一步 写代码 这一步没啥好说的 将代码写完 再考虑部署的事情 第二步 linux中安装mysql linux中安装mysql比在windows中安装mysql要难的多 其中遇到的问题是 一直安装不成功 老是会缺少 systemctl st
  • 解决Tensorflow读取MNIST数据集时网络超时问题

    最近在学习TensorFlow 比较烦人的是使用tensorflow examples tutorials mnist input data读取数据 from tensorflow examples tutorials mnist impo
  • cmake:file

    文件操作命令 这个命令专用于需要访问文件系统的文件和路径操作 对于其他仅处理语法方面的路径操作 请查看cmake path 命令 概要 Reading file READ
  • 南昊网上阅卷系统服务器地址,南昊网上阅卷系统全攻略

    扫描网上阅卷系统的分类 南昊扫描客观题阅卷系统 南昊扫描单机阅卷系统 南昊扫描网上阅卷系统 校园版 南昊扫描网上阅卷系统 中考版 南昊扫描网上阅卷系统 行业考试版 南昊扫描海军民主评议系统 南昊扫描教学质量评测系统 南昊扫描行风评议系统 网
  • hexo部署码云

    在本地搭建好博客后我们需要把博客部署在服务器上 这里没有购买服务器的情况下 就暂时部署在码云或者github上也是可以滴 如果之前部署过github的童鞋应该很快就上手了 都差不多的 这里就没有配置本地公钥了 直接使用是http链接方式 g
  • 利用k8s部署nginx

    这只是一个简单的demo测试 记录下第一次部署应用哈哈哈哈 运行指令创建有四个副本的nginx 这点和docker挺像的 root master kubectl run nginx image nginx latest replicas 4
  • Java实现从FTP获取文件下载到本地,并读取文件中的内容的成功案例

    package com aof web servlet import java io BufferedReader import java io File import java io FileInputStream import java
  • 考虑virtual函数以外的其他选择——条款35

    假设你正在写一个视频游戏软件 你打算为游戏内的人物设计一个继承体系 你的游戏术语暴力砍杀类型 剧中人物被伤害或因其他因素而降低健康状态的情况并不罕见 你因此决定提供一个成员函数healthValue 它会返回一个整数 表示人物的健康程度 由
  • 15个变态的Google面试题以及答案

    在当前经济形势不景气的情况下 谷歌招聘新员工是一件令人振奋的事 特别是对那些在当前金融风暴中渴望找到安全港的年轻经理们和软件开发商们来说是个好消息 不过 也不要高兴太早 谷歌在招聘新员工时 更加青睐名牌大学的学生 即便你是人到中年 招聘时谷
  • 利用顺序栈判断一个字符串是否是对称串

    利用一个顺序栈 判断一个字符串是否是对称串 所谓对称串是指从左向右读和从右向左读的序列相同 有些类似上一篇博客所说的回文 解题思路 对于字符串str 先将其所有元素进栈 从头开始扫描str 同时出栈元素 将出栈元素与从头开始扫描的str元素
  • 第五章 Linux磁盘与文件系统管理

    目录 认识EXT2文件系统 EXT2 EXT3文件的访问与日志文件系统的功能 VFS 文件系统的简单操作 磁盘与目录的容量 df du 连接文件 ln 硬连接和复制的区别 磁盘的分区 格式化 检验与挂载 磁盘分区 fdisk 磁盘检查 fs