文件系統掛載

一、mount、umount、mount -o remount、findmnt、lsof、fuser
二、掛載設置ACL權限、模擬U盤功能、losetup
三、UUID故障處理、分區遷移與恢復、永久掛載光盤分區、掛載USB、永久掛載文件夾
四、SWAP、掛載光盤、制作ISO鏡像、制作Centos6Everthing
五、df、du、dd備份/恢復/修復硬盤

mount

掛載:將額外文件系統目錄與根文件系統目錄建立關聯關系,使得此目錄做為其它文件訪問入口行為。

掛載目錄必須事先存在,因此掛載前必須建立好掛載目錄。? ? ?mkdir /data/sdb2

使用UUID掛載? ? ? ? ? ? ?mount? UUID=”……” /data/sdb2? ? ? ? ? ? #穩定推薦

使用設備名掛載? ? ? ? ? ? mount? /dev/sdb2 /data/sdb2

使用卷標掛載? ? ? ? ? ? ? ? mount? LABEL=/data/sdb2 /data/sdb2

掛載信息會更新? ? ? ? ? ?/etc/mtab文件

mount -o? ?? ? ? ? ? ? ? ? ?掛載文件系統選項,多個選項使用逗號分隔

例如:把目錄對應的掛載設備設為只讀狀態? ? ? ? ? mount -o remount,ro /data/sdb1

async /sync? ? ? ?異步與同步模式

sync同步模式:不經過buffer,系統速度會下降,但是文件實時更新不容易丟失

atime/noatime? ? ? ? ? ? 目錄和文件更新或者不更讀時間

diratime/nodiratime? 目錄更新或不更新讀時間

exec/noexec:是否支持將文件系統上運行應用程序

此功能能夠為臨時接入的硬盤或者U盤臨時禁用執行權限,防止惡意程序感染,有利于安全。

mount -o remount,noexec /data/sdb2? ? ? ?#這樣文件夾下所有可執行文件都不可運行

注意:bash /data/sdb2/f1.sh 依然可以執行,解除非執行狀態? ?mount -o exec,remount /data/sdb2

dev/nodev:是否支持在此文件系統上使用設備文件? ? ?mount -o remount,nodev /data/sdb2

suid/nosuid:是否支持suid和sgid權限? ? ? ? ? ? ? ? ? ? ? ? ? ?mount -o remount,nosuid /data/sdb2

mount -B?? ? ?掛載文件夾? ? ? ? ?例如:mount -B? /data/sbd1 /mnt/sdb1

注意:這種掛載關系df查不到,mount查的到,如果有些文件處于不同的目錄下,但是節點編號相同,連接

數為1,就是這種情況導致。

mount -o remount

命令可以不用取消掛載直接掛載另一個,這樣可以避免其他用戶在用期間進行掛載改掛。

mount -o noacl,remount /dev/sdb1 /data/sdb1

umount

取消掛載:為解除此關聯關系的過程。

可以寫設備名,或者掛載點名皆可。

注意:如果同一文件夾掛載兩個分區a和分區b,會導致第一次掛載的分區a文件無法顯示,這時如果取消掛

載分區a,實際被取消掛載的是分區b。

cat /proc/mounts? ? ?查看所有掛載點,包括隱藏掛載點

findmnt? ? ?查看掛載情況? ? ?如:findmnt /data/sdb1

有則說明已經掛載,反之則尚未掛載,編腳本的時候實現測試是否掛載

findmnt /data/sdb2 &> /dev/null || mount /dev/sdb2 /data/sdb2

lsof? ? ? ? ? ?查看正在訪問指定文件系統的進程? ? ? ? ? ?如: lsof /data/sdb1? 或者? ? fuser -v /data/sdb1

fuser? ? ? ? 終止所有在正訪問指定的文件系統的進程? ? 如:fuser -km /data/sdb1

總結:

1.一個掛載點(文件夾)只能掛一個設備,否則就算掛載成功,最后生效的只是最后一個。

