天天看点

Linux之文件系统管理挂载

思路

只能挂载在根分区,根由谁来挂载?

mount命令详解

分区, 创建、调整、查看文件系统,挂载文件系统、显示挂载信息、验证挂载

写时复制和原处读写

同步IO和异步IO的区别

在创建文件系统之后,如果要使用此文件系统,应该将设备/分区关联至根设备的某个目录之下

根由内核管理,是一切的起始

根的由来

1)刚开机时,post加电自检

2)自检后,装载bootloader

3)bootloader装载用户 所选择的操作系统内核(系统启动装载的第一个程序)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>CentOS 7 :</code><code>/etc/grub2</code><code>.cfg 中定义了</code>

<code>{</code>

<code>    </code><code>load_video  </code><code>##加载显卡</code>

<code>    </code><code>linux16 </code><code>/boot/vmlinuz-3</code><code>.10.0-514.26.2.el7.x86_64 root=UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 rocrashkernel=auto rhgb quiet net.ifnames=0 LANG=en_US.UTF-8 </code><code>##加载的内核文件</code>

<code>        </code><code>root=UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1    </code><code>## 装载内核时,需要指明根所在的分区</code>

<code>    </code><code>initrd16 </code><code>/boot/initramfs-3</code><code>.10.0-514.26.2.el7.x86_64.img   </code><code>## 根文件系统的驱动</code>

<code>}</code>

<code>CentOS 6 :</code><code>/boot/grub/grub</code><code>.conf中定义了</code>

<code>title CentOS 6 (2.6.32-696.el6.i686)</code>

<code>    </code><code>root (hd0,0)</code>

<code>    </code><code>kernel </code><code>/vmlinuz-2</code><code>.6.32-696.el6.i686 ro root=</code><code>/dev/mapper/myvg-lv_root</code> <code>rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=myvg</code><code>/lv_swap</code>  <code>KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet rd_NO_DM rd_LVM_LV=myvg</code><code>/lv_root</code> <code>rhgb quiet</code>

<code>    </code><code>initrd </code><code>/initramfs-2</code><code>.6.32-696.el6.i686.img</code>

<code>根的位置:人为的通过grub配置文件,传递给内核,内核才能加载根</code>

4)内核(通用目的的管理程序,不会完成特定目的的操作)初始化后,取得系统的控制权

    /内核初始化后---&gt; 装载根 --&gt; 启动根文件系统上的Init程序(完成特定目的操作)

为了完成特定目的的操作,应该启动应用程序,存储在外部存储设备上的应用程序

    1、装载某个磁盘分区,根文件系统所在的分区,满足FHS标准的分区

    1)根分区:启动时用到的分区

    2)启动后,通过根分区某个路径下的mount命令关联其他分区至根,保证任何文件都处于根下

    3) 根必须提供启动所依赖的程序和库文件,且只能在根文件系统中(bin,sbin,lib,lib64)

    2、启动用户空间的第一个程序(/sbin/init)

init程序代替内核,启动程序:

    1、所有程序都是init的子进程,都是init仿照自己的样子捏出来的, init 程序fork自身而来

    2、任何子进程也能有子进程

    3、init的类型:

            pstree查看:CentOS5:init, CentOS6: initstart, CentOS7: systemd

如何通过mount命令关联其他操作系统

挂载

1) 关联的目录非空时,挂载后,此目录中的文件暂时隐藏

2) 挂载后,内核会将挂载信息记录在/proc/mounts文件中

3)将两个非根文件系统关联需要一个中间层 或者 为了保证一切文件都属于根,则必须先将一个文件系统关联至根,然后才能将另一个文件系统关联至此文件系统,已经关联至根的文件系统.

卸载

1) 卸载一个被非根设备关联的文件系统时,应该先卸载关联的所有设备,才能解除与根的关联关系

2) 卸载时,如果将要被卸载的设备,正在被某个进程访问,是不能解除关联关系.(例如cd进程)

分区,创建、查看、调整文件系统 ,挂载,显示挂载情况,挂载鸡,配置开机自动挂载,卸载

mount命令

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

<code>[root@localhost ~]</code><code># type mount </code>

<code>mount</code> <code>is </code><code>/bin/mount</code>

<code>[root@localhost ~]</code><code># man mount</code>

<code>       </code><code>mount</code> <code>[OPTIONS...] device_partition MOUNT_POINT</code>

<code>  </code><code>##将设备关联至目录,目录作为设备的访问入口</code>

<code>  </code> 

<code>DEVICE_PARTITION:</code>

