磁盤管理2——文件系統掛載和swap文件系統以及磁盤管理工具

文件系統的使用:

首先要“掛載”:mount命令和umount命令

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

掛載點:MOUNT_POINT,用于作為另一個文件系統的訪問入口

    (1)事先存在

    (2)應該使用未被其他進程使用的目錄,否則該目錄下的數據會被覆蓋掉

mount命令:

掛載方法:# mount DEVICE MOUNT_POINT

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

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

        

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

        -r:readonly,只讀掛載

        -w:read and write,讀寫掛載

        -n:默認情況下,掛載或卸載的操作會同步更新到/etc/mtab文件中,-n用于禁用此特性

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

        -L 'LABEL':以卷標指定掛載設備

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

        -B, –bind:掛載一個目錄到另一個目錄上

        -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功能

                

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

                

                mount掛載,后面的選項會覆蓋前面的選項,比如-o指定了acl,noacl,acl會被后面的覆蓋

查看系統已掛載的設備:

            # mount

            # cat /etc/mtab

            # cat /proc/mounts

[root@CentOS6 boot]# ls /mnt //未掛載前的mnt目錄
hgfs
[root@CentOS6 boot]# mount /dev/sda7 /mnt
[root@CentOS6 boot]# ls /mnt //掛載后的mnt目錄
lost+found
[root@CentOS6 boot]# mount //查看當前系統的所有掛載
/dev/sda2 on / type ext4 (rw)
......
/dev/sda6 on /home type ext4 (rw,usrquota,grpquota)
/dev/sda7 on /mnt type ext4 (rw)
[root@CentOS6 mnt]# df //查看當前文件系統
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda2       50264772 11230716  36474056  24% /
......
/dev/sda7       10290483     3856   9762107   1% /mnt
[root@CentOS6 boot]# mount -o remount,rw,acl /mnt    //重新掛載,并讓磁盤支持acl
[root@CentOS6 boot]# mount  //查看磁盤是否支持acl
/dev/sda2 on / type ext4 (rw)
......
/dev/sda6 on /home type ext4 (rw,usrquota,grpquota)
/dev/sda7 on /mnt type ext4 (rw,acl)
[root@CentOS6 boot]# cd /mnt   //進入磁盤內,驗證是否支持acl
[root@CentOS6 mnt]# ls
lost+found
[root@CentOS6 mnt]# touch a
[root@CentOS6 mnt]# setfacl -m u:gao:rwx a
[root@CentOS6 mnt]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:gao:rwx   //添加了acl控制
group::r--
mask::rwx
other::r--

掛載光盤:(光盤為只讀)

    # mount -r /dev/cdrom MOUNT_POINT

    光盤設備文件:/dev/cdrom ,/dev/ded

掛載U盤:事先識別的U盤的設備文件

掛載本地的回環設備(或.iso的文件):

    # mount -o loop /path/to/some_loop_file(.iso文件)  MOUNT_POINT

umount命令:

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

    umount DEVICE|DIR

    注意:正在被訪問的掛載點無法被卸載:

查看被那個或那些進程所占用:

    # lsof MOUNT_POINT

    # fuser -v MOUNT_POINT

    終止所有正在訪問某掛載點的進程:

        # fuser -km MOUNT_POINT

[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 ~]# fuser -v /mnt
                     USER        PID ACCESS COMMAND
/mnt:                root       5912 ..c.. bash
[root@CentOS6 ~]# fuser -km /mnt
/mnt:                 5912c
[root@CentOS6 ~]# umount /mnt
[root@CentOS6 ~]# ls /mnt
hgfs

補充:

磁盤管理2——文件系統掛載和swap文件系統以及磁盤管理工具

磁盤管理2——文件系統掛載和swap文件系統以及磁盤管理工具

swap文件系統:

liunx上的交換分區必須使用獨立的文件系統,且文件系統的System ID必須為82

查看為當前系統提供swap分區的磁盤

    cat /proc/swaps

創建swap設備:mkswap命令

        mkswap [OPTIONGS] device

        -L LABEL:指明卷標

        -f:強制

交互分區的的啟用和禁用:

    啟用:swapon

                swapon [OPTION] [DEVICE]

                -a:啟用所有定義在/etc/fstab中的所有swap設備

                -p PRIORITY:指定優先級

                -s:查看當前生效的swap分區是那些磁盤提供

    禁用:swapoff

        swapoff DEVICE

