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)
black_fishblack_fish
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • 第一周作业

    一、计算机的组成及功能(参照书籍:《计算机的组成原理》)  按照冯•诺伊曼结构,计算机的硬件由运算器、控制器、存储器、输入设备和输出设备五部分组成。  CPU   :由运算器与控制器组成。主要功能就是控制各部件协调工作。         运…

    Linux干货 2017-02-06
  • Linux系统重定向和管道

    1、标准输入和标准输出              程序:指令+数据               &n…

    Linux干货 2016-08-04
  • 权限管理与ACL

    一、文件属性 1.文件属性:    文件属性操作     chown : change owner  ,设置文件所有者     chgrp : change group  ,设置文件的属组    文件属主修改: chow…

    Linux干货 2016-08-05
  • 强大的vim编辑器

    vim编辑器 一、Vim编译器的概述 vi: Visual Interface,文本编辑器 v 文本:ASCII, Unicode v  文本编辑种类:      行编辑器: sed      全屏编辑器:nano,   &nbs…

    Linux干货 2016-08-12
  • 人志建,则无敌—网络基本知识加简单脚本练习

    马哥21期网络班-8周博客作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发…

    Linux干货 2016-08-29
  • 迁移分区

          1 备份/home    2 创建分区 /dev/sdc1 10G   [root@localhost ~]# du -sh /home   52K /home   3 格式化分区   [root@localhost …

    Linux干货 2017-04-25