Linux系列6-磁盘管理

  • Linux文件系统简介
  • 文件系统挂载/卸载(含命令)
  • 磁盘管理命令
  • 打包和压缩工具gzip`tar`等
  • 安装硬盘和分区的操作
    如要下载笔记和代码请到我的github
  • 目前的电脑几乎都是SATA硬盘,即串口硬盘,在Linux被标识为sd[a-z],分区从1开始,Grub中被表示为hd[0-…],分区从0开始标识。

    Linux文件系统简介

  • 文件系统:是一种对物理空间的组织方式,通常在格式化硬盘时创建
    • Windows下,有NTFS和FAT两种文件系统;
    • Linux下:
      | 文件系统 | 简 介 |
      | ext3fs(2nd Extended File System) | 过去很长一段时间是Linux的主流文件系统
      目前已被ext4取代 |
      | ext4fs(3rd Extended File System) | 是对ext3的扩展和改善,应灾难恢复的需求增加了日志功能
      ext4专门预留一块区域保存日志文件
      当对文件进行写操作时,修改首先写入日志文件,再写入记录标志日志项的结束
      完成以上操作时,才会对文件系统作实际的修改。
      因此可以在系统崩溃后用日志恢复文件系统 |
  • Swap并不是一种文件系统。swap交换分区是一种特殊的硬盘空间,当实际内存不够用时,会将内存中暂时不用的数据放在交换空间中,从而为当前运行的程序腾出足够的内存空间。Windows中这个概念叫“虚拟内存”
    • 操作系统的这种调度使程序可以使用的内存远大于物理内存;
    • 硬盘空间价格比RAM低廉;
    • 但频繁读取硬盘会显著降低系统运行速度。
    • swap分区大小主要取决于物理内存大小(理论上要大于物理内存大小),一般设置为2GB即可。

      文件系统挂载(含命令)

  • 对于某些外接设备,还有当你想在Linux下查看Windows分区中的时候,需要手动挂载设备。我以挂载windows中分区为例:

    1
    2
    3
    4
    5
    6
    7
    sudo fdisk -l /dev/sda # 查看所有分区,在此查找win的引导分区位置,显示为/dev/sda1
    sudo mkdir /mnt/win
    sudo mount /dev/sda1 /mnt/win
    cd /mnt/win
    ls # 就可以看到已经能访问win分区中的内容了
    cd ~ # 先退出目录才能进行卸载,否则提示设备忙并拒绝卸载
    sudo umount /mnt/win
  • Linux中每个设备都被映射为一个特殊文件(Linux中一切都是文件),称为“设备文件”,对设备的操作通过读写文件实现。

  • Linux把所有的设备文件都放在/dev目录下。
  • 因此文件系统挂载可以这么理解:/dev下记录了所有存在的物理设备,但是只有挂载到Linux目录下,这些文件才能被访问。
  • mount:文件系统挂载命令,常用格式mount <source> <directory>,
    • mount -r:以只读模式挂载文件系统;
    • mount -w:以可读写模式挂载设备。
  • 系统启动时要挂载的文件系统信息在/etc/fstab文件中规定,依次包括这些项:
    • 用于挂载每个文件系统的UUID(Universally Unique Identifier,通用唯一标志符,一个128bits数字,用于唯一确定互联网上的一件东西),此处用于指代设备名/分区;
    • 挂载点;
    • 文件系统类型;
    • 各种挂载参数;
    • 备份频度;
    • 重启动过程中文件系统的检查顺序。
  • umount:卸载文件系统,Linux规定文件系统只有在没被使用时才可以被卸载
    • umount -r:指导umount在无法卸载文件系统的情况下,采用只读方式重新载入。
  • df:收集和整理当前已挂载文件系统的重要统计数据。
    • df -t:用于显示特定文件系统,如df -t ext4
  • fsck:检查和修复文件系统。对于小的损坏可以很好地解决问题,可以快速执行检查并将日志回滚到上一次正常状态中,但是存在风险
    • fsck -p:根据fstab文件确定检查哪些文件系统,按其中指定的顺序升序检查。通常会在硬盘启动时自动执行
  • mkfs:在目标盘上建立文件系统(即格式化)。常用格式mkfs [-t ] [fs-options]
    • mkfs -c:用于检查制定设备上损坏的块,如sudo mkfs -t ext4 -c /dev/sdb1
    • 硬盘分区在格式化之前必须先卸载。
  • Linux会将USB设备识别为第一个没有被硬盘占用的SCSI设备,因此可以从/dev/sd[a-z][1-...]挂载。
    • lsusb:可以列出当前内核已经发现的USB设备。

      打包和压缩工具

  • gzip:Linux下使用最广泛的压缩/解压缩工具,gzip会给文件加上gz扩展名;.tar.gz是Linux世界最流行的压缩文件格式,即首先用tar打包,再用gzip压缩的文件格式。压缩后会删除原来的文件。
    • gzip filename.tar就完成了对文件的压缩;
    • gzip -d:压缩文件解压;
    • gzip -l:查看压缩效果;
    • gzip -t:测试压缩文件的完整性。
    • gunzip:也是解压缩工具。
  • bzip2:以压缩速度为代价,提供比gzip更高的压缩率。bzip2的使用方法基本和gzip一致,压缩后文件带.bz2后缀。
    • bzip2 -d/bunzip2:用于解压缩文件;
    • bzip2 -tv:检查文件完整性并返回信息。

  • tar:Linux中最著名的文件打包工具,读取多个文件和目录,并将它们打包成一个文件。并不删除原来的文件
    • tar -cvf <target> <source>:c指导创建归档文件,v用于现实命令执行过程,f制定归档文件名,余下参数指定要打包的文件和目录;
    • tar -xvfx表示提取文件;
    • tar -xzvfz选项让tar自动调用gzip程序完成相关操作,先gzip解压缩,再用tar解包;
    • tar -czvf:先tar打包,再gzip压缩;
    • -j:此参数调用bzip2程序;
    • tar命令选项前的-可以省略。
  • dd:转化和复制文件。
    • dd if=/dev/cdrom of=CD.iso:if规定输入端,of指定输出端,将CD内容转化为镜像文件。

      安装硬盘和分区(进阶)

  1. fdisk:Linux用于建立/查看分区表的工具,请不要在当前硬盘上实验导致删除整个系统;
    • fdisk -l查看分区表;
    • fdisk /dev/sdb:在指定硬盘上建立分区;
    • 此交互式工具中常用的命令如下:
命令 含义
new/n 创建新分区
print/p 显示当前分区设置
type/t 设置分区类型(建立swap时使用)
write/w 把分区表写入硬盘
  • fdisk在分区完全确定之后,用write才会将设置写入分区表中,否则还可以delete删除分区。
    1. 分区表建立完成后用mkfs在各分区上建立文件系统。
    2. fsck检查文件系统。
    3. 将硬盘挂载到目录下,用df测试分区。
    4. 对交换空间分区执行mkswp <par>swapon <par>分别进行初始化和激活。
  • swapon -s:可以查看当前交换空间分区的信息。、
    1. 配置/etc/fstab文件,加入新分区,使开机自动加载文件系统。
    2. 如果文件系统出问题,系统将不能正常启动,而会引导进入救援模式,依次进行下述手段:
  • fsck检查并修复受损文件系统;
  • 如果问题仍在,mkfs重建文件系统;
  • 最后尝试fdisk重建分区表。
  • 但是,总是可以通过注释掉fstab中对应行解决新建分区后不能正常启动的问题。

    参考文献

    Linux从入门到精通 刘忆智 著
文章目录
  1. 1. Linux文件系统简介
  2. 2. 文件系统挂载(含命令)
  3. 3. 打包和压缩工具
  4. 4. 安装硬盘和分区(进阶)
  5. 5. 参考文献
|