linux 文件系統管理三部曲之三:掛載文件系統

来源:https://www.cnblogs.com/xiaoshiwang/archive/2020/01/02/12142328.html
-Advertisement-
Play Games

"linux 文件系統管理三部曲之一:磁碟分區" "linux 文件系統管理三部曲之二:創建文件系統" 上面說明瞭,硬碟的劃分和格式化,那麼怎麼使用,還沒說,這裡說一下,怎麼使用創建好的文件系統。 使用文件系統 只要把文件系統“掛載”到某個目錄上,就可以通過這個目錄訪問文件系統了。 這個目錄就叫做: ...


linux 文件系統管理三部曲之一:磁碟分區

linux 文件系統管理三部曲之二:創建文件系統

上面說明瞭,硬碟的劃分和格式化,那麼怎麼使用,還沒說,這裡說一下,怎麼使用創建好的文件系統。

使用文件系統

只要把文件系統“掛載”到某個目錄上,就可以通過這個目錄訪問文件系統了。

  • 這個目錄就叫做:掛載點(mount_point):用於作為另一個文件系統的訪問入口。

    掛載點的目錄要滿足的條件:

    1,事先存在

    2,為被使用過的,並且不會被其他進程使用

    3,掛載點下,原有的文件,掛載後會被隱藏

  • 這個“掛”上去的動作,就是mount命令。

  • 把掛載點,摘下來的動作,就是umount命令。

umount命令用法:

umount device|dir

註意:如果某個用戶的某個進程在使用這個掛載點,則無法umout,直到使用這個掛載點的進程退出。

比如,某個用戶,cd進入到了掛載點,這時系統管理員執行umount命令,則顯示如下:

# umount /mnt
umount: /mnt: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

1,查看哪個用戶的哪個進程在使用掛載點

  • lsof mount_point

    ]# lsof /mnt
    lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
          Output information may be incomplete.
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    5482 root  cwd    DIR   8,17     1024    2 /mnt
  • fuser -v mount_point

    # fuser -v /mnt
                         USER        PID ACCESS COMMAND
    /mnt:                root     kernel mount /mnt
                         root       5482 ..c.. bash

2,殺死使用掛載點的所以進程:fuser -km mount_point

# fuser -km /mnt/
/mnt:                 5482c

mount命令用法

直接執行mount命令,顯示出當前系統的掛載情況。註意,在centOS7下,顯示的內容比較多,裡面比CentOS6多了cgroup的掛載信息。

1,基本用法

  • 語法:mount [-fnrsvw][-t vfstype] [-o options] device dir

    # mount /dev/sdb1 /mnt
  • 以只讀方式掛載:-r

  • 以可讀寫方式掛載:-w

  • 掛載時不更新/etc/mtab文件:-n

    /etc/mtab文件里,保存了當前的掛載情況,每掛載一個文件系統,就在此文件追加一行,卸載文件系統後,就刪除追加的行。當/etc目錄下的文件不可以寫入時,可以使用此選項。但,在CentOS7上即使指定了-n,也更新了/etc/mtab文件。

  • 指定要掛載設備的文件系統類型:-t

    一般可以省略,mount目錄會自動根據blkid命令的結果,找到要掛載設備的文件系統類型。

  • 不指定設備文件,而是通過指定捲標,來掛載:-L

    # e2label /dev/sdb1 m1
    # blkid /dev/sdb1
    /dev/sdb1: LABEL="m1" UUID="4752177b-e026-483d-b166-19229b64e4c3" TYPE="ext2"
    # mount -L m1 /mnt
  • 不指定設備文件,而是通過指定UUID,來掛載:-U

    # mount -U 4752177b-e026-483d-b166-19229b64e4c3 /mnt

2,掛載選項(-o options):下麵是-o後面的選項的具體值。

  • sync/async:當寫入到磁碟時,是馬上就寫到磁碟上,還是先不急,等會一起寫入到磁碟的選項。

    sync:馬上寫入到磁碟

    async:稍等一會再寫入磁碟。所以,async的性能好!

  • atime/noatime:文件或目錄在被訪問後,是否更新其訪問時間戳

  • diratime/nodiratime:目錄在被訪問後,是否更新其訪問時間戳

  • remount:當想增加掛載選項時,但又不想卸載文件系統。使用此選項自動重新掛載文件系統,並讓新的掛載選項生效。

    比如,掛載的時候,指定的是只讀選項,但想改成可讀寫,就可以用下麵的用法,/mnt/t1是掛載點。

    mount -o remount rw /mnt/t1
  • acl:使facl功能有效,也就是setfacl功能生效。

  • ro:只讀

  • rw:讀寫

  • dev/nodev:此文件系統上是否允許識別(interpret )設備文件。即使是nodev,也可以使用mknod命令創建設備文件。

  • exec/noexec:是否允許在此文件系統上運行程式

  • suid/nosuid:是否允許程式文件上的suid和sgid特殊許可權生效。

  • relatime/norelatime:是否允許根據modify time或change time去更新 access time。

  • defaults:當不只讀options時,實際是:rw, suid, dev, exec, auto, nouser, and async被啟用了。

