热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Liunx学习笔记05文件系统管理

Liunx学习笔记-05-文件系统管理1分区类型和文件系统分区类型对于一块硬盘而言,需要分区才能使用,有三种分区类型:主分区、扩展分区和逻辑分区。主分区:一块硬盘最多只能分

Liunx学习笔记 - 05 - 文件系统管理


1 分区类型和文件系统


分区类型

对于一块硬盘而言,需要分区才能使用,有三种分区类型:主分区、扩展分区和逻辑分区。

主分区:一块硬盘最多只能分4个主分区;
扩展分区:一块硬盘最多只能有1个扩展分区,且扩展分区也属于主分区的一种,即主分区加扩展分区最多只能有4个;然而扩展分区既不能存储数据也不能格式化,其唯一的作用是做逻辑分区处理(相当于中间商)。
逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘,Linux最多支持11个逻辑分区。

所以,一般都是分1-3个主分区,外加1个扩展分区,然后在扩展分区里面再划分很多个的逻辑分区。

在Windows中,分区之后,他们的目录名称就按照分区的先后自动命名成了C、D、E、F、G……等。然而Linux中并无此说法。

Linux将分区命名为设备名,对于sata硬盘,即主分区1为/dev/sda1,主分区2为/dev/sda2,主分区3为/dev/sda3,扩展分区为/dev/sda4,逻辑分区1、2、3……分别为/dev/sda5、/dev/sda6、/dev/sda7……注意,即便没有主分区2和主分区3,那么逻辑分区依旧是从5开始编号的,只是此时扩展分区是紧接着上个主分区编号而已。即/dev/sda1-4始终是留给主分区的,而/dev/sda5-N则是给逻辑分区的!

比如,只分了一个主分区+一个扩展分区,在扩展分区里面则又分了3个逻辑分区,那么他们的设备名分别为:






























分区设备名
主分区1/dev/sda1
扩展分区/dev/sda2
逻辑分区1/dev/sda5
逻辑分区2/dev/sda6
逻辑分区3/dev/sda7

更有意思的是,Linux中自己架构了一套目录树结构,所有的目录都是从根目录/开始的,而用户的文件则一般放到家目录/home/用户名中,管理员自己的目录为/root,跟启动相关的都在/boot中,还有其他很多目录,而这些目录是要跟硬盘的分区相挂载的,也就是要指定他们放到哪个分区里面去。
一般单独给/boot分个200M~1G空间,作为启动盘,有点像win7前面多出来那100M哈;
给根目录/分个10-100G的分区,类似于Windows的C盘系统了;
给/home分个上百G,类似于Windows中我的文档;
还有个特殊的/swap交换分区,它和Windows的虚拟内存比较类似,给它单独分个2-4G就好了,当然,如果你内存非常大,这个/swap不分也没问题的;
对于其它没有指定挂载点的目录,他们就跟着根目录/挂载到对应分区上了;
如果你还有特别重要的数据做备份,可以单独做个备份的分区来玩。


文件系统

windows里面分区也是要对应文件系统的,比如FAT32、NTFS等,硬盘一般都用NTFS,因为FAT32的话,大于4G的文件就无法支持,比如整个高清电影十几个G,就放不进去了。

同样,Linux也有自己的一套文件系统,叫ext2、ext3、ext4,现在都是ext4系统了。ext4系统最大系统容量达到1EB(1EB=1024PB=1024*1024TB),而单个文件的最大容量则达到16TB,这是非常非常大的数字了!


2 文件系统常用命令df、du、fsck、dumpe2fs


2.1 文件系统查看命令df

语法:df [选项] [挂载点]
选项:
-a 显示所有文件信息,包括特殊文件系统,如/proc、/sysfs
-h 使用习惯单位显示容量,如kB、MB、GB等
-T 显示文件系统类型,如ext2、ext3、ext4等
-m 以MB为单位显示容量
-k 以KB为单位显示容量

示例

df -h / #查看根分区的文件系统,显示
文件类型 容量 已用 可用 已用 挂载点
/dev/sda5 92G 4.5G 83G 6% /

df -h /home #查看家目录所在分区的文件系统,显示
文件类型 容量 已用 可用 已用 挂载点
/dev/sda7 132G 238M 125G 1% /home

也可以写挂载点,比如df -h同时查看所有分区的挂载信息。


2.2 统计目录或文件大小du

语法:du [选项] [目录或文件名]
选项
-a 显示每个文件的磁盘占用量,默认只统计 子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如kB、MB、GB等
-s 统计总占用量,而不列出子目录和子文件的占用量

示例:

du -sh /home #显示家目录的文件大小,显示如下
177M /home

如果对比df的显示结果就会发现,df出来的家目录为238M,而这里du的家目录才177M,这是由于df除了统计文件大小,还统计了系统、进程等临时文件所占资源,所以其统计出来的空间较大!而du只统计了文件大小,所以较小,du也是比较真实的大小反映。


2.3 文件系统修复命令fsck

