三、文件系统的挂载与文件的归档

简介:

3.1、挂载的概念

  挂载:  将新的文件系统关联至当前文件系统。
  卸载:  将某文件系统与当前根文件系统的关联关系予以移除。
  挂载点:目录,挂载完成后,要通过挂载点访问对应文件系统上的文件。
    1、此目录没有被其它进程使用; 

    2、目录得事先存在;

    3、目录中的原有的文件将会暂时隐藏。

3.2、开机挂载

  在linux系统中,有些文件系统是开机就会自动挂载的。这些文件系统的挂载都定义在/etc/fstab文件下。在此文件中,每一行代表挂载一个文件系统,通常分为6段,其每一段代表的含义为:

要挂载的设备可以使用设备文件,卷标,UUID
挂载点:SWAP(交换分区)的挂载点即为SWAP
文件系统类型:
挂载选项:
转储频率:  0:不做备份; 1:每天转储;2:每隔一天转储

文件系统检测次序: 0:不自检; 1:首先自检,一般只有 rootfs 才用 1

如: /dev/sda5 /mnt/test ext3 defaults 0 0

1
2
3
4
5
6
[root@mylinux ~] # cat /etc/fstab 
/dev/vda1             /                    ext3       noatime,acl,user_xattr 1 1
proc                  /proc                 proc       defaults              0 0
sysfs                 /sys                  sysfs      noauto                0 0
debugfs               /sys/kernel/debug     debugfs    noauto                0 0
devpts                /dev/pts              devpts     mode=0620,gid=5

3.3、手动挂载命令mount/umount

mount [options] [-t fstype ] [-o options] 设备 挂载点
 [options]: 命令的选项
  [-o options]:挂载时启用分区特性
  不带任何选项:显示当前系统已经挂载的设备及挂载点


命令选项:
  -a: 挂载/etc/fstab 文件中定义的所有文件系统
  -r: 只读挂载 -w: 读写挂载
  -L lable: 以卷标指定, LABLE=“ label
  -U UUID: 以 UUID 指定挂载设备, UUID=“ UUID
  -t FSTYPE: 指定正在挂载设备上的文件系统的类型;
  -n: 默认情况下, mount 命令每挂载一个设备, 都会把挂载的设备信息保存至
/etc/mtab 文件;使用—选项意味着挂载设备时,不把信息写入此文件;
分区特性选项 
-o:

  async: 异步 I/O 

  sync: 同步 I/O 

  ro: 挂载为只读 

  rw: 读写挂载

  remount: 重新挂载当前文件系统 

  noatime/atime: 建议 noatime

  auto/noauto: 是否能够被 mount -a 选项自动挂载;
  diratime/nodiratime: 是否更新目录的访问时间戳;
  exec/noexec: 是否允许执行其中的二进制程序;
  _netdev: 挂载网络文件系统
  acl: 启用 facl

1
2
3
4
5
6
[root@mylinux ~] # mount                    #查看当前系统已经挂载的设备及挂载点
/dev/vda1  on /  type  ext3 (rw,noatime,acl,user_xattr)
proc on  /proc  type  proc (rw)
sysfs on  /sys  type  sysfs (rw)
devpts on  /dev/pts  type  devpts (rw,mode=0620,gid=5)
none on  /proc/sys/fs/binfmt_misc  type  binfmt_misc (rw)

umount:卸载某文件系统,挂载的设备应当没有进程使用。

umount 设备        #直接卸载文件系统

umount 挂载点      #从挂载点中卸载文件系统

1
2
3
4
5
6
7
8
9
10
11
[root@mylinux ~] # mount /dev/vdb1 /tmpfs/
[root@mylinux ~] # mount
/dev/vda1  on /  type  ext3 (rw,noatime,acl,user_xattr)
proc on  /proc  type  proc (rw)
sysfs on  /sys  type  sysfs (rw)
devpts on  /dev/pts  type  devpts (rw,mode=0620,gid=5)
none on  /proc/sys/fs/binfmt_misc  type  binfmt_misc (rw)
/dev/vdb1  on  /tmpfs  type  ext3 (rw)
[root@mylinux ~] # umount /dev/vdb1      #直接使用设备方式卸载
[root@mylinux ~] # mount /dev/vdb1 /tmpfs/
[root@mylinux ~] # umount /tmpfs/        #使用挂载点方式卸载

