3.Linux磁盤、文件系統管理---文件系統的使用(掛載)

概述:

      本篇爲上篇博客---創建文件系統,(格式化)的後續內容,將陸續爲大家介紹用於系統檢測的工具、blkid命令,及如何創建swap文件系統,最重要的是文件系統創建後如何使用,掛載的內容!

==============================================================================

 4.用於實現系統檢測的工具:fsck,e2fsck

爲什麼要進行文件系統檢測:

  • 因進程意外中止或系統崩潰等原因導致操作非正常終止時,可能會造成文件損壞;此時應該檢測並修復文件系統,建議離線進行;

  • 常發生於死機或者非正常關機之後;

  • 掛載爲文件系統標記爲“dirty”

e2fsck:ext系列文件專用的檢測修復工具

語法:

  • e2fsck [OPTIONS] device

選項:

  • -y:對所有問題自動回答爲yes;

  • -f:即使文件系統處於clean狀態,也要強制進行檢測;

fsck 命令

作用:

  • check and repair a Linux file system

語法:

  • fsck.FS_TYPE

wKioL1isQHiRtGHDAAANny4YAPk290.png

選項:

  • -t FS_TYPE:指明文件系統類型   如:fsck -t ext4=fsck.ext4

  • -a:自動修復錯誤;

  • -r:交互式修復錯誤

注意:

  •  FS_TYPE 一定要與分區上已知文件類型相同;

演示:

 1.e2fsck 命令

[root@CentOS6 ~]# e2fsck -f /dev/sda3
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes  # 第一步,檢查indoe塊和大小
Pass 2: Checking directory structure        # 第二步,檢查目錄結構;
Pass 3: Checking directory connectivity     # 第三步,檢查目錄連接性;
Pass 4: Checking reference counts           # 檢查引用計數
Pass 5: Checking group summary information  # 檢查簇摘要信息
/dev/sda3: 11/328656 files (0.0% non-contiguous), 56006/1313064 blocks

其他相關命令:

 1.blkid:

blkid:塊設備屬性信息查看

語法:

  • blkid [OPTION]...[DEVICE]

選項:

  • -U UUID:根據指定的UUID來查找對應的設備;

-L LABEL:根據指定的LABEL來查找對應的設備

演示:

[root@CentOS6 ~]# e2label /dev/sda3 MYDATA

# 根據指定的卷標,UUID來查找對應的設備
[root@CentOS6 ~]# blkid -L MYDATA
/dev/sda3

# 查看其設備的相關屬性
[root@CentOS6 ~]# blkid /dev/sda3
/dev/sda3: UUID="ddd258cd-c7bc-48a2-8783-3bb629e21f81" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA"

[root@CentOS6 ~]# blkid -U ddd258cd-c7bc-48a2-8783-3bb629e21f81
/dev/sda3

swap文件系統:

swap文件系統:

  • Linux上的交換分區必須使用獨立的文件系統(磁盤分區);且文件系統的System ID必須爲82;

創建swap設備:

  • mkswap 命令

語法:

  • mkswap [OPTIONS] device

選項:

  • -L LIBEL:指明卷標;

  • -f:強制

演示:

[root@CentOS6 ~]# fdisk -l /dev/sda

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00093c28

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        8512     5252256   83  Linux
/dev/sda4            8513       10443    15510757+   5  Extended
/dev/sda5            8513        8905     3156741   83  Linux
/dev/sda6            8906        9167     2104483+  82  Linux swap / Solaris

# 創建swap文件系統
[root@CentOS6 ~]# mkswap /dev/sda6
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=c8a63073-5ab8-4384-8905-0326830a3953
[root@CentOS6 ~]# blkid /dev/sda6
/dev/sda6: UUID="c8a63073-5ab8-4384-8905-0326830a3953" TYPE="swap"

支持windows和linux的文件系統:fat32

Windows無法識別Linux的文件系統;因此存儲設備需要在兩種系統之間交叉使用時,應該使用windows和linx同時支持的文件系統:fat32(vfat)

  • # mkfs.vafat device

==============================================================================

第二篇:文件系統的使用(掛載)

==============================================================================

掛載的相關概念

爲什麼要掛載

  • 磁盤的分區和格式化完成後,磁盤要想能夠使用,就需要掛載,在掛載某個分區前需要先建立一個掛載點。

相關概念:

首先要"掛載":mount 和 卸載 unmount 命令

根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即爲“掛載”,此目錄即爲掛載點;

掛載點:mount_point,作爲另一個文件系統的訪問入口

  • 事先存在;

  • 應該使用未被或不會被其他進程使用到的目錄;

  • 掛載點下原有文件將會被臨時隱藏;

卸載:爲解除此關聯關係的過程

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

mount命令

 1.使用方法及語法:

掛載方法:

  • mount DEVICE MOUNT_POINT

  • mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備

