linux文件系統掛載

掛載mount

掛載:
    將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為

卸載:
    為解除此關聯關系的過程

把設備關聯掛載點:mount Point
mount

卸載時:
    可使用設備,也可以使用掛載點
    umount

掛載點下原有文件在掛載完成后會被臨時隱藏

掛載點目錄一般為空

用mount命令掛載文件系統

掛載方法:mount DEVICE MOUNT_POINT

mount 不帶任何參數
通過查看/etc/mtab文件顯示當前已掛載的所有設備

mount [-fnrsvw] [-t vfstype] [-o options] device dir

    device:指明要掛載的設備;
        (1) 設備文件:例如/dev/sda5
        (2) 卷標:-L 'LABEL', 例如-L 'MYDATA'
        (3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'
        (4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs

    dir:掛載點
        事先存在;建議使用空目錄
        進程正在使用中的設備無法被卸載

    -o options 掛在選項開啟關閉什么功能。  man mount FILESYSTEM INDEPENDENT MOUNT OPTIONS

mount常用命令選項

-r: readonly,只讀掛載  光驅只能只讀掛載,其他文件系統也可以掛載,防止文件被修改
-w: read and write, 讀寫掛載 (默認讀寫)
-n: 不更新/etc/mtab,默認掛載會卸載都會同步更新此文件。mtab的內容與mount命令內容基本一致。
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
-B, --bind: 綁定目錄到另一個目錄上  目錄掛載到目錄上
-t vsftype:指定要掛載的設備上的文件系統類型 多數情況下可省略。mount會自動通過

目錄綁定
mount --bind 源目錄 目標目錄


blkid命令識別設備類型。
查看內核追蹤到的已掛載的所有設備:
cat /proc/mounts

mount常用命令選項

-o options:(掛載文件系統的選項),多個選項使用逗號分隔
    async:異步模式
    sync:同步模式,內存更改時,同時寫磁盤
    atime/noatime:包含目錄和文件 是否更新訪問時間。
    diratime/nodiratime:是否更新目錄的訪問時間戳
    auto/noauto:是否支持自動掛載,是否支持-a選項
    exec/noexec:是否支持將文件系統上運行應用程序
    dev/nodev:是否支持在此文件系統上使用設備文件
    suid/nosuid:不否支持suid和sgid權限
    remount:重新掛載 需要重新掛載的設備,不需要卸載再掛載。此參數可實現。
    ro:只讀
    rw:讀寫
    user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
    acl:啟用此文件系統上的acl功能
    suid:是否允許特殊權限生效

Defaults:相當于rw, suid, dev, exec, auto, nouser, async

使用技巧:

查看當前系統所有已掛載的設備
    mount
    cat /etc/mtab
    cat /proc/mounts  這個是最準確的。

卸載命令

查看掛載情況:
    #findmnt MOUNT_POINT

    [root@localhost ~]# findmnt
    TARGET                           SOURCE     FSTYPE     OPTIONS
    /                                /dev/sda2  xfs        rw,relatime,attr2,inode64,noquota
    ├─/sys                           sysfs      sysfs      rw,nosuid,nodev,noexec,relatime
    │ ├─/sys/kernel/security         securityfs securityfs rw,nosuid,nodev,noexec,relatime
    │ ├─/sys/fs/cgroup               tmpfs      tmpfs      ro,nosuid,nodev,noexec,mode=755
    │ │ ├─/sys/fs/cgroup/systemd     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd
    │ │ ├─/sys/fs/cgroup/memory      cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,memory
    │ │ ├─/sys/fs/cgroup/net_cls     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,net_cls
    │ │ ├─/sys/fs/cgroup/hugetlb     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,hugetlb
    │ │ ├─/sys/fs/cgroup/cpuset      cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,cpuset
    │ │ ├─/sys/fs/cgroup/blkio       cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,blkio
    │ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,cpuacct,cpu
    │ │ ├─/sys/fs/cgroup/perf_event  cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,perf_event
    │ │ ├─/sys/fs/cgroup/freezer     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,freezer
    │ │ └─/sys/fs/cgroup/devices     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,devices
    │ ├─/sys/fs/pstore               pstore     pstore     rw,nosuid,nodev,noexec,relatime
    │ ├─/sys/kernel/debug            debugfs    debugfs    rw,relatime
    │ └─/sys/kernel/config           configfs   configfs   rw,relatime
    ├─/proc                          proc       proc       rw,nosuid,nodev,noexec,relatime
    │ ├─/proc/sys/fs/binfmt_misc     systemd-1  autofs     rw,relatime,fd=34,pgrp=1,timeout=300,minproto=5,maxproto=5,direct
    │ └─/proc/fs/nfsd                nfsd       nfsd       rw,relatime
    ├─/dev                           devtmpfs   devtmpfs   rw,nosuid,size=486144k,nr_inodes=121536,mode=755
    │ ├─/dev/shm                     tmpfs      tmpfs      rw,nosuid,nodev
    │ ├─/dev/pts                     devpts     devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
    │ ├─/dev/mqueue                  mqueue     mqueue     rw,relatime
    │ └─/dev/hugepages               hugetlbfs  hugetlbfs  rw,relatime
    ├─/run                           tmpfs      tmpfs      rw,nosuid,nodev,mode=755
    │ └─/run/user/0                  tmpfs      tmpfs      rw,nosuid,nodev,relatime,size=100136k,mode=700
    ├─/var/lib/nfs/rpc_pipefs        sunrpc     rpc_pipefs rw,relatime
    ├─/usr                           /dev/sda3  xfs        rw,relatime,attr2,inode64,noquota
    └─/boot                          /dev/sda1  xfs        rw,relatime,attr2,inode64,noqu

查看正在訪問指定文件系統的進程:

    #lsof MOUNT_POINT
    #fuser -v MOUNT_POINT

終止所有在正訪問指定的文件系統的進程:

    # fuser -km MOUNT_POINT 謹慎使用

卸載:

    # umount DEVICE
    # umount MOUNT_POINT

掛載實例

查看分區信息
[root@localhost ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00026d95

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1001471      499712   83  Linux
/dev/sda2         1001472    84887551    41943040   83  Linux
/dev/sda3        84887552   126830591    20971520   83  Linux
/dev/sda4       126830592   251658239    62413824    5  Extended
/dev/sda5       126834688   131031039     2098176   82  Linux swap / Solaris
/dev/sda6       126832640   126834687        1024   83  Linux
/dev/sda7       131033088   172976127    20971520   83  Linux
/dev/sda8       172978176   193949695    10485760   83  Linux


查看已經掛載的分區
[root@localhost ~]# mount | grep "sda"
/dev/sda2 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda3 on /usr type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)

查看分區類型、卷標、uuid
root@localhost ~]# blkid /dev/sda7
/dev/sda7: LABEL="mydate" UUID="dfc6560a-aad9-4df1-b79a-b5316620bc1e" TYPE="ext4" 

掛載文件系統
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# mount /dev/sda7 /mydata

掛載點和/etc/fstab

配置文件系統體系
被mount、fsck和其它程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統

文件掛載配置文件

/etc/fstab每行定義一個要掛載的文件系統;
要掛載的設備或偽文件系統
掛載點
文件系統類型
掛載選項
轉儲頻率
自檢次序

要掛載的設備或偽文件系統:
    設備文件、LABEL(LABEL="")、UUID(UUID="")、偽文件系統名稱(proc, sysfs)
掛載選項:defaults
轉儲頻率:0:不做備份
    1:每天轉儲
    2:每隔一天轉儲
自檢次序:0:不自檢
    1:首先自檢;一般只有rootfs才用1

處理交換文件和分區

交換分區是系統RAM的補充

基本設置包括:
    ?創建交換分區或者文件
    ?使用mkswap寫入特殊簽名
    ?在/etc/fstab文件中添加適當的條目
    ?使用swapon -a 激活交換空間

掛載交換分區

swap

linux上的交換分區必須使用獨立的文件系統
    且文件系統的systemid必須為82
 mkswap [options] device [size] 創建交換分區文件系統
啟用:swapon
    swapon[OPTION]... [DEVICE]
    -a:激活所有的交換分區;
    -p PRIORITY:指定優先級
    /etc/fstab:pri=value

禁用:swapoff[OPTION]... [DEVICE]

SWAP的優先級

用戶可以給某個swap指定一個0到32767的優先級

如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減一。

先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級(是正數)永遠高于核心缺省指定的優先級(是負數)。

優化性能:分布存放,高性能磁盤存放

移動介質

掛載(Mounting)意味著使外來的文件系統看起來如同是主目錄樹的一部分。
訪問前、介質必須被掛載
摘除時,介質必須被卸載
按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)
掛載點通常在/media 或/mnt下