查看内核追踪到的已挂载的所有设备: cat /proc/mounts

1
2
3
4
5
6
7
8
9
10
[root@mylinux ~] # cat /proc/mounts 
rootfs / rootfs rw 0 0
proc  /proc  proc rw,relatime 0 0
sysfs  /sys  sysfs rw,relatime 0 0
devtmpfs  /dev  devtmpfs rw,relatime,size=498084k,nr_inodes=124521,mode=755 0 0
devpts  /dev/pts  devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs  /dev/shm  tmpfs rw,relatime 0 0
/dev/vda1  / ext3 rw,noatime,errors= continue ,user_xattr,acl,barrier=1,data=ordered 0 0
/proc/bus/usb  /proc/bus/usb  usbfs rw,relatime 0 0
none  /proc/sys/fs/binfmt_misc  binfmt_misc rw,relatime 0 0

3.4、查看挂载信息命令 fuser/df/du
fuser -v MOUNT_POINT  查看正在访问指定文件系统的进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@mylinux ~] # fuser -v /tmpfs/
[root@mylinux ~] # fuser -v /
                      用户     进程号 权限   命令
/:                   root          1 .rc.. init
                      root          2 .rc.. kthreadd
                      root          3 .rc.. migration /0
                      root          4 .rc.. ksoftirqd /0
                      root          5 .rc.. stopper /0
                      root          6 .rc.. watchdog /0
                      root          7 .rc.. events /0
                      root          8 .rc.. events /0
                      root          9 .rc.. events_long /0
                      root         10 .rc.. events_power_ef
                      root         11 .rc.. cgroup
                      root         12 .rc.. khelper

fuser -km MOUNT_POINT 终止所有在正访问指定的文件系统的进程

1
2
3
4
5
[root@mylinux tmpfs] # fuser -v /tmpfs/
                      用户     进程号 权限   命令
/tmpfs/ :             root       1680 ..c..  bash
[root@mylinux tmpfs] # fuser -km /tmpfs/
/tmpfs/ :              1680c

df: 文件系统空间占用等信息的查看工具:

-h: 单位,换算以可读方式输出信息 

-i:输出inode数而不是block块数量

-P: 以 Posix 兼容的格式输出;

1
2
3
4
5
6
7
8
9
[root@mylinux ~] # df 
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1        20641404 4196328  15396560  22% /
[root@mylinux ~] # df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1         20G  4.1G   15G  22% /
[root@mylinux ~] # df -hi
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/vda1         1.3M  142K  1.2M   12% /

du [OPTION]... DIR 查看某目录总体空间占用状态:

-s:整个目录的大小 

-h:单位换算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@mylinux ~] # du /etc/     #默认显示目录下每个文件的大小
12       /etc/gnome-vfs-2 .0 /modules
16       /etc/gnome-vfs-2 .0
4        /etc/security/namespace .d
12       /etc/security/limits .d
4        /etc/security/console .perms.d
56       /etc/security/console .apps
136      /etc/security
8        /etc/plymouth
60       /etc/setuptool .d
64       /etc/profile .d
128      /etc/bash_completion .d
[root@mylinux ~] # du -s /etc/   #查看整个目录大小
31020    /etc/
[root@mylinux ~] # du -sh /etc/  #但会换算显示
31M      /etc/

3.5、本地回环设备与dd 命令
  回环设备 
loopback, 使用软件来模拟实现硬件,指拿一个大的镜像文件,如 xxx.iso xxx.img 等,在此文件内建立一个文件系统,此文件就像一个新的磁盘或光盘设备一样使用。

mount -o loop DEVICE MOUNT_POINT 挂载本地回环设备

