5.3 文件系统挂载基础

挂载mount

    挂载就是将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为。当一个挂载点挂载有设备时,原有文件会不可见(并不是隐藏也没有覆盖),所以为了合理利用磁盘空间,挂载点尽量为空。

    mount命令

语法:mount [选项] 设备 挂载点

    设备即可以使用设备文件、卷名和 UUID,也可以是文件。

设备挂载到文件夹

[root@CentOS6 ~]#mount -r /dev/sdb1 /mnt/sdb1/   #以只读模式挂载
[root@CentOS6 ~]#df /dev/sdb1
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/sdb1        5039592 10264   4766668   1% /mnt/sdb1
[root@CentOS6 data]#mount -o remount,rw /dev/sdb1   #重新挂载时以读写模式挂载
[root@CentOS6 data]#mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda3 on /data type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev)
/dev/sr0 on /media/CDROM type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)
/dev/sdb1 on /mnt/sdb1 type ext4 (rw)

    df命令用于查看文件系统的空间占用等信息。

    语法:df [选项] [FS]

[root@CentOS6 ~]#df /dev/sda1
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/sda1         999320 35032    911860   4% /boot
[root@CentOS6 ~]#df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       51475068 4774988  44078640  10% /
tmpfs             502056      76    501980   1% /dev/shm
/dev/sda1         999320   35032    911860   4% /boot
/dev/sda3        3030800  626272   2247244  22% /data
/dev/sr0         6049912 6049912         0 100% /media/CDROM

    选项

-T 文件系统类型
-h: 易读格式
-i:inode节点号

文件挂载到文件夹

[root@CentOS6 data]#dd if=/dev/zero of=/data/mount_file bs=1M count=10   #生成一个10M大小的文件
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.256382 s, 40.9 MB/s
[root@CentOS6 data]#mkfs.ext4 mount_file    #在文件中创建文件系统
mke2fs 1.41.12 (17-May-2010)
mount_file is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
2560 inodes, 10240 blocks
512 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=10485760
2 block groups
8192 blocks per group, 8192 fragments per group
1280 inodes per group
Superblock backups stored on blocks: 
	8193

Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@CentOS6 data]#blkid mount_file
mount_file: UUID="d7f21c36-3085-40c9-a26a-b365999cd543" TYPE="ext4" 
[root@CentOS6 data]#mkdir /data/test
[root@CentOS6 data]#mount -o loop /data/mount_file /data/test   #使用loop模式挂载
[root@CentOS6 data]#df
Filesystem       1K-blocks    Used Available Use% Mounted on
/dev/sda2         51475068 4774612  44079016  10% /
tmpfs               502056      76    501980   1% /dev/shm
/dev/sda1           999320   35032    911860   4% /boot
/dev/sda3          3030800  626252   2247264  22% /data
/dev/sr0           6049912 6049912         0 100% /media/CDROM
/dev/sdb1          5039592   10264   4766668   1% /mnt/sdb1
/data/mount_file      8887      92      8283   2% /data/test

    dd命令用于读取、转换和输出数据。

    语法:dd if=源文件 of=目标文件 bs=块大小 count=块数 skip=跳过源的块数 seek=跳过目标的块数

[root@CentOS6 ~]#dd if=/dev/sda of=/data/MBR bs=1 count=64 skip=446   #备份sda的分区表
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000398679 s, 161 kB/s
[root@CentOS6 ~]#hexdump -C /data/MBR -n 512
00000000  80 20 21 00 83 aa 28 82  00 08 00 00 00 00 20 00  |. !...(....... .|
00000010  00 aa 29 82 83 fe ff ff  00 08 20 00 00 00 40 06  |..)....... ...@.|
00000020  00 fe ff ff 83 fe ff ff  00 08 60 06 00 00 60 00  |..........`...`.|
00000030  00 fe ff ff 05 fe ff ff  00 08 c0 06 00 f8 bf 05  |................|
00000040

conv=选项: 用指定的参数转换文件

    选项

ascii 转换EBCDIC 为ASCII
ebcdic 转换ASCII 为EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件

sync 把每个输入块填充到ibs个字节,不足部分用空 NUL 字符补齐

修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的

文件夹挂载到文件夹

[root@CentOS6 data]#mkdir mount1 mount2
[root@CentOS6 data]#mount -B mount1 mount2
[root@CentOS6 data]#ll -i
total 540701
  11 drwx------. 2 root root     16384 Mar 27 20:16 lost+found
