我们都知道,在Linux下,想要使用一颗磁盘,那么都必须要经过这几个动作:分割、格式化、(检验)
挂载。
磁盘分区:fdisk
1 | [root@www ~]# fdisk [-l] 装置名称 |
磁盘格式化:mkfs
1 | [root@www ~]# mkfs [-t 文件系统格式] 装置文件名 |
mkfs命令会将每一种文件系统的参数都给默认化,如果需要自己加入参数,那么可以使用mke2fs命令
1 | [root@www ~]# mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置 |
磁盘检验: fsck, badblocks
fsch是用来检查与修正文件系统错误的指令。注意:通帯只有身为 root 的文件系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令, 可能会造成对系统的危害!通帯使用这个指令的场合都是在系统出现极大的问题,导致你在 Linux 开机的时候得进入单人单机模式下进行维护的行为时,才必项使用此指令!
此外,由于 fsck 在扫瞄硬盘的时候,可能会造成部分 filesystem
的损坏,所以『执行 fsck 时, 被检查的 partition 务必不可挂载到系统上!亦即是需要在卸除的状态!』
ext2/ext3文件系统的最顶层(就是挂载点那个目录底下)会存在一个『lost+found』的目录吧! 该目录就是在当你使用 fsck 检查文件系统后,若出现问题时,有问题的数据会被放置到这个目录中!所以理论上这个目录不应该会有任何数据,若系统自动产生数据在里面,那…你就得特别注意你的文件系统!!!1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29[root@www ~]# fsck [-t 文件系统] [-ACay] 装置名称
选项与参数:
-t :如同 mkfs 一样,fsck 也是个综合软件而已!因此我们同样需要指定文件系统。
不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨文件系统, 因此通常可以不需要这个选顷!
-A :依据 /etc/fstab 癿内容,将需要的装置扫瞄一次。通常开机过程中就会执行此指令了。
-a :自动修复检查到的有问题的扇区,所以你不用一直按 y !
-y :与 -a 类似,但是某些 filesystem 仅支持 -y 这个参数!
-C :可以在检验的过程当中,使用一个直方图来显示目前的进度!
EXT2/EXT3 的额外选项功能:(e2fsck 指令所提供)
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入细部检查的,
如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标!
-D :针对文件系统下的目录进行优化配置。
范例一:强制的将前面我们建立的 /dev/hdc6 这个装置给他检验一下!
[root@www ~]# fsck -C -f -t ext3 /dev/hdc6
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks
# 如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,
# 检查的经过非常的快速!若加上 -f 强制检查,才会一项一项的显示过程。
范例二:系统有多少文件系统支持的 fsck 软件?
[root@www ~]# fsck[tab][tab]
fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat
刚刚谈到的 fsck 是用来检验文件系统是否出错,至于badblocks 则是用来检查硬盘软软盘扇区有没有坏轨的! 由与这个指令其实可以透过『 mke2fs -c 装置文件名 』在进行格式化的时候处理磁盘表面的读取测试, 因此目前大多不使用这个指令!
1 | [root@www ~]# badblocks -[svw] 装置名称 |
磁盘挂载与卸除
以下列出磁盘挂载的例子:
1 | 范例一:将刚刚建立的 /dev/hdc6 挂载到 /mnt/hdc6 上面! |
另外,我们也可以利用 mount 来将某个目录挂载到另外一个目录去!这并不是挂载文件系统,而是额外挂载某个目录的方法! 虽然底下的方法也可以使用 symbolic link 来连结,不过在某些不支持符号链接的程序运作中,还是得要透过这样的方法才行。
1 | 范例七:将 /home 这个目录暂时挂载到 /mnt/home 底下: |
从此进入 /mnt/home 就是进入 /home !
利用umount可以卸载装置
1 | [root@www ~]# umount [-fn] 装置文件名戒挂载点 |
执行该指令时,必须保证所挂载的装置处于不使用状态,否则的话,卸载不成:
1 | [root@www ~]# mount /dev/cdrom /media/cdrom |
开机挂载 /etc/fstab 及 /etc/mtab
开机自动挂载涉及到/etc/fstab文件,该文件的内容如下所示:
1 | [root@www ~]# cat /etc/fstab |
/etc/fstab 是开机时的配置文件,不过,实际 filesystem 的挂载是记录到和不 /proc/mounts 这两个档案当中的。每次我们在更动 filesyste的 挂载时,也会同时更动这两个档案!但是,万一发生您在 /etc/fstab 输入的数据错误,导致无法顺利开机成功,而进入单人维护模式当中,那时候的 / 可是 read only 的状态,当然您就无法修改 /etc/fstab ,也无法更新 /etc/mtab 那怎么办? 没关系,可以利用底下这一招:
1 | # 重新挂载根目录,修改挂载的参数,使得根目录可以进行读写操作 |