一、磁盘基础知识

https://cloud.tencent.com/developer/article/2090691
https://www.elecfans.com/news/1833809.html
https://blog.csdn.net/qq_47343020/article/details/124920494 (短小精湛)

硬盘与软盘的区别:https://baijiahao.baidu.com/s?id=1762155257403549840&wfr=spider&for=pc

1.磁盘物理结构与组成

https://zhuanlan.zhihu.com/p/373313740?utm_id=0
https://blog.csdn.net/weixin_47187147/article/details/127536014
https://blog.csdn.net/newticigam/article/details/119995159

主要有扇区、磁道、盘面、柱面、磁头

  • 扇区
    https://blog.csdn.net/newticigam/article/details/119995159
    硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)

  • 必须要记住的英文单词:
    geometry:几何数据,一般指的就是CHS,如下:
    cylinders:柱面数
    sectors:扇区数
    heads:磁头

2.硬盘种类的划分(以接口形式为准)

https://blog.csdn.net/Jackliu200911/article/details/117558366
[https://baijiahao.baidu.com/s?id=1727107686222207048&wfr=spider&for=pc](https://baijiahao.baidu.com/s?id=1727107686222207048&wfr=spider&for=pc)

3.磁盘分区

http://www.360doc.com/content/18/0401/08/277688_741943505.shtml
https://blog.csdn.net/w1234567465/article/details/119734829

1)磁盘分区命名规则

主设备号 + 次设备号 + 磁盘分区号
如/dev/sda1,/dev/sda2,如sd就代表主设备号(设备类型,sd为SCSI硬盘),a代表是次设备号,1、2代表分区号。

2)分区格式

主分区、扩展分区、逻辑分区等概念

https://blog.51cto.com/u_14286115/5194405

主分区,扩展分区,逻辑分区,活动分区,系统分区,启动分区。。。。。。。。。

主引导扇区,MBR,bootloader。。。。。。。。。。

各种概念,你都清楚什么意思吗?

花了一天的时间终于研究清楚了,网上好多帖子的解释都是错的,或者没有深入到本质,都是什么C盘啊,D盘啊,都被windows洗脑了。浪费了好好长时间。

主分区:实际上在早期的硬盘分区中并没有主分区、扩展分区和逻辑分区的概念,每个分区的类型都是主分区。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计只能存储4个分区的数据。也就是说,一块物理硬盘只能划分为4个逻辑磁盘。在具体的应用中,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,引入了扩展分区和逻辑分区,并把原来的分区类型称为主分区。

扩展分区:上面说了,4个分区显然不能满足需求,但是物理硬件限制只能有4个分区怎么办呢?所以操作系统开始出马了,把其中一个主分区命名为扩展分区,记住只是命名哦,原则上扩展分区和主分区是一样的,只不过功能不同。下面说完逻辑分区,你就懂我在说什么了。

逻辑分区:4个分区肯定不够,我想要20个分区,怎么办呢?把其中一个主分区变成扩展分区,然后在这个扩展分区上进行切割,变成一个个D盘,E盘,F盘什么的,但是这些盘综合起来就是一个扩展分区,这些盘是相互链接的,并不像主分区那样,4个之间相互独立互不干扰。逻辑分区用链表进行链接,如果E盘中的分区信息丢掉,操作系统就找不到F盘了。

启动分区:很简单,存放操作系统文件的的分区,比如你装了2个系统:win7+linux那么你就2个启动分区。装的是windows的话就看windows文件夹(system32文件)存放在那个区,哪个区就是你的启动分区,默认装C盘,你也可以装F盘等。装的是Linux的话就看 / 分区装在哪,哪就是启动分区。

系统分区:存放Ntldr程序或者Grub程序的分区,windows通常装在C盘,linux通常装载/boot分区

活动分区:活动分区是主分区,活动分区是系统分区,每次PC启动时,一块硬盘只能有一个活动分区,如果要启动windows就将windows的系统分区设为活动分区,计算机就会去那里装载引导程序(Ntldr或者Grub)并执行,如果要启动Linux就将Linux的系统分区设为活动分区。