2.掛載分區最好掛載在空文件夾上,不然有可能出現某些原有文件被隱藏無法讀取。(如果想訪問舊文件,

只能取消掛載點)

3.一個設備可以掛載上多個文件夾,看到的內容一樣。

4.對于備份文件目錄可以只讀方式掛載? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mount -r /dev/sdb1 /data/sdb1

5.隱藏掛載,不更新/etc/mtab? 只在Centos6中有效? ? ? ? ? ? ? ? mount-n /dev/sdb1? /data/sdb1

則df以及 mount命令等都查不到掛載更新情況,可事實已經掛載,實現隱藏掛載的功能。

掛載次數和檢查時間間隔

新建位圖圖像 (3)

掛載次數累計達到37次或者時間超過六個月,系統會觸發條件對磁盤進行修復掃描,防止文件系統被破壞

相當于執行fsck /dev/sdb1

觸發次數可以更改? ? ? tune2fs -c 20? /dev/sdb1

ACL權限設定

Centos6下手動增加的分區默認沒有ACL功能,必須手動添加,有兩種方法:

方法一:先取消掛載再重新掛載

生效ACL? ? ? ??umount /data/sdb1? ?;? tune2fs -o acl /data/sdb1? ; mount /data/sdb1

取消ACL? ? ? ?umount /data/sdb1? ? ; tune2fs -o ^acl /data/sdb1 ;mount /data/sdb1

方法二:

生效ACL? ? mount -o acl? /dev/sdb1? data/sdb1

取消ACL? ? ?umount /data/sdb1

如果有用戶正在使用無法取消掛載,則用? ? ?mount -o noacl,remount /dev/sdb1 /data/sdb1

注意:此命令可實現對于根目錄等無法取消掛載的目錄實現重新掛載

實驗:模擬U盤功能

掛載文件? ? mount -o loop 可以掛載文件(文件模擬分區)

dd if=/dev/zero of=/root/p1 bs=1M count=100

mkfs.ext4 p1

blkid p1

mount -o loop /root/p1 /mnt

這樣進入/mnt目錄下看到的文件是儲存在p1文件里,文件p1模擬分區使用,然后當u盤用,用scp命令傳給

別的機子,然后再掛載實現u盤功能。如 :scp p1 192.168.30.100:/data

注意:這里只是臨時生效,并沒有寫入/etc/fstab,如果要永久生效,必須寫入文件,而且不能用UUID,

只能用設備文件名,備注要寫成loop,修改完后執行mount -a 直接生效

新建位圖圖像 (3)

losetup -a? ? 查看所有loop映射關系

Centos6下默認支持最多8個這樣的文件掛載設備,可以手工建立? ? ?mknod /dev/loop8 b 7 8

修改權限? ? ? ?chmod 660 /dev/loop8

如果使用mount -o? loop 系統會默認分配,要指定分配可以使用:? ? losetup /dev/loop8 p2

映射關系建立后掛載:? ? ? ? ?mkdir /data/loop8;mount /dev/loop8 /data/loop8

Centos6如果需要大量增加loop文件可以修改內核文件方法增加:??vim /boot/grub/grub.conf

新建位圖圖像 (3)

kernel行末尾增加內容max_loop=100,必須reboot生效

總結:

1、掛載在文件夾上的可以是分區、文件夾、文件(以后還有網絡分區)

2、默認掛載defaults:相當于rw, suid, dev, exec, auto, nouser, async

3、掛載都是臨時生效,要想永久生效,就必須寫入文件。

修改/etc/fstab內容

新建位圖圖像 (3)

前面的1代表每天備份1次,如果是0就代表不備份,2表示2天備份一次

注意:這樣寫并不代表備份,要結合備份工具才能實現(dump),現在用的較少,一般寫0就可以了。后

面的2代表開機時是否檢查文件系統完整性(fsck),1、2代表檢查次序,0代表不檢查。一般都寫成0這樣

