Linux磁盘和文件系统知识总结
硬盘操作
为什么要给硬盘分区?
如果你需要在一块硬盘上用到多个文件系统,那么你就需要对硬盘进行分区,以便用不同的分区支持不同的文件系统。(但一个硬盘只能有一个分区表!)反过来说,如果你整块硬盘都用同样的文件系统,那么就可以不对硬盘分区。
Linux服务器硬盘该选择什么分区表?
需要分区的话推荐无脑GPT。
MBR分区工具--fdisk
GPT分区工具--gdisk
两者都是引导式的分区工具,做出更改后只要不写入,程序就不会对硬盘做出任何操作。
还有一个parted,它是非交互式的分区工具。
硬盘可以不分区直接用吗?
硬盘可以不分区,直接格式化(文件系统格式)挂载好就能拿来用(如果想保持开机生效一定不要忘了修改/etc/fstab文件!)对于不分区的硬盘,系统会把它的分区表类型标记为loop。但实际上,loop并不是一种分区表类型。至于为什么会显示loop,是因为parted命令在(设置了LVM?)的这块硬盘上找不到分区表。
区别概念:loop设备
parted /dev/sdc print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags: Number Start End Size File system Flags
1 0.00B 5369MB 5369MB xfs
sector size(扇区大小)与block size(块大小)
sector size是关于硬盘最小的存储单位扇区大小的描述(物理层面),而block size则是属于文件系统层面的概念。
文件系统不是一个扇区一个扇区的来读数据,太慢了,所以有了block(块)的概念,操作系统是通过块和簇为单位进行读写的。也就是说一个块可以由一个或多个扇区组成。
文件系统
服务器硬盘的block大小必须是4k吗?
不必须,block本身有一些限制,摘自《鸟哥的Linux私房菜》
原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
每个block 内最多只能够放置一个文件的数据;
承上,如果文件大于block 的大小,则一个文件会占用多个block 数量;
承上,若文件小于block ,则该block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
总的来说,如果block设置过大,会造成磁盘空间的浪费,但设置的过小会造成硬盘频繁读写,降低效率。可以根据服务器的用途来判断需要对文件系统设置多少block size。不过,因为现在的硬盘容量都很大,一般都无脑选择4k的容量。xfs文件系统默认的block size是4096字节,也可以通过mkfs.xfs追加-b参数来修改block size。
什么是4k对齐?
原先硬盘的每个扇区容量是512字节bytes,后来随着硬盘容量的扩大,每个扇区的容量扩大到4096字节。为了和硬盘的物理扇区保持对齐,文件系统将block(Linux)/cluster簇(Windows)的大小也设置为4096字节,这种操作就是4k对齐。
Linux如何验证4k对齐?
比较新的文件系统默认4k对齐,对于GPT分区的硬盘可以使用parted /dev/sda unit s print来查看验证
parted /dev/sdb unit s print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 20971520s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number Start End Size File system Name Flags
1 2048s 2099199s 2097152s xfs Linux filesystem
start扇区可以被8整除就表示4k对齐了。
dumpe2fs和tune2fs最高支持ext4文件系统,不支持xfs。
Linux磁盘和文件系统知识总结的更多相关文章
- Linux磁盘和文件系统简介
Linux磁盘和文件系统简介 1.文件系统:存储设备上存储数据的方式方法 磁盘主要由盘片.机械手臂.磁头和主轴马达组成,而数据的写入实际是写在盘片上,磁盘的最小存储单位为扇区,每个扇区为512字节,扇 ...
- linux系统ext文件系统知识
ext2文件系统细节 我们都知道,操作系统中的数据分为文件内容和文件属性两部分,其中文件内容就是文件的实体数据,而文件属性就是文件类型.权限.属主.修改时间等信息.操作系统会将上述文件的内容放入磁盘文 ...
- linux磁盘与文件系统的管理
本文涉及命令:dumpe2fs.df.du.fdisk.mkfs.mke2fs.fsck.badblocks.mount.umount.e2label.tune2fs.hdparm.parted 概念 ...
- Linux 磁盘与文件系统(EXT2)简介
Linux 中,一切(或几乎一切)都是文件. 一.Linux 磁盘分区与文件系统 1.1 磁盘分区 磁盘的分区主要分为主分区和扩展分区 1)主分区:总共最多只能有四个主分区: 2)扩展分区:只能有一个 ...
- Linux磁盘及文件系统(三)Linux文件系统
一.文件系统的组成 Linux常见的文件系统类型有ReiserFS,ext2,ext3,ext4,vfat,XFS等,文件系统是对一个存储设备上数据和元数据进行组织的机制.他的最终目的是把大量数据有组 ...
- 三.linux磁盘与文件系统
第一层 机械硬盘 和 固态硬盘 结构 接口 机械硬盘stat.sas 固态pci-e .nvme也叫m2 硬盘的选择 磁盘内部组成 计算硬盘的大小 命令 fdisk -l 显示下面信息 大小=扇区大 ...
- Linux磁盘与文件系统原理
这一章主要是原理性的,介绍了Linux文件系统的运作原理.涉及到很多计算机组成和操作系统的原理性知识,这部分知识很多都忘了,在这里复习下. 我们只看本章第1,2节.--------------- ...
- Linux磁盘与文件系统概念理解
磁盘级别概念 这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起.如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每 ...
- linux磁盘以及文件系统
df 查看磁盘总容量 -i 显示inodes号 -h 使用合适的单位显示磁盘大小 -m 以M为单位显示 -k 以K为单位显示 默认K显示 du 用来查看某个目录或者文件所占空间大小 参数:-abckm ...
随机推荐
- SVN在idea中操作解析图
进入的位置
- cpu指令如何读写硬盘
我们提到cpu的主要作用之一就是控制设备之间的数据交互.这其中自然也包括了硬盘.系统的所有数据基本都在硬盘中,所以知道怎么读写硬盘,对程序来说非常重要,所以我们先来探索下传说中的pio模式. cpu要 ...
- Bootstrap 之 Metronic 模板的学习之路 - (1)总览
写在前面 bootstrap 的模板非常多,Envato 上有着各种各样的免费及付费模板.Metronic 是我最喜欢的模板之一(看一眼就喜欢上的那种),当前售价 $28 ,觉得赞的,不妨支持一下作者 ...
- 微信小程序答题,怎么设计页面渲染,答完一题,跳到下一题
想要的效果 1.第一页只显示第一道题的内容,如图红框2.答题后,点击下一题,内容显示第二道题的内容 代码 answer.wxml <!--pages/answer/answer.wxml--&g ...
- 从零到有模拟实现一个Set类
前言 es6新增了Set数据结构,它允许你存储任何类型的唯一值,无论是原始值还是对象引用.这篇文章希望通过模拟实现一个Set来增加对它的理解. 原文链接 用在前面 实际工作和学习过程中,你可能也经常用 ...
- Python实现简单用户注册信息管理系统
运行效果: 注意:运行前请在同一目录下创建一个userdata.bin用于保存用户数据 源代码: 1 # coding:utf-8 2 ''' 3 用户注册信息管理系统 4 功能包括: 5 1.查看全 ...
- 【合集】Python基础知识【第二版】
更新部分 为了避免冗长的代码影响大家观感,将部分案例拆开 增加部分知识点,为了减少大家阅读的负担,尽可能使用短句子,但知识点不可能全覆盖,笔者不是写书,就算是写书也不可能全面,请同学们自行去补充 增加 ...
- Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found 解决办法
问题 每次vs重启都提示安装证书,即使执行dotnet dev-certs https --clean,dotnet dev-certs https -t然后重启vs也不行. 环境 win10, vs ...
- formdata收集数据
通常在收集表单的时候我们都要涉及到绑定上传附件,这时候就可以用formdata的形式携带文件流上传给服务器. formData是ajax2.0(XMLHttpRequest Level2)新提出的接口 ...
- Struts2-EL表达式为什么能获取值栈数据
1.EL表达式能获取域对象值 2.向域对象里面放值使用setAttribute方法,获取使用getAttribute方法 3.底层增强request对象里面的方法getAttribute方法 (1)首 ...