看到没?上图是我的硬盘分区情况,我的win7装在C盘,即我的windows文件夹在C盘,所以C盘是启动分区;但是我把Grub装到Z盘去了,即引导程序Ntldr.   boot.ini什么的,所以Z盘是系统分区。。。。。又由于我当前启动的时win7系统,所以win7的系统分区也是活动分区。

各位童鞋应该都明白了吧~~~~~

 下面讲一讲启动的事情

主引导扇区:每块硬盘,对,每块硬盘不是每个分区,都【只有一个主引导扇区,即该硬盘0号柱面,0号磁头的第一个扇区,大小为512字节】。主引导扇区包含的MBR(硬盘主引导记MBR占446bytes)、DPT(分区表DP占64bytes)、MN(硬盘有效标志Magic Numbe占2byte。AA和55被称为幻数(Magic Number),BOIS读取MBR的时候总是检查最后是不是有这两个幻数,如果没有就被认为是一个没有被分区的硬盘),这3个区域是操作系统无关的,在每块硬盘上都存在;MBR是一段可执行程序,由各个操作系统写入不同的代码。MBR的存储空间限制为446字节,MBR所做的唯一的事情就是装载第二引导装载程序。Windows产生的MBR装载运行PBR;GRUB产生的MBR装载运行grldr

MBR:正如上面所说的那样,它是一段程序,长度为446字节,作用是加载bootloader的。
  • MBR (Master Boot Record),另外也叫作MSDOS
    https://www.jianshu.com/p/c57c4e688da6
    MBR存储

    MBR位于硬盘第一个物理扇区处 , MBR中包含硬盘的主引导程序和硬盘分区表
    MBR总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-512字节中。
    分区表有4个分区记录区,每个分区记录区占16字节,最后2字节结束标记0x55和0xAA。

重要概念:不同的分区与特性

缺点

操作系统无法抓取2.2T以上的磁盘容量,个人PC可能目前来说够,但是服务器已经无法满足了;
MBR仅有一块分区表,无法实现高可用,一旦被损坏,很难再救援恢复;
MBR内存放的开机管理程序也只有446bytes,也是无法容纳更多的开机程序代码的;
  • GPT(GUID Partition Table)
    因此基本上GPT弥补了MBR的不足,但是GPT只是分区格式方法不同哈,以SCSI硬盘为例,磁盘的命名规则并没有大改;
    仍然是第一块盘sda,第二块盘sdb… 第一块盘的第一个分区sda1,第二个分区sda2等,但是GPR去除了扩展分区的概念,直接分区为主分区和逻辑分区;
3)磁盘分区与挂载

http://www.taodudu.cc/news/show-5496810.html?action=onClick
分区挂载之前必须先要格式化,否则会报错:mount: /file2: wrong fs type, bad option, bad superblock on /dev/sdb5, missing codepage or helper program, or other error.

4)分区表

https://www.ddbji.com/web/pc/116.html
https://blog.csdn.net/caodinke/article/details/105347503
https://zhuanlan.zhihu.com/p/524941216?utm_id=0

二、磁盘操作命令

https://zhuanlan.zhihu.com/p/641397199
https://zhuanlan.zhihu.com/p/637951398?utm_id=0&wd=&eqid=a73387950002111e000000066577af56

1.查看磁盘空间大小

https://www.runoob.com/linux/linux-filesystem.html (详细)

1)df命令(disk free)

作用:显示目前在 Linux 系统上的文件系统磁盘使用情况统计
如果没有指定文件名,则df命令会显示所有已挂载的文件系统的信息。如果指定了文件名,则df命令会显示该文件所在的文件系统的信息。
https://www.runoob.com/linux/linux-comm-df.html

常用参数说明:
https://blog.csdn.net/qq_33681891/article/details/132824558

  • 查看文件系统类型
    df -T /path/to/directory
2)du命令(disk usage)

作用:显示指定的目录或文件所占用的磁盘空间,不指定目录则默认计算当前目录。