swap的優先級:

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

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

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

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

[root@CentOS6 ~]# fdisk /dev/sda         //創建一個新的分區
.....
[root@CentOS6 ~]# mkswap /dev/sda8     //格式化為/swap分區
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=d77d8cc5-1c35-491d-a1ce-ea07e87e3723
[root@CentOS6 ~]# swapon -s      //查看當前生效的swap分區是那些磁盤提供
FilenameTypeSizeUsedPriority
/dev/sda5                               partition40959960-1
[root@CentOS6 ~]# free          //查看當前磁盤的虛擬內存
             total       used       free     shared    buffers     cached
Mem:       1004136     709120     295016       2596     125484     218492
-/+ buffers/cache:     365144     638992
Swap:      4095996          0    4095996
[root@CentOS6 ~]# swapon /dev/sda8
[root@CentOS6 ~]# swapon -s
FilenameTypeSizeUsedPriority
/dev/sda5                               partition40959960-1
/dev/sda8                               partition21044760-2
[root@CentOS6 ~]# swapoff /dev/sda8
[root@CentOS6 ~]# swapon -p 100 /dev/sda8      //設定優先級
[root@CentOS6 ~]# swapon -s
FilenameTypeSizeUsedPriority
/dev/sda5                               partition40959960-1
/dev/sda8                               partition21044760100
[root@CentOS6 ~]# free         //查看當前磁盤的虛擬內存
             total       used       free     shared    buffers     cached
Mem:       1004136     710212     293924       2596     125488     218460
-/+ buffers/cache:     366264     637872
Swap:      6200472          0    6200472

文件掛載配置文件;

除根文件系統之外的其他文件系統能夠開機時自動掛載:需配置/etc/fstab文件

每行定義了一個要掛載的文件系統及相關屬性

/etc/fstab文件中共6個字段:

(1)要掛載的設備或偽文件系統

        設備名

        LABEL

        UUID

        偽文件系統:如sysfs ,proc ,tmpfs等

(2)掛載點

    swap類型的設備的掛載點為swap

(3)文件系統類型

(4)掛載選項

        defaults:使用默認掛載選項

        如果要同時指明多個掛載選項,彼此間用逗號隔開

        defaults,acl,noatime,noexec

(5)轉儲頻率

        0:從不備份

        1:每天備份

        2:每隔一天備份

(6)自檢次序

        0:從不自檢

        1:首先自檢,通常只能是根文件系統可用1

        2:次級自檢

[root@CentOS6 ~]# cat /etc/fstab
....
# /etc/fstab
....
UUID=d0e29042-dd4b-4e0f-a880-e6c5ae2ef4ab /                       ext4    defaults        1 1
....
/dev/cdrom/media/cdromiso9660defaults0 0       //掛載光盤
UUID="1bd3fc94-ad93-426b-93de-50220e402fc0" /home ext4 defaults,usrquota,grpquota0 0     //用UUID掛載
/dev/sda8 swapswapdefaults0 0       //掛載swap分區

磁盤管理常見工具:

內存空間使用狀態:

    free [OPTION]

        -m:  以MB 為單位

        -g:  以GB 為單位

文件系統空間占用等信息的查看工具:

    df [OPTION]… [FILE]…

        -H  以1000 為單位

        -T  文件系統類型

        -h: human-readable

        -i :inodes instead of blocks

        -P:  以Posix 兼容的格式輸出

查看某目錄總體空間占用狀態:

    du [OPTION]… DIR

        -h: human-readable

        -s: summary

dd 命令:

dd – convert and copy a fil

    dd OPTION

    用法:

    dd if=/PATH/FROM/SRC of=/PATH/TO/DEST [options]

    [options]:

    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)

常見用法:


備份:

備份MBR:

    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

將本地的/dev/sdx整盤備份到/dev/sdy

    dd if=/dev/sdx of=/dev/sdy

將/dev/sdx全盤數據備份到指定路徑的image文件

    dd if=/dev/sdx of=/path/to/image

備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑

    dd if=/dev/sdx | gzip >/path/to/image.gz

破壞MBR中的bootloader: 

    dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

恢復

將備份文件恢復到指定盤

    dd if=/path/to/image of=/dev/sdx

