Linux系统的磁盘管理

linux磁盘及文件系统管理

磁盘分区及文件系统管理

RAID设备

LVM: 磁盘的动态编辑管理

CPU, memory(RAM), I/O

I/O设备: Disks, Ethercard (网卡)

Disks: 实现持久存数数据

接口类型:

IDE(ata): 并口  理论速度: 133MB/s

SCSI: 并口 640MB/s

SATA: 串口 SATA3理论速度: 6gbps

SAS: 串口 6gbps

USB: 串口, 480MB/s

并口: 同一线缆可以接多块设备

IDE: 两个,主,从

SCSI:

宽带: 16-1

窄带: 8-1

串口:同一线缆只能接一台设备

硬盘: 机械硬盘, 固态硬盘

机械硬盘: 

head: 磁头

cylinder: 柱面

secotr: 扇区

track: 磁道

设备类型:

块设备(block): 随机访问, 数据交换单位是"块"

字符设备(character): 线性访问,数据交换单位是"字符"

设备文件: FHS

/dev

设备文件: 用来关联至设备的驱动程序;设备的访问入口

设备号:

major: 主设备号,区分设备类型,用于表明设备所需要的驱动程序

minor: 次设备号,区分同种类型下的不同设备,是特定设备的访问入口

mknod 命令:

make block or character special files 

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

mknod [OPTION]… NAME TYPE [MAJOR MINOR]

[option]

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

使用系统调用中的的设备文件更改权限的系统调用来更改权限

设备文件名: ICANN,互联网名称地址分配机构制定命名规则

磁盘:

IDE: /dev/hd[a-z]

例如:hda,hdb…

SCSI, SATA, SAS, USB: /dev/sd[a-z]

分区:

/dev/sda#:

/dev/sda1, /dev/sda2, …

注意: CentOS 6和7 将硬盘设备文件标志位/dev/sd[a-z]#

CHS

引用设备的方式:

设备文件名

卷标LABEL

UUID

磁盘分区: 

一、为什么分区:

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

采用不同文件系统

二、分区方式: MBR, GPT

MBR: 

使用32位表示扇区数, 分区不能超过2T

0编号扇区被当做mbr, Master Boot Record, 主引导记录扇区

共512个字节分为三部分:

446 bytes: bootloader, 程序, 引导启动操作系统的程序

64 bytes: FAT ,文件系统分区表, 每16字节标示一个分区, 一共只能有4个分区

2 bytes: MBR区域的有效性标识; 55AA为有效

MBR备份

新挂载的磁盘: lsscsi 查看首位的设备号

扫描磁盘: echo "- – -" > /sys/class/scsi_host/host2/scan(按照lsscsi查看到的首位设备号,选择host)

备份: dd if=/dev/sda of=/root/mbr bs=1 count=512

查看mbr内容: hexdump -C mbr

显示分区信息: fdisk -l

恢复分区信息: dd if=mbr of=/dev/sdb

fdisk -l /dev/sda

清零boot loader: dd if=/dev/zero of=/dev/sdb bs=1 count=446

fdisk -l /dev/sdb

hexdump -C -n 512 /dev/sdb

hexdump -C -v -n 512 /dev/sdb

清零分区表: dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446

主分区和扩展分区的标识: 1-4

逻辑分区: 只能从5开始

GPT: GUID partition table

lsblk 列出块设备

查看分区信息: lsblk, fdisk -l /dev/sd*, cat /proc/partition

三、fdisk命令: manipulate disk partition table, 管理磁盘分区表

1、查看磁盘分区信息

fdisk -l [device]… 列出指定磁盘设备上的信息

start 和 end: centos 6 是柱面, centos 7是扇区

2、管理分区

fdisk device

fdisk提供了一个交互式接口来管理分区,有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘上;直到使用 w 命令保存至磁盘

常用命令:

n:创建新分区

d:删除已有分区

t:修改分区类型

l:查看所有已知ID

w:保存并退出

q:不保存退出

m:查看帮助信息

p: 显示现有分区信息

注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别,要使内核强制识别

查看:cat /proc/partitions

通知内核强制重读磁盘分区表,有时可能需要执行多次命令

centos 5, 7: partprobe [device]

centos 6, 7: partx,kpartx

partx -a [device]

kpartx -af [device]

分区创建工具: parted,sfdisk

四、创建文件系统:

1、格式化: 

低级格式化: 主要目的是在出厂时划分磁道,形成簇;

高级格式化: 分区之后, 对分区进行, 主要是为了创建文件系统

2、文件的元数据中不包含文件名,文件名存放在目录上

元数据区和数据区: inode(index node)

文件元数据: 大小, 权限, 属主属组, 时间戳, 数据块指针  等

符号链接文件: 存储数据指针的空间当中存储的是真实文件的访问路径

设备文件: 存数数据的空间当中存储的是设备号(major, minor)