<code>    </code><code>1)设备文件, </code><code>/dev/sda1</code>

<code>    </code><code>2)全局唯一标示,-U UUID。推荐:UUID:设备文件名改变时,UUID唯一不变</code>

<code>    </code><code>3) 卷标, -L LABEL</code>

<code>    </code><code>4) 内核支持的伪文件系统,proc,sysfs,devtmpfs,configfs</code>

<code>    </code><code>5) 目录,--bind DIR</code>

<code>MOUNT_POINT:</code>

<code>    </code><code>DIR:建议为空目录,非空目录时,挂载后原目录中的文件暂时会隐藏</code>

<code>        </code><code>临时挂载点:mnt,media</code>

<code>OPTIONS:</code>

<code>    </code><code>-t vfstype   </code><code>##  指明挂载设备的文件系统类型</code>

<code>    </code><code>-r </code><code>readonly</code><code>, </code><code>##  挂载后不能向挂载的分区中写入数据</code>

<code>    </code><code>-w </code><code>read</code> <code>and write,</code><code>## 挂载后能向挂载的分区中写入数据</code>

<code>    </code><code>-a auto,     </code><code>## 挂载所有定义在fstab文件中且设备挂载选项支持自动挂载的设备</code>

<code>    </code><code>-</code><code>v</code> <code>,verbose  </code><code>## 显示挂载过程</code>

<code>    </code><code>-n           </code><code>## 此次挂载不更新/etc/mtab文件。mount命令读取/etc/mtab文件。 挂载时,内核将信息记录于/proc/mounts文件中,然后同步至/etc/mtab文件中</code>

<code>    </code><code>--bind       </code><code>## 将目录绑定至另一个目录,后面的目录作为前面的目录的访问入口 </code>

<code>    </code><code>-L LABEL     </code><code>## 基于LABEL挂载</code>

<code>    </code><code>-U UUID      </code><code>## 基于UUID挂载</code>

<code>    </code> 

<code>    </code><code>-o OPTIONS:</code>

<code>        </code><code>async       </code><code>## 异步IO</code>

<code>        </code><code>sync</code>        <code>## 同步IO</code>

<code>        </code><code>atime       </code><code>## 记录文件和访问时间</code>

<code>        </code><code>noatime     </code><code>## 不记录文件的访问时间</code>

<code>        </code><code>diratime    </code><code>## 目录的访问时间</code>

<code>        </code><code>nodiratime  </code><code>## 不记录目录的访问时间</code>

<code>        </code><code>auto        </code><code>## 自动挂载,默认。定义在fstab文件中,和此默认属性便能实现mount -a</code>

<code>        </code><code>noauto      </code><code>## 不自动挂载</code>

<code>        </code><code>exec</code><code>/noexec</code> <code>## 挂载的设备上的文件是否能运行为一个进程</code>

<code>        </code><code>dev</code><code>/nodev</code>   <code>## 新挂载的设备上有设备文件,此设备文件能否作为设备的访问入口</code>

<code>        </code><code>suid</code><code>/nosuid</code> <code>## 挂载的设备上的文件有suid权限时,能否运行为一个进程</code>

<code>        </code><code>remount     </code><code>## 不卸载的情况下,完成重新挂载。用于不卸载修改挂载特性。</code>

<code>        </code><code>ro</code><code>/rw</code>       <code>## 只读挂载,可写挂载</code>

<code>        </code><code>user</code><code>/nouser</code> <code>## 是否允许普通用户挂载此已经挂载后的设备,默认普通用户不能挂载设备</code>

<code>        </code><code>acl         </code><code>## 启用系统acl功能</code>

<code>            </code><code>CentOS 5,6:默认不启用acl</code>

<code>            </code><code>CentOS 7  : 默认启用acl</code>

<code>        </code><code>default</code>

<code>            </code><code>CentOS 默认挂载选项:</code>

<code>                </code><code>rw, suid, dev, </code><code>exec</code><code>, auto, nouser, async, and relatime.</code>

##将设备关联至目录,目录作为设备的访问入口

<code>1、查看所有分区</code>

<code>[root@localhost ~]</code><code># fdisk -l /dev/sd[a-z]</code>

<code>2、修改分区</code>

<code>[root@localhost ~]</code><code># fdisk /dev/sdb</code>

<code>    </code><code>1) 分区新分区</code>

<code>        </code><code>Command (m </code><code>for</code> <code>help): n</code>

<code>    </code><code>2) 分配空间</code>