語法:

  • mount [-nrw] [-t vfstype] [-o options] device dir

device:指明要掛載的設備;

  • 設備文件:例如/dev/sda5;

  • 卷標:-L 'LABEL':例如-L 'MYDATA';

  • UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'

  • 僞文件系統名稱:proc, sysfs, devtmpfs, configfs

dir:掛載點

  • 事先存在;建議使用空目錄;

  • 進程正在使用中的設備無法被卸載

演示:

[root@CentOS6 ~]# blkid /dev/sda3
/dev/sda3: UUID="ddd258cd-c7bc-48a2-8783-3bb629e21f81" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA" 

# 掛載 /dev/sda3 設備到 /mnt 目錄下
[root@CentOS6 ~]# mount /dev/sda3 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw)  # 掛載的設備

[root@CentOS6 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  407728  19055052   3% /
tmpfs                   502068       0    502068   0% /dev/shm
/dev/sda1               194241   34097    149904  19% /boot
/dev/mapper/vg0-usr   10190136 2142576   7523272  23% /usr
/dev/mapper/vg0-var   20511356  480824  18981956   3% /var
/dev/sda3              5169700  141468   4765620   3% /mnt

[root@CentOS6 ~]# cp /etc/fstab /mnt/
[root@CentOS6 ~]# ls /mnt/
fstab  lost+found
[root@CentOS6 ~]# umount /dev/sda3   # 取消掛載此設備,再次訪問文件訪問不到
[root@CentOS6 ~]# ls /mnt/

[root@CentOS6 ~]# mount /dev/sda3 /media/  # 掛載到其他文件作爲訪問入口
[root@CentOS6 ~]# ls /media/
fstab  lost+found

[root@CentOS6 ~]# umount /media/
[root@CentOS6 ~]# ls /media/

命令選項

  • -r:readonly,只讀掛載;

  • -w:read and write, 讀寫掛載;(默認特性)

  • -n:在默認情況下,設備掛載或卸載的操作同時會更新至/etc/mtab文件中,-n 用於禁此特性

  • -t vsftype:指定要掛載的設備上的文件系統類型;多數情況下可省略,此時mount會通過blkid來判斷要掛載的設備的文件系統的類型;

  • -a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能);

  • -L 'LABEL':掛載時以卷標的方式指明掛載設備;

  • -U 'UUID':掛載時以UUID指定要掛載的設備;mount -U UUID dir

  • -B, --bind:將目錄綁定至另一個目錄上,作爲其臨時訪問入口;


演示:

 1.-r: readonly,只讀掛載

# 只讀掛載
[root@CentOS6 ~]# mount -r /dev/sda3 /mnt
[root@CentOS6 ~]# ls /mnt
fstab  lost+found

