磁盘管理

一、知识整理

1、每个扇区:512字节;每个柱面:256个磁头*63个扇区*512字节,大概为8Mcentos6中分区使用起始结束柱面;centos7中分区使用起始结束扇区。EBR:扩展分区的第一个扇区。

2、MBRmaster root record1982年,使用32位表示扇区数,分区不超过2T。其中,一共512bytes字节,446bytesboot loader64bytes表示分区表,其中16bytes标识一个分区,剩余2bytes为有效性标记55AA

3、查看前512长度的数据编码:

[root@localhost mnt]# hexdump -C -n 512 /dev/sdb
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 20  |............... |
000001c0  21 00 83 8a 71 19 00 08  00 00 00 00 40 01 00 8a  |!...q.......@...|
000001d0  72 19 83 a0 82 1e 00 08  40 01 00 00 40 00 00 a0  |r.......@...@...|
000001e0  83 1e 83 2b 8a a1 00 08  80 01 00 00 20 00 00 00  |...+........ ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|

4、BIOS只支持MBRGPT使用UEFI支持,UEFI,统一扩展固件接口。VFS虚拟文件系统。

 fdisk也支持GPT,默认创建为MBRgptGUID patition table,支持128个分区,64位,若扇区为512K则能支持8Z,若为4M则支持64Z最大空间。

5、查看分区完成信息的三种方法:lsblk,显示块设备;df -lhcat  /proc/partitions

6、如今的磁盘标识统一为sd*dev/vda为虚拟磁盘。

7、LBAlogical block address:逻辑区块地址,数据以块存储,是一种寻址模式。块大小可以指定,一般为1024,2048,40964K对齐)。

  CHScylinder柱面,heads磁头,sector扇区;CHS寻址模式,是fdisk在分区期间所需的磁盘信息,磁盘信息三维。

8、块组的起始位置group 0,超级块super block,用于存储元数据及各种信息,一般为13579块组有备份。

9、tune2fs 只能查看ext文件系统的分区,xfs类型的文件系统更改卷标可以使用mkfs.xfsmount命令。

10、查看挂载的三种方式:mountcat /etc/mtabcat /proc/mounts

11、根据uuid查找是哪个分区:mount -U UUID /dev/*

    查看挂载情况

findmnt  MOUNT_POINT

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

lsof  MOUNT_POINT

fuser  -v MOUNT_POINT

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

fuser -km MOUNT_POINT

[root@localhost mnt]# findmnt /dev/sdc3
TARGET    SOURCE    FSTYPE OPTIONS
/mnt/sdc3 /dev/sdc3 ext4   rw,nodev,noatime,data=ordered
[root@localhost mnt]# lsof /dev/sdc3
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    11169 root  cwd    DIR   8,35     4096    2 /mnt/sdc3

12、在已经分区并且已挂载中某个分区的磁盘设备上创建新分区,内核可能在创建完成后无法直接识别。则需要通知内核强制重读分区:

centos5partprobe

centos6:添加分区partx -a

删除分区 partx -d –nr M:N /devsd#

centos7partprobe

13、文件系统种类总结:

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

光盘:iso9660

集群文件系统:nfscifs

内核级分布式文件系统:ceph

windows的文件系统:vfatntfs

伪文件系统:procsysfstmpfshugepagefs

Unix的文件系统:UFS/FFS/JFS

交换文件系统:swap

用户空间的分布文件系统:mogilefsmoosefsglusterfs

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

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

-H 按照1000进制显示

-T 文件系统类型

-h 易读格式

-i 显示inode使用

-P Posix兼容格式输出

15、findfs查找分区:

[root@localhost ~]# findfs LABEL=/dev/sdc2
/dev/sdc2
[root@localhost ~]# findfs UUID=2015-12-09-22-36-30-00
/dev/sr0

16、eject弹出光驱,eject -t回收弹出的光驱

17、创建ISO文件:cp  /dev/cdrom  /testdir/centos7.iso

mkisofs  -r  -o  /root/etc.iso  /etc

刻录光盘:wodim  -v  -eject  centos.iso

18、getenforce查看selinux的状态

setenforce 0  关闭selinux

二、命令详解及事例

1、mknod [option]… NAME TYPE [MAJOR MINOR]

创建块设备或字符设备的特殊文件:

-m MODE 创建后的设备文件的访问权限

[root@localhost mnt]# mknod cdrom b 11 0 
[root@localhost mnt]# ls
cdrom  media  sdb1  sdb2  sdb3  sysroot
[root@localhost mnt]# ll
总用量 16
brw-r--r--  1 root root 11, 0 8月  24 21:03 cdrom

2、lsmodlist modules

用来显示文件、proc/modules的信息,也就是显示当前内核模块装载的模块。执行命令会列出所有已载入系统的模块。例如:显示ext4被使用了几次。

[root@localhost mnt]# lsmod
Module                  Size  Used by
coretemp               13435  0 
kvm_intel             162153  0 
kvm                   525259  1 kvm_intel
ext4                  578819  4

3、lsoflist open files:列出当前系统打开文件的工具,常用用法是查找应用程序打开的文件名称和数目。可用于查找出某个特定应用程序将日志数据记录到何处或者正在跟踪某个问题。

-a 表示两个参数都必须满足时才显示结果

filename 显示打开指定文件的所有进程

-g gid 显示归属gid的进程情况

-i[4|6] [protocol] [@hostname|hostaddr] [:service|port]

46 :ipv4 or ipv6

protocol :tcp or udp

hostname :internet host name

hostaddr :ipv4dizhi

service :/etc/service中的service name可以多个

port :端口号

[root@localhost mnt]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1229 root    3u  IPv4  19337      0t0  TCP *:ssh (LISTEN)
sshd    1229 root    4u  IPv6  19339      0t0  TCP *:ssh (LISTEN)

4、fdisk磁盘管理命令,centos6默认分区后没有aclattr属性。

5、创建文件系统的工具mkfsmake file system

mkfs -t FS_TYPE /dev/DEVICE

-L  设定卷标

mkfs.FS_TYPE /dev/DEVICE

.ext234

.xfs

.btrfs

.vfat

-f 若原来有文件系统,强制执行

[root@localhost ~]# mkfs -t xfs -f /dev/sdc1 
meta-data=/dev/sdc1    isize=256    agcount=4, agsize=65536 blks
         =     sectsz=512   attr=2, projid32bit=1
         =        crc=0        finobt=0
data     =        bsize=4096   blocks=262144, imaxpct=25
         =        sunit=0      swidth=0 blks
naming   =version 2    bsize=4096   ascii-ci=0 ftype=0
log      =internal log     bsize=4096   blocks=2560, version=2
         =            sectsz=512   sunit=0 blks, lazy-count=1
realtime =none      extsz=4096   blocks=0, rtextents=0

6、检测及修复文件系统的工具fsck

因进程意外中止或系统崩溃等原因导致写入操作非正常终止时,可能会造成文件损坏;建议离线进行。

-t fstype 指明文件系统类型

fsck -t ext4

-a 无需交互而自动修复所有错误

-r 交互式修复

ext系列文件系统的专用工具

e2fsck [] device

-y 对所有问题自动回答为yes

-f 即使文件系统处于clean状态,也要强制进行检测

[root@localhost ~]# fsck /dev/sdc2
fsck,来自 util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdc2: clean, 11/65536 files, 12644/262144 blocks
[root@localhost ~]# fsck.ext4 /dev/sdc2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdc2: clean, 11/65536 files, 12644/262144 blocks

7、调整ext系列文件系统的特性tune2fs

块大小创建后不可修改

-l 列出超级块的内容:块大小默认4096b

-j ext2升级为ext3,即启用journal日志功能:tune2fs -j /dev/sda2

-L 修改卷标

-m # 调整预留空间百分比

-O 开启某种特性Feature  – ^O取消

-o [^]mount_option  开启或关闭某种挂载选项mount option

acl  ^acl

[root@localhost ~]# tune2fs -o ^acl -O has_journal -m 1 /dev/sdc2 
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 1% (2621 blocks)

8blkid获取文件系统类型及UUID;块设备属性信息查看

Linux下可以使用blkid命令对查询设备上所采用文件系统进行查询,blkid主要用来对系统的块设备所使用的文件系统类型、LABELUUID等信息进行查询,要使用这个命令必须安装e2fsprogs软件包。直接使用blkid可以列出当前系统所有已经挂载文件系统类型。

[root@localhost mnt]# blkid
/dev/sda1: UUID="595c35b0-15d0-46bb-a63a-b1b50f9202fd" TYPE="xfs" 
/dev/sda2: UUID="diptS0-7Z1c-6unD-IaAW-UCb7-ocJQ-XGUkfk" TYPE="LVM2_member" 
/dev/sda5: UUID="2daf41fb-a9be-4a6b-8f0a-05d3a40eb40c" TYPE="swap" 
/dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="88abbafb-5460-4760-b699-ea2df801348f" TYPE="xfs"

9、创建交换分区:命令:mkswap swapon swapoff

mkswap -f给文件设置swap时使用-f选项强制执行。

启用swapon

swap [] []

-a 定义在/etc/fstab文件中的所有swap设备

禁用swapoff DEVICE

步骤如下:首先创建一个分区或文件,tswap类型;然后

[root@localhost etc]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=e07f645f-79e7-4686-8a93-99e74335c944

使用/etc/fstab挂载或临时开启swapon

[root@localhost etc]# swapon /dev/sdb1

卸载时先swapoff,然后再操作。

在挂载时可以给swap指定一个032767的优先级,如果用户没有指定,那么系统会自动给swap指定一个优先级,这个优先级从-1开始逐渐减1。用户指定的正数优先级永远高于系统的自动的负数优先级。可以使用命令swapon -p #或直接编辑fstab文件在defaults后面加pri=#。优先级查看:/proc/swaps

[root@localhost etc]# cat /proc/swaps 
Filename    Type  Size Used Priority
/dev/dm-1 partition 1953788 0 -1

按照默认设置,非根用户只能挂载某些设备(光盘、DVDusb等等),挂载点通常在/media/mnt下。

10、dd命令:convert and copy afile

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

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

count=#  复制所少个bs

of=FILE 写到所命名的文件而不是到标准输出

if=FILE 从所命名文件读取而不是从标准输入

bs=  指定块大小

ibs= 一次读sizebyte

obs= 一次写sizebyte

cbs= 一次转化sizebyte

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

忽略输入文件即zero的前多少内容

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

忽略输出到的文件的前多少内容

count=n 只拷贝n个记录

conv=Conversion…用指定的参数转换文件

ascii 转换EBCDICASCII

ebcdic 转换ASCIIEBCDIC

block 转换为长度是cbs的记录,不足部分用空格填充

unblock 替代cbs长度的每一行尾的空格为新行

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

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

swab 交换输入的每对字节

noerror 出错时不停止

notrunc 不截短输出文件

只对文件有效,对设备无效

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

磁盘拷贝:dd if=/dev/sda of=/dev/sdb

备份MBRdd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloaderdd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

备份:dd if=/dev/sdx of=/dev/sdy将本地的sdx整盘备份到sdy

dd if=/dev/sdx of=/path/to/image 将全盘数据备份到指定路径的image文件

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

拷贝内存资料到硬盘 dd if=/dev/mem of=/root/mem.bin bs=1024

将内存里的数据拷贝到root目录下的mem.bin文件

从光盘拷贝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=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

当硬盘较长时间放置不使用时,磁盘会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致IO错误。当这种情况影响到磁盘的第一个扇区时,可能导致硬盘报废。

11、uuidgen随机创建一个uuid的值

[root@localhost ~]# uuidgen
83abd3df-deb2-4c39-a43f-cff94a1f9c2b

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

mke2fs [] device

-t {ext234}

mkfs.ext4=mkfs -t ext4=mke2fs -t ext4

-b 指定文件系统的块大小{1024/2048/4096}

-L 指定卷标

-j 创建有日志功能的文件系统;ext2ext3的区别在于有无日志模块

mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3

-i # 指明inode与字节的比率,即每多少个字节一个inode

比率适中即可,inode过多占用空间并且无法用尽。

-N 直接指明要给此文件系统创建的inode的数量

-O 启用某种特性

–  ^O关闭某种特性

mke2fs -t ext3 /dev/sdc2 -L /dev/sdc2 -m 3 -O has_journal

-m # 指定给管理员预留的空间,为百分比

[root@localhost ~]# mke2fs -t ext3 /dev/sdc2 -L /dev/sdc2 -m 3

13、e2lable 卷标的查看与设定,格式化之后修改,管理ext系列

查看:e2label device

设定:e2label device LABEL

14、mount命令:mount [-nrw] [-t vfstype] [-o option] device dir

-a 挂载/etc/fstab中的所有文件系统

-r 只读挂载

-w 读写挂载read and write

-n 默认情况下;设备挂载或卸载的操作会同步更新至etc/mtab文件中,-n用于禁止此特性

-t vfstype 指明要挂载的设备上的文件系统类型;多数情况下可以省略;此时mount会通过blkid来判断要挂载的设备文件系统类型。

-L 挂载时以卷标指明设备,用卷标指定设备

mount -L LABEL DIR

-U UUID指明设备

-B 绑定目录到另一个目录上,与软链接相似,但并不是软链接文件

此设置查看时只能使用mount命令查看

-o options 挂载选项,多个选项用逗号隔开,可以在/etc/fstab上直接定义。

sync/async 同步/异步操作

atime/noatime 文件或目录在被访问时是否更新其访问时间戳

diratime/nodiratime 目录在被访问时是否更新其时间戳

remount 重新挂载

mount -o remount 重新挂载

acl 支持使用facl功能

mount -o acl DEVICE DIR

tune2fs -o acl DEVICE

-ro 只读 -rw 读写

dev/nodev 此设备上是否允许创建设备文件

exec/noexec 是否允许运行此设备上的程序文件

auto/noauto 是否允许自动挂载

user/nouser 是否允许普通用户挂载此文件系统

suid/nosuid 是否允许程序文件上的suidsgid特殊权限生效

defaults 默认,相当于rwsuiddevexecautonouserasync

   关于fstab挂载定义:

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

自检次序:0不自检;1首先自检,一般只有rootfs才用1

当自检不为0时,若挂载选项写错,开机自检不能正常进入系统,进入修复,输入root密码后重新挂载,使用mount -o rwremount / ,然后编辑/etc/fstab,将错误改正或注释,然后进入系统,成功修复。centos7中可以直接进入。

[root@localhost mnt]# mount -n -o async,noatime,acl,nodev,nouser,suid /dev/sdc3 /mnt/sdc3

15、parted命令:分区命令,操作都是实时生效,可以支持MBRGPT

parted DEVICE进入交互模式;

直接使用命令分区

[root@localhost ~]# parted /dev/sdc print
错误: /dev/sdc: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)                                   
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 
[root@localhost ~]# parted /dev/sdc mklabel gpt
信息: You may need to update /etc/fstab.
[root@localhost ~]# parted /dev/sdc mklabel gpt
警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. 
Doyou want to continue?
是/Yes/否/No? y
信息: You may need to update /etc/fstab.
[root@localhost ~]# parted /dev/sdc mkpart primary 1 1024 
信息: You may need to update /etc/fstab.
[root@localhost ~]# parted /dev/sdc print              
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name     标志
 1      1049kB  1024MB  1023MB               primary
[root@localhost ~]# parted /dev/sdc rm 1 
信息: You may need to update /etc/fstab.

16、gdisk善于管理GPT分区,过程类似于fdisk

三、课后练习见后一篇

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

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

相关推荐

  • IO,用户与组管理,文件,目录权限管理

           文件统配匹配模式:元字符文件名通配符*匹配任意长度的任意字符[root@localhost ~]# ls /root/D*/root/Desktop  /root/Documents  /root/Downloads ?匹配单个任意字符[root@localhost ~]# …

    Linux干货 2016-08-05
  • 学习目标

    先把落下的课补上……

    Linux干货 2016-10-31
  • 正则表达式之初体验

    学习正则表达式之前,看过这复杂的表达式,犹如天书,无比高大上;怀着战战兢兢的心情,开始了学习之旅: 一、  正则表达式:Global search REgular expression and Print out the line. 我的理解是:通过一大堆符号组成的公式逐行查找文本中匹配的字符串并显示出来  分类: &…

    Linux干货 2015-03-31
  • 走进Linux(一)

    一、计算机基础 世界上第一台计算机于1946年诞生于美国宾夕法尼亚大学,名叫:ENIAC。     计算机主要由硬件系统和软件系统两部分组成:     1、组成硬件的五大部分:    控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序…

    Linux干货 2016-09-22
  • haproxy实现rabbitmq负载均衡

    RabbitMQ简介: 1、是实现AMQP(高级消息队列协议)的消息中间件的一种。2、主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 一般提到 RabbitMQ 和消息,都会用到以下一些专有名词:(1)生产(Producing)意思就是发送。发送消息的程序就是一个生产者(produce…

    Linux干货 2017-06-29
  • Bashe Shell之数组及bash配置文件解析

    数组   数据结构,数据序列,保存了连续的多个数据,可以使用索引获取相关元素,相当于多个变量的集合   §数组名和索引 索引:编号从0开始,属于数值索引   注意:所以可支持使用自定义的格式,而不仅是数值格式,即关联索引,bash4.0版本之后开始支持,bash的数组支持稀疏格式(索引不连续)   §声明数组 &nbs…

    Linux干货 2016-08-24