天天看點

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,如需轉載請自行聯系原作者

繼續閱讀