Linux-磁盘管理介绍
Linux-磁盘管理介绍
计算硬盘介绍
硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成;
- cylinder:柱面
- sector:扇区
- 磁道与磁道之间是有间距的;
- 每一个扇区存储512字节
- head:磁头
Linux系统中存放硬件设备的目录:/dev/
block是文件存储的最小单位
block以及inode的讲解
文件的存储分为两个部分
- 文件内容–>block
- 权限以及文件属性–>inode
其中还有一个就是超级快:SuperBlock
- SuperBlock记录文件的整体信息:
- 包括block和inode总量、使用的大小、剩余大小等等
总结:
- Superblock:记录文件系统的整体信息,包括inode与block的总量、使用大小、剩余大小, 以及文件系统的格式与相关信息等;
- Inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号;
- Block:存储文件的内容,如果文件超过默认Block大小,会自动占用多个Block。
操作系统进行格式化分区时,操作系统自动将硬盘分成两个区域。
- 一个是数据Block区,用于存放文件数据;
- 另一个是Inode Table区,用于存放inode包含的元信息。
- 格式化信息的时候是可以指定每个block的大小
- 128B、256B、等等
#查看分区的inode大小
[root@Test0 ~]# dumpe2fs /dev/sda1 | grep "Inode size"
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sda1 时#这两条命令,都出现有报错,原因是我们的系统使用了xfs-->需要另外一个命令查看
[root@Test0 ~]# tune2fs -l /dev/sda2 |grep "Inode size"
[root@Test0 ~]# xfs_info /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=65536 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=262144, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0#这样子也能查看文件的大小
[root@Test0 ~]# stat /boot/ |grep Inode
设备:801h/2049d Inode:64 硬链接:5
在给硬盘分区的时候,到格式化的步骤的时候,可以指定block的大小
- mkfs 硬盘名
- -b:可以直接指定block块的大小
软链接和硬链接的介绍
文件名和inode编号是有对应关系的
- 一个inod对应一个文件
- 也可以多个文件指向一个inode
硬链接的好处
- 可以备份文件;防止误删除
- 有相同的inode号;误删源文件–>链接文件还能使用
- 硬链接只能对文件生效
- 硬链接无法跨分区创建;
创建硬链接
- ln 源文件 目标文件
[root@Test0 sh]# ln aa.txt aa.txt.hard
[root@Test0 sh]# ll -i ./aa*
17544472 -rw-r--r-- 2 root root 0 3月 13 06:42 ./aa.txt
17544472 -rw-r--r-- 2 root root 0 3月 13 06:42 ./aa.txt.hard
软链接介绍
- 软链接有点想windows上面的链接文件
软链接功能
- 软链接可以跨分区;
- 支持链接目录也支持文件
- inode号不同,
- 源文件存在,链接文件可以使用,
- 源文件删除了,软链接没法使用
创建软连接
- ln -s 源文件 目标文件
#创建软连接
[root@Test0 sh]# ln -s aa.txt aa.txt.soft
[root@Test0 sh]# ll -i aa.txt*
17544472 -rw-r--r-- 2 root root 0 3月 13 06:42 aa.txt
17544472 -rw-r--r-- 2 root root 0 3月 13 06:42 aa.txt.hard
17544479 lrwxrwxrwx 1 root root 6 3月 13 06:48 aa.txt.soft -> aa.txt
磁盘实操过程讲解
Linux中一切的硬件设备都是需要挂载才能使用,因此硬盘也是不例外;
如果添加了硬盘之后–>需要在/dev/目录中查看是否有识别到硬盘
#查看硬盘是否识别
[root@Test0 ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc#或者是使用fdisk 命令也能查看
[root@Test0 ~]# fdisk -l
添加新硬盘操作:
在虚拟机添加硬盘的操作就不做解释了;也不做笔记了,做了很多很多;
- 首先对硬盘进行分区
- 实验中第一块sdb硬盘,我们使用MBR分区;
- 使用的命令就是fdisk命令
#对硬盘进行分区
[root@Test0 ~]# fdisk /dev/sdb
.........
命令(输入 m 获取帮助):m #输入m获取帮助
命令操作a toggle a bootable flag b edit bsd disklabelc toggle the dos compatibility flagd delete a partition #扇区分区g create a new empty GPT partition table #创建gpt标签G create an IRIX (SGI) partition tablel list known partition types #列出已分区信息m print this menu #获取帮助信息n add a new partition #添加新分区o create a new empty DOS partition table #创建dos分区标签p print the partition table #显示分区信息-->分区好之后使用q quit without saving changes #不保存退出s create a new empty Sun disklabelt change a partition's system id #指定分区idu change display/entry unitsv verify the partition tablew write table to disk and exit #保存并且退出x extra functionality (experts only)
命令(输入 m 获取帮助):n #添加分区
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p): p #选择是主分区还是拓展分区-->默认不填就是主分区
分区号 (1-4,默认 1):1 #选择分区号-->不填就是默认1
起始 扇区 (2048-41943039,默认为 2048): #开始的扇区
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G #指定分区的大小
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p #列出已经分区的信息
...............设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 12584959 4194304 83 Linux#如果想删除分区
命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):2
分区 2 已删除#保存退出
命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。#查看一下是否成功
[root@Test0 ~]# ls /dev/sdb1
/dev/sdb1
- 然后格式化硬盘
- 格式化就是创建文件系统
- 使用的命令就是mkfs.ext4
#查看一下有多少命令是可以进行分区的
[root@Test0 ~]# mkfs
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs#对sdb1进行分区
[root@Test0 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- 最后是挂载使用
- 创建一个目录用于挂载sdb1
- 最好不要使用已经有数据的目录,因为会覆盖;
#创建目录
[root@Test0 ~]# mkdir /sbd1#直接挂载使用
[root@Test0 ~]# mount /dev/sdb1 /sdb1#查看一下是否挂载
[root@Test0 ~]# df -h | grep sdb1
/dev/sdb1 2.0G 33M 2.0G 2% /sdb1
[root@Test0 ~]#
fdisk命令
作用:对硬盘进行分区–>MBR分区
语法:fdisk+选项+硬盘
选项:
- -b:编辑bsd disklabel;
- -c:切换dos兼容性标志;
- -d:删除一个分区;
- -g:创建一个新的空GPT分区表;
- -G:创建一个IRIX(SGI)分区表;
- -l:列出已知的分区类型;
- -m:打印帮助菜单;
- -n:添加一个新分区;
- -o:创建一个新空DOS分区表;
- -p:打印分区表信息;
- -q:退出而不保存更改;
- -s:创建一个新的空的Sun磁盘标签;
- -t:更改分区的系统ID;
- -u:更改显示/输入单位;
- -v:验证分区表;
- -w:将分区表写入磁盘并退出;
- -x:额外功
GPT格式文件系统
如果硬盘的容量大于2TB的话,可以使用GPT格式;
parted命令是用于GPT格式的分区
实验过程:
- 首先需要把分区类型改为gpt格式;
- 然后创建文嘉系统
- 然后挂载使用
#修改硬盘的分区格式
[root@Test0 ~]# parted -s /dev/sdc mklabel gpt#基于ext4文件系统类型格式化
[root@Test0 ~]# mkfs.ext4 /dev/sdc
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc is entire device, not just one partition!
无论如何也要继续? (y,n) y
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 #然后挂载使用
[root@Test0 ~]# mount /dev/sdc /sdb1/#检查一下[root@Test0 ~]# df -h
........
/dev/sdc 20G 45M 19G 1% /sdb1
第二种直接使用parted命令进行分区
#直接输入parted
[root@Test0 ~]# parted
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.#然后选择硬盘
(parted) select /dev/sdc
使用 /dev/sdc#然后创建格式类型
(parted) mklabel gpt
警告: 正在使用 /dev/sdc 上的分区。
忽略/Ignore/放弃/Cancel? Ignore #这里会询问你是否确定-->输入忽略就可以了#然后最后一次确认
警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to
continue?
是/Yes/否/No? yes #直接选择yes#把整块硬盘进行分区,分配一个分区
(parted) mkpart primary 0 -1
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? ignore #查看一下就发现成功了
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number Start End Size File system Name 标志1 17.4kB 21.5GB 21.5GB primary#退出
(parted) quit #然后创建文件系统
[root@Test0 ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=1310658 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242631, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0#最后挂载使用
[root@Test0 ~]# mount /dev/sdc1 /sdb1/
[root@Test0 ~]# df -h | grep sdb
/dev/sdc1 20G 33M 20G 1% /sdb1
mount命令
作用:对硬盘设备进行挂载;是一个用于挂载的工具
语法:mount + 选项+ 设备
选项:
- -V:查看版本号
- -l:查看已加载的列表
- -h:列出信息
- -v:输出指令执行的详细信息;
- -n:加载没有写入文件/etc/mtab中的文件系统;
- -r:将文件系统加载为只读模式;
- -a:加载文件/etc/fstab中配置的所有文件系统;
- -o: 指定mount挂载扩展参数,常见扩展指令:rw、
- -o atime:系统会在每次读取文档时更新文档时间;
- -o noatime:系统会在每次读取文档时不更新文档时间;
- -o defaults:使用预设的选项 rw,suid,dev,exec,auto,nouser等;
- -o exec : 允许执行档被执行;
- -o user、-o nouser:使用者可以执行 mount/umount的动作;
- -o remount:将已挂载的系统分区重新以其他再次模式挂载;
- -o ro:只读模式挂载;
- -o rw:可读可写模式挂载;
- -o loop :使用loop模式,把文件当成设备挂载至系统目录。
- -t:指定mount挂载设备类型,常见类型nfs、ntfs-3g、vfat
- iso9660:光盘或光盘镜像;
- msdos:Fat16文件系统;
- vfat:Fat32文件系统;
- ntfs:NTFS文件系统;
- ntfs-3g:识别移动硬盘格式;
- smbfs:挂载Windows文件网络共享;、
- nfs :Unix/Linux文件网络共享。
实际操作案例讲解:
#正常挂载使用
[root@Test0 ~]# mount /dev/sdb1 /sdb1/#挂载光盘镜像-->使用-t参数-->指定类型是iso9660
[root@Test0 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载#重新挂载/目录,并且指定权限
[root@Test0 ~]# mount -o remount,rw /#卸载操作
[root@Test0 ~]# umount /dev/cdrom
[root@Test0 ~]#
相关文章:
Linux-磁盘管理介绍
Linux-磁盘管理介绍 计算硬盘介绍 硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成; cylinder:柱面sector:扇区 磁道与…...

爬虫架构(一):爬虫中的去重处理
目录一、概要二、去重应用场景以及基本原理2.1 爬虫中什么业务需要使用去重2.2 去重实现的基本原理2.3 根据原始数据进行去重判断2.4 根据原始数据的特征值进行去重判断2.5 临时去重容器与持久化去重容器2.6 常用几种特殊的原始数据特征值计算三、基于信息摘要算法的去重3.1 信…...

算法刷题总结 (二) 回溯与深广搜算法
算法总结2 回溯与深广搜算法一、理解回溯算法1.1、回溯的概念1.2、回溯法的效率1.3、回溯法问题分类1.4、回溯法的做题步骤二、经典问题2.1、组合问题2.1.1、77. 组合 - 值不重复2.1.2、216.组合总和III - 值不重复且等于目标值2.1.3、17. 电话号码的字母组合 - 双层回溯2.1.4、…...
Linux 总结9个最危险的命令,一定要牢记在心!
rm -rf 命令 该命令可能导致不可恢复的系统崩坏。 rm -rf / #强制删除根目录下所有东西。 rm -rf * #强制删除当前目录的所有文件。 rm -rf . #强制删除当前文件夹及其子文件夹。 执行rm -rf 一定要想半天,搞明白自己在干什么. fork 炸弹 😦) { 😐:&am…...

spring cloud
spring cloud 分享 springboot:可以说是spring cloud的基础,是springMVC框架的简化,约定大于配置(在使用上、非功能上的简化) 可以说每个MPO Digital api就是springboot project(springboot项目) spring cloud…...

【9】核心易中期刊推荐——图像视觉与图形可视化
🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...
0108Bean销毁-Bean生命周期详解-spring
Bean使用阶段,调用getBean()得到bean之后,根据需要,自行使用。 1 销毁Bean的几种方式 调用org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#destroyBean调用org.springframework.beans.factory.config.Conf…...
微信小程序可以进行dom操作吗?
小程序不能使用各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作 原因:在小程序中,渲染层和逻辑层是分开的,分别运行在不同的线程中,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺…...

昇腾AI深耕沽上:港口辐射力之后,天津再添基础创新辐射力
作者 | 曾响铃 文 | 响铃说 AI计算正在以新基建联动产业集群的方式,加速落地。 不久前,天津市人工智能计算中心正式揭牌,该中心整体规划300P算力,2022年底首批100P算力上线投入运营,并实现上线即满载。 这是昇腾AI…...

基于YOLOv5的疲劳驾驶检测系统(Python+清新界面+数据集)
摘要:基于YOLOv5的疲劳驾驶检测系统使用深度学习技术检测常见驾驶图片、视频和实时视频中的疲劳行为,识别其闭眼、打哈欠等结果并记录和保存,以防止交通事故发生。本文详细介绍疲劳驾驶检测系统实现原理的同时,给出Python的实现代…...

【Linux】-- 进程优先级和环境变量
目录 进程的优先级 基本概念 如何查看优先级 PRI与NI NI值的设置范围 NI值如何修改 修改方式一 : 通过top指令修改优先级 修改方式二 : 通过renice指令修改优先级 进程的四个重要概念 环境变量 基本概念 常见的环境变量 查看环境变量 三种…...

iOS 紧急通知
一般通知 关于通知的各种配置和开发,可以参考推送通知教程:入门 – Kodeco,具有详细步骤。 紧急通知表现 紧急通知不受免打扰模式和静音模式约束。当紧急通知到达时,会有短暂提示音量和抖动(约2s)。未锁…...

即时零售:不可逆的进化
“人们经常问我,这个世界还是平的吗?我经常跟他们说,亲爱的,它真的是平的,比以前更平了。”2021年3月,《世界是平的》作者托马斯弗里德曼在演讲时说。如他所说,尽管逆全球化趋势加剧,…...

零售数据总结经验:找好关键分析指标和维度
各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 每逢月末、季末、年终,运营部门的同事又要开始进行年终总结分析。那么,对零售连锁企业来说,…...

从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构
目录引言技术选型正文创建基础架构IDEA创建项目添加Netty监听端口编写客户端进行测试总结引言 由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习…...
C++中那些你不知道的未定义行为
引子 开篇我们先看一个非常有趣的引子: // test.cpp int f(long *a, int *b) {*b 5;*a 1;return *b; }int main() {int x 10;int *p &x;auto q (long *)&x;auto ret f(q, p);std::cout << x << std::endl;std::cout << ret <&…...
java基础面试题(四)
Mysql索引的基本原理 索引是用来快速寻找特定的记录;把无序的数据变成有序的查询把创建索引的列数据进行排序对排序结果生成倒排表在倒排表的内容上拼接上地址链在查询时,先拿到倒排表内容,再取出地址链,最后拿到数据聚簇索引和非…...
@PropertySource使用场景
文章目录一、简单介绍二、注解说明1. 注解源码① PropertySource注解② PropertySources注解2. 注解使用场景3. 使用案例(1)新增test.properties文件(2)新增PropertySourceConfig类(3)新增PropertySourceTe…...

【C语言进阶:刨根究底字符串函数】strtok strerror函数
本节重点内容: 深入理解strtok函数的使用深入理解strerror函数的使用⚡strtok Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part ofstr1sep参数是个字符串,定义了用作分隔符的字符集合。第一个参数指…...

西安石油大学C语言期末重点知识点总结
大一学生一周十万字爆肝版C语言总结笔记 是我自己在学习完C语言的一次总结,尽管会有许多的瑕疵和不足,但也是自己对C语言的一次思考和探索,也让我开始有了写作博客的习惯和学习思考总结,争取等我将来变得更强的时候再去给它优化出…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...