首页 > 代码库 > 磁盘管理
磁盘管理
数据的存储总是需要一个载体,这个载体就是我们通常说的硬盘,硬盘它的构造就是一个不停在转的磁块,一个不停转的磁块是怎么存储数据的,为什么这个磁块需要不停的转动,并且我们日常购买磁盘,都希望磁盘的转速越快越好,这一切都取决于磁盘的存储数据的原理。目前市面上稍微高端一点的电脑全部都使用SSD,这种新磁盘为什么拥有那么好的性能。
一 磁盘
磁盘存储数据是把一个可以存储磁属性的东西赋予正负属性,多个正负组合在一起代表一个数据。工业中把磁盘分成如下图的样子
上图就是工业上划分磁盘的标准,首先把磁盘划分为一圈圈的磁道,然后把磁道分为一个个扇区,每个扇区存储512B数据。当今的磁盘一般不是一个盘片的硬盘,一般都是多个盘片,并且正反盘面都存储数据。
上图就是一个三盘片的磁盘,并且有六个磁头,磁头统一固定在一个可以转动的磁臂上。前面我们把磁盘分为一个个磁道,就是通过磁臂转动选择磁道。当读数据的时候,磁臂转到对应的磁道,然后确定在哪个磁头上的哪个扇区,这时就需要看磁盘的转速了,磁盘的转动速度越快,寻找扇区的速度越快。一个磁盘可以存储数据的大小=磁头数*磁道数*扇区数*512B。
二 磁盘使用
磁盘使用分为两个部分,一是磁盘管理,分区类型有mbr和gpt;二是文件系统管理,主要是在磁盘原本的存储结构上进一步划分,使得操作系统可以高效的利用磁盘。
1 磁盘分区类型
磁盘使用的时候总是需要了解磁盘信息,有时还需要把磁盘分为多个块使用,分块很有必要性,分块使用磁盘可以把不同的数据分开存放,这个分开存放比在同一个分区下把文件放在不同的目录要安全很多,比如数据文件比操作系统文件重要很多,分区后即使操作系统崩溃也不会导致数据的丢失。因为以上等等需求,使用磁盘前先规划记录磁盘信息变得尤其重要。
Mbr分区类型使用硬盘的0磁道的0扇区记录整个磁盘的信息。前644个字节存放磁盘的引导信息;然后64个字节存放分区信息,磁盘最多可以分4个主分区,也可以把最后一个分区更改为扩展分区,在扩展分区内继续分区。
gpt分区类型使用0磁道的前34个扇区存放信息,最多可以分128个分区,并且每个分区情况都会有一个备份。
分区查看
df 显示当前系统已经挂载各磁盘分区的大小和使用率,-h以易读的格式显示分区的大小。 lsblk 显示分区的大小 fdisk –l /device 显示某个硬盘的信息
磁盘分区
mbr分区命令
fdisk /device 这是交互式的命令,也可以通过接受<<eof获取参数 m 获取帮助 p 打印分区情况 n 创建分区 t 修改分区类型 gpt分区命令 gdisk /device 和fdisk的使用方式差不多
2 文件系统管理
仅对磁盘进行分区是完全不能满足我们的需求,操作系统管理文件需要更加具有规范的格式,这样才可以高效调用文件查询文件。
下图就是一个完整的从磁盘到操作系统管理数据的格式。
文件系统类型
Windows的文件系统的类型:ntfs,vfat
Linux:ext#,xfs,brtfs
ext3开始之后文件系统具有日志功能
Unix:。。。
网络文件系统:nfs,b2fs
分布式文件系统:chp。。。
文件系统创建
mkfs.{ext#|xfs|brtfs}[option] -b {1024|2048|4096} 指定block的大小 -L label 指定lable -U uuid 指定uuid -m # 指定预留空间百分比 -i 指定inode比例,每多少空间创造一个inode -I 指定inode的大小 -N 指定inode的熟练 -O [^|] acl 文件系统默认挂载后是否有acl权限 sync 实时同步,系统性能会变得特别差 async exec 目录下的文件不许执行
查看和修改
blkid device 显示分区的uuid和lable信息 tune2fs [option] /device/part -l 列出分区的超级块信息 -L 指定lable信息 -U 指定uuid -o 指定挂载选项 -m 指定预留空间大小
3 Swap分区
swap分区类似windows里的虚拟内存,作用就是虚拟内存使用硬盘模拟内存,内存不够的时候把数据暂存入此处。
mkswap /device/part 把格式化为swap分区 swapon [-p] /device/part 激活分区,-p指定使用的优先级 swapoff
三 文件系统的使用
1 挂载和卸载分区
mount [option]/device/part -o 指定挂载选项 acl sync exec remount -a 重读/etc/fstab文件 umount[/device/part|/dir] 卸载目录 Fuser -v [/device/part |/dir] 查看某目录或文件正在使用的人 -km[/device/part|/dir] 踢出人
2 fstab
/etc/fstab这里主要是定义操作系统开机时挂载设备的选项
/etc/fstab的格式
/device/part /dir filetyp option 0 0
第一个字段是设备的路径或者uuid或者lable
第二个字段是挂载的命录
第三个字段是文件系统类型
第四个字段是挂载选项
第五个字段是转储频率
第六个字段是自检顺序
四 外围设备
添加设备文件
mknod[选项]... 名称 类型 [主设备号 次设备号]
光驱
eject
五 直接操作磁盘数据
dd if=source of=direct bs=block skip= seek= conv=conversion of=file 写到所命名的文件而不是到标准输出 if=file 从所命名文件读取而不是从标准输入 bs=size 指定块大小(既是是ibs也是obs) ibs=size 一次读size个byte obs=size 一次写size个byte cbs=size 一次转化size个byte skip=blocks 从开头忽略blocks个ibs大小的块 seek=blocks 从开头忽略blocks个obs大小的块 count=n 只拷贝n个记录 conv=conversion[,conversion...] 用指定的参数转换文件 转换参数: ascii 转换 EBCDIC 为 ASCII ebcdic 转换 ASCII 为 EBCDIC block 转换一行数据为长度为 cbs 的记录,不足部分用空格填充。 unblock 替代cbs长度的每一行尾的空格为新行 lcase 把大写字符转换为小写字符 ucase 把小写字符转换为大写字符 nocreat 不创建输出文件 noerror 出错时不停止 notrunc 不截短输出文件 sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
六 总结
这一章主要学习了磁盘的原理,磁盘的管理,文件系统的管理,各种设备的挂载和使用,和直接操作数据的命令dd。
遗漏
du –sh
free
本文出自 “老王linux旅程” 博客,请务必保留此出处http://oldking.blog.51cto.com/10402759/1877642
磁盘管理