磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]
1、磁盘基础知识
1.1 物理结构
- 磁道(Track)
- 柱面 (Cylinder)
- 扇区(Sector)
- 磁头(Head)
1.2 磁盘的读写原理
- 第一步,首先是磁头径向移动来寻找数据所在的磁道。这部分时间叫寻道时间。
- 第二步,找到目标磁道后通过盘面旋转,将目标扇区移动到磁头的正下方。
- 第三步,向目标扇区读取或者写入数据。到此为止,一次磁盘IO完成,故:
- 对于旋转延时,现在主流服务器上经常使用的是1W转/分钟的磁盘,每旋转一周所需的时间为60*1000/10000=6ms,故其旋转延迟为(0-6ms)。
- 对于存取时间,一般耗时较短,为零点几ms。
- 对于寻道时间,现代磁盘大概在3-15ms,其中寻道时间大小主要受磁头当前所在位置和目标磁道所在位置相对距离的影响。
- 方案一: 255个盘面,C盘是0-100盘面, D盘是101-200个盘面,……
- 方案二:3263个柱面,C盘0-1000个柱面,D盘1001-20001个柱面,……
2. Linux 下磁盘命名和分区
2.1 磁盘命名
IDE 磁盘 | 描述 | 配置 |
---|---|---|
/dev/hda | 1st (Primary) IDE controller | Master |
/dev/hdb | 1st (Primary) IDE controller | Slave |
/dev/hdc | 2nd (Secondary) IDE controller | Master |
/dev/hdd | 2nd (Secondary) IDE controller | Slave |
2.2 分区命名
2.3 分区步骤
[root]# fdisk /dev/sdb Command (m for help): m (Enter the letter "m" to get list of commands) Command actiona toggle a bootable flagb edit bsd disklabelc toggle the dos compatibility flagd delete a partitionl list known partition typesm print this menun add a new partitiono create a new empty DOS partition tablep print the partition tableq quit without saving changess create a new empty Sun disklabelt change a partition's system idu change display/entry unitsv verify the partition tablew write table to disk and exitx extra functionality (experts only)Command (m for help): n Command actione extendedp primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-9729, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-9729, default 9729): Using default value 9729Command (m for help): w (Write and save partition table)[root]# mkfs.ext4 -L disk2 /dev/sdb |
- 在不损失数据的情况下重装系统,比如独立设置 /home 挂载点,重装系统的时候直接标记回 /home,数据不会有任何损失。
- 针对不同的挂载点的特性分配合适的文件系统以合理发挥性能,比如对 /var 使用reiserfs,对 /home 使用xfs,对 / 使用ext4。
- 针对不同的挂载点开启不同的挂载选项,如是否需要即时同步,是否开启日志,是否启用压缩。
- 大硬盘搜索范围大,效率低
- 磁盘配额只能对分区做设定
- /home、/var、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片
- 创建:以某种方式格式化磁盘的过程就是在其之上建立一个文件系统的过程。创建文件系统时,会在磁盘的特定位置写入关于该文件系统的控制信息。
- 注册:向内核报到,声明自己能被内核支持。一般在编译内核的时侯注册;也可以加载模块的方式手动注册。注册过程实 际上是将表示各实际文件系统的数据结构struct file_system_type 实例化。
- 安装:也就是我们熟悉的mount操作,将文件系统加入到 Linux 的根文件系统的目录树结构上;这样文件系统才能被访问。
- 挂载点必须是一个目录。
- 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。对于其他操作系统建立的文件系统的挂载也是这样,卸载后,目录以前的文件都还在,不会有任何丢失。
- 目录只占磁盘里的一个inode,存放文件属性等信息。
- 任何一个分区都必须挂载到某个目录上。
- 目录是逻辑上的区分。分区是物理上的区分。
- 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
- 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
- 一个分区可以挂在多个目录,但反过来一个目录只能是一个分区的挂载点。
3. Linux 文件系统
3.1 inode
- 根目录文件的 inode:2,用于找到 var 的 inode id
- var 目录文件的 inode:10747905,用于找到 test.txt 的 inode id
- text.txt 文件的 inode: 10749034,用于找到 data blocks
3.2 循环设备
- 用一个循环设备节点连接文件。
- 在目录上挂载该循环设备
dd if=/dev/zero of=file.img bs=1k count=10000 //创建一个初始化文件 losetup /dev/loop0 file.img //创建一个循环设备 mke2fs -c /dev/loop0 10000 //创建文件系统 mkdir /mnt/point1 //创建挂载点 mount -t ext2 /dev/loop0 /mnt/point1 //挂载
3.3 文件系统的结构
sync
命令将缓冲区缓存中的请求发送到存储媒体(迫使所有未写的数据发送到设备驱动程序,进而发送到存储设备)。
3.4 VFS (虚拟文件系统)
3.5 Linux 文件系统类型
3.5.1 ReiserFS
3.5.2 ext2 文件系统
ext2 文件系统(也称为第二扩展文件系统)旨在克服早期 Linux 版本中使用的 Minix 文件系统的缺点。多年来,该文件系统一直广泛应用于 Linux。但 ext2 中没有日志,现在基本上已被 ext3 和最新的 ext4 所取代。
3.5.3 ext3 文件系统
ext3 文件系统向标准 ext2 文件系统添加了日志功能,因此是一个非常稳定的文件系统的一个演化发展。它在大多数情况下提供合理的性能并且仍旧在改进。由于它在可靠的 ext2 文件系统上添加了日志功能,因此可以将现有 ext2 文件系统转换为 ext3 文件系统,并且在必要时还可以转换回来。
3.5.4 ext4 文件系统
3.5.5 vfat 文件系统
3.5.6 XFS 文件系统
3.5.7 IBM JFS 文件系统
3.6 选择文件系统
- XFS 的性能非常接近 ReiserFS,并在大多数测试指标上都超过了 ext3。
- 目前,ReiserFS 和 ext3 删除文件要比 XFS 快得多。
3.7 创建文件系统
mkfs
命令来创建文件系统,使用 mkswap
命令创建交换空间。mkfs
命令实际上是几个特定文件系统的命令的前端,比如面向 ext3 的 mkfs.ext3
,面向 ext4 的 mkfs.ext4
以及面向 ReiserFS 的 mkfs.reiserfs
。你的文件系统上安装的是什么文件系统支持?使用 ls /sbin/mk*
命令即可得到答案。
磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]相关推荐
- 文件系统(文件系统目录结构、磁盘分区、虚拟文件系统)、linux内核结构框图
什么是文件系统? 常规认知就是根目录下那些文件,但其实并不是那样.文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构:即在存储设备 ...
- Linux磁盘分区论文3000字,磁盘分区对齐详解与配置 – Linux篇
磁盘分区对齐详解与配置 – Linux篇 介绍 许多系统管理员可能不曾听过磁盘分区对齐之说,甚至一些有经验的存储管理员对分区对齐也不甚了解.磁盘分区不对齐现象是什么,为什么会造成比较严重的性能下降?相 ...
- linux(十三)之磁盘分区、创建文件系统、挂载
前面学习了linux的用户管理 ,感觉是不是linux的多用户多任务的系统感觉十分了解了,但是其实并不然的.你还需要了解更多.接下来给大家分享的是 在vmware中添加硬盘创建分区,然后挂载到指定目录 ...
- linux 磁盘分区类型,Linux 磁盘分区类型和文件系统(示例代码)
当前主流的操作系统磁盘分区类型主要有以下两种: MBR分区 主分区系统之中只能有四个主分区,以第一块磁盘为例,在没有扩展分区的情况下只能有sda1,sda2,sda3,sda4四个,当需要多个分区时, ...
- linux:查看磁盘分区信息和文件系统格式
查看实例上的数据盘信息(GPT/MBR) 磁盘标签类型对应: dos => MBR gpt => GPT # fdisk -l磁盘 /dev/vda:42.9 GB, 4294967296 ...
- xenserver 虚拟机扩容lvm磁盘分区的方法_从零开始学Linux运维|35.LVM(逻辑卷管理)的创建...
简单来说 LVM是建立在硬盘和分区之上的一个逻辑层,提高磁盘分区管理的灵活性 如果没有使用LVM,我们直接访问文件系统读取硬盘内容 使用了LVM我们是通过逻辑卷的东西来读取硬盘内容 使用LVM增加一个 ...
- linux脚本对磁盘分区,shell 脚本实战笔记(4)--linux磁盘分区重新挂载
背景: Hadoop的HDFS文件系统的挂载, 默认指定的文件目录是/mnt/disk{N}. 当运维人员, 不小心把磁盘挂载于其他目录, 比如/mnt/data, /mnt/disk01, /mnt ...
- 嵌入式linux文件系统格式,嵌入式Linux的文件系统分区及数据读写方法与流程
本发明涉及Linux系统的数据存储管理领域,特别是涉及一种基于NANDFlash存储器和UBIFS文件系统的嵌入式Linux的文件系统分区及数据读写方法. 背景技术: ::目前Linux操作系统由于源 ...
- 磁盘分区管理与文件系统
目录 一 磁盘基础 磁盘三要素 磁盘接口类型 MBR 硬盘目录 分区结构 文件系统类型 检测并确认新硬盘 格式化分区以确定文件系统 挂载,卸载文件系统(临时) 设置文件系统的自动挂载(永久) 二 实验 ...
最新文章
- form表单序列化去除空值
- suse安装MySQL-python_python2.7.9安装mysql-python模块
- bootstrap 按钮颜色属性
- python散点图最多能画几个点_Python的散点图竟然能画这么好看
- upc组队赛5 Bulbs
- CSS学习笔记-04 a标签-导航练习
- 标题 计算机构自由度时主要步骤有哪些,2010年1月全国自考混凝土结构设计试题和答案...
- 函数 devm_kzalloc()
- thinkphp的快捷方法实例化对象
- hadoop原来是这样的!
- MongoDB 教程四: 高级更改操作
- 老马的原创空间搬家通告
- 去除DataTable重复数据的三种方法(转)
- Leetcode513. Find Bottom Left Tree Value找树左下角的值
- android socket_Android 10.0系统启动之Zygote进程(四)-「Android取经之路」
- 使用 Arduino 烧录全新的 ATmega328P
- oracle自增序列的删除,重建,回到最开始的设置值
- feedsky官网访问异常
- 《C++游戏编程入门 第四版》的例子Blackjack-
- STM32CubeMX | STM32F1系列HAL库读写内部FLASH
热门文章
- 解决新建springboot项目时包导不进来的问题sun.security.provider.certpath.SunCertPathBuilderException: unable to f,已解决
- Educational Codeforces Round 45 (Rated for Div. 2) A Commentary Boxes
- jupyter内核无法连接,出现error,代码无法运行解决办法
- python多线程实现访问页面升级_python使用多线程不断刷新网页的方法
- 梦幻手游服务器维护期间不能改名,《梦幻西游手游》不能说话解决方法 打字显示系统维护中是如何回事...
- 学c语言笔记本电脑推荐,2020年大学生笔记本电脑推荐
- 电子产品进水后如何处理
- Android开发中根据图片名称获取在drawable中的ID
- 多普达 699之不完全新手须知
- Ubuntu18.04声卡无声音解决方案