3,綁定目錄到掛載點。

mount命令不僅可以掛載設備文件到掛載點,還可以掛載別的目錄到掛載點。使用--bind

# mount --bind /etc /mnt

4,查看掛載了哪些設備

  • mount
  • cat /etc/mtab
  • cat /proc/mounts

5,掛載光碟

一般光碟的設備文件是/dev/cdrom或/dev/dvd

# mount -r /dev/cdrom /mnt

6,掛載u盤

和掛載分區沒什麼區別,只是需要先找到u盤對應的設備文件,可以通過文件的大小去判斷哪個設備文件是u盤。

7,掛載本地迴環文件(ios文件,img文件等)

# mount -o loop /tmp/ttylinux.so /mnt

啟用swap分區

  • 啟用:swapon [option] device

    -a:定義在/etc/fstab文件中的所有設備

    # fdisk -l /dev/sdb6
    Disk /dev/sdb6: 26 MB, 26214400 bytes, 51200 sectors
    # mkswap /dev/sdb6
    mkswap: /dev/sdb6: warning: wiping old swap signature.
    Setting up swapspace version 1, size = 25596 KiB
    no label, UUID=a4dc9e83-5e28-49e1-9aa0-6e7059fcb227
    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3789         631        2547          21         610        2872
    Swap:          3967           0        3967
    # swapon /dev/sdb6
    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3789         631        2547          21         610        2872
    Swap:          3992           0        3992
    # swapoff /dev/sdb6
    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3789         631        2546          21         610        2871
    Swap:          3967           0        3967
  • 禁用:swapoff [option] device

    -a:定義在/etc/fstab文件中的所有設備

根下哪些目錄是和根目錄在同一個分區,哪些目錄可以是在獨立的分區呢?

一般usr,var,home目錄可以不和根目錄在同一個分區,其他的大部分必須和根目錄在同一個分區。

那麼問題來了,既然usr等目錄不是和根目錄在同一個分區,那麼它們是怎麼在系統開機後自動掛載上去呢?

在/etc/fstab文件里定義的設備文件,開機後會自動掛載。

  • 解讀/etc/fstab文件中各個列的含義

    • 第一列:設備文件,或UUID,或LABLE

    • 第二列:掛載點

      swap類型的文件系統的掛載點不是目錄,直接是【swap】

    • 第三列:文件系統類型

    • 第四列:掛載選項

      如果有多個掛載選項,用逗號分隔。例如:defaults,acl,noexec

    • 第五列:備份頻率

      0:從不備份

      1:每天備份

      2:隔天備份

    • 第六列:自檢次序

      0:不自檢

      1:第一個自檢。通常只能是根文件系統可以使用1.

      2:第二個自檢。可以把根文件系統以外的文件系統設置成2.

      ...

    # cat /etc/fstab
    
    #
    # /etc/fstab
    # Created by anaconda on Fri Nov 29 16:44:28 2019
    #
    # 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
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=3d3b316a-529e-484a-9895-e785fdde5365 /boot                   xfs     defaults        0 0
    /dev/mapper/centos-home /home                   xfs     defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0

mount -a目錄會自動把/etc/fstab文件里定義的設備,全部掛載

下麵的一行,是自己追加的。

/dev/sdb5 /mnt/t2                    ext3    defaults,acl        0 0

顯示文件系統的空間使用狀況:df

  • 顯示所有文件系統的空間使用狀況:df

    # df
    Filesystem              1K-blocks     Used Available Use% Mounted on
    /dev/mapper/centos-root  38815216 18982084  19833132  49% /
    devtmpfs                  1923436        0   1923436   0% /dev
    tmpfs                     1940308     9712   1930596   1% /run
    tmpfs                     1940308        0   1940308   0% /sys/fs/cgroup
    /dev/mapper/centos-home  18950144  1842644  17107500  10% /home
    tmpfs                      388064        4    388060   1% /run/user/42
    tmpfs                      388064       32    388032   1% /run/user/1000
    /dev/sda1                 1038336   182380    855956  18% /boot
    /dev/sdb5                   45478      827     42091   2% /mnt/t2
  • 顯示所有文件系統的空間使用狀況:df -l

    # df -l
    Filesystem              1K-blocks     Used Available Use% Mounted on
    /dev/mapper/centos-root  38815216 18982116  19833100  49% /
    devtmpfs                  1923436        0   1923436   0% /dev
    tmpfs                     1940308     9712   1930596   1% /run
    tmpfs                     1940308        0   1940308   0% /sys/fs/cgroup
    /dev/mapper/centos-home  18950144  1842644  17107500  10% /home
    tmpfs                      388064        4    388060   1% /run/user/42
    tmpfs                      388064       32    388032   1% /run/user/1000
    /dev/sda1                 1038336   182380    855956  18% /boot
    /dev/sdb5                   45478      827     42091   2% /mnt/t2
  • 顯示文件系統的空間使用狀況(適合閱讀):df -h

    # df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   38G   19G   19G  49% /
    devtmpfs                 1.9G     0  1.9G   0% /dev
    tmpfs                    1.9G  9.5M  1.9G   1% /run
    tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/mapper/centos-home   19G  1.8G   17G  10% /home
    tmpfs                    379M  4.0K  379M   1% /run/user/42
    tmpfs                    379M   32K  379M   1% /run/user/1000
    /dev/sda1               1014M  179M  836M  18% /boot
    /dev/sdb5                 45M  827K   42M   2% /mnt/t2
  • 顯示所有文件系統的inode的使用狀況:df -i

    # df -i
    Filesystem                Inodes  IUsed    IFree IUse% Mounted on
    /dev/mapper/centos-root 19417088 416785 19000303    3% /
    devtmpfs                  480859    403   480456    1% /dev
    tmpfs                     485077    751   484326    1% /run
    tmpfs                     485077     16   485061    1% /sys/fs/cgroup
    /dev/mapper/centos-home  9480192    912  9479280    1% /home
    tmpfs                     485077      6   485071    1% /run/user/42
    tmpfs                     485077     19   485058    1% /run/user/1000
    /dev/sda1                 524288    341   523947    1% /boot
    /dev/sdb5                  12824     11    12813    1% /mnt/t2