使用光盤

在圖形環境下自動啟動掛載 /run/media/<user>/<label>

否則就必須被手工掛載
    mount -r /dev/cdrom/ mnt/

eject命令卸載或彈出磁盤

創建ISO鏡像文件
    cp /dev/cdrom /root/centos7.iso

    mkisofs -r -o /root/etc.iso /etc

刻錄光盤
    wodim–v –eject centos.iso

掛載USB介質

被內核探測為SCSI設備
    ?/dev/sdaX、/dev/sdbX、或類似的設備文件

在圖形環境中自動掛載
    ?圖標在[計算機]窗口中創建
    ?掛載在/run/media/<user>/<label>
    ?手動掛載
    ?mount /dev/sdb1 /mnt

常見工具

內存空間使用狀態:
    free [OPTION]
    -m: 以MB為單位
    -g: 以GB為單位
文件系統空間占用等信息的查看工具:
    df[OPTION]... [FILE]...
    -H 1000
    -T 文件系統類型
    -h: human-readable
    -i:inodesinstead of blocks
    -P: 以Posix兼容的格式輸出
查看某目錄總體空間占用狀態:
    du [OPTION]... DIR
    -h: human-readable
    -s: summary

工具dd

dd命令:convert and copy a file

用法:
    ddif=/PATH/FROM/SRC of=/PATH/TO/DEST
    bs=#:block size, 復制單元大小
    count=#:復制多少個bs

