Linux 硬盘与硬件管理

硬件以文件系统(Filesystem)角度来看

文件系统:一个可被挂载的数据称为文件系统,每个操作系统可以使用的文件系统并不一样,windows98是FAT或者FAT16文件系统,而windows2000以后有了NTFS文件系统,linux是ext2、ext3,现在出现了ext4。

文件系统通常将档案的属性和权限放置在inode中,至于实际数据则放置到data block中,另外还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、 使用情况,剩余量等。

主引导扇区(master boot recorder,MBR)MBR:分区的一种方式,支持4个主分区或者1-3个主分区+一个扩展分区,其中扩展分区内可以分出多个逻辑分区。文件系统:操作系统用于明确磁盘分区内的文件的方法和数据结构。负责对文件的存储进行划分磁盘磁盘空间和标注位置。那些你看着是一个单独的文件,可能在你的磁盘里存储并不是连续的。举个例子,一个4G的电影,可能前一部分存储在多少到多少扇区,后一部分存储在多少到多少扇区。这些扇区位置以及他们的标注由文件系统来操作。不明白的话给一个最切实际的比方:一个年级可以分4个班,这个是MBR。在一个班里,老师的座次表记录张三在哪个位置,李四在哪个位置。这个座次表就是文件系统,负责记录学生的位置,并给他们划分座位。

inode:记录档案的属性,同时记录此档案所在的block号码,每个档案都只会占用一个inode,因此文件系统内可以放置的档案数量和inode的数量是对应的,系统读取档案时先要读取inode,查看档案的权限与用户是否符合才能继续根据inode对应的档案block编号去寻找文档的内容。

block:记录档案的实际内容,一个block只能存放一个档案,如果档案容量比block大,则占用多个block,如果小,则剩下的空间会浪费掉,block的大小为1K,2K,4K,在文件系统格式化的时候这个大小就会被确定下来,而且每个block会有各自的编号,以方便inode记录寻找。

superblock:记录整个文件系统的整体信息。

文件系统一开始就会规划好inode和block,除非重新格式化(或者指令resize2fs来进行更改)外不然不会更改,由于有些文件系统非常庞大,所以把inode和block放在一起不容易管理,所以文件系统将inode和block分为block group区块群组进行管理。

block group区块构成:

block group都有单独的inode、block以及superblock。

以ext2文件系统为例,ext2文件系统格式化后会变为:boot sector(启动扇区)和多个block group,boot sector可以存放开机管理程序,这样可以将不同的开机管理程序安装在文件系统最前端,而不用覆盖硬盘唯一的MBR,而block group分为六个部分,下面详述:

block group分为以下六个部分:

1:superblock :大小为1024bytes,记录filesytstem相关信息的地方,记录inode和block的数量,未使用和已使用的inode和block数量,记录inode和block的大小,例如inode是128bytes,而block是1k或者2k或者4k,记录filesystem的挂载时间,最近一次写入数据的时间,最近一次检验磁盘(fsck)的时间等文件系统相关信息。最后还要记录一个valid bit数值,文件系统已被挂载为0,反之为1。

这部分信息可以用dumpe2fs呼叫出来进行查看。

2:档案系统描述 (filesystem description):这个区块可以描述么个block group的开始与结束的block号码,以及说明每个区段分别介于哪一个block号码中,这部分也能够用dumpe2fs来观察。

3:区块对应表(block bitmap):block bitmap记录哪些block是空的,以便新建文档可以快速调出空的block进行储存,同时当删除文档时,block bitmap也会将对应释放的block号码改为未使用。

4:Inode对应表(inode bitmap):这个功能和block bitmap类似,只是block bitmap记录的是使用与未使用的block号码,而inode bitmap记录的是使用与未使用的inode号码。 

5:inode table:也就是上面讲过的inode,这里记录档案的属性以及档案内容放在哪些编号的block里。同时inode的大小均固定为128bytes,inode记录一个block需要花费4bytes,由于有些档案非常巨大,需要占用大量的block,但是记录一个block需要花费4bytes,而inode只有128bytes,因此系统将inode记录block号码的区域分为12个直接,一个间接,一个双间接,一个三间接记录区。

具体记录的数据为:

1)档案存取模式(rwx)

2)档案拥有者(owner、group)

3)档案的容量

4)档案建立或状态改变(例如权限)的时间(ctime)

5)档案最近一次的读取时间(atime)

6)最近修改的时间(mtime)

7)定义档案特性的旗杆(flag)

8)该档案内容真正的指向(pointer)

6:data block:data block是放置档案数据的地方,就是上面说的block,是一个东西。

------------------以上转自 贝伦酱 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/belen_xue/article/details/51586178?utm_source=copy 

1.查看硬盘或目录的容量

df查看硬盘总容量,已用容量,与inode等信息

 

-i, --inodes
用信息索引点代替块表示使用状况

-k, --kilobytes
指定块大小等于1024字节来显示使用状况

-l, --local
只显示本地文件系统使用状况

-m, --megabytes
以指定块大小等于1048576字节(1M)来显示使用状况

du 报告磁盘空间使用情况

du 报告指定的文件已使用的磁盘空间的总量,包括在层次结构中以这些以指定文件为根的目录在内。这里的“已使用的磁盘空间”意思为指定的文件下的整个文件层次结构所使用的空间。

在没给定参数的情况下,du 报告当前目录所使用的磁盘空间。

GNU 选项
-a, --all
显示对所有文件的统计,而不只是包含子目录。

-b, --bytes
输出以字节为单位的大小,替代缺省时1024字节的计数单位。