4011 drwxr-xr-x. 2 root root      4096 Apr  1 18:04 mount1
4011 drwxr-xr-x. 2 root root      4096 Apr  1 18:04 mount2   #两个文件夹的inode号相同

    选项

-o:挂载文件系统的选项,多个选项使用逗号分隔
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备

-B, --bind: 绑定目录到另一个目录上

    -o选项的子命令: 默认相当于rw, suid, dev, exec, auto, nouser, async

async:异步模式
sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
acl:启用此文件系统上的acl功能

loop: 使用loop设备

    umount命令

在使用umount命令卸载设备时,一定要保证没有用户正在访问该设备,否则会导致数据的丢失甚至破坏!

1、查看挂载情况:

    findmnt [选项] [设备\挂载点]    不填写设备、挂载点会显示当前所有正在挂载的信息

[root@CentOS6 data]# findmnt /dev/sda1
TARGET SOURCE    FSTYPE OPTIONS
/boot  /dev/sda1 ext4   rw,relatime,seclabel,barrier=1,data=ordered
[root@CentOS6 data]# findmnt
TARGET                       SOURCE           FSTYPE                OPTIONS
/                            /dev/sda2        ext4                  rw,relatime,seclabel,barrier=1,data=ordered
├─/proc                      proc             proc                  rw,relatime
│ ├─/proc/bus/usb            /proc/bus/usb    usbfs                 rw,relatime
│ └─/proc/sys/fs/binfmt_misc                  binfmt_misc           rw,relatime
├─/sys                       sysfs            sysfs                 rw,relatime,seclabel
├─/selinux                                    selinuxfs             rw,relatime
├─/dev                       devtmpfs         devtmpfs              rw,relatime,seclabel,size=487228k,nr_inodes=121807,mode=755
│ └─/dev                     devtmpfs         devtmpfs              rw,relatime,seclabel,size=487228k,nr_inodes=121807,mode=755
│   ├─/dev/pts               devpts           devpts                rw,relatime,seclabel,gid=5,mode=620,ptmxmode=000
│   └─/dev/shm               tmpfs            tmpfs                 rw,relatime,seclabel
├─/boot                      /dev/sda1        ext4                  rw,relatime,seclabel,barrier=1,data=ordered
├─/data                      /dev/sda3        ext4                  rw,relatime,seclabel,barrier=1,data=ordered
├─/misc                      /etc/auto.misc   autofs                rw,relatime,fd=7,pgrp=1980,timeout=300,minproto=5,maxproto=5,indirect
├─/net                       -hosts           autofs                rw,relatime,fd=13,pgrp=1980,timeout=300,minproto=5,maxproto=5,indirect
├─/root/.gvfs                gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=0,group_id=0
└─/media/CDROM               /dev/sr0         iso9660               ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500

    选项

-t 按照文件系统类型查找挂载
-l 列表显示
-s 显示/etc/fstab中的挂载情况
-m 显示/etc/mtab中的挂载情况
-t 显示内存中的挂载情况

2、查看正在访问指定文件系统的进程:

    lsof [选项] [挂载点]    不填写挂载点会显示当前系统中所有正在使用的进程

[root@CentOS6 ~]#lsof /data
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    2866 root  cwd    DIR    8,3     4096    2 /data
vim     3067 root  cwd    DIR    8,3     4096    2 /data
vim     3067 root    4u   REG    8,3    12288 4014 /data/.11.swp

    fuser [选项] 挂载点

[root@CentOS6 ~]#fuser -v /data
                     USER        PID ACCESS COMMAND
/data:               root       2866 ..c.. bash
                     root       3067 ..c.. vim
[root@CentOS6 ~]#fuser -m /data   #显示挂载点下的进程号
/data:                2866c  3067c
[root@CentOS6 ~]#fuser -mk /data   #kill掉进程号为 2866c 3067c 的进程
/data:                2866c  3067c

在保证没有用户访问设备后,便可以开始卸载

3、卸载

    umount 设备/挂载点

[root@CentOS6 ~]#lsblk /dev/sdb1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb1   8:17   0   5G  0 part /mnt/sdb1
[root@CentOS6 ~]#umount /mnt/sdb1/
[root@CentOS6 ~]#lsblk /dev/sdb1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb1   8:17   0   5G  0 part 

    使用mount挂载的设备只是临时挂载,在系统重启后并不会保留挂载,因为“一切皆文件”…所以先要保持挂载不丢失,需要把挂载的信息保存在文件中

    /etc/fstab 每行保存一个挂载信息:

[root@CentOS6 ~]#cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Mar 27 20:18:32 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=481fa90c-b9f1-459b-ba67-f4f4c8d7942b /                       ext4    defaults        1 1
UUID=056668aa-7ecd-4235-8351-c8fb02372e3b /boot                   ext4    defaults        1 2
UUID=b98328eb-21c7-4114-b3d5-93cd4aec6bc8 /data                   ext4    defaults        1 2
UUID=5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs    defaults        0 0
devpts                  /dev/pts                devpts   gid=5,mode=620  0 0
sysfs                   /sys                    sysfs    defaults        0 0
proc                    /proc                   proc     defaults        0 0
/root/p1                /mnt/p1                 ext4     loop            0 0 
/dev/sr0                /mnt/cdrom              iso9660  defaults        0 0
/boot                   /mnt/boot               none     bind            0 0

格式为(以空格隔开):UUID 挂载点 文件系统 挂载选项 转存频率(实际没用,0不转存) 自检次序(0不自检)

挂载交换分区(swap)

 
 
[root@CentOS6 ~]#fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (655-2610, default 655): 
Using default value 655
Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +1G

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)
 
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcc71f8ed

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
/dev/sdb2             655         786     1060290   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@CentOS6 ~]#mkswap /dev/sdb2
mkswap: /dev/sdb2: warning: don't erase bootbits sectors
        (dos partition table detected). Use -f to force.
Setting up swapspace version 1, size = 1060284 KiB
no label, UUID=eff8e5a5-c6eb-4304-bcae-998bea3915b5
[root@CentOS6 ~]#blkid
/dev/sda1: UUID="056668aa-7ecd-4235-8351-c8fb02372e3b" TYPE="ext4" LABEL="bootdisk" 
/dev/sda2: UUID="481fa90c-b9f1-459b-ba67-f4f4c8d7942b" TYPE="ext4" 
/dev/sda3: UUID="b98328eb-21c7-4114-b3d5-93cd4aec6bc8" TYPE="ext4" LABEL="app" 
/dev/sda5: UUID="5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417" TYPE="swap" 
/dev/sdb1: UUID="b370716f-85f0-48e6-9d1e-6ff35444c362" TYPE="ext4" 
/dev/sdb2: UUID="eff8e5a5-c6eb-4304-bcae-998bea3915b5" TYPE="swap" 
[root@CentOS6 ~]#swapon /dev/sdb2
[root@CentOS6 ~]#free -h
             total       used       free     shared    buffers     cached
Mem:          980M       660M       320M       2.9M        30M       284M
-/+ buffers/cache:       345M       634M
Swap:         3.0G         0B       3.0G

[root@CentOS6 ~]#echo "UUID=eff8e5a5-c6eb-4304-bcae-998bea3915b5 swap swap defaults 0 0" >> /etc/fstab

修改交换分区优先级:(数值越大,优先级越高)

查看 swap 优先级:

[root@CentOS6 ~]#swapon -s
Filename				Type		Size	Used	Priority
/dev/sda5                               partition	2097148	0	-1
/dev/sdb2                               partition	1060284	0	-2

修改优先级:修改 /etc/fstab 对应的行中挂载选项,添加“pri=数值”

UUID=eff8e5a5-c6eb-4304-bcae-998bea3915b5 swap                    swap    defaults,pri=10        0 0
[root@CentOS6 ~]#swapoff /dev/sdb2
[root@CentOS6 ~]#swapon -a
[root@CentOS6 ~]#swapon -s
Filename				Type		Size	Used	Priority
/dev/sda5                               partition	2097148	0	-1
/dev/sdb2                               partition	1060284	0	10

挂载外围设备

光盘的挂载与挂载设备一样,卸载弹出时使用 eject 命令。

创建ISO文件

将正在挂载光盘中的文件拷贝为一个后缀为 .iso 的文件即可

将一个文件或目录打包成为一个ISO镜像

[root@CentOS6 ~]#mkisofs -r -o data.iso /data

……
[root@CentOS6 ~]#file data.iso 
data.iso: ISO 9660 CD-ROM filesystem data 'CDROM'

查看USB的挂载是否被识别 lsusb

    du命令用于查看目录的空间使用情况。

    语法:du [选项] [目录]

[root@CentOS6 ~]#du -sh /etc
42M	/etc

    选项

--max-depth:统计深度
-h:易读格式
-s:总计显示










猜你喜欢

转载自blog.csdn.net/m30_miriam/article/details/80084419
5.3