將壓縮的備份文件恢復到指定盤

    gzip -dc /path/to/image.gz | dd of=/dev/sdx

拷貝內存資料到硬盤:

將內存里的數據拷貝到root目錄下的mem.bin文件

    dd if=/dev/mem of=/root/mem.bin bs=1024

從光盤拷貝iso鏡像:

拷貝光盤數據到root文件夾下,并保存為cd.iso文件

    dd if=/dev/cdrom of=/root/cd.iso

銷毀磁盤數據:

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

    dd if=/dev/urandom of=/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錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的

作業:

1、創建一個2G的文件系統,塊大小為2048byte,預留1%可用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/test目錄,且默認有acl掛載選項

[root@CentOS6 ~]# fdisk /dev/sda
......
Command (m for help): n
First cylinder (11160-26109, default 11160):
Using default value 11160
Last cylinder, +cylinders or +size{K,M,G} (11160-26109, default 26109): +2G         //添加一個2G的磁盤
Command (m for help): p
......
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
......
/dev/sda9           11160       11421     2104483+  83  Linux
Command (m for help): w
......
[root@CentOS6 ~]# partx -a /dev/sda     
BLKPG: Device or resource busy
error adding partition 1
......
error adding partition 8

[root@CentOS6 ~]# mke2fs -t ext4 -b 2048 -L TEST /dev/sda9
mke2fs 1.41.12 (17-May-2010)
Filesystem label=TEST
OS type: Linux
Block size=2048 (log=1)
......

[root@CentOS6 ~]# blkid /dev/sda9
/dev/sda9: LABEL="TEST" UUID="8e615a71-5589-4cc7-a175-0bf068e3702d" TYPE="ext4"
[root@CentOS6 ~]# mkdir /test
[root@CentOS6 ~]# vim /etc/fstab

z1.png

2、寫一個腳本,完成如下功能:

(1) 列出當前系統識別到的所有磁盤設備

(2) 如磁盤數量為1,則顯示其空間使用信息

否則,則顯示最后一個磁盤上的空間使用信息

#!/bin/bash
#description
#version 0.1
#author gaomeng
#date 20160827
#
disk=`lsblk | grep "^sd" | tail -1 | cut -d" " -f1`
fdisk -l /dev/$disk
[root@CentOS6 bin]# lsblk | grep "^sd"
sda      8:0    0  200G  0 disk 
sdb      8:16   0   20G  0 disk 
[root@CentOS6 bin]# bash disk.sh 
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00000000

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

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

相關推薦

  • Ansible安裝及簡單使用

    簡介: ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包…

    Linux干貨 2016-08-07
  • 文本查找與文件查找

    咬文嚼字,顛倒糊涂,善哉!善哉? 念頭通達,思慮有感,言簡明,意通神 文件是什么?文本是什么?文本文件是什么?      好想來碗正常的豆腐腦,可惜每天早上也只能是豆腐花。吃不到,想想還是可以的,豆腐腦是“文件”,吃豆腐腦是“看文本”,找到地,點了豆腐腦,就是“查找文件”,符合個人口味的,加鹽,加咸菜,加黃豆…

    2017-06-04
  • 基于Redis的開源分布式服務Codis

    Redis在豌豆莢的使用歷程——單實例==》多實例,業務代碼中做sharding==》單個Twemproxy==》多個Twemproxy==》Codis,豌豆莢自己開發的分布式Redis服務。在大規模的Redis使用過程中,他們發現Redis受限于多個方面:單機內存有限、帶寬壓力、單點問題、不能動態擴容以及磁盤損壞時的數據搶救。 Redis通常有3個使用途徑…

    Linux干貨 2015-02-25
  • 廣域網中的DNS服務

    拓撲圖                      創建主DNS:     配置文件/etc/named.conf&nbs…

    2017-04-15
  • 軟件包管理

    軟件運行環境 ABI(應用程序的二進制接口):Application Binary Interface Windows 與Linux 不兼容 ELF(Executable and Linkable Format)           —&…

    Linux干貨 2017-04-23
  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;        (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [ro…

    2017-04-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-29 15:44

    文章內容完整,思路清晰,理論和實踐相結合,具有很強的操作性,整體下來讀者能學到很多知識。

欧美性久久久久