磁盘管理

本章节主要介绍磁盘分区、文件系统、挂载、以及swap,另外还有工具dd的使用等等。

新加磁盘

echo   ‘- – -’  > /sys/class/scsi_host/host2/scan       //使新加磁盘生效

lsblk      //查看磁盘      或       ls    /dev/sd*     -l     或  cat   /proc/partitions

dd   if=/dev/zero   of=f1  bs=1M   count=1024   //可用来测磁盘速度

设备文件:

一切皆文件: open()  ,  read() ,   write() ,   close()

设备文件:关联至一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信

字符设备块设备区别

块设备是物理存在的,有缓存,  随机访问,以块为单位存储

字符设备没有缓存,按顺序访问,以字符为单位存储

mknod     /data/sdA    b  8  1     //创建指定类型的设备

设备号码: 主设备号(标识设备类型); 次设备号(标识同一类型下的不同设备)

硬盘接口类型:并行   串口     rpm(磁盘转速)

磁盘设备的设备文件命名: /dev/DEV_FILE

虚拟磁盘:/dev/vd      (例如云服务器)

不同版本的系统的硬盘名称不同

分区的设备名称不稳定;

磁盘的容量大小计算:512*扇区数(sector)*磁道数(track)*盘面数(head)

一个磁道用6位二进制数表示扇区数,最多有64个扇区

10位存放磁道数,最多有1024磁道

8位存放磁头,最多有256磁头

柱面(cylinder):所有相同磁道组成的柱面

区位记录磁盘扇区结构:ZBR(区位记录:Zoned Bit Recording)

CHS(磁盘三围 :c代表柱面,h磁头,s扇区)和LBA:

CHS:采用24bit位寻址;最大寻址空间为8GB

LBA: 采用48bit位寻址;最大寻址空间为128PB

由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

磁盘的使用:分区;创建文件系统:格式化;挂载:分配目录名

磁盘为什么分区:

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

两种分区方式:MBR,GPT

MBR分区:分区不超过2T;按柱面分区;使用32位表示扇区数

结构:

10

0磁道0扇区:446bytes   //用于启动计算机

64 bytes   //分区表    其中    16bytes: //标识一个分区

2bytes   :   55AA标记位

dd  if=/dev/sda   of=/data/mbr_back    bs=1  count=512  //备份分区表

dd  if=/dev/zero   of=/dev/sda    bs=1  count=512      //破坏分区表

救援模式修复分区表

重启,第三项(troubleshooting),第二项(救援模式),选1继续;设置IP地址(ifconfig    ens32    192.168.10.100/24),拷贝备份的分区表文件,恢复分区表   dd if=mbr_bak   of =/dev/sda

硬盘主导记录MBR由四个部分组成:

  1. 主引导程序,负责从活动分区中加载,并运行系统引导程序
  2. 出错信息数据区
  3. 分区表
  4. 结束标志字,偏移地址01FE—01FF的2个字节值为结束标志55AA

dd  if =/dev/sda  of=/dev/sdd    bs=1  count=512   //克隆分区,仅克隆主分区(MBR)

dd  if=/dev/sda   of=/data/mbr_back    bs=1  count=2  -skip=510  //破坏55AA标记

GPT分区

GUID;支持128个分区,使用64位,支持8Z    64Z

使用128位UUID表示磁盘和分区GPT分区表自动备份在头和尾两份并有CRC校验位

UEFI(统一扩展固件接口)硬件支持GPT,使操作系统启动

uuidgen        //生成随机的UUID

管理分区

列出块设备:lsblk

创建分区使用:fdisk   创建MBR分区;

gdisk  创建GPT分区

parted  高级分区操作

partprobe  –   重新设置内存中的内核分区表版本

parted命令(parted的操作都是实时生效的,小心使用)

parted    /dev/sdb    mklabel   gpt|msdos        //创建分区,并指定分区的类型

parted  /dev/sdb  mkpart   primary  1 1000(默认以M为单位) //创建分区指定大小

parted    /dev/sdb      print    //显示分区情况

parted    /dev/sdb      rm   数字  //删除分区

parted   -l    //列出分区信息(可跟设备名,查看某设备的具体分区情况)

创建逻辑分区后,删除第一个逻辑分区,其他的逻辑分区的名称会发生变化

分区工具fdisk和gdisk

fdisk  -l  -[u]  [device…]  查看分区  或   lsblk   两者结果不同,需同步分区表

fdisk  /dev/sdb   管理分区

子命令:   p  分区列表       t   更改分区类型        o  创建一个空的mbr分区

n 创建新的分区        d删除分区           v  校验分区

u 转换单位            w 保存退出          q  不保存退出

同步分区表

查看内核是否已经识别新的分区:cat  /proc/partitions

Centos6中:

新增分区: partx  -a   /dev/DEVICE    //实现分区同步

Kpartx      -a    /dev/DEVICE     -f:  force   //实现分区同步

删除分区:  partx  -d  –nr M-N  /dev/DEVICE

Centos7使用partprode              partprode   [/dev/DEVICE]

文件系统:负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志 ,压缩,加密等

支持的文件系统:   /lib/modules/`uname -r`/kernel/fs   //存放了所有的文件系统

Linux  文件系统:ext2 ,ext3,ext4,xfs(SGI) ,btrfs (Oracle) ,reiseerfs,jfs(AIX) ,swap

网络文件系统:NFS            CIFS

集群文件系统:  GFS2       OCFS2 (oracle)

分布式文件系统: fastdfs ,ceph ,moosefs ,mogilefs ,glusterfs ,Lustre

Raw :未经处理或未经格式化产生的文件系统

文件系统分类

根据其是否支持”journal”功能:

日志型文件系统:ext3 , ext4 ,xfs ,….

非日志型文件系统:ext2 ,vfat

cache   针对读操作(缓存)

buffer    针对写操作(缓冲区)

文件系统的组成部分

内核中的模块: ext4 ,xfs , vfat

用户空间的管理工具:mkfs.ext4  ,mkfs.xfs , mkfs.vfat

Linux的虚拟文件系统:VFS

查看支持的文件系统: cat  /proc/filesystems

blkid   /dev/sdb1    //查看设备的文件系统类型

df   -T    //查看已挂载的块设备的文件系统

blkid     //查看全部块设备的文件系统类型

创建文件系统

mkfs  命令:  mkfs.FS_TYPE  /dev/DEVICE

ext4 ,xfs , vfat  ,btrfs

mkfs  -t  FS_type  /dev/DEVICE

-L  ‘label’   :设定卷标

创建ext文件系统:

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

-m    默认5%,可指定预留空间占总空间的百分比

-b    {1024|2018|4096}  块大小

-l     一个节点记录占用的磁盘空间大小

-L “将来挂载点目录”     加卷标

-i     为数据创建iNode ,该大小不小于块大小

-O  FEATURE   启用某功能

-O  ^FEATURE    禁用某功能

文件系统标签:指向设备的另一种方法,与设备无关

blkid  :块设备属性信息查看

blkid   [option]…   [device]

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

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

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

e2label   DEVICE   [LABEL]     修改卷标

blkid -U `grep “/data” /etc/fstab |cut -d ” ” -f1 |cut -d= -f2` 查看/data对应设备文件

blkid -U `grep “/data” /etc/fstab |sed -r “s@UUID=(.*) /data.*@\1@”`

findfs:查找分区

findfs   [options]   LABEL=<label>    以卷标为搜索条件,查找设备名

findfs   [options]  UUID=<uuid>

tune2fs: 重新设定ext系列文件系统可调整参数的值

-l   查看指定文件系统超级块信息;super block

-L  ‘LABEL’     修改卷标

-m  #     修预留给管理员的空间百分比

-j    将ext2 升级为ext3

-O  文件系统属性启用或禁用    -O  ^FEATURE   禁用

-o   调整文件系统默认的挂载选项

-U   UUID    修改UUID号

tune2fs   -o   acl  /dev/sdb1    //在centos6上需对新加块设备设置acl功能

centos7上新创建的分区默认就有acl功能

dumpe2fs  :  块分组管理,32678块

-h    查看超级块信息,不显示分组信息

文件系统检测和修复(常发生于死机或非正常关机后)

挂载为文件系统标记为:“no   clean”(注意,不要在挂载状态下修复)

fsck   -t  FS_TYPE    或   fsck.FS_TYPE  (修复文件系统时,不能处于挂载状态)

-p   自动修复错误

-r    交互式修复错误

-y    自动回答yes

FS_TYPE     与分区上已经存在的文件类型相同

fsck     //修复文件系统(修复的是软件逻辑上的破坏)

e2fsck   ext系列文件专用的检测修复工具

-y    自动回答yes

-f     强制修复

超级快和inode table :

块大小:4KB

超级快:存放当前分区的元数据信息

inode  table:存放文件的元数据,属性,大小,权限

挂载mount:(普通用户不能挂载)

注意:一个挂载点同一时间只能挂一个设备;一个设备可同时挂载到多个目录

挂载点下的源文件在挂载完成后会被临时隐藏

挂载点:(事先存在,建议使用空目录,进程正在使用中的设备无法被卸载)

挂载:将额外的文件系统与根文件系统某现存的目录建立关联关系,进而使此目录作为其他文件访问入口的行为

卸载:解除此关联关系的过程

挂载方法:  mount    DEVICE     MOUNT_POINT

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

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

-a   实现自动挂载,使修改的配置文件立即生效(若文件中存在,仅修改部分参数,该命令无效,只能用remount 实现重新挂载)

-r   以只读方式挂载设备(只能查看文件,不允许删除)

-w   可读可写(默认)

-n    隐藏挂载(centos6  有效)   cat  /proc/mounts    即可看到隐藏挂载项

-B   或 –bind    绑定目录到指定目录(目录挂目录)

-o   acl       //挂载时添加上acl功能

async      异步模式

sync        同步模式,内存更改时,同时写磁盘

noexec       禁止程序执行(但bash 可执行)

remount       重新挂载(特定环境不能取消挂载,即可利用当前命令挂载)

       loop       挂载文件到目录上(实现文件模拟分区)

losetup   -a   //  可查看模拟分区的文件(centos6 默认有8个)

vim   /boot/grub/grun.conf         //修改kernel行的最后  max_loop=100

查看内核追踪到的已挂载的全部设备:   cat   /proc/mounts(centos6上)

卸载命令

查看挂载情况:  findmnt    MOUNT_POINT |device

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

lsof    MOUNT_POINT

fuser   -v  MOUNT_POINT

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

fuser   -km  MOUNT_POINT

卸载

umount     DEVICE

umount     MOUNT_POINT

实现挂载的永久生效:写入文件/etc/fstab

挂载文件的内容错误

  1. UUID错误,重启机器将失败,需将文件的最后内容改为0(即不检查)重启可远程后,修改为正确的UUID即可
  2. 挂载点出错,重启机器成功,只需重新挂载即可

如何将/home整个目录迁移到一个新的大的磁盘上?

  dd  /dev/zero   /dev/sdb   bs=1   count=512   //破坏分区即可删除分区

     首先备份/home

  1. fdisk 先分一个大的分区50G(分区大小不可更改)

2 .mkfs.ext4    /dev/sdb1  -L  /home 创建文件系统

  1. mkdir /mnt/home
  2. mount /dev/sdb1 /mnt/home
  3. init 1 单用户登录,确保只有自己在访问  (网络出现问题)
  4. cp -av /home/*    /mnt/home/
  5. rm –rf /home/*
  6. vim /etc/fstab

UUID=xxxxx      /home     ext4     defaults   0  0

  1. mount -a

ls    /home  /mnt/home   -l

  1. umount /mnt/home    ; rm   -rf   /mnt/home
  2. init 5

恢复原状态:

  1. mkdir /mnt/home
  2. mount /dev/sdb1    /mnt/home
  3. init 1    ;     umount     /home
  4. cp -av      /mnt/home/*     /home/
  5. 删除文件中的配置 ;   umount   /mnt/home
  6. 删除sdb1分区;( fdisk    d     1     w      )

文件中写:文件中写:挂载光盘: /dev/sr0    /mnt/cdrom  iso9660    defaults     0 0

文件夹挂载到文件夹:  /boot   /mnt/boot    none     bind   0  0

将文件挂载目录:/root/p1(设备文件名)     /mnt/p1(挂载点)  ext4    loop    0  0  (模拟文件分区挂载)

处理交换文件和分区:

交换分区是系统RAM的补充

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

挂载交换分区:

swapon 启用

-a  激活所有的交换分区

-p   PRIORITY   指定优先级

/etc/fstab:pri=value

禁用swapoff  [option]…   [DEVICE]

SWAP的优先级

可以指定swap分区0到32767的优先级,值越大优先级越高

如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从 -1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一

先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户 指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)

优化性能:分布存放,高性能磁盘存放

swapon [OPTION]… [DEVICE]

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

-p PRIORITY:指定优先级

/etc/fstab:pri=value  可写入文件,使之永久生效(禁用swap在启用即可生效)

mkswap   创建文件系统

修改fstab文件:  UUID=xxxx      挂载点    swap       defaults;pri=100   0  0

swapon   -a     //使swap分区生效

swapon     -s     查看所有生效的swap分区的信息

swapoff       禁用swap分区

扩充swap分区:(该方法需要有磁盘空间)

  1. 分区,一个2G的swap分区, 改成82类型
  2. mkswap /dev/sdb1     -L      swap_sdb1    创建文件系统
  3. 修改fstab文件: UUID=xxxx      挂载点    swap      defaults   0   0
  4. swapon -a     //使swap生效

使用文件模拟swap

dd   if=/dev/zero   of=/swapfile   bs=1024M  count=2   //生成2G 的swap文件

mkswap     /swapfile     -L    swap_file      (t    82 使用fdisk给分区指定文件系统)

修改fstab文件:  /swapfile      swap(挂载点)    swap     defaults    0   0

swapon   -a     //使swap分区生效

eject    弹出光盘

eject   -t     弹入光盘.

创建ISO文件:   cp    /dev/sr0      /data/centos7.iso

dd    /dev/sr0     /data/centos7.iso

mkisofs    -r  -o   /data/centos7.iso     /etc

合并光盘:(可以用来做yum原,不能用来启动光盘)

mkdir     /centos6

cp    /mnt/cdrom/*     /centos6/   -r  (复制两张盘内容到同一文件夹)

mkisofs    -r  -o   /data/centos7.iso     /centos6/

挂载USB介质

lsusb     查看USB设备

tail    /var/log/messages     -f    查看日志文件

查看USB设备是否识别 : lsusb

被内核探测为SCSI设备 :/dev/sdaX、/dev/sdbX、或类似的设备文件

在图形环境中自动挂载 :图标在[计算机]窗口中创建 , 挂载在/run/media//

手动挂载 : mount /dev/sdb1 /mnt

常见工具:

文件系统空间占用等信息的查看工具: df [OPTION]… [FILE]…

-H 以1000为单位

-T 文件系统类型

-h: human-readable  以1024为单位

-i:inodes instead of blocks

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

查看某目录总体空间占用状态: du [OPTION]… DIR  (默认统计每个子文件夹的大小)

-h: human-readable   (加上单位,默认为K)

-s: summary  (总大小)       –max-depth   (最大深度)

工具dd:(克隆分区只是克隆MBR分区内容)

dd命令:convert and copy a file

用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#:block size, 复制单元大小

count=#:复制多少个bs

skip=blocks   从开头忽略blocks个ibs大小的块

seek=blocks   从开头忽略blocks个obs大小的块

conv=conversion[,conversion…] 用指定的参数转换文件

转换参数: ascii 转换 EBCDIC 为 ASCII

ebcdic 转换 ASCII 为 EBCDIC

lcase 把大写字符转换为小写字符

ucase 把小写字符转换为大写字符

nocreat 不创建输出文件

noerror 出错时不停止

notrunc 不截短输出文件

sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字 符补齐

备份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

例题:有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读 取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开 始的位置,替换128Bytes,实现如下:

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

备份:

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/zero of=/root/1Gb.file bs=1024 count=1000000

测试硬盘读速度    dd if=/root/1Gb.file bs=64k | dd of=/dev/null

修复硬盘 dd if=/dev/sda of=/dev/sda

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97027

(0)
qljqlj
上一篇 2018-04-25
下一篇 2018-04-25

相关推荐

  • Ansible使用介绍(三)templates及Roles角色

    本节索引: 一、前期环境准备 二、Playbook中模板templates的用法 三、Playbook中逻辑语句的用法 四、Roles角色详解   一、环境搭建: 前期准备:一台虚拟机作为ansible,三台虚拟机作为被控端node 主控端: 主机名:ansible 系统版本:CentOS6.9 被控端: 主机名:node1 CPU内核数:4 系统…

    2018-05-31
  • Linux发行版的基础目录名称命名法则及功用规定

    对于linux来说,普天之下莫非王土,所有的文件必须从根开始。磁盘有多个分区,如何跟根建立关系?我们把磁盘上一个分区定义为根分区,那么其它分区被根分区奴役。其它分区挂载(关联)到根分区上。 所有linux命名必须遵守,FHS,:Filesystem Hieracchy standard.文件系统层级机构标准。定义根下必须有哪些目录,哪些可以没有,不同发行版所…

    2018-06-27
  • 八个虚拟机实现DNS互联网架构搭建

    DNS全篇知识汇总实现

    2018-06-04
  • 第六周 网络管理命令、进程监控

    一、osi七层模型和TCP/IP五层模型 1、模型图 2、每一层的功能和用到的协议   二、iproute2家族 1、概述 ip 是 iproute2 软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。例如: ifconfig、route 等。 2、命令格式 ip [ OPTIONS ] OBJECT { COMMAND | h…

    2018-07-12
  • iptables/netfilter、 tcp_wrapper

    iptables/netfilter: Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件; 主机防火墙 网络防火墙 软件防火墙(软件逻辑): 硬件防火墙(硬件和软件逻辑):NetScreen,CheckPoint,。。。 iptables(ne…

    Linux笔记 2018-06-05