<code>         </code><code>Last cylinder, +cylinders or +size{K,M,G} (1576-2610, default 2610): +100M</code>

<code>    </code><code>3)查看分区</code>

<code>        </code><code>Command (m </code><code>for</code> <code>help): p</code>

<code>    </code><code>4)保存并退出</code>

<code>        </code><code>Command (m </code><code>for</code> <code>help): w</code>

<code>        </code> 

<code>3、查看内核识别的分区表</code>

<code>[root@localhost ~]</code><code># cat /proc/partitions</code>

<code>[root@localhost ~]</code><code># ls /dev/sdb*</code>

<code>4、让内核重读分区表</code>

<code>[root@localhost ~]</code><code># partx -a /dev/sdb</code>

<code>5、格式化、创建新的文件系统</code>

<code>[root@localhost ~]</code><code># mkfs.ext4 /dev/sdb8</code>

<code>    </code><code>块大小=4096 (log=2)</code>

<code>    </code><code>131122 blocks (5.00%) reserved </code><code>for</code> <code>the super user</code>

<code>    </code><code>Superblock backups stored on blocks</code>

<code>6、将设备</code><code>/dev/sdb8</code><code>关联至</code><code>/mnt</code><code>目录</code>

<code>[root@localhost ~]</code><code># mount /dev/sda3 /mnt</code>

##查看挂载信息

<code>##内核追踪到的已挂载的所有设备</code>

<code>[root@localhost ~]</code><code># cat /proc/mounts</code>

<code>##从/proc/mounts文件同步而来的数据 </code>

<code>[root@localhost ~]</code><code># cat /etc/mtab</code>

<code>##显示/etc/mtab中的挂载信息</code>

<code>[root@localhost ~]</code><code># mount</code>

<code>+++++++++++++++++++++++++++++++++</code>

<code>设备 挂载点 文件系统类型 访问权限(rw)</code>

<code>实现资源分割与管理</code>

<code>proc --&gt; </code><code>/proc</code>

<code>sysfs --&gt; </code><code>/sys</code>

<code>devpts --&gt; </code><code>/dev/pts</code>

<code>tmpfs --&gt; </code><code>/dev/shm</code>

##挂载验证

<code>##ext系列文件系统挂载后有lost+found目录</code>

<code>[root@localhost ~]</code><code># ls /mnt</code>

<code>lost+found</code>

##解除关联关系

<code>1、目录</code>

<code>[root@localhost ~]</code><code># umount /mnt</code>

<code>2、设备</code>

<code>[root@localhost ~]</code><code># umount /dev/sdb8</code>

##卸载时,如果出现device busy时,有进程正在访问此设备

<code>##查看正在访问指定文件系统的进程</code>

<code>    </code><code>fuser -</code><code>v</code> <code>MOUNT_POINT</code>

<code>    </code><code>lsof</code> <code>-</code><code>v</code> <code>MOUNT_POINT</code>

<code>        </code><code>bash</code><code>: </code><code>bash</code><code>内建命令在访问</code>

<code>##杀死正在访问此文件系统的进程</code>

<code>    </code><code>fuser -km MOUNT_POINT (root)</code>

<code>##制造环境</code>

<code>[root@localhost mnt]</code><code># cd /mnt</code>

<code>##查看进程</code>

<code>[root@localhost mnt]</code><code># fuser -v /mnt</code>

<code>                     </code><code>用户     进程号 权限   命令</code>

<code>/mnt</code><code>:                root       2142 ..c.. </code><code>bash</code>

<code>##终止进程</code>

<code>[root@localhost mnt]</code><code># fuser -km /mnt</code>

<code>/mnt</code><code>:                 2142c</code>

<code>Connection closed by foreign host.</code>

<code>Disconnected from remote host(192.168.1.103:22) at 10:46:17.</code>

