磁盘管理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 指定块大小(既是ibs,也是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.178linux.com/40936

(0)
上一篇 2016-08-29 08:49
下一篇 2016-08-29 08:49

相关推荐

  • 马哥教育网络第21期-第十一周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 A和B进行通信 A发送数据:A使用单向加密算法获得数据的特征码,把特征码附加到数据的尾部,A使用对称加密算法对数据进行加密。A使用B发过来的公钥对A的对称加 密算法加密密钥进行加密,附加到数据后面。 B接收方:B使用自己的私钥对数据进行解密。得到A的对称密钥,对对称密钥解密获得数据的特征码,B使用单向加密算法获…

    Linux干货 2016-12-26
  • N25-第八周博客作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态; 在线的主机使用绿色显示;不在线的主使用红色显示; #!/bin/bash # ping探测主机在线状态 for i in `seq 254`;do if ping -c 1 172.16.0.$i &> /dev/null;th…

    Linux干货 2017-02-23
  • shell脚本之until循环

    一、用until实现下列脚本 1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并提示该用户退出系统。 #!/bin/bash #author:jackCui #description:Find out if the sys…

    Linux干货 2016-08-18
  • 第六周-Vim、计划任务及Shell脚本练习

    一、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit 末行模式输入 :%s@^[[:space:]]\+@#&@g 二、复制/boot/grub/grub.co…

    Linux干货 2017-08-13
  • 谷歌三大核心技术(一)The Google File System中文版

    摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。 虽然GFS的设计目标与许多传统的分布式文件系统有很多相同之处,但是,我们的设计还是以我们对自己的应用的负载情况和技术环境的分析为基础的,不管现在还是…

    Linux干货 2015-04-13

评论列表(1条)

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

    文章内容完整,思路清晰,理论和实践相结合,具有很强的操作性,整体下来读者能学到很多知识。