Linux系统下磁盘到文件系统的操作过程

       当我们购进一块新的磁盘(以 Serial Disk 串口硬盘为例),想把它安装到我们的 Linux 系统下为我们所用,这个过程是怎么样的呢?需要用到哪些操作命令?笔者将在本文详细阐述这个过程。

       如下图所示,在整个过程中,我们需要经历四个步骤:磁盘安装、磁盘分区、创建文件系统、挂载。接下来我们将从这四个部分分别阐述(附加“卸载”一节)。 

   
 

1. 磁盘安装

       首先,我们需要把新 SD 硬盘安装到我们的机器中,并做好数据线与电源线连接。本文中我们以 Oracle VM VirtualBox 创建模拟的 SD 硬盘。


 

2. 磁盘分区

      SD 硬盘成功安装后,启动 Linux 系统,我们将在系统 /dev 目录下看到我们新安装的硬盘设备。如图所示,sdc 即是我们新安装的硬盘(sda, sda1, sda2, sdb, sdb1, sdb2, sdb5, sdb6 是我们已经在使用的硬盘)。

 

(1) 首先,我们使用 fdisk -l 命令查看新装磁盘 sdc 的相关详细信息,如:磁头数、扇区数与柱面数等。 

 

fdisk -l /dev/sdc

    

 

(2) 使用 fdisk 命令进行磁盘分区

 

fdisk /dev/sdc

    

 

    这时系统会提示 Command (m for help): 的命令行,在此我们输入字符 m 以寻求帮助信息。

    
 

    从图中可以看出,系统为我们列出了 a, b, c... 多个命令选项,并附加了相关说明。接下来,我们将通过这些命令完成磁盘分区。  

    分区方案:将 sdc 磁盘(共4G)分为一个主分区 sdc1 (2G)和一个扩展分区 sdc2 (2G),并将扩展分区 sdc2 划分为两个逻辑分区 sdc5 (1G), sdc6 (1G)。

 

    紧跟着上图所示的窗口,输入命令创建一个新分区,如下图所示。

    1. 输入命令 n, 系统将列出扩展分区与主分区两个选项: e    extended 与 p    primary partition (1-4)

    2. 输入 p,系统提示输入分区号, Partition number (1-4)  

        备注:以MBR形式作为主引导记录的磁盘,最大支持 4 个主分区

    3. 输入 1,系统提示输入起始柱面号, First cylinder (1-522, default 1), 默认为1

    4. 输入 1 或者 直接回车,系统提示输入结尾柱面号, Last cylinder...

        备注:在此可直接使用 +size{K, M, G} 格式以表示该分区的大小,{K, M, G} 分别代表Kb, Mb, Gb

    5. 输入 +2G,回车

    
 
    按上述步骤即可完成主分区 sdc1 的创建,输入命令 p,可查看分区信息,如下图所示:

    
 

    按上述步骤,根据命令提示即可完成扩展分区 sdc2 以及逻辑分区 sdc5, sdc6的创建。

    最后, 输入命令 w 以将分区信息写入磁盘即可完成磁盘分区操作。(备注:如果将分区信息写入磁盘而直接退出,此次分区操作将不会生效)。

 

    可以通过如下命令查看分区信息。

 

// 查看分区信息前,请通过如下命令使内核更新分区表
partprobe

// 查看分区信息
ls /dev/sdc*
fdisk -l 
cat /proc/partitions // proc文件夹下保存了操作系统的实时信息, partitions文件即为分区信息文件

 

3. 创建文件系统

     操作系统是通过文件系统对磁盘上的文件和数据进行管理的,所以磁盘或分区需要被创建文件系统之后才能够被操作系统使用,创建文件系统的过程又称为格式化。

     我们将通过 mke2fs 命令对第二节中的 sdc1, sdc5, sdc6 三个新分区创建 ext4 文件系统。

     

// 分别为 sdc1, sdc5, sdc6 创建 ext4 文件系统
mke2fs -t ext4 /dev/sdc1  // 参数 -t 表示所创建文件系统的类型
mke2fs -t ext4 /dev/sdc5
mke2fs -t ext4 /dev/sdc6
   
 

 

    如上图所示,通过 mke2fs 命令我们成功为 sdc1 分区创建了 ext4 文件系统。

    mke2fs 命令还支持下述几个参数:

    

-b blocksize  // 文件系统块(读取文件系统的最小单位)大小,默认为 4K
-c            // 创建文件系统时,检查磁盘是否有坏损块
-j            // 创建文件系统日志
-L label      // 指定卷标,同 windows 系统下重新命名盘符名称一样,如将D盘盘符修改为 games
 
    创建好文件系统后,可以通过 dumpe2fs 命令查看文件系统详情。    