3、VFS: Virtual File System(虚拟文件系统)(任何两个文件系统不能直接链接时, 都能通过添加中间层解决, 这个中间层就是VFS)

linux的文件系统: ext2, ext3, ext4, xfs, reiserfs, btrfs

光盘: iso9660

网络文件系统: nfs, cifs

集群文件系统: gfs2, ocfs2

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

windows文件系统: vfat, ntfs

伪文件系统: proc, sysfs, tmpfs, hugepagefs

Unix文件系统: UFS, FFS, JFS

交换文件系统: swap

用户控件的分布式文件系统: mogilefs, moosefs, giusterfs

cat /etc/issue   查看Linux的发行版本

uname -r  查看内核的版本

fdisk分区完成后,使用partx -a /dev/sda 刷新启动分区

调整分区号之后,使用kpartx -af /dev/sda 刷新分区

1、文件系统管理工具

创建文件系统的工具

mkfs

mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat

检测和修复文件系统的工具

fsck

fsck.ext2, fsck.ext3

查看其属性的工具

dumpe2fs, tune2fs

调整文件系统特性

tune2fs

2、内核及文件系统的组成部分

文件系统驱动: 由内核提供

lsmod  查看系统已经加载的模块

文件系统管理工具: 由用户空间的应用程序提供

3、ext系统文件系统的管理工具:

mkfs.

使用mkfs命令格式化硬盘后,使用blkid /dev/sda3 查看对应设备的信息

UUID: 通用唯一标识符库

mkfs -r ext2 <==> mkfs.ext2

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

mke2fs [OPTION] device

-t{ext2|ext3|ext4}: 指明要创建的文件系统类型

-b{1024(1K)|2048(2K)|4096(4K)}: 指明文件系统

的块大小

-L LABEL: 指明卷标

-j: 创建有日志功能的文件系统ext3

创建有日志功能的ext3文件系统的方法:

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

-i #: 每少个字节有一个inode

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

-O[^]FEATURE: 以指定的特性创建目标文件系统,加^关闭特性,不加启用特性

-m #: 指定预留空间, 百分比数值,不需要加% 和换算

卷标管理: e2label命令

查看: e2label device

设定: e2label device LABEL

tune2fs命令: 查看或修改ext系列文件系统的某些属性;

adjust tuneable filesystem parameters on ext2/ext3/ext4 filesystem 

注意: 块大小创建后不可修改; 

tune2fs [OPTIONS] device

options

-l: 查看超级块信息

修改指定文件系统的属性

-j: ext2 –> ext3,无损升级,对数据没有损害,添加日志选项

-L LABEL:修改卷标

-m #: 修改预留空间百分比

-O[^]FEATURE :开启或关闭某种特性

-o[^]mount_options: 开启或者关闭某种默认的挂载选项

acl: 访问控制列表

uuidgen命令: 生成新的随机UUID

dumpe2fs命令: 显示ext系列文件系统的属性信息

dumpe2fs [-l] device

[h]

用于实现文件系统检测的工具

因进程意外终止或系统崩溃等原因导致写入操作非正常终止时, 可能会造成文件损坏, 此时, 应该检测并修复文件系统. 建议, 离线进行

ext系列文件系统专用工具

e2fsck: check a Linux ext2/ext3/ext4/ file system

e2fsck [OPTIONS] device(分区)

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

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

fsck: 通用命令,check and repair a Linux file system

-t fstype: 指明文件系统类型 man fsck.

-a: 无须交互自动修复所有错误

-r: 交互式修复

CentOS 6如何使用xfs文件系统:

可以联网

# yum install xfsprogs -y

内网:

事先:

cd /etc/yum.repo.d

wget http://xx.xx.xx.xx/centos6.8.repo

mv CentOS-BASE.repo  CentOS-base.repo.bak

创建:mkfs.xfs

检测: fsck.xfs

blkid命令: 

blkid device : 查看对应设备的相关属性信息

blkid -L LABEL:根据指定的LABEL定位设备

blkid -U UUID: 根据UUID定位设备

swap文件系统

Linux上的交换分区必须使用独立的文件系统(独立的分区)

且文件系统的System ID必须为82;

创建swap设备: mkswap命令

mkswap [options] device

-L label: 指明卷标

-f: 强制

修改/etc/fstab

使用 swapon -a 生效

swapon -s 查看swap信息

调整swap的优先级时

swap的优先级:

可以指定swap分区0-32767的优先级, 值越大优先级越高; 如果没有用户指定, 那么内核会自动给swap指定一个优先级, 这个优先级从-1开始, 每加入一个新的没有用户指定优先级的swap, 会给这个优先级减一; 同时, 先添加的swap的缺省优先级比较高, 除非用户自己指定一个优先级, 而用户指定的优先级用于高于内核缺省指定的优先级.

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

# mkfs.vfat device