of=file寫到所命名的文件而不是到標準輸出
if=file從所命名文件讀取而不是從標準輸入
bs=size指定塊大?。仁鞘莍bs也是obs)
    ibs=size一次讀size個byte
    obs=size 一次寫size個byte

cbs=size 一次轉化size個byte
skip=blocks從開頭忽略blocks個ibs大小的塊
seek=blocks從開頭忽略blocks個obs大小的塊
count=n只拷貝n個記錄
conv=conversion[,conversion...] 用指定的參數轉換文件。
轉換參數:
    ascii 轉換EBCDIC 為ASCII。
    ebcdic 轉換ASCII 為EBCDIC。
    block 轉換為長度為cbs 的記錄,不足部分用空格填充。
    unblock 替代cbs長度的每一行尾的空格為新行。
    lcase 把大寫字符轉換為小寫字符。
    ucase 把小寫字符轉換為大寫字符。
    swab 交換輸入的每對字節。
noerror 出錯時不停止。
notrunc 不截短輸出文件。  直接替換內容而不是給短輸出文件,不改變文件大小
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊

注意:skip=xxx是在備份時對if 后面的部分也就是原文件跳過多少塊再開始備份;seek=xxx則是在備份時對of 后面的部分也就是目標文件跳過多少塊再開始寫。

磁盤拷貝:
    dd if=/dev/sdaof=/dev/sdb

備份MBR:
    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破壞MBR中的bootloader:
    dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

有二進制文件fileA,size>2K?,F在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?
    #dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
        notrunc 不截短輸出文件。  直接替換內容而不是給短輸出文件,不改變文件大小