<code>Type `help' to learn how to use Xshell prompt.</code>

<code>[c:\~]$</code>

使用选项注释

PARTITIONS:

1、-U UUID

<code>1</code><code>、获取UUID</code>

<code>[root@localhost ~]# blkid /dev/sda3</code>

<code>/dev/sda3: UUID=</code><code>"8e02ad4b-818b-405e-96b1-2f8aedf9136b"</code> <code>TYPE=</code><code>"ext4"</code> 

<code>2</code><code>、以UUID挂载: </code>

<code>[root@localhost ~]# mount -U 8e02ad4b-818b-405e-96b1-2f8aedf9136b /mnt</code>

<code>3</code><code>、验证挂载</code>

<code>[root@localhost ~]# ls /mnt</code>

<code>[root@localhost ~]# mount</code>

<code>/dev/sda3 on /mnt type ext4 (rw)</code>

2、-L LABEL

<code>1、修改卷标为MYDATA</code>

<code>[root@localhost ~]</code><code># tune2fs -L 'MYDATA' /dev/sda3</code>

<code>tune2fs 1.41.12 (17-May-2010)</code>

<code>2、查看LABEL</code>

<code>[root@localhost ~]</code><code># blkid /dev/sda3</code>

<code>/dev/sda3</code><code>: UUID=</code><code>"8e02ad4b-818b-405e-96b1-2f8aedf9136b"</code> <code>TYPE=</code><code>"ext4"</code> <code>LABEL=</code><code>"MYDATA"</code> 

<code>3、以LABEL挂载</code>

<code>[root@localhost ~]</code><code># mount -L 'MYDATA' /mnt</code>

<code>4、验证挂载</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (rw)</code>

3、伪文件系统挂载

<code>1、查看伪文件系统</code>

<code>proc on </code><code>/proc</code> <code>type</code> <code>proc (rw)</code>

<code>devpts on </code><code>/dev/pts</code> <code>type</code> <code>devpts (rw,gid=5,mode=620)</code>

<code>tmpfs on </code><code>/dev/shm</code> <code>type</code> <code>tmpfs (rw)</code>

<code>sysfs on </code><code>/sys</code> <code>type</code> <code>sysfs (rw)</code>

<code>2、查看伪文件系统生成的文件</code>

<code>[root@localhost ~]</code><code># ls /sys</code>

<code>block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power</code>

<code>3、卸载伪文件系统</code>

<code>[root@localhost ~]</code><code># umount sysfs</code>

<code>[root@localhost ~]</code><code># umount /sys</code>

<code>4、查看 </code>

<code>[root@localhost ~]</code><code># echo $?</code>

<code>0</code>

<code>5、挂载伪文件系统</code>

<code>[root@localhost ~]</code><code># blkid sysfs  ##伪文件系统,不是文件系统</code>

<code>2</code>

<code>[root@localhost ~]</code><code># mount -t sysfs sysfs /sys</code>

<code>6、查看</code>

<code>[root@localhost ~]</code><code># !ls</code>

<code>ls</code> <code>/sys</code>

4、目录绑定

<code>##将newdir作为olddir的访问入口</code>

<code>mount</code> <code>--bind olddir newdir</code>

<code>1、显示</code><code>/mnt</code><code>下的文件</code>

<code>2、显示</code><code>/sys</code><code>下的文件</code>

<code>3、绑定目录 </code>

<code>[root@localhost ~]</code><code># mount --bind /sys /mnt</code>

<code>4、显示Newdir</code>

<code>5、查看挂载信息</code>

<code>/sys</code> <code>on </code><code>/mnt</code> <code>type</code> <code>none (rw,bind)</code>

OPTIONS:

-r 只读挂载

<code>1、测试挂载</code>

<code>2、查看挂载信息</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (rw)    </code><code>##访问权限为读写</code>

<code>3、卸载后,重新挂载</code>

<code>[root@localhost ~]</code><code># mount -r /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (ro)    </code><code>##访问权限为只读</code>

 挂载时,内核将信息记录于/proc/mounts文件中,然后同步至/etc/mtab文件中

-n 此次挂载不同步信息

<code>##以上挂载,mount命令均能显示其挂载信息</code>

<code>##不同步信息挂载</code>

<code>[root@localhost ~]</code><code># mount -n /dev/sda3 /mnt</code>

<code>/dev/mapper/myvg-lv_root</code> <code>on / </code><code>type</code> <code>ext4 (rw)</code>

<code>/dev/sda1</code> <code>on </code><code>/boot</code> <code>type</code> <code>ext4 (rw)</code>

<code>/dev/mapper/myvg-lv_home</code> <code>on </code><code>/home</code> <code>type</code> <code>ext4 (rw)</code>

<code>/dev/mapper/myvg-lv_usr</code> <code>on </code><code>/usr</code> <code>type</code> <code>ext4 (rw)</code>

<code>/dev/mapper/myvg-lv_var</code> <code>on </code><code>/var</code> <code>type</code> <code>ext4 (rw)</code>

<code>none on </code><code>/proc/sys/fs/binfmt_misc</code> <code>type</code> <code>binfmt_misc (rw)</code>

<code>##查看内核记录在/proc/mounts文件中的信息。</code>

<code>[root@localhost ~]</code><code># cat /proc/mounts | fgrep dev/sda3</code>

<code>/dev/sda3</code> <code>/mnt</code> <code>ext4 rw,relatime,barrier=1,data=ordered 0 0</code>

-a   挂载所有定义在fstab文件中且设备挂载选项支持自动挂载的设备

<code>1</code><code>、定义fstab</code>

<code>/dev/sdb1               /mydata                 ext4    defaults,acl    </code><code>2</code>       <code>3</code>

<code>2</code><code>、创建MOUNT_POINT</code>

<code>install -d /mydata</code>

<code>2</code><code>、自动挂载</code>

<code>[root@localhost ~]# mount | fgrep /mydata</code>

<code>[root@localhost ~]# echo $?</code>

<code>1</code>

<code>[root@localhost ~]# mount -a -v </code>

<code>mount: UUID=5009dc18-28f5-4b32-8c7c-0ea1328ea224 already mounted on /boot</code>

<code>mount: /dev/mapper/myvg-lv_home already mounted on /home</code>

<code>mount: /dev/mapper/myvg-lv_usr already mounted on /usr</code>

<code>mount: /dev/mapper/myvg-lv_</code><code>var</code> <code>already mounted on /</code><code>var</code>

<code>mount: tmpfs already mounted on /dev/shm</code>

<code>mount: devpts already mounted on /dev/pts</code>

<code>mount: sysfs already mounted on /sys</code>

<code>mount: proc already mounted on /proc</code>

<code>/dev/sdb1 on /mydata type ext4 (rw,acl)</code>

<code>3</code><code>、查看:</code>

-v  挂载信息

<code>[root@localhost mnt]</code><code># mount -v -o remount,ro,defaults /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (ro)</code>

<code>[root@localhost /]</code><code># umount /mnt</code>

<code>[root@localhost /]</code><code># mount -v /dev/sda3 /mnt</code>

<code>mount</code><code>: you didn't specify a filesystem </code><code>type</code> <code>for</code> <code>/dev/sda3</code>

<code>       </code><code>I will try </code><code>type</code> <code>ext4</code>

-o options:

defaults CentOS 默认挂载选项: rw, suid, dev, exec, auto, nouser, async, and relatime.

    man mount中查看

<code>[root@localhost ~]</code><code># mount -o defaults /dev/sda3 /mnt</code>

<code>[root@localhost ~]</code><code># mount | fgrep /mnt</code>

<code>********其他默认的属性信息不会显示********</code>

ext4系列的文件系统,默认async,nodiratime

CentOS7,默认acl

sync 同步IO

<code>[root@localhost ~]</code><code># mount -o sync /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (rw,</code><code>sync</code><code>)</code>

nosuid  挂载的设备上的文件有suid权限时,不能运行为一个进程

<code>[root@localhost ~]</code><code># !umount</code>

<code>umount</code> <code>/mnt</code>

<code>[root@localhost ~]</code><code># mount -o nosuid /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (rw,nosuid)</code>

remount 重新挂载,不卸载的情况下,完成设备重新挂载,用于修改挂载属性

<code>##方法一</code>

<code>[root@localhost ~]</code><code># mount -o remount,ro /dev/sda3 /mnt</code>

<code>##方法二</code>

<code>[root@localhost /]</code><code># mount -o remount,diratime,defaults /dev/sda3</code>

<code>[root@localhost /]</code><code># mount -o remount,diratime,defaults /mnt</code>

nodev   挂载的文件系统上,有设备文件,不能使用

<code>[root@localhost ~]</code><code># mount -o nosuid,nodev /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (rw,nosuid,nodev)</code>

noexec  挂载的文件系统上,有程序文件,不能运行为一个进程

<code>[root@localhost ~]</code><code># mount -o remount,ro,noexec /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (ro,noexec)</code>

noauto  挂载的文件系统,不支持通过 fstab文件自动挂载

<code>[root@localhost ~]</code><code># mount -o remount,ro,noexec,noauto /dev/sda3 /mnt</code>

默认属性,默认只显示rw,修改为Noauto也不会显示

user      挂载的设备能被普通用户挂载

<code>[root@localhost ~]</code><code># mount -o remount,ro,noexec,noauto,user /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (ro,noexec,nosuid,nodev)</code>

当调整为普通用户可挂载时,自动进行,调整为其内部的设备不可用。且用户可挂载此设备属性不会显示

<code>[root@localhost ~]</code><code># mount -o remount,ro,noexec,noauto,user,dev /dev/sda3 /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (ro,noexec,nosuid)</code>

noatime 挂载的文件系统,不更新文件访问时间戳

    atime: 每次访问文件时,更新磁盘中的文件的时间戳。写磁盘产生,IO产生

##测试默认属性

<code>##默认挂载</code>

<code>[root@localhost </code><code>dir</code><code>]</code><code># blkid /dev/sda3  ##文件系统类型为ext4</code>

<code>##测试访问</code>

<code>[root@localhost ~]</code><code># cd /mnt/dir</code>

<code>[root@localhost ~]</code><code># touch a</code>

<code>[root@localhost </code><code>dir</code><code>]</code><code># stat a</code>

<code>Access: 2017-08-09 05:42:49.662993539 +0800</code>

<code>Modify: 2017-08-09 05:42:49.662993539 +0800</code>

<code>Change: 2017-08-09 05:42:49.766999113 +0800</code>

<code>[root@localhost </code><code>dir</code><code>]</code><code># cat a</code>

<code>[root@localhost </code><code>dir</code><code>]</code><code># date</code>

<code>2017年 08月 09日 星期三 05:44:05 CST</code>

<code>#查看访问时间戳</code>

<code>Access: 2017-08-09 05:44:02.933994163 +0800  </code><code>##改变</code>

##关闭atime

<code>#关闭</code>

<code>[root@localhost /]</code><code># mount -o defaults,remount,noatime /mnt</code>

<code>#查看属性</code>

<code>[root@localhost /]</code><code># mount | fgrep /mnt</code>

<code>/dev/sda3</code> <code>on </code><code>/mnt</code> <code>type</code> <code>ext4 (rw,noatime)</code>

<code>#访问文件系统下的文件</code>

<code>[root@localhost /]</code><code># cd /mnt/dir</code>

<code>访问前</code>

<code>Access: 2017-08-09 05:44:02.933994163 +0800</code>

<code>2017年 08月 09日 星期三 06:09:22 CST</code>

<code>访问</code>

<code>访问后的时间</code>

<code>Access: 2017-08-09 05:44:02.933994163 +0800   </code><code>##没有变...</code>

diratime/nodiratime 目录访问时间戳

    ext默认不启用目录访问时间戳

<code>[root@localhost </code><code>dir</code><code>]</code><code># cd ..</code>

<code>[root@localhost mnt]</code><code># stat dir</code>

<code>Access: 2017-08-09 05:43:50.596000162 +0800</code>

<code>Modify: 2017-08-09 05:42:49.790996746 +0800</code>

<code>Change: 2017-08-09 05:42:49.790996746 +0800</code>

<code>[root@localhost mnt]</code><code># cd dir </code>

<code>[root@localhost mnt]</code><code># !stat</code>

<code>stat </code><code>dir</code>

<code>Access: 2017-08-09 05:43:50.596000162 +0800  </code><code>##不变</code>

##启用diratime

<code>[root@localhost mnt]</code><code># mount -o remount,diratime,atime /mnt</code>

<code>  </code><code>File: </code><code>"dir"</code>

<code>  </code><code>Size: 4096       Blocks: 8          IO Block: 4096   目录</code>

<code>Device: 803h</code><code>/2051d</code> <code>Inode: 518145      Links: 2</code>

<code>Access: (0755</code><code>/drwxr-xr-x</code><code>)  Uid: (    0/    root)   Gid: (    0/    root)</code>

<code>[root@localhost mnt]</code><code># cd dir</code>

mount命令挂载特性总结:

auto和user,无论启用或关闭均不会显示

目录diratime默认不启用。文件atime默认启用

默认为async

写时复制和原地读写

shell程序 (特殊字符的转换,词法/语法分析) ---&gt; 提交给内核 --&gt;内核加载把程序从磁盘加载至内存,分配CPU时针周期,内存资源的分配--&gt;轮到程序在CPU上运行时--&gt; CPU加载指令--&gt; 运行指令 --&gt;指令运行需要数据时,从内存中读取数据

<a href="https://s5.51cto.com/wyfs02/M01/9E/0A/wKioL1mKireCcPm0AACi6XyzXB4136.png" target="_blank"></a>

程序运行完成了,就会将内存中的数据同步至磁盘.同步的方式有"同步IO" "异步IO"

<a href="https://s4.51cto.com/wyfs02/M00/9E/0A/wKioL1mKixrA2Iw5AACBEmLlKeo067.png" target="_blank"></a>

本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1954736,如需转载请自行联系原作者

继续阅读