分区,格式化,修改配置文件,挂载

文件系统的使用

首先要"挂载": mount命令和umount命令

根文件系统之外的其他文件系统想要能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此管关联操作即为"挂载";此目录即为"挂载点";

挂载点: mount point,用于作为另一个文件系统的访问入口

(1)事先存在

(2)应该使用未被或不会被其他进程使用到的目录

(3)挂载点下原有的文件将会被隐藏

mount命令:

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

mount[command options] [-f] [挂载选项]

命令选项:

-a: auto, 自动挂载

-r: read only, 只读挂载

-w: read and write, 读写挂载(默认)

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

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

-L LABEL: 挂载时以卷标的方式指明设备

mount -L LABEL dir

-U UUID: 挂载是以UUID的方式指明设备

mount -U UUID dir

-o options: 挂载选项,挂载后启用的特性

sync/async: 同步/异步操作; 

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

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

remount: 重新挂载

acl: 支持使用facl功能

示例: mount -o remount,acl /dev/sda3 /mnt

或者: tune2fs -o acl device

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

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

auto/noauto: 

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

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

defaults: Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime

fuser命令,查看谁在使用挂载点的设备

fuser -km /device  (一般在紧急情况使用)

一个使用技巧:

可以实现将目录绑定至另一个目录上,作为其临时访问入口

mount –bind 源目录 目标目录

例如: 本机目录挂载目录

修改/etc/fstab配置文件

/boot /mnt/boot  none bind 0 0

mount -a

 

查看当前系统所有已经挂载的设备

# mount

# cat /etc/matb

# cat /proc/mounts

挂载光盘:

mount -r /dev/cdrom mount_point

光盘的设备文件: /dev/cdrom ,/dev/dvd, /dev/sr0

挂载U盘:

事先识别U盘的设备文件

挂载本地的回环设备:

# mount -o loop /PATH/TO/SOME_FILE MOUNT_POINT

命令 losetup

umount命令:

卸载时只需要 umount device|dir

注意: 正在被进程访问到的挂载点无法被卸载

查看哪个或哪些进程所占用

# lsof MOUNT_POINT

# fuser -v MOUNT_POINT

终止所有正在访问某挂载点的进程

# fuser -km MOUNT_POINT

交换分区的启用和禁用:

创建交换分区的命令: mkswap

启用: swapon

swapon [OPTION] [DEVICE]

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

-p PRIORITY: 指定优先级

/etc/fstab: pri=value

禁用: swapoff

swapoff device

设定除根文件系统以外的其它文件系统能够开机时自动挂载: /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: 次级自检

…到9

mount -a: 可自动挂载定义在/etc/fstab文件中所有支持自动挂载的设备

df 和du 命令

df命令: 查看磁盘状态

df [option]… [file]…

-l: 只显示本地文件系统的相关信息

-h: 人类易于读懂的human-readable

-i: 显示inode使用状况,而非blocks

du命令: 

查看文件的大小

du [option]… [file]…

-s: sumary 和

-h: human-readable

dd命令: 复制和改变文件

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

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

of=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: 把小写字符转换为大写字符

nocreat: 不创建输出文件

noerror: 出错时不停止

notrunc: 不截断输出文件

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

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

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

相关推荐

  • awk命令详解

    简介: wak是一个强大的文本分析工具,也可以叫做报告生成工具。相对于grep的查找,sed的编辑,awk在对其数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格 为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有三个不同的版本:awk,nawk,gawk。我们目前所使用的awk一般指gawk,gawk是AWK和GN…

    Linux干货 2016-11-28
  • bash特性

    bash特性之一:命令别名      获取当前用户可用的别名的定义:  bash的特性之二:命令历史      命令语法格式:      history [-c] [-d OFFSET] [n]&nb…

    Linux干货 2016-11-06
  • 网络班N22期第三周博客作业

    一、列出当前系统所有已经登录的用户名,且同一个用户登录多次只显示一次 [root@bogon ~]# w  15:17:44 up 15:28,  2 users,  load average: 0.00, 0.00, …

    Linux干货 2016-08-29
  • LAMP编译安装

    所谓的LAMP是指构建在Linux之上经典的一种web架构方式,其中L指的是Linux,A指的是Apache的httpd,M指的是Mysql或MariaDB,P指的是PHP,这种组合方式的基本工作模式是有httpd负责接收和相应用户的请求,然后将需要处理的php页面交由后端的php应用程序处理,而php应用程序处理php页面时的数据存储在Mysql数据库中,…

    Linux干货 2016-12-19
  • linux 文本切片处理技巧

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法。 ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换。 ${#parameter} 上面这种可以获得字符串的长度。 ${parameter%…

    Linux干货 2017-04-04
  • Linux 磁盘、文件系统管理

    Linux 磁盘、文件系统管理                                               &nb…

    Linux干货 2016-09-01