mount 和 umount 命令
现在,文件系统已经创建成功,您应该挂载分区了。挂载文件系统的命令是 mount,其语法是:
mount [选项] [-o 挂载选项]
在本例中,我们首先会将分区临时挂载在 /mnt (或您选择的任何其它挂载点:请记住,挂载点必须已经存在)。挂载我们新创建的分区的命令是:
$ mount -t ext3 /dev/hdb1 /mnt
-t 选项用于指定分区上文件系统的类型。您最常遇到的文件系统应该是 ext2FS(GNU/Linux 文件系统)或 ext3FS(改进了日志性能的 ext2FS),VFAT(适用于所有 DOS/Windows® 分区:FAT 12, 16 or 32)以及 ISO9660(CD-ROM 文件系统)。如果您不指定任何类型,mount 将会试着读取分区中的超块来猜测文件系统。
-o 选项用于指定一个或多个挂载选项。可供选择的选项视文件系统类型不同而有所不同。请参看 mount(8) 手册页中的细节。
现在,您已经挂载了您的新分区,现在该将整个 /usr 目录复制到新分区了:
$ (cd /usr && tar cf - .) | (cd /mnt && tar xpvf -)
文件都已经复制完了,现在可以卸下分区了。要卸下分区,请使用 umount 命令。语法很简单:
umount
所以,要卸下我们的新分区,应该输入:
$ umount /mnt
或者:
$ umount /dev/hdb1
提示
有些时候,可能某些设备(通常是 CD-ROM)正忙或无法响应。此时,大多数用户的解决办法是重新启动计算机。我们大可不必这么做。例如,如果 umount /dev/hdc 失败的话,您可以试试“lazy” umount。语法十分简单:
umount -l
此命令将会断开设备并关闭打开该设备的全部句柄。通常,您可以使用 eject命令弹出碟片。所以,如果 eject 命令失效而您又不想重新启动,请使用 lazy umount。
由于分区即将成为我们的 /usr 目录,我们现在需要通知系统。要完成这一操作,我们应该编辑 /etc/fstab (sol:/etc/vfstab)文件。该文件可使得系统在启动时自动挂载特定的文件系统。组成该文件的每一行分别描述了一组挂载关系,这其中包括文件系统、挂载点以及其它选项。这里是该文件的一个例子:
/dev/hda1 / ext2 defaults 1 1
/dev/hda5 /home ext2 defaults 1 2
/dev/hda6 swap swap defaults 0 0
none /mnt/cdrom supermount dev=/dev/scd0,fs=udf:iso9660,ro,-- 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,sync,umask=0 0 0
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
每行都由以下内容组成:
文件系统所在的设备;
挂载点;
文件系统类型;
挂载选项;
dump 工具备份;
fsck(文件系统检查(FileSystem ChecK))的检查顺序。
总是有一行说明了根文件系统。swap 分区是一种特殊的分区,因为您无法在树形结构中找到其对应位置,而且这些分区的挂载点域只写着 swap 关键字。至于 /proc 文件系统,我们会在中有更详细的描述。另外一种特殊的文件系统是 /dev/pts。
在这里,我们需要将整个 /usr 层次移至 /dev/hdb1,并且想要在启动时将此分区挂载为 /usr。要达到这一目的,应该在 /etc/fstab 文件中添加下面一行:
/dev/hdb1 /usr ext2 defaults 1 2
现在,分区将会在每次启动时自动挂载,并且必要时检查错误。
现在我们来介绍两个特殊选项:noauto 和 user。noauto 选项指定了文件系统不应该在启动时挂载,而只应该在您想要挂载的时候才挂载。而 user 选项指定了任何用户都可以挂载或卸下文件系统。这两个选项通常用于 CD-ROM 和软盘驱动器。有关 /etc/fstab 中其它选项的详情,请您查看 fstab(5) 手册页。
使用 /etc/fstab 的好处在于,它将极大简化 mount 命令的语法。要挂载文件中描述的文件系统,您只需要引用挂载点或设备。要挂载软盘,您可以只输入:
$ mount /mnt/floppy
或:
$ mount /dev/fd0
在分区转移这个例子的最后,我们来看看我们都做了什么。我们将 /usr 层次复制到了新分区,然后修改了 /etc/fstab,这样新分区就会在启动时自动挂载。这样似乎已经大功告成了。且慢,还有一个问题。老 /usr 中的文件仍然留在驱动器中原来的地方,我们还需要将它们删除以便腾出空间(这个才是我们最初的目标)。在执行接下来的命令之前,您需要先切换到单用户模式,请在命令行上执行 telinit 1 命令。
接下来,我们将会删除 /usr 目录中的全部文件。请记住,我们仍然是指“老”目录,因为新的大目录尚未挂载。rm -Rf /usr/*。
最后,我们需要挂载新的 /usr 目录:mount /usr/。
这样才是真正完成了我们最初的目标。现在,让我们回到多用户模式中(telinit 3 代表标准的文本模式,telinit 5 代表 X Window 系统)。如果没有后续的管理工作要做的话,您就可以从 root 账户注销了。
fsck 命令
切记 先umount 才能fsck
一般 fsck -y
对文件系统进行检查,并对损害的文件系统进行修复。
fsck的语法如下:
fsck (-F fstype) (-v) (-m) (-special…)
fsck (-F fstype) (-v) (-y|Y|n|N)
(-o fstype options) (special…)
其中:
-F fstype : 说明被检查的文件系统的类型
-v : 返回完成的命令行,但不运行
-y|Y: 对所有问题均回答Yes
-n|N: 对所有问题均回答No
-m: 对文件系统进行检查,不修复文件系统,
如果文件系统经检查后是可安装的,则显示
ufs fsck : sanity check : /dev/rdsk/c0t0d0s0 okay.
-o: 文件系统类型选项,选项由逗号分隔,
最常用的选项有两个:
P: 整理(preen)模式
F: 强制检查模式,此选项忽略文件系统状态标志。
1) 移去一个没有相关文件的目录入口 答Yes或Y来删除该目录入口
2) 重连接一个已分配但不能访问的文件
对fsck的"RECONNECT?"回答Yes,即把该I节点连接到lost+found目录下,文件名即是I节点号
3) 连接数调整 回答Yes或Y来改正连接数
4) 自由块表不一致 回答Yes或Y来修正超级块
对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用" -y"选项来执行该命令
对硬盘进行检查和修复。
fstyp 命令
查看文件类型
# fstyp /dev/rdsk/c0t0d0s7
ufs
如何使用光、软驱?
一般情况下用:
# /etc/init.d/volmgt start
# volcheck
以上方法不行,用:
# /etc/init.d/volmgt stop
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom --挂接光驱
# mount -F pcfs /dev/diskette0 /floppy --挂接软驱
solaris定义系统磁盘文件系统说明:
ufs – UNIX文件系统。是Solaris缺省的文件系统。
hsfs – 高密度CD-ROM文件系统,是只读文件系统。
pcfs – PC文件系统,支持DOS格式化的软盘
sa239学习笔记之三mount 和umount
Moduel 4 Performing Mounts and Umounts
Note – While system administrators typically use the /usr/sbin/mount
command, the system boot s cripts use the /sbin/mount command.
介绍/etc/vfstab文件:
/etc/vfstab列出系统启动时自动mount的文件, 除/etc/mnttab和/var/run之外;
/etc/vfstab文件分出七个区域:
device to mount 被mount的设备和伪设备
device to fsck The raw or character device e.g. /dev/rdsk下的
对于伪设备如:/proc 或 fd 这项可写 -
mount point mount 的路径
FS type 文件系统类型
fsck pass 指示在系统启动时是否fsck检测;0不检1表示fsck为系统正常启动运行
大于1时表示把此设备加入fsck运行列表,fsck可同时检测8个设备,
mountall命令忽略此项
mount at boot yes 要求启动时自动mount,no 则不
Note – For / (root), /usr, and /var (if it is a separate file system) file
systems, the mount at boot field value is specified as no. The kernel
mounts these file systems as part of the boot sequence before the
mountall command is run. The mount command explicitly mounts the
file systems / (root) and /usr as specified in the
/etc/rcS.d/S30rootusr.sh s cript and the /var file system as specified
in the /etc/rcS.d/S70buildmnttab s cript.
mount options A comma-separated list of options passed to the
mount command. A dash (-) indicates the use of
default mount options.
介绍/etc/mnttab文件:
此文件是一个只读文件,当mount一项时,会在此文件中入一条,umount后也会在此文件中删除相应项;
包括五项区域:
mount point 挂接点
Device Name 设备名,块设备是文件系统的物理名称;
Mount Options 文件系统上生效的挂载选项列表
dev=number 主从设备号
Date and time mounted mount的日期时间
使用mount
mount /dev/dsk/c#d#t#s# /mountpoint
不加参数时,使用以下默认属性:
read/write Indicates whether reads and writes are allowed on
the file system.
setuid Permits the execution of setuid programs in the
file system.
intr/nointr Allows and forbids keyboard interrupts to kill a
process that is waiting for an operation on a locked
file system.
nologging Indicates that logging is not enabled for the ufs file
system.
largefiles Allows for the creation of files larger than 2 Gbytes.
A file system mounted with this option can contain
files larger than 2 Gbytes.
xattr Supports extended attributes not found in
standard UNIX attributes.
οnerrοr=action Specifies the action that the ufs file system should
take to recover from an internal inconsistency on a
file system. An action can be specified as:
panic—Causes a forced system shutdown. This is
the default.
lock — Applies a file system lock to the file
system.
umount — Forcibly unmounts the file system.
------------------------------------------------------------------------------
Note – Due to file system overhead, the largest file size that can be created
is approximately 866 Gbytes.
------------------------------------------------------------------------------
使用mount命令的option
Some options used to mount local file systems include: ro, nosetuid,
noatime, nolargefiles, and logging.
格式: mount -o option,option,... device_name mount_point
# mount -o ro /dev/dsk/c0t0d0s6 /usr -------设成只读
下面是使用多个参数,设成只读以及不允许执行setuid进程,但并不限制生成setuid
# mount -o ro,nosuid /dev/dsk/c0t0d0s7 /export/home
为提高磁盘访问性能,文件系统访问频繁,最后访问时间并不计较的可以
# mount -o noatime /dev/dsk/c0t0d0s7 /export/home
防止成生超过2G的文件,
# mount -o nolargefiles /dev/dsk/c0t0d0s7 /export/home
如果文件系统已经存在超过2G的大文件,mount会挫败,如果想成功mount,则必须删除相关大文件,
并且删除后必须用fsck来更新超级块的信息,如果一次运行fsck还不能成功mount则必须用fsck
来清除超级块的信息;
使UFS文件系统写日志;
# mount -o logging /dev/dsk/c0t0d0s7 /export/home
存放日志文件的大小,大约是每1G分配1M的大小,最大不超过64M字节;
当UFS日志达其最大时,它就开始将事务记录到文件系统中。文件系统被卸载时,整个UFS日志
都被清空,所有事务都被写入文件系统。
UFS日志有两个好处。一,它文件系统的不一致性,也就不再需要长时间运行fsck扫描。
二,可以跳过fsck扫描,这就减少了系统在被以非正常的关闭方法关闭时,重启的时间,
使用mountall命令:
mountall -l 只mount本地的所有文件系统;
mountall命令读取/etc/vfstab文件内容,当device to fsck 项大于0时,fsck会检测文件系统是否完好,以致于安全挂接.当系统文件坏掉,fsck会试图修复,mountall会mount其它挂接点,和device to fsck 项等于0的挂接点.
mount一个新的文件系统:
八步:
1.把硬盘放入服务器,
2.重启或devfsadm让系统识别硬盘;
3.format把硬盘分区;
4.newfs在磁盘slice上生成新的文件系统;
5.在/目录下用mkdir 生成一个新的挂接点;
6.mount文件系统到挂接点;
7.用mount命令查看是否mount成功;
8.修改/etc/vfstab文件,让系统下次重启时自动加载;
mount不同类型的文件系统:
如果mount时没有以mount -F fstype指明的话,mount会以ufs来作为默认的类型,mount根据设备名, 块名,或挂接点来判断文件类型;
mount 不能从/etc/vfstab的fs entry来判断,会以/etc/default/fs file 或
/etc/dfs/fstypes来决定文件的挂接类型,如果是本地文件系统则是/etc/default/fs 文件中一行
LOCAL=ufs 来确定挂接类型;
如果是远程文件系统,则从/etc/dfs/fstypes第一行来确定
nfs NFS Utilities
autofs AUTOFS Utilities
cachefs CACHEFS Utilities
Using the fstyp Command来查看文件类型:
# fstyp /dev/rdsk/c0t0d0s7
ufs
指定一下hsfs文件系统:
当volume manage停止时,用hsfs来指定一个cdrom
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom
指定一个pcfs文件系统:
当卷管理停止时,挂接一个驻留在diskette(软盘)的文件系统
# mkdir /pcfs
# mount -F pcfs /dev/diskette /pcfs
执行umount命令:
提示:在umount文件系统前,都是先从/etc/mnttab文件种删除相应行;
从挂接点删除:
#umount /export/home
从逻辑硬件文件名删除:
# umount /dev/dsk/c0t0d0s7
执行umountall命令:
/usr/sbin/umountall命令会在系统关闭或在命令输入umountall时读取/etc/mnttab文件,然后umount
vfstab文件中除/ (root), /usr, /proc, /dev/fd, /var,/var/run, and /tmp.之外所有行;
umount所有文件系统:
#umountall
umount所有本地的文件系统:
#umountall -l
umountall状态为busy的系统:
以下四种情况,文件系统都会显示:umount: file_system_name busy
1 A program is accessing a file or directory in the file system
2 A user is accessing a directory or file in the file system
3 A program has a file open in that file system
4 The file is being shared
有两种方法解决:
(1) 使用fuser命令来确认挂接点有那些进程在访问,然后杀掉
(2) 用umount -f 强制umount;
用fuser命令的四步:
1.确认挂接点有那些进程需要杀掉
#fuser -cu /mount_point
2.向进程发出SIGKILL信号:
#fuser -ck /mount_point
3.确认看是否还有进程在访问挂接点
#fuser -c /mount_point
4.umount挂接点
#umount /mount_point
umount -f 丢失数据,僵死进程,但比较适合远程共享时,远程没有响应.
在启动失败时,修复重要文件:
1.插入solaris 9 1 of 2 cd-rom
2.OBP下运行:
oK>boot cdrom -s
3.用fsck来检测修复/ 根目录:
# fsck /dev/rdsk/c0t0d0s0
4.如果检测成功,把根目录的挂接点挂到一个新建的目录上:
# mount /dev/dsk/c0t0d0s0 /a
5.设置TERM参数,使vi能正常工作:
# TERM=sun
# export TERM
6.编辑/a/etc/vfstab,
7.umount文件系统:
# cd /
# umount /a
8.重启系统init 6
访问mount 软盘和光盘
volume management提供两大益处:
1.对于root用户和非root用户,都提供diskettes and CD-ROMs的自动mount
2.能上其它网上系统访问本系统的移动存储设备;
volume management自动检测CD-ROM,但不检测diskette,除非用volcheck. volcheck检测diskette和其它可移动设备.
volume management能mount以下文件系统:
ufs, pcfs, hsfs, udfs
用卷管理:
如是vold检测到软件或光盘并且发现其中包含文件系统会把它们mount到相应位置:
First diskette drive /floppy/floppy0
First CD-ROM or DVD drive /cdrom/cdrom0
First Jaz drive /rmdisk/jaz0
First Zip drive /rmdrive/zip0
First PCMCIA card /pcmem0
如果没有发现文件系统:
First diskette drive /vol/dev/aliases/floppy0
First CD-ROM or DVD drive /vol/dev/aliases/cdrom0
First Jaz drive /vol/dev/aliases/jaz0
First Zip drive /vol/dev/aliases/zip0
First PCMCIA card /vol/dev/aliases/pcmem0
当volume management 启动时,一个普通用户访问cdrom或diskette时需要以下几步:
1.插入相应设备,光盘或软盘;
2.如是软盘需要volcheck
3.cd 到相应目录
4.在目录操作
5.umount 目录
6.eject出设备
volume management两个重要文件:
/etc/vold.conf volume management配置文件,配置一些条目,如插入,弹出设备时的动作,
那些设备被volume management管理,那些设备是不安全弹出等.
/etc/rmmount.conf rmmount命令的配置文件,rmmount是一个被volume management在光盘或
软盘弹出时执行的命令;
限制mount光盘或软盘:
停止卷管理服务:
# /etc/init.d/volmgt stop 或 # pkill -9 vold
启动卷管理服务:
# /etc/init.d/volmgt start
没有卷管理服务时访问光盘或软盘:
普通用户需要以下九步:
1.插入光盘或软盘;
2.su到root用户;
3.如果需要 ,生成一个挂接点.
4.判断设备上文件系统类型;
5.用mount和其属性把设备mount
6.在设备下操作处理,
7.工作完后umount设备;
8.弹出设备
9.退出root session
mount一个光盘:
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom
mount一个软盘:
# mkdir /pcfs
# mount -F pcfs /dev/diskette /pcfs