当我们购进一块新的磁盘(以 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
// 需挂载设备 挂载点 文件类型 挂载选项 dump/fsck选项 /dev/sdc1 /mnt/workstation ext4 defaults 0 0
fsck /dev/sdc1 // 支持如下可选参数 -t 指定文件系统类型,fsck命令可自动检测文件系统类型,如果损坏较为严重,可用该参数 -y 不提示而直接修复损坏块
// 需挂载设备 挂载点 文件类型 挂载选项 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