-c, --total
在处理完所有参数后给出所有这些参数的总计。这个选项被
用给出指定的一组文件或目录使用的空间的总和。

-k, --kilobytes
输出以1024字节为计数单位的大小。多少K

-m, --megabytes
输出以兆字节的块为计数单位的大小(就是 1,048,576 字节)。多少M

-s, --summarize
对每个参数只显示总和。

-S, --separate-dirs
单独报告每一个目录的大小,不包括子目录的大小。

2.磁盘分割与格式化

fdisk

是一个臭虫(直接从man fdisk 复制下来的)
在 Linux 中有很多版本的 *fdisk 类程序。 每一个都有自己的强项和缺点。分别试着使用 cfdisk,fdisk, sfdisk. (fdisk是一个有很多臭虫的分区工具软件,它所做的操作是模糊不清的,通常在碰巧的情况下它才会正常的运行。 它唯一值得使用的地方是它对BSD 的磁盘标签和非 DOS 的分区表有所支持, 尽量少用这个程序。   

(sfdisk是一个专为黑客提供的程序,它的用户界面很不友善, 但它更精确,也比 fdisk 和 cfdisk 更有效。另外,它只能以非交互的方式运行。

cfdisk 是一个漂亮的程序,它只接受最严谨的分区表,而且它能生成高质量的分区表。 如果可能,你最好使用这个程序。)

fdisk最主要的工作就是修改分区表,咱们就先按书上的步骤走一遍:

先是删除的步骤:

 按q退出(系统认定以上步骤作废,即无事发生,按 w是真的保存设定了噢)

再来增加分区的操作:步骤同上,不过删除是d,新增就是n啦,n-》p(主分区)-》选编号1-4(未使用过的)-》q,不保存,哈哈哈

e2label - Change the label on an ext2/ext3/ext4 filesystem  修改设备名

这是什么东西。

使用e2label对磁盘操作时,如果报“e2label: Bad magic number in super-block while trying to open /dev/sdb1 ,Couldn’t find valid filesystem superblock.”这样的报错。是因为e2label对xfs文件系统做操作出现的,一般是centos7以上系统,在7以上系统应该使用xfs_admin来操作即可!

如:

[root@localhost ~]# xfs_admin -l /dev/sdb1       #查看xfs文件系统卷标
 label = ""
[root@localhost ~]# xfs_admin -L test /dev/sdb1 #设置xfs文件系统的卷标为test
 writing all SBs
 new label = "test"
[root@localhost ~]# xfs_admin -l /dev/sdb1
 label = "test"

xfs_admin - change parameters of an XFS filesystem

然鹅

。。。唉,在这先插个眼xfs的基本使用http://www.rundba.com/?post=59。我先往下学Linux的基本指令。

mke2fs Linux下重要的格式化工具

-b设定每个数据块的大小

-i设定inode值

-c检查磁盘错误

-L设定这个扇区的label(表头名称)

-j建立ext3这个具备日志管理功能的文件格式

哈哈哈哈,这个可以改名,但我没有改

mknod - 建立块专用或字符专用文件

mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。

文件系统中的一个专用文件存贮着三种信息(布朗型、整型、整型)。
布朗型在字符文件与块文件之间作出选择,两个整型是主、次设备号。

通常,一个专用文件并不在磁盘上占用空间,仅仅是为操作系统提供交流,而不是为数据存贮服务。一般地,专用文件会指向一个硬件设备(如:磁盘、磁带、打印机、虚拟控制台)或者操作系统提供的服务(如:/dev/null, /dev/random)。

块文件通常类似于磁盘设备(在数据可以被访问的地方赋予一个块号,意味着同时设定了一个块缓存)。所有其他设备都是字符文件。(以前,两种文件类型间是有差别的。比如:字符文件I/O没有缓存,而块 文件则有。)

mknod命令就是用来产生这种类型文件的。

以下参数指定了所产生文件的类型:

p FIFO型

b 块文件

c 字符文件

最下面一行  3, 3嗯就是这了

 3.检查硬盘坏轨与数据同步写入

fsck检查硬盘坏轨,有的话把数据扔到lost+found文件夹里,fsck - 检查并修复Linux文件系统。

系统启动时就会执行的指令 fsck -A根据/etc/fstab,扫描所有设备

-a自动修复检查到的问题扇区,不用一直按y

-r修复检查到的问题扇区,会让你一直按y

使用这个指令的情况是在系统出现极大问题时,(扫描硬盘时会导致部分文件系统损坏)所以在Linux启动时必须进入单人单机模式下(runlevel1)进入维护的情况下再使用吧,用的时候就是fsck -a /dev/xxx,确认成功后reboot。

Linux为了系统效率,默认会将一些数据写在内存里,而不是直接写入硬盘,但是系统莫名其妙的关机,我们就需要特定的方法让这些数据回到硬盘即sync。

指令就是sync(一般是两次以上)就这样打上去sync;sync;sync;reboot

4.关于启动盘

制作一张可引导的启动软盘

mkbootdisk 制作启动软盘(我装的版本就没有这个。难受)

fdformat 用来低级格式化软盘,这个可以

6.硬盘的装载

要建装载目录,如果不为空,装进去后,原来的东西会被清空哦

mount这个指令可以装载 linux的,windows的光驱 软驱 硬盘,不错哦(但是现在我用不到,我就不看了)

umount 卸载

6.硬盘效能测试与启用

hdparm可以开启32位存取模式。

猜你喜欢

转载自www.cnblogs.com/xx123/p/9746257.html