就不會因為錯誤,而導致機子重啟報錯。修改完成后,想不重啟即時生效內容:

mount -a?? 讀取/etc/fstab內容,直接生效。

4、/etc/fstab文件比較重要,建議備份。

注意:

如果原來已經有的某條記錄進行了更改,例如增加ACL功能,然后用mount -a是無法生效的。這時候要

改,可以先取消掛載,然后再重新執行mount -a。但是這種方法有用戶正在訪問的時候不好用。推薦還是

用mount -o remount /data/sdb2進行更改。

實驗:

1、如果更改了UUID但是沒有保存,同時該條記錄設置了開機檢查,重啟報錯怎么辦?

tune2fs -U `uuidgen` /dev/sdb2? ? ? ;? ? ? ?blkid /dev/sdb2

解決方法:

1)這時候機子重啟后是無法進入系統的,先根據系統提示輸入root口令進入系統,然后修改vim /etc/fstab

發現根目錄是只讀狀態,無法修改。

2)用命令mount -o rw,remount /重新掛載后根目錄變成可讀寫狀態。

3)進入/etc/fstab里面修改UUID或者修改啟動檢查項為0都可。

總結:建議修改/etc/fstab前進行備份? ? ? ? cp /etc/fstab{,.bak}

2、如果掛載點被刪除,系統還是可以啟動的,只需要重新建立掛載點,再掛載即可。

rm -rf /data/sdb2? ;reboot ;mkdir /data/sdb2? ;mount -a

分區遷移

遷移/home到新分區上

隨著使用時間的增加,在根目錄的/home目錄隨著用戶的使用越來越大,感覺需要增大應對,則需要對現

有的/home分區進行遷移。

1、第一步先做備份/home/(重要)

2、建立分區fdisk、gdisk? ? ? ? ? ? ? fdisk? /dev/sdb

3、建立文件系統? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mkfs.ext4 /dev/sdb1 -L /home

4、建立臨時文件夾,掛載臨時文件夾? ? ?mkdir /mnt/home? ;? ?mount /dev/sdb1 /mnt/home

5、發布通知,并切換到單用戶模式(單機模式會導致斷網,只能在機房操作,無法遠程操作)

init 1 ;? ? ?runlevel? ? ? ? ? ? ?#切換到單用戶模式確保沒有用戶使用/home