備份:
    dd if=/dev/sdx of=/dev/sdy
    將本地的/dev/sdx整盤備份到/dev/sdy  設備對拷

    dd if=/dev/sdx of=/path/to/image
    將/dev/sdx全盤數據備份到指定路徑的image文件  將整個設備里的二進制內容保存為一個文件

    dd if=/dev/sdx | gzip >/path/to/image.gz
    備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑

恢復:
    dd if=/path/to/image of=/dev/sdx
    將備份文件恢復到指定盤
    gzip -dc /path/to/image.gz | dd of=/dev/sdx
    將壓縮的備份文件恢復到指定盤


拷貝內存資料到硬盤
    dd if=/dev/mem of=/root/mem.bin bs=1024
    將內存里的數據拷貝到root目錄下的mem.bin文件

從光盤拷貝iso鏡像
    dd if=/dev/cdrom of=/root/cd.iso
    拷貝光盤數據到root文件夾下,并保存為cd.iso文件

銷毀磁盤數據
    dd if=/dev/urandom of=/dev/sda1
    利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/dev/sda1將無法掛載,創建和拷貝操作無法執行。


得到最恰當的block size
    dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
    dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
    dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
    dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

    通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size大小

測試硬盤讀寫速度
    dd if=/root/1Gb.file bs=64k | dd of=/dev/null
    dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
    通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度

修復硬盤
dd if=/dev/sda of=/dev/sda

當硬盤較長時間(比如1,2年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。

原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/40807

(0)
yywyyw
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • 文本處理三劍客-grep及正則表達式初

    什么是正則表達式 基本正則表達式的元字符 擴展正則表達式 grep的基本理解 grep的基本選項 grep的應用實例 什么是正則表達式   正則表達式,又稱正規表示法、常規表示法。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表通常被用來檢索、替換那些符合某個模式的文本。(…

    Linux干貨 2016-08-07
  • RAID簡述和Linux軟RAID配置

    RAID簡述和Linux軟RAID配置 PS:僅為課程練習,原理和配置可能有誤,僅供參考,謝謝; 1.RAID功能簡述     RAID,全稱(Redundant Arrays of Inexpensive Disk或Redundant Arrays of Independent Disk),現在一般多用于后面那個稱呼,獨立磁盤冗余陣列。RAID的基礎概念大…

    Linux干貨 2016-07-17
  • linux下手工創建新用戶

    當我們要創建一個用戶時,通常使用useradd命令就可以自動創建了一個用戶;實際上,在linux下,一切皆文件,設置好幾個文件,也是可以創建出一個用戶: 文件如下: /etc/passwd  :用戶 /etc/shadow  :密碼 /home/username:用戶家目錄 /etc/group:用戶組 /etc/skel/*: &nbs…

    Linux干貨 2015-03-30
  • 命令find應用

    作業:  查找/var目錄下屬主為root,且屬組為mail的所有文件 [root@localhost bin]# find /var/ -user root -group mail     2. 查找/var目錄下不屬于root、lp、gdm的所有文件    [root@localhost bin…

    Linux干貨 2016-08-22
  • 自制linux和內核編譯

    自制linux和內核編譯 1、分區并創建文件系統 fdisk /dev/sdb分兩個必要的分區/dev/sdb1對應/boot /dev/sdb2對應根/mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2 2、掛載boot mkdir/mnt/bootmount /dev/sdb1 /mnt/boot 3、安裝grub grub-i…

    Linux干貨 2016-09-23
  • Flex Ant自動構建

    1.  Flex SDK Ant        Flex開發者會遇到很多,比如自動構建,在一個有著N多模塊,N處源碼,構建過程復雜的Flex項目開發中,依賴人力手工構建項目非常不現實(機械重復且枯燥無味的過程,相信哪位開發人員都會避之唯恐不及,而且對于人力是非常大的浪費),而通過使用Ant,我們可以將這些工作…

    Linux干貨 2016-03-22
欧美性久久久久