1
2
3
4
5
6
7
8
9
10
[root@mylinux home] #  dd if=/dev/zero of=/tmp/disk-image count=20480 创建10MB的文件
记录了20480+0 的读入
记录了20480+0 的写出
10485760字节(10 MB)已复制,0.053128 秒,197 MB/秒
[root@mylinux home] # mke2fs -q /tmp/disk-image              #在文件上创建文件系统
/tmp/disk-image  is not a block special device.
无论如何也要继续? (y,n) y
[root@mylinux home] # mount -o loop  /tmp/disk-image /tmpfs/ #使用回环设备将文件挂载起来  
[root@mylinux home] # ls /tmpfs/
lost+found

  dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。命令的简单使用:dd (选项)

bs=<字节数>:将ibs(输入)与obs(输出)设成指定的字节数; 

cbs=<字节数>:转换时,每次只转换指定的字节数; 

conv=<关键字>:指定文件转换的方式; 

count=<区块数>:仅读取指定的区块数; 

ibs=<字节数>:每次读取的字节数; 

obs=<字节数>:每次输出的字节数; 

of=<文件>:输出到文件; 

seek=<区块数>:一开始输出时,跳过指定的区块数; 

skip=<区块数>:一开始读取时,跳过指定的区块数; 

--help:帮助; 

--version:显示版本信息。

1
2
3
4
5
6
7
8
dd  if = /dev/zero  of=sun.txt bs=1M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.00208068 秒,504 MB/秒
[root@mylinux ~]
[root@mylinux ~] # ls
anaconda-ks.cfg      install .log         sun.txt
bolimowski2016.pdf   install .log.syslog

dd 命令可用于备份整个分区或者磁盘

dd if=/dev/sda of=/tmp/myfile bs=512 count=1 备份MBR
dd if=/dev/zero of=/dev/sdb bs=500 count=1 
破坏MBR

3.6、链接文件
硬链接: 
(inode号与原文件相同,不能跨分区)

1、 只能对文件创建,不能应用于目录; 

2、 不能跨文件系统;

3、 创建硬链接会增加文件被链接的次数;

符号链接: (inode 号与原文件不相同)

1、 可应用于目录; 

2、 可以跨文件系统;

3、 不会增加被链接文件的链接次数;
4、 其大小为指定的路径所包含的字符个数;

命令: ln [-s -v] SRC DEST

-s 创建软连接,默认是是创建硬链接
-v 显示创建过程

3.7、 设备文件
  设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

b: 按块为单位,随机访问的设备;如:硬盘
c:按字符为单位,线性设备;如:键盘

路径在/dev 目录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@mylinux ~] # cd /dev/
crw-rw-rw- 1 root  tty        5,   2 4月  12 14:55 ptmx
drwxr-xr-x 2 root root           0 4月  12 14:08 pts
brw-rw---- 1 root disk      1,   0 4月  12 14:09 ram0
brw-rw---- 1 root disk      1,   1 4月  12 14:09 ram1
brw-rw---- 1 root disk      1,  10 4月  12 14:09 ram10
brw-rw---- 1 root disk      1,  11 4月  12 14:09 ram11
brw-rw---- 1 root disk      1,  12 4月  12 14:09 ram12
brw-rw---- 1 root disk      1,  13 4月  12 14:09 ram13
brw-rw---- 1 root disk      1,  14 4月  12 14:09 ram14
brw-rw---- 1 root disk      1,  15 4月  12 14:09 ram15
brw-rw---- 1 root disk      1,   2 4月  12 14:09 ram2
brw-rw---- 1 root disk      1,   3 4月  12 14:09 ram3
brw-rw---- 1 root disk      1,   4 4月  12 14:09 ram4
brw-rw---- 1 root disk      1,   5 4月  12 14:09 ram5
brw-rw---- 1 root disk      1,   6 4月  12 14:09 ram6
brw-rw---- 1 root disk      1,   7 4月  12 14:09 ram7
brw-rw---- 1 root disk      1,   8 4月  12 14:09 ram8
brw-rw---- 1 root disk      1,   9 4月  12 14:09 ram9