https://www.bunian.cn/10579.html
常用参数说明(与df有很多相同的参数):
通过du --help可以看到详细的说明

  -0, --null            每行输出使用 NUL 空字符结尾而非使用换行符
  -a, --all             输出所有文件的磁盘用量,不仅仅是目录
      --apparent-size   显示表面用量,而并非是磁盘用量;虽然表面用量通常会
                          小一些,但有时它会因为稀疏文件间的“洞”、内部碎
                          片、非直接引用的块等原因显得更大一些。
  -B, --block-size=大小  以指定大小为单位对块大小进行输出;例如,
                           'BM' 以 1,048,576 字节为单位输出大小;
                           详情请参见下方的“SIZE 格式”部分
  -b, --bytes           等效于 '--apparent-size --block-size=1'
  -c, --total           显示总计信息
  -D, --dereference-args  只在符号链接显式在命令行列出时对其进行解引用
  -d, --max-depth=N     仅当目录(或在 --all 选项启用时包括文件)层级不高于
                          命令行参数指定的 N 层时输出对应目录或文件的对应大小;
                          --max-depth=0 等效于 --summarize
      --files0-from=F   统计由文件 F 给出的由 NUL 空字符结束的文件名列表
                          所对应各个文件的信息;如果 F 是 -,则从标准输入
                          读取文件名列表
  -H                    等效于 --dereference-args (-D)
  -h, --human-readable  以人类可读的格式输出大小(例如,1K 234M 2G)
      --inodes          列出 inode 使用信息而非块使用信息
  -k                    等效于 --block-size=1K
  -L, --dereference     解引用所有符号链接
  -l, --count-links     如果是硬连接,则重复计算其尺寸
  -m                    等效于 --block-size=1M
  -P, --no-dereference  不跟随任何符号链接(默认行为)
  -S, --separate-dirs   不包括子目录的占用量
      --si              类似 -h,但使用 1000 的倍数,而非 1024
  -s, --summarize       只分别计算命令列中每个参数所占的总用量(不能与-a并用)
  -t, --threshold=大小  如果指定大小为正值,排除比该值更小的项,
                          或者在值为负时排除更大的项
      --time            显示目录中或其子目录下所有文件的最后修改时间
      --time=关键字     显示指定关键字对应的时间而非最后修改时间:
                          atime, access, use, ctime 或 status
      --time-style=格式   使用指定格式显示时间,格式可以为:
                            full-iso, long-iso, iso 或 +FORMAT;
                            FORMAT 字符串以与 'date' 工具类似的方式解读
  -X, --exclude-from=文件  排除所有与指定<文件>所提供模式匹配的文件
      --exclude=模式       排除所有与所给<模式>匹配的文件
  -x, --one-file-system    跳过位于不同文件系统上的目录
  • -a:查看所有文件的磁盘用量,包括文件及符号链接。du默认是不显示文件的,只显示所有目录。
  • -d:只显示指定深度的目录或文件,比如2,路径中最多有2个/的文件或者目录才会显示。
  • -s:只显示总量大小,不显示文件。

利用du命令排查大文件技巧:

1)du -d 1 -h:查看一级目录,找到最大的目录。
2)进入最大目录,再次执行du -d 1 -h直至确定最大目录。
3) 可以加上排序更直观,https://www.jb51.net/jiaoben/297517fbc.htm

2.磁盘数据拷贝,dd指令

http://c.biancheng.net/linux/dd.html

3.dd与cp的区别

https://blog.csdn.net/weixin_30902675/article/details/99471718

4.强制清空回收站(回收站本质上就是一个文件夹)

rm -fr $HOME/.local/share/Trash/files/*

5.分区操作指令

注意虚拟机创建新磁盘,要重启才能被识别。

查看分区
编辑分区

https://www.51cto.com/article/216867.html

为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048? https://blog.csdn.net/Anonymous2017/article/details/71420218

分区类型
https://blog.csdn.net/weixin_52273136/article/details/111183660
fdisk /dev/sda后,通过输入l可以查看。


0 条评论

发表回复

您的电子邮箱地址不会被公开。