1. 手动挂载
手动挂载的优点是操作简单,但是同时呢也存在显著的缺点,就是每次重启都需要挂载一次,这也是比较麻烦的。
手动挂载步骤:
- 创建要挂载的目录
mkdir /prod
chmod 757 -R /prod
- 执行挂载命令
mount /nfs/videos /prod
2. 自动挂载
自动挂载后即使系统重启,挂载的盘符也会随着系统开机自动建立,不需要人为再手动创建挂载命令,可以说是一劳永逸。
比如想把已经挂载在 home 目录上的硬盘挂载到 data 目录上, 如下操作
# df -h(查看分区情况及数据盘名称)
# mkdir /data(如果没有data目录就创建,否则此步跳过)
# umount /home(卸载硬盘已挂载的home目录)
# mount /nfs/videos /data (挂载到data目录)
# vi /etc/fstab (编辑fstab文件修改或添加,使重启后可以自动挂载)
/nfs/videos /data ext4 auto 0 0
简单点来说就是,如果希望将新分区 /dev/sdb1 挂载在 /home/new 目录下,则只需在 fstab 文件中加入一行:
/dev/sdb1 /home/new ext3 default 0 1
对应的每一列的类型为:
<file system> <mount point> <type> <options> <dump> <pass>
参数说明:
- 第一列 实际分区名
如果磁盘是SATA接口,且有多个磁盘,则每个磁盘被标记为 /dev/hda 、 /dev/hdb、 /dev/hdc 等以此类推;而每个磁盘的分区被标记为 /dev/hda1、 /dev/hda2等。
如果磁盘是SCSI类型,则多个磁盘会被分别标记为 /dev/sda、/dev/sdb等等。分区同理。
- 第二列 挂载点
挂载点必须为当前已经存在的目录,为了兼容起见,最好在创建需要挂载的目标目录后,将其权限设置为777,以开放所有权限。
- 第三列 此分区的文件系统类型
Linux可以使用ext2、ext3等类型,此字段须与分区格式化时使用的类型相同。也可以使用 auto 这一特殊的语法,使系统自动侦测目标分区的分区类型。auto通常用于可移动设备的挂载。
-
第四列 挂载的选项,用于设置挂载的参数
常见参数如下:auto: 系统自动挂载,fstab默认就是这个选项
defaults: rw, suid, dev, exec, auto, nouser, and async.
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载
请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto
- 第五列 dump备份设置
当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作;
- 第六列 fsck磁盘检查设置
其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查。
在 /etc/fstab
后面加下面语句可开机自动挂载
192.168.1.3:/home/nfs /nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
3. mount 命令
在 Linux 系统中,mount 命令用于挂在光盘镜像文件、移动硬盘、U 盘等。
格式:
mount [-t vfstype] [-o options] device dir
[-t vfstype] 指定所挂载的文件系统的类型,通常 mount 可自动识别,不用人为指定。常用类型如下:
光盘或光盘镜像:ISO9660
DOS FAT16 文件系统:MSDOS
Windows 9x FAT32 文件系统:VFAT
Windows NT NTFS 文件系统:NTFS
Mount Windows 文件网络共享:SMBFS
UNIX(LINUX)
[-o options] 说明挂载方式,其和上面的命令,两者可互换。常用参数如下:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
device 表示要挂载的设备;dir 设备在系统上的挂载点(mount point)。实践操作如下。
在插入 U 盘之前,输入以下命令:
susu@ubuntu:~$ sudo fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 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
Disk identifier: 0x000c5c38
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 60817407 30407680 83 Linux
/dev/sda2 60819454 62912511 1046529 5 Extended
/dev/sda5 60819456 62912511 1046528 82 Linux swap / Solaris
susu@ubuntu:~$
这地方的命令一定要加 sudo,否则什么也不会显示。
可以看到,Linux 文件系统下,有一块硬盘 sda,硬盘中有 2 个分区 sda1 和 sda2。另外一个 sda5 是逻辑分区。
插入 U 盘后,重新敲一遍命令,得到如下信息:
susu@ubuntu:/$ sudo fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 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
Disk identifier: 0x000c5c38
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 60817407 30407680 83 Linux
/dev/sda2 60819454 62912511 1046529 5 Extended
/dev/sda5 60819456 62912511 1046528 82 Linux swap / Solaris
Disk /dev/sdb: 4057 MB, 4057989120 bytes
91 heads, 45 sectors/track, 1935 cylinders, total 7925760 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
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 63 7925759 3962848+ c W95 FAT32 (LBA)
susu@ubuntu:/$
会发现,下面多出来很多信息,这个信息都是描述刚刚插入的 U 盘的。系统多了一个硬盘 sdb 和一个磁盘分区 sdb1。我们要挂载的就是磁盘分区 sdb1。
先在 /mnt/ 目录下创建一个挂载点:
susu@ubuntu:/mnt$ sudo mkdir usbhd1
susu@ubuntu:/mnt$ ls
usbhd1
susu@ubuntu:/mnt$
然后根据 mount 命令的语法,将 USB 添加到该挂载点:
susu@ubuntu:/$ mount -o loop dev/sdb1 mnt/usbhd1/
mount: only root can do that
susu@ubuntu:/$ sudo mount -o loop dev/sdb1 mnt/usbhd1/
susu@ubuntu:/$ cd mnt/usbhd1/
susu@ubuntu:/mnt/usbhd1$ ls
???? EVM?????.txt
???? ?? Microsoft Word ??.doc
????? ???????????????????.pdf
????05.06.07.09????-4.pdf Reimbursement Form for interview trip.xls
??1_??.png System Volume Information
???????????????(2010?).pdf Vocabulary.doc
2012??????????(?????)-12.pdf VS2012_ULT_chs.iso
????????.docx ????????????????.xls
susu@ubuntu:/mnt/usbhd1$
mount 挂载成功!
上述代码中,刚开始没有加 sudo,提示只有 root 可以。最后 ls ,发现是乱码,是因为 U 盘中都是中文名字,所以显示乱码。可用以下命令解决此问题:
susu@ubuntu:/$ sudo mount -o iocharset=cp936 ./dev/sdb1 ./mnt/usbhd1/
卸载就相对简单了,只需要把挂载点卸掉即可,命令如下:
susu@ubuntu:/$ sudo umount ./mnt/usbhd1