系统管理之磁盘管理(一)

磁盘结构

一.概论

1.操作系统的组成部分:

硬件:

根据冯诺依曼体系,计算机的组成:
   运算,控制器:cpu
   存储器:主存(ram);   
   io设备:
      辅存(rom):持久存储
      网卡:提供服务的出入口
      显示器:输出设备
      键鼠:输入设备
   总线:
      寻址总线;连接cpu和内存的线缆,32bi
   南桥:连接低速设备的线缆,如硬盘,输入输出设备
   北桥:连接高速设备的线缆,如cpu,内存

硬盘分类:

 机械硬盘: 传统使用机械方式存储的硬盘
 固态(ssd): 使用电子方式存储的硬盘
      lops:io per second  执行io的次数 固态比机械高几倍
      以此评判硬盘的好坏
    硬盘大小分类:
        机械硬盘:容量大 500G-2T 价格实惠 易损坏
        固态硬盘:容量小 120G-512G 价格昂贵 易保存
 硬盘接口类型:
    个人pc:
      IDE(ata):并口,133MB/s
      SATA:串口,第三代:6gbps
      USB:串口,480MB/s
    企业:
      SCSI:并口 UItrascsl320 320MB/s UItrascsl640 640MB/s
      SAS:串口 6gbps

    并口,同一线缆可以接多块设备
       IDE:两个,主,从
       SCSI:
         宽带:16-1
         窄带:8-1
       串口:同一线缆只可以接一个设备

系统管理之磁盘管理(一)
rpm:rotations
per minute

磁盘组成
,
机械硬盘结构图:

    磁道:track0
    扇区:sector 512bytes
    柱面:不同盘片相同磁道,分区根据柱面进行分区
    平均寻道时间: 短--性能好(磁头旋转,等待磁盘旋转的时间)
        5400转 7200转 10000转 转速提高,寻道时间短



SSD组成:
    U盘的阵列 
    注:固态硬盘仿照机械硬盘的运作机制,MBR,扇区等

3.设备文件

 linux的哲学思想: 一切皆文件
    open(),read(),write(),close()
 设备类型:
    块(block):随机访问,数据交换单位是"块(block)"
    字符(character):线性访问,数据交换单位是"字符" 如:/dev/zero /devnull
 设备文件:FHS
     存放在 /dev/
     设备文件:关联至一个设备的驱动程序,进而能够跟之对应的硬件设备,进行通信(设备的访问入口)
     设备号:
        majir:主设备号,区分设备类型,用于表明设备所需要的驱动程序
        minor:次设备号,区分同种类型下的不同设备,是特定设备的访问入口;
        #crw-rw-rw- 1 root root      1,   7 Aug 26 02:25 full#
        创建相同主次设备号,不同设备名称的设备文件,代表同一文件
  • mknoad命令:创建设备文件命令

  • make block or chararcter speclal files

  • mknod [OPTIONS] …NAME TYPE [MAJOR MINOR]

  • -m MOD E: 创建后的设备文件的访问权限

  • type:指定类型 c b

  • [major minor]:指定主次设备号

  • [root@w7 ~]# mknod qwe c 8 2

  • [root@w7 ~]# ll

  • crw-r–r– 1 root root 8, 2 Aug 26 04:59 qwe

mkond qwe1 d 8 1 在当前目录下,建立一个设备文件,把该文件挂载到某文件中,可以访问跟这个文件相同设备号的设备,相当于建立远设备的第二的入口

     磁盘设备的设备文件名:/dev/DEV_filename
     磁盘接口标识:
       IDE:/dev/hd  例:/dev/hda /dev/hdc
       SCSI,SATA,USB,SAS:/dev/sd[a-z]
              例:/dev/sda /dev/sdb
       分区:
          /dev/sda#;
             例:/dev/sda1 /dev/sdb2
             注意:centos6  centos7通通将硬盘设备文件标识为/dev/sd[a-z]#
       引用设备方式:
           设备文件名,卷标,UUID

磁盘分区

1.为什么磁盘分区?

优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统

2分区类型

磁盘分区类型为两种:MBR,GPT

MBR(Master Boot Record):0 sector,磁盘的0号柱面的0号磁道的0编号扇区被称作MBR;叫做主引导记录,主引导扇区    
    按柱面分区
    分为三个部分:(共512字节)
      前面446byets:存放bootloaber,引导启动操作系统的程序;
      后边64byets:DPT(Disk Pattition Table),标识硬盘分区表,每16个byets标识一个分区,一共只能有四个分区;
            4主分区(小于等于4个)
            3主1扩展:
              n个逻辑分区
        最后2byets:MBR区域的有效性标识;55AA为有效;
    主分区和扩展分区的标识是:1-4
        扩展分区有EBR,记录逻辑分区的分区信息以及下一个EBR的路径
    逻辑分区:只能从5开始

系统管理之磁盘管理(一)

GPT:GUID( Globals Unique Identifiers) 
    partitiontable 支持128个分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block) 
使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动

系统管理之磁盘管理(一)

3.查看分区

    图形化:

系统管理之磁盘管理(一)

    命令行:

系统管理之磁盘管理(一)

管理分区

创建分区使用:

fdisk 创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区
gdisk 创建GPT分区
 GNU parted 高级分区操作(创建、复制、调整大小等等)
partprobe-重新设置内存中的内核分区表版本

创建分区:

fdisk工具:
    fdisk -l [-u] [device...] 
    fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;
    所有操作均在内存中进行,没有直接同步到磁盘;直到使用w命令保存到磁盘上才会生效
     选项:
        -l :查看硬盘信息 加分区名,可查看指定分区,默认是所有分区
        不加选项,进入fdisk管理模式:
            子命令:
               a   toggle a bootable flag
               b   edit bsd disklabel
               c   toggle the dos compatibility flag
               d   delete a partition            删除分区
               g   create a new empty GPT partition table
               G   create an IRIX (SGI) partition table
               l   list known partition types      显示分区类型列表
               m   print this menu    帮助信息
               n   add a new partition        创建新分区
               o   create a new empty DOS partition table
               p   print the partition table           分区列表
               q   quit without saving changes      不保存并退出
               s   create a new empty Sun disklabel
               t   change a partition's system id    更改分区类型
               u   change display/entry units
               v   verify the partition table
               w   write table to disk and exit     保存并退出
               x   extra functionality (experts only)

    fdisk -l /dev/sda

    Disk /dev/sda: 128.8 GB, 128849018880 bytes
    255 heads, 63 sectors/track, 15665 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: 0x000a50bd

       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       10469    83886080   83  Linux
    /dev/sda3           10469       13019    20480000   83  Linux
    /dev/sda4           13019       15666    21257216    5  Extended
    /dev/sda5           13019       13280     2097152   82  Linux swap / Solaris

    对cenots6来说start是开始柱面,End是结束柱面,对centos7来说start是开始扇区,End是结束扇区

gdisk工具:
     gfisk /dev/sdb 类fdisk 的专业GPT分区工具

同步分区表:

在创建分区后,系统可能不会识别到新创建的分区,我们只能在不重启设备的情况下,手工识别分区.
注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别

查看内核是否已经识别新的分区:
# cat /proc/partations
#lsblk     
    lsblk -f /dev/sd[a-z] 查看分区的文件系统类型

echo "---" > /sys/class/scsi_host/host2scan     刷新硬盘   centos6
echo "---" > /sys/class/scsi_host/host0/scan     刷新硬盘   centos7
通知内核重新读取硬盘分区表
   CentOS 5, 7: 使用partprobe
   Centos 6:    
    新增分区用
        partx -a -n M:N /dev/DEVICE
        kpartx -a /dev/DEVICE -f: force
    删除分区用
        partx -d -n M:N /dev/DEVICE
        centos6: –nr N-M

    parted命令:
    parted的操作都是实时生效的,小心使用
     用法: parted [选项]... [设备 [命令 [参数]...]...]
    parted /dev/sdb mklabel gpt|msdos
    parted /dev/sdb print
    parted /dev/sdb mkpart primary 1 200 (默认M)
    parted /dev/sdb rm 1
    parted -l

链接文件:访问同一个文件的不同路径;
注意:符号链接文件的大小是其指向的文件的路径字符串的字节数

硬链接:指向同一个inode的多个文件路径,
创建硬链接命令
> - ln src link_file,ln 目标文件(原文件) 新创建的文件
> - 支持-v选项,显示创建过程
特性
> - (1)目录不支持硬链接
> - (2)硬链接不能跨文件系统
> - (3)创建硬链接会增减inode引用计数


符号连接:指向一个文件路径的另一个文件路径,
创建软链接的命令 
> - ln -s src link_file,ln -s 目标文件(原文件) 新创建的文件)
> - 支持-v选项,显示创建过程

特性
> - (1)符号链接与文件是两个各自独立的文件,各有自己的inode,对原文件创建符号链接不会增加引用计数
> - (2)支持对目录创建符号链接,可以跨文件系统
> - (3)删除符号链接不影响原文件,但删除原文件,符号指定的路径即不存在,此时会变成无效链接

管理文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。
操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等

1.文件系统类型

Linux文件系统: : ext2(Extended file system), ext3,ext4, xfs SGI) , btrfs( Oracle) , reiserfs, jfs(AIX) , swap
光盘: iso9660
 Windows: fat32, ntfs
Unix: FFS( fast) , UFS( unix) , JFS2
网络文件系统: NFS, CIFS
集群文件系统: GFS2, OCFS2( oracle)
分布式文件系统: ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未经处理或者未经格式化产生的文件系统

2.文件系统分类

根据其是否支持"journal"功能:
    日志型文件系统: ext3, ext4, xfs, ...
    非日志型文件系统: ext2, vfat 
文件系统的组成部分:
    内核中的模块: ext4, xfs, vfat
    用户空间的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat

内核文件系统的组成部分:
    lsmod:查看当前系统内核已经装载的模块
    文件系统驱动:由内核提供
    文件系统管理工具:由用户空间的应用程序提供

查前支持的文件系统: cat /proc/filesystems
Linux的虚拟文件系统: VFS

系统管理之磁盘管理(一)

文件系统的选择:

    根据存储数据的单个文件大小,及数据类型
    首先要有日志,ext2,vfat可以淘汰了。
    其次是看各自优势,jfs似乎没有明显的优点,果断还是直接用ext4省心。
    XFS大文件速度快,reiserfs 作者杀妻子进去了基本等于死掉了,小文件性能是很不错的。
    fuse系列的文件系统不算原生的,但是如果有特别需求(比如ntfs、aufs)还是考虑使用一下。
    本地两个杀手级别的文件系统btrfs和zfs,都属于开发中的(虽说已经production ready了),目前并没有广泛使用。

3.创建文件系统

格式化:低级格式化,(分区之前进行,划分磁道)高级格式化(分区之后对分区进行,创建文件系统)
元数据区,数据区
元数据区:inode(index node)
文件:文件,大小权限,从属关系,时间戳,数据块指针...
符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径;
设备文件:存储数据指针的空间当中存储的是设备号(major,minor)
磁盘在划分完元数据区和数据区以后要在数据去预留一段空间(工作空间)供超级用户使用,在磁盘空间饱满后用此段空间进行管理;删除,整理。。。。。
位图索引:每个inode号和每个磁盘数据块都需要位图索引来判断是否被占用,位图为0表示此位图对应的inode号或者数据块为空闲,1表示占用

mkfs命令:

(1) # mkfs.FS_TYPE /dev/DEVICE

  • ext4

  • xfs

  • btrfs

  • vfat

(2) # mkfs -t FS_TYPE /dev/DEVICE

  • -L 'LABEL': 设定卷标

  • -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小

  • -N #:为数据空间创建个多少个inode

  • -I 一个inode记录大小128—4096

  • -m #: 默认5%,为管理人员预留空间占总空间的百分比

  • -O FEATURE[,…]:启用指定特性

  • -O ^FEATURE:关闭指定特性

mke2fs: ext系列文件系统专用管理工具

  • -t {ext2|ext3|ext4}

  • -b {1024|2048|4096}

  • -L 'LABEL'

  • -j: 相当于 -t ext3
      mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

  • -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小

  • -N #:为数据空间创建个多少个inode

  • -I 一个inode记录大小128—4096

  • -m #: 默认5%,为管理人员预留空间占总空间的百分比

  • -O FEATURE[,…]:启用指定特性

  • -O ^FEATURE:关闭指定特性

centos6 默认不支持xfs 如果要安装得先安装xfsprogs工具

windows无法识别linux的文件系统;因此,存储设备需要两种系统之间交叉使用时,应该使用windows和linux同时支持的文件系统;fat32(vfat);

mkfs.vfat device

4.文件系统管理工具

blkid:块设备属性信息查看

  • blkid [OPTION]… [DEVICE]

  • -U UUID: 根据指定的UUID来查找对应的设备

  • -L LABEL:根据指定的LABEL来查找对应的设备

[root@w7 ~]# blkid
/dev/sdc1: LABEL="qwecz" UUID="88c0011a-e573-4719-9757-b6e60ccfc08f" TYPE="ext4" PARTUUID="d44b6ba9-b442-469d-9dca-25a0e687f131" 
/dev/sdc2: UUID="12fe07e9-665d-485b-b040-10817289820c" TYPE="ext4" PARTUUID="0a301313-291d-4112-b13f-cd92c268274a" 
/dev/sda1: UUID="6c3c827d-60c8-4778-b9b0-439da928a614" TYPE="xfs" 
/dev/sda2: UUID="820ccbbb-45e5-4a16-89cc-7deeab7b6fdd" TYPE="xfs" 
/dev/sda3: UUID="a456c4bc-bb4d-4001-91e1-99a09f61943a" TYPE="swap" 
/dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
[root@w7 ~]# blkid -U a456c4bc-bb4d-4001-91e1-99a09f61943a
/dev/sda3
[root@w7 ~]# blkid -L qwecz /dev/sdc1
/dev/sdc1

uuidgen:可随机生成UUID
findfs :查找分区,

  • findfs [options] LABEL=label

  • findfs [options] UUID=uuid

[root@w7 ~]# blkid    
/dev/sdc1: LABEL="qwecz" UUID="88c0011a-e573-4719-9757-b6e60ccfc08f" TYPE="ext4"
/dev/sdc2: UUID="12fe07e9-665d-485b-b040-10817289820c" TYPE="ext4" 
/dev/sda1: UUID="6c3c827d-60c8-4778-b9b0-439da928a614" TYPE="xfs" 
/dev/sda2: UUID="820ccbbb-45e5-4a16-89cc-7deeab7b6fdd" TYPE="xfs" 
/dev/sda3: UUID="a456c4bc-bb4d-4001-91e1-99a09f61943a" TYPE="swap" 
/dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" 
[root@w7 ~]# findfs LABEL=qwecz
/dev/sdc1
[root@w7 ~]# findfs UUID=88c0011a-e573-4719-9757-b6e60ccfc08f
/dev/sdc1

e2label:管理ext系列文件系统的LABEL

  • e2label DEVICE [LABEL]

[root@w7 ~]# e2label /dev/sdc1      命令跟分区名,查看分区的卷标
qwecz
[root@w7 ~]# e2label /dev/sdc1 qesd    命令跟分区名加上新卷标,修改分区的卷标
[root@w7 ~]# e2label /dev/sdc1
qesd
[root@w7 ~]#

5.超级块

超级块:
   块组的个数
   每个块组中块的个数
   块的大小
   空闲、已使用的磁盘块个数
   空闲indoe、已经被使用indoe个数

系统管理之磁盘管理(一)

tune2fs:重新设定ext系列文件系统可调整参数的值
  • -l:查看指定文件系统超级块信息; super block

  • -L 'LABEL':修改卷标     卷标一般表示为挂载点    

  • -m #:修预留给管理员的空间百分比  可调为0

  • -j: 将ext2升级为ext3

  • -O: 文件系统属性启用或禁用, –O ^has_journal   Filesystem features

  • -o: 调整文件系统的默认挂载选项,–o ^acl    Default mount options

  • -U UUID: 修改UUID号

dumpe2fs:
  • -h:查看超级块信息(分组信息),分区用分组管理

6.文件系统检测和修复

常发生于死机或者非正常关机之后
挂载为文件系统标记为“ dirty”

fsck: File System Check
作用:用于实现文件系统检测的工具 修复的工作特性就是把不连续的文件删除
注意:在非挂载的情况下修复
因进程以外终止或系统崩溃等原有导致写入操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行
fsck:check and repair a Linux file system

  • -t fstype:指明文件系统类型

  • fsck -t ext4 = fsck.ext4

  • -a:无需交互而自动档修复所有错误;

  • -r: 交互式修复;
    注意: FS_TYPE一定要与分区上已经文件类型相同;

e2fsck: ext系列文件专用的检测修复工具
e2fsck:check a Linux ext2/ext3/ext4 file system
e2fsck[option]device

  • -y:自动回答为yes

  • -f:强制修复

挂载设备

根文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程
把设备关联挂载点: mount Point
mount
卸载时:可使用设备,也可以使用挂载点
umount
挂载点下原有文件在挂载完成后会被临时隐藏
应该使用未被或不会被其他进程使用的目录挂载

1.挂载命令

挂载方法: mount DEVICE MOUNT_POINT

mount:通过查看/etc/mtab文件显示当前已挂载的所有设备

mount [-fnrsvw] [-t vfstype] [-o options] device dir
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

命令选项:

  • -t vsftype:指定要挂载的设备上的文件系统类型,多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型

  • -r: readonly,只读挂载

  • -w: read and write, 读写挂载

  • -n: 默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中,-n选项不更新/etc/mtab,相当于#mount

  • -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, nosuid, dev, exec, auto, nouser, async
默认挂载的默认选项
mount /dev/sr0 /mnt

查看内核追踪到的已挂载的所有设备:
cat /proc/mounts

一个使用技巧:
可以实现将目录绑定在另一个目录上,作为其临时访问入口;

mount --bind 源目录 目标目录

挂载本地的回环设备;

mount -o loop /path/to/some_loop_file mount_point

2.卸载命令

查看挂载情况:

findmnt MOUNT_POINT
mount
cat /etcmatb
cat /proc/mounts

查看正在访问指定文件系统的进程:

lsof MOUNT_POINT
fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程:

fuser -km MOUNT_POINT

卸载:

umount DEVICE
umount MOUNT_POINT

3.文件挂载配置文件:/etc/fstab

配置文件系统体系
被mount、 fsck和其它程序使用
系统重启时保留文件系统体系
可以在设备栏使用文件系统卷标
使用mount -a 命令挂载/etc/fstab中的所有文件系统

设定除了根文件系统以外的其他文件系统能够开机时自动挂载:/etc/fstab文件
/etc/fstab 每行定义一个要挂载的文件系统;

  • 要挂载的设备或伪文件系统

  • 挂载点

  • 文件系统类型

  • 挂载选项

  • 转储频率

  • 自检次序

要挂载的设备或伪文件系统:
 设备文件 
 LABEL(LABEL="")
 UUID(UUID="")
 伪文件系统名称(proc,sysfs)

挂载点:
 swap类型的设备的挂载点为swap
 其他的设备挂载点自定义指向某个路径

文件系统:
 使用blkid命令查看挂载分区的文件系统类型

挂载选项:
 defaults:使用默认的挂载选项
 如果要同时指明多个挂载选项,彼此间以逗号分隔

转储频率:
 0:不做备份
 1:每天转储
 2:每隔一天转储

自检次序: 
 0:不自检
 1:首先自检;一般只有根文件系统才用1
 2:次级自检

交换分区

linux上的交换分区必须使用独立的文件系统
且文件系统的system id 必须为82
交换分区是系统RAM的补充

1.基本设置包括:

• 创建交换分区或者文件
• 使用mkswap写入特殊签名
• 在/etc/fstab文件中添加适当的条目
• 使用swapon -a 激活交换空间

2.创建swap设备

mkswap命令:

mkswap [option] device
-L label:指明卷标
-f:强制

3.挂载交换空间

启用: swapon

swapon [OPTION]… [DEVICE]

  • -a:激活所有的交换分区;

  • -p PRIORITY:指定优先级

  • /etc/fstab:pri=value

禁用: swapoff [OPTION]… [DEVICE]

4.swap的优先级

用户可以给某个swap指定一个0到32767的优先级
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户
指定优先级的swap,会给这个优先级减一。先添加的swap的缺省优先级比较高,除非用户自己指定
一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)。
优化性能:分布存放,高性能磁盘存放

移动介质的挂载

挂载意味着使外来的文件系统看起来如同是主目录树的一部分
访问前、介质必须被挂载
摘除时,介质必须被卸载
按照默认设置,非根用户只能挂载某些设备(光盘、 DVD、软盘、 USB等等)
挂载点通常在/media 或/mnt下

1.使用光盘介质

在图形环境下自动启动挂载

/run/media/<user>/<label>

否则就必须被手工挂载

mount -r /dev/cdrom /mnt/
mount /dev/sr0 /mnt/

卸载光盘:

umount /mnt

eject命令也可卸载或弹出磁盘

创建ISO文件

cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc

刻录光盘

wodim –v –eject centos.iso

2.挂载USB介质

被内核探测为SCSI设备

/dev/sdaX、 /dev/sdbX、或类似的设备文件

在图形环境中自动挂载

图标在[计算机]窗口中创建
挂载在/run/media//

手动挂载

 mount /dev/sdb1 /mnt

手动卸载

umount /mnt

常见工具

1.随机创建UUID号

[root@w7 mnt]# uuidgen
212506ac-f127-4ea8-b466-c2a61f17a229

2.查看磁盘命令

lsblk 查看磁盘命令

[root@w7 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0 58.6G  0 part /
└─sda3   8:3    0    2G  0 part [SWAP] 
sr0     11:0    1  7.2G  0 rom

3.hexdump 查看二进制文件

在磁盘可查看设备文件的MBR

[root@w7 mnt]# hexdump -C -n 512 /dev/sdc
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  01 00 ee fe ff ff 01 00  00 00 ff ff 7f 02 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

4.查看系统加载的模块信息

 lsmod命令:

[root@w7 mnt]# lsmod
Module                  Size  Used by
ext4                  578819  0 
mbcache                14958  1 ext4
jbd2                  102940  1 ext4
nls_utf8               12557  0 
isofs                  39844  0 
dm_mirror              22135  0 
dm_region_hash         20862  1 dm_mirror

5. 内存空间使用状态:

free [OPTION]

  • -m: 以MB为单位

  • -g: 以GB为单位

6.文件系统空间占用等信息的查看工具:

df [OPTION]… [FILE]…

  • -H 以1000为单位

  • -T 文件系统类型

  • -h: human-readable

  • -i: inodes instead of blocks

  • -P: 以Posix兼容的格式输出

7.查看某目录总体空间占用状态:

du [OPTION]… DIR

  • -h: human-readable

  • -s: summary

8.工具dd

dd命令: convert and copy a file

用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
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 的记录,不足部分用空格填充。
nblock 替代cbs长度的每一行尾的空格为新行
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
swab 交换输入的每对字节
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

用法:

磁盘拷贝:
  dd if=/dev/sda of=/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

备份:
将本地的/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

恢复:
将备份文件恢复到指定盘
  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

销毁磁盘数据
  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=12500  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错误。当这种情况影响到硬盘的第一个扇区时 ,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。

有一个大与2K的二进制文件fileA。 现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,请问如何实现?
  dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

实战:
1、创建一个2G的文件系统,块大小为2048byte, 预留1%用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testdir目录,且默认有acl挂载选项
2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信

原创文章,作者:wencx,如若转载,请注明出处:http://www.178linux.com/40376

(0)
wencxwencx
上一篇 2016-08-30
下一篇 2016-08-30

相关推荐

  • linux rpm包管理

    一、概要     RPM:RPM Package Manager(rpm软件包管理器)的缩写。它能将编译好的程序打包一个文件或有限的几个文件,可用于实现安装、卸载、升级、查询等功能。 二、rpm软件包管理 rpm包的命名格式:name-version-relase.arch.rpm 例如:bash-1.1.0-5.el…

    Linux干货 2015-04-27
  • 磁盘管理、文件系统、挂载

    磁盘管理 一磁盘分区 磁盘分区有两种方式:MBR和GPT MBR:1)按照柱面进行分区;分区不超过2T 2)关于0磁道0扇区的前512bytes;其中的446bytes为boot loader;中间的64bytes装有分区表;2bytes为55AA 3)可分4个分区;3个主分区+1扩展(N个逻辑分区)扩展分区最多一个。 GPT分区:1)GUID patiti…

    Linux干货 2016-08-29
  • 文件查找locate 和 find

    大纲 一、前言 二、locate 三、find 一、前言 在windows下,我们查找文件,可以在搜索里面,输入文件名或通配符就可以进行搜索。在Linux下,要查找文件可以找locate 或 find命令进行查找,而且这些命令还有其他特别的功能。 二、locate 特点:此命令是非实时查找命令,依赖于索引,因此搜索速度快。但是索引的构建是当系统空闲时由系统自…

    Linux干货 2015-05-11
  • 用户管理

    http://www.jianshu.com/p/a07ae29ca345

    Linux干货 2017-07-23
  • Dell R720 安装debian系统编译网卡驱动

    最近比较忙,视频也没怎么看,下面是之前工作中遇到的问题,事后做的记录,中间解决过程参考了网上的相关资料,现在一并贴出来。 需求:Dell R720 安装debian系统 环境 硬件:Dell R720  软件:系统有debian 7.0.0和debian 6.0.10 1. debian 7.0.0 : 集成了DELL PCRE H710 Mini…

    Linux干货 2015-08-04
  • 课堂练习之 “;” 用法

    作业:如何实现前一条命令执行成功,才会执行后面一条命令,以及前一条命令执行失败才会执行后一条命令。 首先,多条命令一起执行的方法有几种。   1.用;隔开,不会判断前一条命令是否执行成功或失败。   2.用&&隔开,前面命令执行成功后,才会执行后面的命令。     3.用||或|隔开,前面命令执行失败后…

    2017-07-15