语法:fsck [选项] 分区设备文件名
选项:
-a 不用显示用户提示,自动修复文件系统
-y 自动修复,和-a作用一致,但有些文件系统只支持-y

不建议使用文件系统修复命令fsck,搞不好就系统崩溃了,而且系统自己本身就会自动修复的。


2.4 显示磁盘状态命令dumpe2fs

语法:dumpe2fs 分区设备文件名
示例:

dumpe2fs /dev/sda5 | more # 查看根目录所在分区/dev/sda5的磁盘状态,由于显示内容太长了,用管道符“|”给more来查看

显示的内容非常多,那么可以看到有一行是

……
Block count: 24413696
……
Block size: 4096
……

那么我们就知道每一个分块大小是4096kB,即4k,而共有24413696个分块,大约是192.3GB。


3 文件管理常用命令-挂载命令mount

挂载,即将设备文件名 与 对应设备(如硬盘分区、光盘、U盘、软盘)等挂载点相连接的过程。


3.1 查询与自动挂载

语法:mount [-l]
作用:查询系统中已经挂载的设备,-l会显示卷标名称

语法:mount -a
作用:依据配置文件/etc/fstab的内容,自动挂载


3.2 挂载命令格式

mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以为ext3、ext4、iso9660等文件系统,其中iso9660为光驱的标准。
-L 卷标名(别名):挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项,参考帮助。


3.3 挂载和卸载光盘

挂载光盘的过程:

先mkdir /mnt/cdrom/ 建立一个空目录用作挂载点(类似windows中的盘符,Linux中为空目录);
再将光盘放入光驱;
用mount -t iso9660 /dev/cdrom /mnt/cdrom即可将光驱的设备文件名/dev/cdrom与挂载点/mnt/cdrom挂载起来,或者用mount /dev/sr0 /mnt/cdrom,不写文件类型也没关系,系统会用默认的文件系统,也是OK的,这个/dev/sr0和/dev/cdrom的设备文件名是等效的,两者是软链接关系,都是指光驱;
接下来就可以cd /mnt/cdrom进入到挂载点目录,直接进入光驱目录了。

卸载光盘的过程:

先cd …退出光盘目录;注意在光盘目录中是无法卸载的,因为不能自己在梯子上把梯子抽调啊~
再unmount /mnt/cdrom或unmount /dev/cdrom或unmount /dev/sr0即可卸载光盘。相当于windows中的光盘右键鼠标,弹出的操作。


3.4 挂载和卸载U盘

挂载U盘的过程

先fdisk -l查看U盘的设备文件名,若仅有一块硬盘,其为sda,则插入U盘会被分成sdb,若只有一个分区,分区号为sdb1,若有两块硬盘分别为sda和sdb,则插入的U盘会被分成sdc,若只有一个分区,分区号为sdc1;
再mkdir /mnt/usb创建挂载点;
然后mount -t vfat /dev/sdb1 /mnt/usb来挂载U盘,因为Liunx不支持Windows的NTFS文件系统,至于fat32和fat64文件系统,要分别指定类型为vfat和fat才能挂载;
就可以cd /mnt/usb进入U盘目录操作了。

卸载U盘的过程

先cd …退出U盘目录;
再umount /dev/usb卸载U盘,即可。


4 fdisk分区

添加新硬盘;

fdisk -l查看新硬盘的设备文件名,若之前只有一块硬盘,那么新硬盘会被命名为/dev/sdb;

使用fdisk /dev/sdb命令进行分区;

在交互界面的提醒下完成分区过程……

用partprobe重新读取分区表信息;

用mkfs -t ext4 /dev/sdb1格式化各分区;

建立挂载点并挂载各分区,如mkdir /disk1,mount /dev/sdb1 /disk1。

但是这种手动挂载每次开机都要重新手动执行一遍,比较麻烦,若要开机自动挂载,可以修改配置文件/etc/fstab,把新分区写道该文件中去,即可,写入格式参考该文件中其他分区:

……
UUID=…… /disk1 ext4 defaults 1 2
……

其中的UUID是硬盘通用的唯一标识码,用dumpe2fs -h /dev/sdb1可查看该UUID码,把它写进去就好了。

用mount -a先重新挂载一遍,要没问题,就好了,如果有问题,看哪里写错了,再该对就妥了。


推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文介绍了如何在React应用中实现延迟加载以提高性能,以及如何利用自定义Hook和高阶组件(HOC)来增强组件功能。通过这些技术,开发者可以构建更加高效和可维护的应用。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • 本文探讨了服务器系统架构的性能评估方法,包括性能评估的目的、步骤以及如何选择合适的度量标准。文章还介绍了几种常用的基准测试程序及其应用,并详细说明了Web服务器性能评估的关键指标与测试方法。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 通过命令行执行Robot Framework测试用例的方法
    本文介绍如何利用命令行工具来运行Robot Framework中的测试文件及用例,解决常见的模块未找到错误。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 本文探讨了在AspNetForums平台中实施基于角色的权限控制系统的方法,旨在为不同级别的用户提供合适的访问权限,确保系统的安全性和可用性。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
author-avatar
你是我的命_lY
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有