顯示目錄下所有文件所占用的空間:du

  • 顯示目錄下每個文件所占用的空間:du

    # du /home/ys/bin/
    56      /home/ys/bin/
    52      /home/ys/sbin/
  • 顯示目錄下所有文件所占用的空間:du -s

    -h:人類可讀。

    # du -s /etc/
    42732   /etc/
    # du -sh /etc/
    42M     /etc/  

複製,剪切,刪除文件操作,對文件系統的影響

  • 複製:等於新建文件
  • 刪除:把block標記為未使用,把inode標記為未使用,把inode和block點陣圖標記為未使用。所以速度很快。
  • 剪切:
    如果在同一個文件系統的話,僅改變路徑,inode不變。
    如果不在同一個文件系統的話,先複製數據到目標文件系統,並刪除原來文件。

c/c++ 學習互助QQ群:877684253

本人微信:xiaoshitou5854


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Entity Framework Core 使用的 Entity Model 是用來表示資料庫裡面的記錄的。 Entity Framework Core 使用的 Entity Model 是用來表示資料庫裡面的記錄的。 而面向外部的 model 則表示了要傳輸的東西。這類 model 有時候叫做 D ...
  • ​.NET 概念比較龐大,本文只討論基礎知識,只用簡單語言描述。 我們是NET程式員,但是我們有沒有思考過到底什麼是.NET ? 官方定義 .NET是微軟推出來的一個致力於敏捷開發的軟體框架。 大概2000年年左右,微軟推出了.NET 標準規範,既然有了標準就等於開發時候定義介面一樣,需要東西去實現 ...
  • 在上一篇 《如何運用領域驅動設計 - 存儲庫》 的文章中,我們講述了有關倉儲的概念和使用規範。倉儲為聚合提供了持久化到本地的功能,但是在持久化的過程中,有時一個聚合根中的各個領域對象會分散到不同的資料庫表裡面;又或者是一個用例操作需要操作多個倉儲;而這些操作都應該要麼同時成功,要麼同時失敗,因此就需... ...
  • 前言 在開發過程中經常會遇到比較排序的問題,比如說對集合數組的排序等情況,基本類型都提供了預設的比較演算法,如string提供了按字母進行排序,而int整數則是根據整數大小進行排序.但是在引用類型中(具有多個欄位),那麼這個排序當然也是取決於我們特定的值。 IComparable介面 該介面由其值可以 ...
  • 前言 今天是2020年一天,去年最後一個月開發了訂單和支付系統,尤其在支付系統和微信對接的時候遇到了很多坑,這裡給大家總結下,以免大家遇到相同的問題還浪費大量時間 微信支付前期準備 1. 微信商戶號,需要 ,`密碼 證書`,證書預設密碼是商戶號 2. 微信app(如 微信小程式 或者 微信公眾號) ...
  • 日誌組件有很多,比如 `log4net` / `nlog` / `serilog` / `microsoft.extensions.logging` 等,如何在切換日誌組件的時候做到不用修改代碼,只需要切換不同的 `loggingProvider` 就可以了,最低成本的降低切換日誌框架的成本,處於這... ...
  • 1. Linux入門(一) 1.1 Linux與Windows的區別 Linux是一款操作系統。(正規的Java的開發是在Linux操作系統下進行的) 伺服器項目部署都是放在Linux操作系統上面。 Windows是微軟開發的操作系統,民用操作系統,可用於娛樂、影音、上網。具有強大的日誌記錄系統和強 ...
  • archlinux安裝 最近迷上了arch跟i3,於是把自己電腦重新安裝了arch,下麵是安裝arch的步驟,i3桌面還在美化中,等美化完成第一時間分享. 安裝使用的鏡像文件版本:5.3.13 電腦為台式主機 如有需要改進的地方請留言評論 安裝前準備 製作啟動u盤 推薦使用 "深度啟動盤製作工具" ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...