# 提示爲只讀文件系統,不允許創建文件
[root@CentOS6 ~]# cp /etc/issue /mnt
cp: cannot create regular file `/mnt/issue': Read-only file system

2.-L 'LABEL': 掛載時以卷標的方式指明掛載設備

[root@CentOS6 ~]# blkid /dev/sda3
/dev/sda3: UUID="ddd258cd-c7bc-48a2-8783-3bb629e21f81" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA" 
[root@CentOS6 ~]# mount -L MYDATA /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw)

3. -U 'UUID': 掛載時以UUID指定要掛載的設備

[root@CentOS6 ~]# umount /dev/sda3

# 指明 UUID 掛載
[root@CentOS6 ~]# mount -U ddd258cd-c7bc-48a2-8783-3bb629e21f81 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw)
[root@CentOS6 ~]# ls /mnt
fstab  lost+found

4.-B, --bind: 將目錄綁定至另一個目錄上,作爲其臨時訪問入口

[root@CentOS6 ~]# umount /mnt

# 將 /etc 目錄掛載至 /mnt 目錄下
[root@CentOS6 ~]# mount -B /etc/ /mnt

[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/etc on /mnt type none (rw,bind)

[root@CentOS6 ~]# ls /mnt
abrt                   cron.hourly              fstab             kde             nanorc                        prelink.cache     rpc            sudo-ldap.conf
acpi                   cron.monthly             gai.conf          kdump-adv-conf  netconfig                     prelink.conf      rpm            sysconfig
adjtime                crontab                  gconf             kdump.conf      NetworkManager                prelink.conf.d    rsyslog.conf   sysctl.conf
aliases                cron.weekly              gcrypt            krb5.conf       networks                      printcap          rsyslog.d      sysctl.d
aliases.db             crypttab                 gdm               ld.so.cache     nfsmount.conf                 profile           rwtab          system-release

-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功能(mount -o acl device dir 或者 tune2fs -o acl device

注意:

  • 如果掛載選項什麼都不指的話,相當於默認(defaults):相當於rw, suid, dev, exec, auto, nouser, async  

演示:

# 默認新創建的文件系統是不支持acl權限的
[root@CentOS6 ~]# mount /dev/sda3 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw) 

[root@CentOS6 ~]# ls /mnt
lost+found

[root@CentOS6 ~]# cp /etc/fstab /mnt/

[root@CentOS6 ~]# getfacl /mnt/fstab 
getfacl: Removing leading '/' from absolute path names
# file: mnt/fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--

# 提示不允許設定acl權限
[root@CentOS6 ~]# setfacl -m u:centos:rw /mnt/fstab 
setfacl: /mnt/fstab: Operation not supported


#====================================================================
# 現在重新掛載,並添加掛載選項 acl(多個選項之間用逗號分隔)
[root@CentOS6 ~]# mount -o remount,acl /dev/sda3 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw,acl) # 可以看到多了一個acl權限

[root@CentOS6 ~]# setfacl -m u:centos:rw /mnt/fstab  # 設置acl權限成功
[root@CentOS6 ~]# getfacl /mnt/fstab
getfacl: Removing leading '/' from absolute path names
# file: mnt/fstab
# owner: root
# group: root
user::rw-
user:centos:rw-   # 設置成功
group::r--
mask::rw-
other::r--

# 注意:也可以使用 tune2fs -o acl /dev/sda3 調整其默認掛載選項,使用 tune2fs -l /dev/sda3  查看

 2.查看當前系統已掛載的所有設備:

  • # mount;

  • # cat /etc/mtab

  • # cat /proc/mounts

 3.掛載光盤和U盤設備:

掛載光盤

光盤設備文件

IDE:/dev/hdc;

SATA:/dev/sr0

符號鏈接文件

  • dev/cdrom;

  • dev/dvd

掛載方法:

  • mount -r /dev/cdrom mount_point

特殊掛載光盤的使用方法:

  • 啓動 autofs 服務,會將 /dev/sr0 自動掛載到 /misc/cd 目錄中;

  • 啓動 autofs:# systemctl enable|start autofs (centos7) centos6 可直接使用,隨系統自啓

把光盤製作成iso文件的方法:

  • 使用cp命令直接備份就可以 (cp /dev/cdrom  /root/centos6.iso)

掛載U盤

  • 事先識別U盤的設備文件;

掛載本地迴環設備:

  • # mount -o loop /PATH/TO/SOME_LOOP_FILE  MOUNT_POINT

演示:

# 只讀掛載光盤到指定掛載點
[root@CentOS6 ~]# mount -r /dev/cdrom /mnt
[root@CentOS6 ~]# cd /mnt
[root@CentOS6 mnt]# ls
CentOS_BuildTag  EULA  images    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

# 特殊使用方法,啓動自動掛載服務(autofs,CentOS6自動開啓,7需要手動開啓),會掛載到 /misc/cd 目錄中
[root@CentOS6 ~]# cd /misc/cd
[root@CentOS6 cd]# ls
CentOS_BuildTag  EULA  images    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

[root@CentOS6 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  407728  19055052   3% /
tmpfs                   502068       0    502068   0% /dev/shm
/dev/sda1               194241   34097    149904  19% /boot
/dev/mapper/vg0-usr   10190136 2142576   7523272  23% /usr
/dev/mapper/vg0-var   20511356  480868  18981912   3% /var
/dev/sda3              3824484 3824484         0 100% /mnt
/dev/sr0               3824484 3824484         0 100% /misc/cd
/dev/sr0               3824484 3824484         0 100% /mnt

umount命令

 1.使用方法及語法:

umount命令

使用方法:

  • umount DEVICE

  • umount MOUNT_POINT

注意:

  • 正在被進程訪問到的掛載點無法被卸載;

查看掛載情況:

  • # findmnt MOUNT_POINT

查看被哪個或者哪些進程所佔用:

  • lsof MOUNT_POINT

  • fuser -v MOUNT_POINT

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

  • # fuser -km MOUNT_POINT

演示:

# 當有一個終端在使用時,另一個終端用戶執行umount提示正在忙,表示不能卸載
[root@CentOS6 ~]# umount /mnt
umount: /mnt: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

# 查看掛載情況:        
[root@CentOS6 ~]# findmnt /mnt
TARGET SOURCE    FSTYPE OPTIONS
/mnt   /dev/sda3 ext3   rw,relatime,errors=continue,barrier=1,data=ordered

# 查看被那個或者哪些進程所佔用:
[root@CentOS6 ~]# lsof /mnt
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    2059 root  cwd    DIR    8,3     4096    2 /mnt
[root@CentOS6 ~]# fuser -v /mnt
                     USER        PID ACCESS COMMAND
/mnt:                root       2059 ..c.. bash

# 終止所有在正訪問指定的文件系統的進程:
[root@CentOS6 ~]# fuser -km /mnt
/mnt:                 2059c

[root@CentOS6 ~]# umount /mnt  # 正常卸載
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章