在每行的第五列字段标出了设备号分为主设备号与次设备号。

  主设备号( major number):用来标识与设备文件相连的驱动程序  

  次设备号( minor number):次设备号被驱动程序用来辨别操作的是哪个设备

创建命令设备的:mknod [OPTION]... NAME TYPE [MAJOR MINOR]

-m MODE(指定权限)
-b :设备名称成为外部存储设备文件
-c :设备名称成为外部输入设备文件

3.8、压缩命令 zip/gzip/bzip/xz

zip: 既归档又压缩的工具,可以压缩目录压缩后不删除原文件;压缩时需要指定压缩后的文件名。
  zip FILENAME.zip FILE1 FILE2 ...:
  unzip FILENAME.zip

gzip FILE: 

  -d(解压缩)

  -#1-9,指定压缩比是

  -c: 将压缩结果送往标准输出, 可使用重定向将其保存为压缩文件,从而保留原文件

gunzip FILE.gz: 解压完成后会删除原文件
zcat FILE.gz:不解压的情况,查看文本文件的内容

bzip2 FILE

  -d(解压缩

  -#: 1-9,默认是6

  -k: 压缩时保留原文件

bunzip2 FILE.bz2 解压完成后会删除原文件
bzcat FILE.bz2 不解压的情况,查看文本文件的内容

xz FILE: 

  -d(解压缩

  -#: 1-9, 默认是

  -k: 压缩时保留原文件

unxz FILE.xz 解压完成后会删除原文件
xzcat FILE.xz 不解压的情况, 查看文本文件的内容
注:
gzip,bzip2,xz 都不能压缩目录,且压缩与解压后都会删除原文件。

3.9、归档工具 tar
tar、cpio: 归档工具 
tar [OPTION...] [FILE]...

-c: 创建归档文件 

-f FILE.tar: 操作的归档文件

-x: 展开归档 --xattrs: 归档时,保留文件的扩展属性信息

-t: 不展开归档,直接查看归档了哪些文件 

-C:指定展开的路径

-zcf: 归档并调用gzip 压缩       -zxf: 调用 gzip 解压缩并展开归档,-z 选项可省略
-jcf: 归档并调用bzip2 压缩      -jxf: 调用 bzip2 解压缩并展开归档,-j 选项可省略
-Jcf: 归档并调用xz 压缩         -Jxf: 调用 xz 解压缩并展开归档, -J 选项可省略



本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/1915242,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 负载均衡 算法
p2p的文件系统
p2p的文件系统
64 4
|
7月前
|
存储 算法 安全
文件系统管理:挂载、格式化、备份和修复你的文件系统
文件系统管理:挂载、格式化、备份和修复你的文件系统
63 0
|
5月前
|
存储 数据可视化 Linux
文件系统-
文件系统-
43 0
|
5月前
磁盘挂载
磁盘管理 查看挂载情况 lsblk -f 挂载步骤 1.虚拟机增加硬盘 2.分区命令 fdisk /dev(设备文件)/sdb m 显示命令列表 p 显示磁盘分区 n 新增分区 d 删除分区 w 写入并退出 3.格式化磁盘,并挂载 mkfs -t ext4 /dev/sdb1 mount /dev/sdb1 文件路径 4.卸载 umount /dev/sdb1 或者 umount /文件 命令行重启挂载会失效 5.永久挂载 修改 etc/fstab实现挂载 执行mount -a生效 查询磁盘使用情况 df -h 默认是当前目录 查询指定目录的磁盘占用情况 du -h -s目录占用大
79 0
|
8月前
|
存储 缓存 算法
文件系统(上)
文件系统(上)
130 0
|
8月前
|
存储 缓存 算法
文件系统(下)
文件系统(下)
140 0
|
8月前
|
存储 Linux Windows
【文件系统】
【文件系统】
72 0
|
10月前
|
存储 块存储 内存技术
(10)ArduPilot文件系统
(10)ArduPilot文件系统
104 0
|
存储 Unix Linux
|
弹性计算 Linux
快照创建的磁盘挂载提示文件系统错误
快照创建的磁盘挂载提示文件系统错误