dumpe2fs /dev/sdc1    // 通过此命令查看 /dev/sdc1 分区的文件系统详情
 
    如果在创建文件系统时,未使用 -L 参数为文件系统指定卷标,我们可通过 e2label 为其添加标签,命令如下:
// 查看分区标签
e2label /dev/sdc1

// 添加标签,标签默认设置为全大写
e2label /dev/sdb1 WORKSTATION  
   
    

 

4. 挂载

       在为磁盘或分区创建好文件系统之后,我们需要将其挂载到操作系统的某个目录下才能被使用。接下来,我们将使用 mount 命令完成 /dev/sdc1 ext4  -->  /mnt/workstation/ 的挂载操作。

// /dev/sdc1 为要挂载的分区
// /mnt/workstation 为挂载点
mount /dev/sdc1 /mnt/workstation

// 可通过不带参数的 mount 命令查看系统当前挂载点的详情
mount

    

 
   如上图所示,我们已成功将 /dev/sdc1 挂载到 /mnt/workstation 目录下。这样,以后所有在 /mnt/workstation 目录下所保存的文件都是存放在我们新加磁盘的 sdc1 主分区上的。
   我们在 /mnt/workstation 目录下创建一个新文件夹 linux 和一个新的空白文件 pro.conf,并列出该目录下的文件列表,如下图所示,列表中的文件或者文件夹都是保存在 /sdc1 主分区下的。
   备注:格式化好的文件系统都会有一个 lost+found 目录,用于存放丢失的文件。
mkdir linux     // 创建新文件夹
touch pro.conf  // 创建新空白文件
ll              // 列出文件列表
   
    mount 命令还可支持下列参数:
-t // 指定文件系统类型
-o //指定挂载点选项
  ro, rw    //以只读或读写形式挂载,默认为 rw
  sync      // 不使用缓存,对所有操作直接写入磁盘
  async     // 使用缓存,默认为 async
  noatime   // 每次访问文件时不更新文件的访问时间
  atime     // 每次访问文件时更新文件的访问时间
  remount   // 重新挂载文件系统
  
   我们可通过上述参数对 /dev/sdc1 以只读形式进行重新挂载,命令如下:
mount -t ext4 -o remount,ro /dev/sdc1 /mnt/workstation
   
 
   我们也可以通过配置 /etc/fstab 这个配置文件实现磁盘的自动挂载,用 vi 命令打开该配置文件,并在文件末尾加入如下文本。
// 需挂载设备     挂载点        文件类型    挂载选项   dump/fsck选项
/dev/sdc1    /mnt/workstation     ext4      defaults      0 0
    
 
    这样,当我们 reboot 系统之后,/dev/sdc1 分区就会自动挂载到 /mnt/workstation 挂载点下。
    我们也可以把 fstab 文件中的 /dev/sdc1 换成卷标模式 LABEL=WORKSTATION。
    
    文件系统在某些情况下也会出现错误,可以通过 fsck 命令对文件系统进行检查。
fsck /dev/sdc1

// 支持如下可选参数
-t 指定文件系统类型,fsck命令可自动检测文件系统类型,如果损坏较为严重,可用该参数
-y 不提示而直接修复损坏块
   
 

5. 卸载

      在第 4 节中我们通过 mount 命令完成了 /dev/sdc1 分区的挂载操作,我们也可以通过 umount 命令完成 文件系统的卸载(即 windows 下的安全弹出功能)操作。命令如下:
umount /dev/sdc1  // 或者 umount /mnt/workstation
   
 
    如红框中所示,系统提示: device is busy,这是由于当前目录正在被某些程序所使用,在这里是由于我们当前在终端中打开可该目录。
    当我们退出该目录后重新使用上述命令,即可成功卸载。如下图所示,成功卸载后,使用无参数 mount 命令,在结果中已没有 /dev/sdc1 的挂载信息,再 ll /mnt/workstation 已无文件。
        
     那么,当我们卸载时出现错误提示:device is busy 时,我们可以通过 fuser 与 lsof 这两个命令查看文件系统的程序占用情况。
fuser  // 查看文件系统被哪些进程所使用
lsof   // 查看哪些文件正在被系统所使用 (list open file)
 

 注:本文参考 nash_su 的 linux 入门基础课程,链接为:
        http://study.163.com/course/courseMain.htm?courseId=232007

 

你可能感兴趣的:(linux,文件系统,卸载,挂载,磁盘分区)