之前的那篇博客主要讲解了硬盘的理论知识(虽然贴上了Linux的标签,其实和Linux关系不大)。现在我们就把需求和实践相结合。在联系中掌握各种Linux的磁盘命令。
一. 查看磁盘的使用量
查看磁盘使用量的两个命令为du(disk usage)和df(disk free)。
du的作用是查看各种文件所占空间之和。
df的作用是查看文件系统所用的磁盘使用量。
两者的差别据说还上过阿里的考试题过,这里总结一下(首先要知道df测出来的磁盘使用率要高于du,这是因为):
- df还会统计文件系统各种表的大小。
- 当文件被删除时,虽然文件已经从目录树中移除,但这并不意味着文件的资源已经被OS所释放——比如远程还有进程持有该文件的句柄,那么显然这个文件并不会马上从硬盘中消失。这也将导致df测出来的内存使用量偏高。
二者的通常的使用方法(带命令行参数):
df -h # 按照human-readable的格式显示
du -s # 仅列出总量,而不列出每个个别的目录占用的容量
二. 观察文件的分区状态
- lsblk: 以树状图的形式打印出所有设备上的分区及格式化后的文件系统。最有用和最简单的方式来了解新插入的USB设备的名字
- blkid:正如它名字所暗示的,这个可以列出所有设备的uuid和文件系统的type。
- parted ... print: 通过指定特定的设备,我们可以以human-readable的形式查看该设备上的详细分区信息。
三. 分区-->格式化-->检验-->挂载
·分区
注意MBR分区表采用的是fdisk来分区,而GPT采用的是gdisk来分区;以后都用gdisk好了。
像gdisk这种命令现在都特别智能,主要体现在:
- 很多参数都不需要直接指定,使用默认值完全够了。
- 在分区的时候没必要使用区块的参数进行分区,指定你所需要的内存也可进行分区。(这里就不能用默认值了,不然用光)
这里就不具体展开了。
·格式化
格式化的操作也很简单——mkfs.ext4 device_name
如果你不想使用ext4文件系统的话,可以在shell中mkfs+[tab]查看有哪些文件系统的格式化命令。
·检验
当初学的时候感觉蛮麻烦的,现在来看怎么这么方便。。
如果是ext4文件系统的话,利用fsck.ext4 device_name就行了。
值得注意的是,这个命令其实很危险,一般只有身为root,且你的文件系统有问题的时候才使用这个命令。
不然可能造成文件系统的改变。
最好在挂载前检验或者是即将要卸载的时候进行检验。
·挂载
挂载命令mount有好几种不同的形式,最好的形式是使用UUID来进行指定。
mount UUID="..." mount_point
至于查看UUID可以通过之前讲到的blkid命令来寻找。
如果是可移除设备的话,可以通过umount命令来卸载,格式更为简单:
umount device_name
关于挂载还有几点值得说的:
那就是不要挂载到非空的目录,不然原来目录下的东西都会消失不见(不过umount以后又会出现)
四. 设置启动(自动)挂载
每次重新启动我们都需要重新手动挂载,有没有一种方式可以让我们系统在启动的时候自动地帮我们挂载呢?当然有。
不过这个和命令的关系就不那么大了,只能通过修改/etc/fstab来实现。这个东西还蛮重要的,这里介绍一下。
这几个字段的意义都写在注释中,这里还是介绍一下:
字段 | 含义 |
---|---|
filesystem | 设备文件名/UUID/LABEL name |
mount point | 挂载点,内容上表现出的是文件目录 |
type | 文件系统的种类 |
option | 文件系统参数 |
dump | 备份,这里设为0即可 |
pass | 是否允许一段时间用fsck检查扇区 |
讲到这里就可以完全给出挂载的全部步骤了:
- 利用blkid查看文件的UUID。
- 有必要的话,通过mkdir来新建挂载目录。
- 最后使用上述mount命令来进行挂载。
- (可选)通过修改/etc/fstab来让系统启动时自动挂载
五. 设置为loop挂载
在很久之前镜像文件必须刻录到CD/DVD上才可使用,不过现在有各种各样的虚拟光驱软件可以读取其中的内容。
这里要介绍的不是所谓的虚拟光驱软件,Linux本身可以通过loop挂载这些镜像文件。
# 通过下面这行代码可以挂载到loop
mount -o loop UUID="" mount_point
这里可以讲一下什么是镜像文件:
其实和rar ZIP压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件。它含有比压缩包更多的信息——比如系统文件等。其实,镜像文件就是光盘的“提取物”。
六. 创建内存交换分区swap
内存交换分区存在的意义就在于物理内存实在是太少了,为了扩大内存,我们可以用磁盘的部分容量模拟内存。
不过现在在桌面版的Linux中,这东西几乎没用了,因为现在主机的内存实在是太大了。
当然了,针对服务器和工作站,这东西还是必须要存在滴。
目前有两个方法能建立交换分区:
(1)使用物理分区
创建分区还是那几个步骤:gdisk分区-->mkswap格式化分区-->利用swapon来启动分区-->使用free或swapon -s来查看
(2)直接创建内存交换文件
这个就比较特殊了,想不到可以直接利用dd,然后mkswap格式化文件,如果不想使用就用swapoff关闭swap file
总结一下,反正就这三个命令:
- mkswap 设备名或文件名——格式化分区或格式化文件。
- swapon 设备名或文件名——启动分区或文件
- swapoff 文件名 分区——关闭swap file