6、遷移數據? ? ? ? ?cp -av /home/* /mnt/home/? ? ? ?#包含隱藏文件可以用cp -av /home/. /mnt/home/

7、刪除舊/home分區里的數據,防止空間浪費? ? ? ?rm -rf /home/*? ?;? ?ls /home? ?;? ? ls /mnt/home

8、在/etc/fstab里加入新分區數據 并保存? ? ? ?vim /etc/fstab? ? ?;? ? ?r!blkid /dev/sdb1? ?;mount -a

9、取消掛載臨時目錄,刪除臨時目錄? ? ? ?umount /mnt/home? ;rm -rf /mnt/home

10、切換到正常用戶模式? ? ? ? ? ? ?init? 5

注意:數據必須備份,init1會導致斷網,無法遠程操作,根分區沒法遷移。

把/home移動回根目錄下,取消遷移:

mkdir /mnt/home

mount /dev/sdb1 /mnt/home

init1

umount /home

mv /mnt/home/* /home/

vim /etc/fstab

刪除掛載信息

umount /mnt/home

rm -rf /mnt/home

fdisk /dev/sdb 刪除分區

永久掛載光盤分區

mkdir /mnt/cdrom

mount /dev/sr0 /mnt/cdrom

寫入/etc/fstab

/dev/sr0?? /mnt/cdrom? iso9660? defaults 0? 0

注意:這里不能用UUID和卷標名,只能寫設備名

掛載USB介質

手動掛載? ? ? mkdir /mnt/usb? ?; mount /dev/sdf /mnt/usb

查看USB設備是否識別? ? ?lsusb

注意:使用u盤拷貝資料的時候很容易出現未同步問題(buffer)所以要用sync同步,如:

cp /etc/* /mnt/usb? ? ;sync;sync;sync

永久掛載文件夾

就是文件夾掛載文件夾

mkdir /mnt/boot

vim /etc/fstab

/boot? /mnt/boot?????? none?? bind?? 0?? 0

mount -a

處理交換文件和分區

swap

free -m? ? ?查詢內存的使用情況使用情況

Centos6是buffer和cache分開,Centos7buffer和cache是合并顯示

一般的比例是1:2左右,內存1?? swap2

具體要根據內存來決定,如果內存大就沒必要大

如果想改變swap分區的大小有兩種方法:

第一種方法:直接取消swap分區重新分,但是有可能swap正在使用,無法完成。

第二種方法:另外建立一個新的swap分區,建議選擇一個高速硬盤來建立swap分區,固態磁盤,如果是機

械磁盤,盡量是空的機械磁盤,而且盡量往外道分(柱面數越小越外圈)。

1、創建SWAP分區? ? ? ? ?fdisk? /dev/sdb? ? ?#記得修改id用t? ? ? 82 SWAP類型

2、創建SWAP文件系統? ? ? ?mkswap /dev/sdb1 -L swap_sdb1

3、掛載SWAP? ? ? ? ?vim /etc/fstab ;r!blkid /dev/sdb1? ? ? ? ?#可以添加優先級信息pri=100 用UUID

4、swapon -a生效

5、swapon -s? ? 相當于運行cat /proc/swaps可以查詢當前生效的所有swap分區,包括優先級信息,數字

越大優先級越高優先級可以修改。

永久修改:

可以指定swap分區0到32767的優先級,值越大優先級越高

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

新建位圖圖像 (3)

保存后先禁用? ? swapoff /dev/sdb1

然后? ? ?swapon -a

臨時修改? ? swapon -p

用文件來做SWAP分區

1、生成文件(創建分區)? ? ? ? dd if=/dev/zero of=/swapfile bs=1024M count=2

2、創建文件系統? ? ? ? ? ? ? ? ? ? ? mkswap /swapfile

3、掛載分區(文件速度較慢,不建議加優先級)

vim /etc/fstab? ? ? ?;? /swapfile????? swap??? swap?? defaults???? 0? 0? ?;swapon -a

4、去除所有添加的SWAP分區? ? ? ?swapoff /dev/sdb1? ?;swapoff /swapfile

vim /etc/fstab? ? ? #刪除里面的swap分區信息,

刪除文件以及分區? ? ? ? ?rm -f /swapfile? ? ;? ? ?fdisk /dev/sdb

掛載光盤

在圖形界面下,光盤默認自動掛載

手工掛載:? ? ? mount /dev/cdrom /mnt/

彈出/彈入光盤? ? ? eject/eject -t? ? ? ? #小技巧:彈出光驅定位故障電腦

制作ISO鏡像文件

cp /dev/sr0 /data/centos7.iso? 或者? ? dd if=/dev/sr0 of=/data/centos7.iso

把目錄打包制作ISO鏡像? ? ? mkisofs -r -o etc.iso /etc/

查看? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?file etc.iso

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

合并兩個盤源(centos6)方便做成yum源

先把兩張光盤的內容合并到一個目錄里? ?mkdir /centos6? ?;cp /mnt/cdrom/* /centos6/ -r

掛載第二張盤? ? cp? -rv /mnt/cdrom/. /centos6/? ? ? #這里.代表包含隱藏文件,發現相同文件則直接覆蓋

mkisofs -r -o /data/Centos-6.9-x86_64-Everything.iso /centos6/

注意:這種光盤可以做yum源,但是不能做啟動光盤,要做啟動盤可以用

mkdvdiso官方工具制作完整盤,可以引導系統

https://wiki.centos.org/zh/TipsAndTricks/CDtoDVDMedia?highlight=%28mkdvdiso%29

用途:mkdvdiso.sh source /destination/DVD.iso? ? ? ? ? source 代表有2張光盤內容的目錄

df? ? ? ? ??查看磁盤分區的使用情況

df???????????? 默認1K為單位

df -h???????? 人類易讀方式

df -I????????? 以節點編號代替塊

df -P???????? 以Posix兼容的格式輸出,長名字文件對齊

du? ? ? ? ? ??顯示目錄空間的使用情況

du /data/?? 文件夾內統計

du -h???????? 人類易讀

du -s????????? 匯總

du –max-depth 2 /etc/? 最大深度

dd? ? ? ? ? ?轉換和復制文件

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#:block size, 復制單元大小

count=#:復制多少個bs

skip=blocks? ? ?從開頭忽略blocks個ibs大小的塊

seek=blocks? ? ? ?從開頭忽略blocks個obs大小的塊

count=n? ? ? ? ? ? ? ? 只拷貝n個記錄

例:? 建立文檔f1??????123456?? 建立文檔f2? ??abcdefgh

1)dd if=f1 of=f2? ? ;cat f2? ? ? ?結果顯示:123456

2)dd if=f1? of=f2? bs=1 count=2 skip=3 seek=4? ?;cat f2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?結果顯示:abcd45

3)dd if=f1? of=f2 bs=1 count=2 skip=3 seek=4 conv=notrunc? ?;cat f2? ? ?結果顯示:abcd45gh

4)dd if=f2 of=f3 conv=ucase? ? ? ? #轉換大小寫? ?結果顯示:ABCD45GH

練習:有一個大于2K的二進制文件fileA?,F在想從第64個字節位置開始讀取,需要讀取的大小是

128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,則

dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

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

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

修復bootloader:? ? ? ? ?dd if=/tmp/mbr.bak of=/dev/sda bs=64 count=1 skip=446 seek=446

查看bootloader:? ? ? hexdump -C /dev/sda -n 512

備份數據:?

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/sda of=/dev/sda

說明:當硬盤較長時間(比如1,2年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到

困難,并可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可

能使這些數據起死回生,且這個過程是安全高效的

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99502

(4)
MaxMax
上一篇 2018-05-26 21:17
下一篇 2018-05-27

相關推薦

  • Linux命令之date

    語法,選項,參數

    Linux筆記 2018-07-22
  • 文件管理與bash特性

      1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。2.bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。3.請使用命令行展開功能來完成以下練習:(1). 創建/tmp目錄下的:a_c, a_d, b_c, b_d(2). 創建/tmp/mylinux目錄下的:mylinux/├── bin├─…

    2018-06-26
  • Linux文件管理及bash基礎特性

      1、Linux系統文件管理類命令及其常用方法、相關示例演示。 Linux系統文件管理類命令主要有cp、mv、rm ①???? cp命令:copy cp命令用于復制文件或目錄,分單源、多源復制兩種情況。 單源復制: 命令格式:cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在,則先創建此文件,并復制源文件的…

    2018-07-01
  • 正則表達式、linux文件處理三劍客:grep、sed、awk

    基本的正則表達式元字符:默認工作于貪婪模式; 字符匹配: .:匹配任意單個字符; []:匹配指定范圍內的任意單個字符; [^]:匹配范圍外的任意單個字符; [:digit:]數字、[:lower:]小寫字母、[:upper:]大寫字母、[:alpha:]所有字母、[:space:]空白符、[:alnum:]字母數字、[:punct:]標點符號 匹配次數: *…

    Linux筆記 2018-03-28
  • 進程管理工具及計劃任務

    進程管理工具 kill命令: 向進程發送控制信號,以實現對進程管理,每個信號對應一個數字,信號名稱以SIG開頭 (可省略),不區分大小寫 顯示當前系統可用信號: kill –l,trap -l 常用信號:man 7 signal 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 3) SIGQ…

    Linux筆記 2018-05-06
  • 神奇的awk

    有了這個awk,忘了那個他

    2018-05-17
欧美性久久久久