linux系统磁盘挂载

linux系统挂载知识

  • linux的硬盘识别
    2.6 kernel以后,linux会将识别到的硬件设备在/dev下建立相应的设备文件,如:
设备前缀 描述
sda 表示SCSI类硬盘
hda 表示IDE类硬盘
scd 表示USB类设备

我们可以通过fdisk -l命令来查看设备信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
xxxxxx:~ $ sudo fdisk -l
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 137215 129024 63M c W95 FAT32 (LBA)
/dev/mmcblk0p2 137216 30367743 30230528 14.4G 83 Linux

Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7780b3c2

Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 156301487 156299440 74.5G 83 Linux

通过命令我们可以看到/dev/sda1设备信息,这个设备标识已经分过区并且格式化过了,现在就可以挂载了,但在挂在前我们得设置一个挂载点啊,要不凭空怎么挂呢,是吧,一般可以选择/mnt目录下获知/media目录下,先在选定目录下创建一个文件夹,然后就可以挂载在文件夹上了。

1
2
mount -t ext4 /dev/sda1 /media/disk1
umount /dev/sda1

其中第一句中的ext4 表示文件系统类型(可以通过parted程序查看);iocharset=utf8文件读取格式,可选参数;umask表示让挂载的分区允许所有用户读取和修改,可选参数。第二句为卸载命令。
这个只是临时的挂在,如果要在开机的时候就挂载的话则需要修改/etc/fstab。

下面详细来说下mount 命令和mount相关参数设定:
标准模式的mount命令使用是如下的形式:

1
mount -t type device dir

  其中type代表的是挂在文件的文件系统,device代表fdisk查找的块设备,dir代表的是需要挂在的路径;
文件系统独立挂载选项
  这些参数只在/etc/fstab文件中用到,有些参数在系统内核已经给定了默认值来启用或关闭某些特性,如果要查看这些参数,可以查看/proc/mounts文件。
  下面这些参数可以用在一些文件系统挂载时,但是不是每个文件系统都可以使用这些参数,比如sync目前只使用于 ext2、ext3、fat、vfat和ufs文件系统:

命令 描述
async 所有的i/o都要满足异步输入输出,同样sync亦是如此
atime 不要使用noatime特性,那么对inode的访问将使用内核默认的
noatime 不更新文件的访问时间
auto !自动挂载,可以在mount时候使用-a参数启用
noauto 只能显示挂载

/etc/fstab
  该文件包含了不同的文件系统的描述信息,是静态的文件系统信息。它由系统管理员修改和管理的,只能通过系统程序读取,对其他用户是不可写的。
  文件中每一行代表了一个文件系统,以#开头的是解释性内容,空白行会被忽略。在文件中,每条记录的顺序也是很重要的,因为fsck、mount和umount命令都是顺序迭代fstab来做它们自身的业务。
  该文件中每行由六个字段属性组合而成,各字段功能解析:

  1. (文件块)该字段描述了需要挂载的块设备和远程文件系统。对于普通的挂在,其会保持一个块设备节点(由mknod创建),如‘/dev/cdrom’、‘/dev/sdb7/’,而对于NFS格式文件系统会以:dir形式挂载,如‘knuth.aeb.nl:/’。
      除了明确指定块设备路径,我们还可以通过标签或者UUID来挂载块设备,如‘LABEL=Boot’,‘UUID=3e6be9de-8139-11d1-
    -9106-a43f08d823a6’。
    
      另外还可以通过PARTUUID= and PARTLABEL=z来挂载快设备,但是这两个特性只支持GUID分区表(GPT)和MAC分区表。
  2. 文件挂载点,对于swap分区,该字段需要指定为‘none’,如果文件挂载点包含了空格字符,需要以‘\040’替换。
  3. 文件系统格式,说明挂载的块设备是什么类型的文件格式,目前linux支持文件系统有:adfs, affs, autofs, coda,
    coherent, cramfs, devpts, efs, ext2, ext3, hfs,  hpfs,  iso9660,
    jfs,  minix,  msdos,  ncpfs,  nfs,  ntfs,     proc, qnx4, reiserfs,
    romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat,  xenix,  xfs和其他,如果要更详细的可以通过mount查看。
    
  4. 声明与文件系统相关的选项,选项列表是以逗号分割开来的,包含挂载类型以及任何适合于文件系统类型的附加选项。有关可用安装选项的文档,请参考mount(8)),在可用的swap选项文件,请参考wapon(8))。
    基础的一些参数选项有:
参数 描述
defaults 使用默认参数:rw,suid,dev,exec,auto,nouser and async
noauto 在‘mount -a’命令下,不挂载文件系统
user 允许一个用户挂载
owner 允许块设备拥有者挂载
comment 或 x- 使用fstab维护程序
nofail 如果快设备不存在,不要报告错误
  1. 指定该文件系统是否需要备份,如果该字段没有指定,默认则是为0,也即该文件系统不需要备份,如果需要查看备份选项可以看dump(8))。
  2. 指定文件系统是否需要检查和检查顺序,具体选项意义可以查看fsck(8)),对于root文件系统需要指定为1,其他文件系统指定为2,如果字段没有指定,默认值为0,也即表明文件系统不需要检查。

参考资料: