磁盘存储和文件系统管理

本章内容

磁盘结构

分区类型

管理分区

管理文件系统

挂载设备

管理虚拟内存

RAID管理

LVM管理

LVM快照

设备类型:

块设备:block,存取单位“块”,磁盘

字符设备:char,存取单位“字符”,键盘

磁盘管理

cp /dev/sda /data/相当于复制的sda下的数据

cp -a /dev/sda /data/复制文件

I/o 性能:磁盘读写,网络或者本地

分区:

两种分区方式:

MBR,MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘。MBR还只支持最多4个主 分区

GPT 磁盘驱动器容量可以大得多,大到操作系统和文件系统都没法支持。它同时还支持几乎 无限个分区数量

MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

如何分区:按柱面

0磁道0扇区:512bytes

446bytes: boot loader

64bytes:分区表

16bytes: 标识一个分区

2bytes: 55AA

4个主分区;3主分区+1扩展(N个逻辑分

hexdump -C :一二进制呈现

hexdump -C /dev/sda | less :一二进制呈现

创建设备文件

mkond 创建特殊类别的设备文件 块设备文件b 字符设备文件c

mknod /app/sda b 8 0

mknod /app/zhongduan1 c 4 1

命名规则

centos5及之前

ide /dev/hda

/dev/hdb

...

/dev/hdaa

sata/sas/scsi/usb /dev/sda

/dev/sdb

centos6及之后

sata/sas/scsi/usb/ide /dev/sda

kvm虚拟机的虚拟硬盘 /dev/vda

xen虚拟机的虚拟硬盘 /dev/xvda

vmware的虚拟硬盘 /dev/sda

如果要加硬盘的话需要把硬盘的名字改下,

sda 8:0 0 120G 0 disk

├─sda1 8:1 0 300M 0 part /boot

├─sda2 8:2 0 20G 0 part /

├─sda3 8:3 0 10G 0 part /app

├─sda4 8:4 0 1K 0 part

└─sda5 8:5 0 2G 0 part [SWAP]

sr0 11:0 1 1024M 0 rom

sda 和sdb 的名字在6和7系统上会改变

虚拟磁盘:/dev/vd

不同磁盘标识:a-z,aa,ab…

/dev/sda, /dev/sdb, ...

同一设备上的不同分区:1,2, ...

/dev/sda1, /dev/sda5

硬盘存储术语

head:磁头

track:磁道

cylinder: 柱面

有几个磁道就有几个磁柱

sector: 扇区,一个扇区是 512bytes字节

磁盘的三围

c:2^10=1024

h:2^8=256

s:2^6=64

一个扇区大小512byte

256*64*1024*512/1024/1024/1024=8GB

CHS表示最早的8G

8G以上的用LBA表示

1 分区 :查看分区方式:fidisk -l 主分区:一个字节是8位 4个字节=32位 就是 2的32次方 扩展分区

2 创建文件系统

3 挂载:文件分配目录名

K, M, G, T, P, E, Z, Y, B, N, D

1.BIOS basic input/output system 自检

2.由第一启动项,引导OS

3.MBR Master boot record 主引导记录

446 boot loader

lilo linux loader

grub

grub2

16*4=64 分区

55 AA 结束位

2^8 2^10 2^6

256 1024 64

h:磁头 c柱面 s扇区

100号5单元1501

200号7单元201

16字节 CHS 24bit

分区是否活动 head 扇区6 2+ 8 =10 柱面 分区的类型 head 扇区6 2+ 8 =10 柱面

1 2 3 4 5 6 7 8

9 16

dd命令

skip=xxx 是在备份时对if后面的部分也就是原文件跳过多少块

seek=xxx 是在备份时对of后面的部分也就是目标文件跳过多少块开始写

实验一:备份mbr,并破坏,再恢复

1.备份分区表:mbr 用hexdump -C /dev/sda -n 521 查看硬盘分区表前521个字节

dd if=/dev/sda of=/app/mbr.img bs=1 count=512 生成一个文件放在/app/mbr.img 读一 字节,读512次 最后生成一个文件

如果放在本地硬盘,系统如果起不来,硬盘则读不出数据,所以备份到网络

2.将mbr.img 复制到其他主机 sz /app/mbr.img

scp(复制) /索要备份的内容 192.168.30.128:/备份到的地方(远程主机)/

3.破坏mbr

5.在另一个主机上将被破坏的硬盘添加

6.在vmware虚拟机,新加硬盘不用重启的生效方法

echo ‘- - -‘ > /sys/class/scsi_host/host0/scan

7.恢复

dd if=mbr.img of=/dev/sdb

8.poweroff

9.开启被恢复的主机

10.从恢复机中删除故障硬盘.

实验二:仅破坏分区表,并恢复.

dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446

dd if=/app/mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446

实验三:新增硬盘sdb,并使用sda的mbr备份来恢复sdb的分区表

dd if=/app/mbr.img of=/dev/sdb bs=1 count=66 skip=446 seek=446

管理分区

lsblk

所有的块设备

列出块设备

? lsblk

创建分区使用:

? fdisk 创建MBR分区

? gdisk 创建GPT分区

? parted 高级分区操作

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

parted 支持msdos (MBR)和gpt

交互和非交互

parted /dev/sda

parted -l 列出所有硬盘的分区信息

parted /dev/sda print 列出指定硬盘的分区

parted /dev/sdb mklabel msdos 设置硬盘的分区类 型

或gpt

parted /dev/sdb mklabel msdos -s 自动回答yes

parted /dev/sdb mkpart primary 1 2G primary :主分区

parted /dev/sdb mkpart primary 2G 4G

parted /dev/sdb mkpart primary 4G 6.5G

parted /dev/sdb mkpart extended 6.5G 21.5G

parted /dev/sdb mkpart logical 6.5G 7G

fdisk 支持msdos,在centos7中也支持gpt(不建议使用)

fdisk -l 查看所有硬盘的分区信息

fdisk -l /dev/sda 查看指定硬盘的分区信息

fdisk /dev/sdb 创建分区

o 设置msdos分区表

g 设置gpt分区表(不建议使用)

m 帮助

n 创建分区

p 主分区

e 扩展分区 (请把所有空间分给扩展)

起始的扇区数 一般直接回车,取可用的最小扇区

结束的扇区数 一般用+XX K/M/G 来指定具体分多少大小的分区

q 退出不保存

w 退出并保存

t 设置分区的类型

d 删除指定分区

a 设置该分区为启动分区,或设置为非启动

p 显示分区表

u 更新显示分区起止的单位,在扇区和柱面之间切换

非交互方式

echo -e "n\np\n\n\n+1G\nw\n" |fdisk /dev/sdb &> /dev/null

gdisk 只能划分gpt分区

gdisk -l 列出所有硬盘分区表

gdisk /dev/sdb 对分区进行划分

o 创建gpt分区表

m 帮助

n 创建分区

起始的扇区数 一般直接回车,取可用的最小扇区

结束的扇区数 一般用+XX K/M/G 来指定具体分多少大小的分区

q 退出不保存

w 退出并保存

t 设置分区的类型

L 查看分区的类型所对应的代码表示方式

d 删除指定分区

p 显示分区表

非交互方式

echo -e "n\n\n\n+2G\n\nw\ny\n" |gdisk /dev/sdb

对于非系统所在硬盘,内核自动更新分区表,而对于系统所在硬盘,不能直接列新,要使用以下命令

通知内核读取分区表

cenots5\centos7: partprobe (centos6不可用)

centos6:partx -a /dev/sda 添加

partx -d --nr /dev/sda7 删除

同步分区表

查看内核是否已经识别新的分区:

cat /proc/partitions :当前内核所加载的分区表

8 0 125829120 sda

8 1 307200 sda1

8 2 33562624 sda2

8 16 20971520 sdb

8 17 2097152 sdb1

8 18 2097152 sdb2

11 0 1048575 sr0

253 0 20971520 dm-0

253 1 2097152 dm-1

253 2 10485760 dm-2

8 32 10485760 sdc

8 33 1048576 sdc1

8 34 1048576 sdc2

253 3 307200 dm-3

253 4 307200 dm-4

centos6通知内核重新读取硬盘分区表,要是不同步,系统不识别新的分区

新增分区得时候需要同步

partx -a /dev/DEVICE

kpartx -a /dev/DEVICE -f: force

删除分区用

partx -d --nr M-N /dev/DEVICE

CentOS 5,7: 使用partprobe

partprobe [/dev/DEVICE]

日志:

/var/log/httpd/access_log

redo log

张三 8000 +1000

李四 10000

partprobe /dev/sdb

ext2 3 journal

inode bitmap

0 1 2 3 4 5 6 7 8

0 1 1 0 0

block bitmap

clean noclean

文件系统 :

在存储设备上组织文件的方法

把二进制代码转化为人类能看懂的方式

类型:

Linux文件系统:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs

(Oracle), reiserfs, jfs(AIX), swap

光盘:iso9660

Windows:FAT32, exFAT,NTFS

Unix: FFS(fast), UFS(unix), JFS2

网络文件系统:NFS, CIFS

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

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

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

分类:

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

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

它保证了数据的完整性。当发生系统错误时,一个全日志文件系统将会保证磁盘上的数 据恢复到发生系统崩溃前的状态。同时,它还将覆盖未保存的数据,并将其存在如果计算机没有崩溃的话这些数据可能已经遗失的位置,

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

文件系统的组成部分:

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

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

Linux的虚拟文件系统:VFS

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

创建文件系统

mkfs

mkfs.xfs /dev/sdb1 文件系统类型切换,

mkfs -t xfs -f /dev/sdb2

mkfs.ext4 /dev/sdb2

mkfs -t ext4 /dev/sdb2

mke2fs /dev/sdb2 格式化为ext2

(1) mkfs.FS_TYPE /dev/DEVICE

ext4

xfs

btrfs

vfat

(2) mkfs -t FS_TYPE /dev/DEVICE

-L ‘LABEL‘: 设定卷标

创建ext文件系统

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

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

mke2fs -j /dev/sdb2 增加日志区,即格式化为ext3

-t ext2|ext3|ext4 类型

-L "LABEL 设定卷标

e2label /dev/sdb2 仅限ext文件系统

e2label /dev/sdb2 hello

-N #:指定分区中创建多少个inode

-b {1024|2048|4096} 指定block大小

-j: 相当于 -t ext3

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

-N #:指定分区中创建多少个inode

-I 一个inode记录占用的磁盘空间大小,128---4096

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

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

-O ^FEATURE:关闭指定特性

文件系统标签:

指向设备的另一种方法

与设备无关

blkid:块设备属性信息查看

blkid [OPTION]... [DEVICE]

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

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

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

e2label DEVICE [LABEL]

findfs :查找分区

findfs [选项] LABEL=<label>

findfs [options] UUID=<uuid>

[[email protected] ~]# findfs UUID="cf7674ce-563a-46f8-83fe-4596082b33ee"

/dev/mapper/vg_centos-lv_centos2

在/etc/fstab 下直接自动挂载 LABEL(卷标)和UUID两种

LABEL=mage1 /mnt/mage1 ext4 defaults 0 0

UUID=996b2280-1eaa-4560-b8e3-0c742912afa8 /mnt/mage2 ext4 defaults 0 0

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

[[email protected]_v7(nanyibo) ~]# blkid -U 996b2280-1eaa-4560-b8e3-0c742912afa8

/dev/sdb2

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

[[email protected]_v7(nanyibo) ~]# blkid -L mage1

/dev/sdb1

[[email protected]_v7(nanyibo) ~]# findfs /dev/sdb2

[[email protected]_v7(nanyibo) ~]# findfs UUID=996b2280-1eaa-4560-b8e3-0c742912afa8

/dev/sdb2

[[email protected]_v7(nanyibo) ~]# findfs LABEL=mage1

/dev/sdb1

超级快和inode table

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

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

-L ‘LABEL‘:修改卷标

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

-j: 将ext2升级为ext3

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

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

-U UUID: 修改UUID号

注意:一定不要在挂载状态下修复

fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-p: 自动修复错误

-r: 交互式修复错误

FS_TYPE一定要与分区上已经文件类型相同

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

-y:自动回答为yes

-f:强制修复

文件系统检测和修复

常发生于死机或者非正常关机之后

挂载为文件系统标记为“no clean”

注意:一定不要在挂载状态下修复

fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-p: 自动修复错误

-r: 交互式修复错误

FS_TYPE一定要与分区上已经文件类型相同

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

-y:自动回答为yes

-f:强制修复

mount 挂载

mount 源目的

filesystem directory

/dev/sda1 /boot

/boot/grub2/grub.cfg

/dev/sda2 /

/etc/sysconfig/network

/dev/sda3 /app

fsck /dev/sdb2 自动判断文件系统类型

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

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

device:指明要挂载的设备;

(1) 设备文件:例如/dev/sda5

(2) 卷标:-L ‘LABEL‘, 例如 -L ‘magedu‘

(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs

dir:挂载点

事先存在;建议使用空目录

进程正在使用中的设备无法被卸载

查看所有正在运行的进程:ps aux | less

mount常用命令

-t vsftype:指定要挂载的设备上的文件系统类型

-r: readonly,只读挂载

-w: read and write, 读写挂载

-n: 不更新/etc/mtab,mount不可见

cat /proc/mounts 可以看到用-n所隐藏的挂载信息

-a:自动挂载定义在了/etc/fstab文件中尚未挂载的文件系统,且挂载选项中有auto功能)

也可以用mount 后仅跟一个参数,从而去/etc/fstab中找另一个参数。

-L ‘LABEL‘: 以卷标指定挂载设备

-U ‘UUID‘: 以UUID指定要挂载的设备

-B, --bind: 绑定目录到另一个目录上

查看内核追踪到的已挂载的所有设备

cat /proc/mounts

-o

ro 只读

rw 读写 默认

async|sync 异步传输

atime|noatime

diratime/nodiratime

auto|noauto 是否可以使用mount -a 自动挂载

exex|noexec 禁止执行任何权限,无论是否有x权限

mount -o remount,nodev /dev/sdb1

dev|nodev 是否可以在该文件系统上使用dev设备

suid|nosuid 是否suid权限生效

remount 重新挂载,要在后面具体指挂载选项,如不指定,重新挂载为默认权限

nouser|user 是否允许写入/etc/fstab中的挂载项目让普通用户执行以进行 挂载及卸载,如 :mount /dev/sda8

acl 是否在挂载时指定acl 安全性

loop 功能吧文件挂到目录上

dd if=/dev/zero of=test.iso bs=1M count=100

mkfs.ext4 test.iso

mount -o loop test.iso /app/data2

losetup -a 可列出loop挂载的设备

ll /8 b 7 8

dev/loop* r如果想增加loop设备,mknod /dev/loop

defaults:相当于rw, suid, dev, exec, auto, nouser, async

修改UUID :tune2fs -U ‘uuidgen‘ /den/sdb1

umount:卸载

查看挂载情况

findmnt MOUNT_POINT|device

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

lsof MOUNT_POINT

fuser -v MOUNT_POINT

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

fuser -km MOUNT_POINT

卸载

umount DEVICE

umount MOUNT_POIN

挂载点和、etc/fstab

配置文件系统体系

被mount、fsck和其它程序使用

系统重启时保留文件系统体系

可以在设备栏使用文件系统卷标

使用mount -a 命令挂载/etc/fstab中的所有文件系统

lsblk :查看的是内存中的分区表

fdisk -l /dev/sdb :硬盘中的分区表

partx -d --nr 1-2 /dev/sdb 删除分区表中sdb的分区

文件挂载配置文件

/etc/fstab每行定义一个要挂载的文件系统

挂载点通常在/media 或/mnt下

(1) 设备文件:例如/dev/sda5

(2) 卷标:-L ‘LABEL‘, 例如 -L ‘magedu‘

(3) UUID, -U ‘UUID‘:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘

处理交换文件和分区

挂载交换分区

使用光盘:

在图形环境下自动启动挂载/run/media/<user>/<label>

否则就必须被手工挂载

mount /dev/cdrom /mnt/

eject命令卸载或弹出磁盘

创建ISO文件

cp /dev/cdrom /root/centos7.iso

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

刻录光盘

wodim –v –eject centos.iso

常用工具:

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

df [OPTION]... [FILE]...

-H 以1000为单位

-T 文件系统类型

-h: human-readable

-i:inodes instead of blocks

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

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

du [OPTION]... DIR

-h: human-readable

-s: summary --max-depth 合计

对于有进程访问目录而无法卸载的情况

方法一:

[[email protected]_v6(nanyibo) ~]# lsof /app/data1/

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sleep 4137 root cwd DIR 8,8 2802688 2 /app/data1

[[email protected]_v6(nanyibo) ~]# kill 4137

方法二:

fuser -vm /app/data1

fuser -km /app/data1

练习:通过/etc/fstab ,指定挂载点,可以查出对应的分区名

方法一: dir=/;findfs `cat /etc/fstab |grep -w $dir |cut -d" " -f1`

方法二: dir=/;findfs $(cat /etc/fstab |grep "[[:space:]]$dir[[:space:]]" | cut -d" " -f1)

方法三: dir=/app;findfs $(cat /etc/fstab |grep "$dir[[:blank:]]"|sed -r "[email protected](.*)[[:blank:]]+$dir.*@\[email protected]")

扩展swap

基于分区的Swap

fdisk /dev/sda

mkswap /dev/sda9

swapon /dev/sda9

开机自动激活,写入/etc/fstab

UUID=8a5c6dbe-1025-462b-ad32-53ded1918d63 swap swap defaults 0 0

基于文件的swap

dd if=/dev/zero of=swap.img bs=1M count=1024

mkswap swap.img

swapon /app/swap.img

/app/swap.img swap swap defaults 0 0

swap的优先级

swapon -p xx /dev/sdaX

也可以写入/etc/fstab使永久生效

UUID=5a1ff0b5-5c19-42e3-8b6a-65e7d332ee0c swap swap defaults,pri=20 0 0

UUID=8a5c6dbe-1025-462b-ad32-53ded1918d63 swap swap defaults,pri=15 0 0

/app/swap.img swap swap defaults,pri=10 0 0

mkswap /dev/sdb1 swapon -a 生效

创建iso文件

mkisofs -r -o etc.iso /etc/

dd if=/dev/zero of=test.iso bs=1M count=512

方法一:重新编译内核,使ntfs模块被编译

read only

方法二:ntfs-3g epel

dd命令:转换和复制文件

1 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

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

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

将压缩的备份文件恢复到指定盘

1 拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024

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

从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso

拷贝光盘数据到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指令输出中命令的执行时间,即可确定系统最佳的block size大小

修复硬盘

dd if=/dev/sda of=/dev/sda

测试硬盘写速度

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

测试硬盘读速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

vim /etc/fstab

defaults,usrquota,grpquota

quotacheck(配额检查) -cugm /app 创建用户、组的quota数据文件,位于挂载点的根目录

quotaon /app 激活quota。

edquota guanyu 交互式,调用vim编辑

edquota -p guanyu zhangfei 将guanyu的quota设置复制给zhangfei

setquota guanyu 10M 20M 0 0 /app/ 非交互式

实验:对系统中所有大于等于1000的用户设置基于文件大小的quota,软限制10m,硬限制20m

方法一:

cat /etc/passwd |egrep "x\:[0-9]{4,}\>" |cut -d: -f1 |xargs -i setquota {} 10M 20M 0 0 /app/

方法二:

for n in $(cat /etc/passwd |egrep "x\:[0-9]{4,}\>" |cut -d: -f1);do setquota $n 10M 20M 0 0 /app/ ;done

*** Report for user quotas on device /dev/sda5

Block grace time: 7days; Inode grace time: 7days

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------------

root -- 4 0 0 1 0 0

nfsnobody -- 0 10240 20480 0 0 0

nanyibo -- 0 10240 20480 0 0 0

liubei -- 0 10240 20480 0 0 0

testuser -- 0 10240 20480 0 0 0

guanyu -- 0 10240 20480 0 0 0

zhangfei -- 0 10240 20480 0 0 0

warnquota 在centos7当中,要安装quota-warnquota

warnquota -u [默认],把邮件发送给普通用户

read

RAID-0:条带卷 读、写性能提升,无容错能力 ,最少磁盘数:2, 2+

RAID-1: 镜像卷,有冗(yun)余能力,最少磁盘数:2, 2N,安全性能高

创建raid1

mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd{e,f} -x 1 /dev/sdg

RAID-5:读、写性能提升 ,有容错能力:允许最多1块磁盘损坏 最少磁盘数:3, 3+ ,生产中用的最 多,多块数据盘异或运算值存于专用校验盘

创建raid5

mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sd{h,i,j}

RAID-6:读、写性能提升 可用空间:(N-2)*min(S1,S2,...) 有容错能力:允许最多2块磁盘损坏 最少磁盘数:4, 4+

RAID-10:读、写性能提升 可用空间:N*min(S1,S2,...)/2 有容错能力:每组镜像最多只能坏一块 最少磁盘数:4, 4+

......

软RAID

软件RAID的实现

软RAID配置示例

软RAID测试和修复

软RAID管理

软件raid的实现

mdadm

-C: 创建模式

-n #: 使用#个块设备来创建此RAID

-l #:指明要创建的RAID的级别

-a {yes|no}:自动创建目标RAID设备的设备文件

-c CHUNK_SIZE: 指明块大小

-x #: 指明空闲盘的个数

-D:显示raid的详细信息;

mdadm -D /dev/md#

管理模式:

-f: 标记指定磁盘为损坏

-a: 添加磁盘

-r: 移除磁盘

观察md的状态:

cat /proc/mdstat

创建read步骤:

1.在VMware当中为该主机增加虚拟硬盘

2.echo ‘- - -‘ > /sys/class/scsi_host/host0/scan 使新增的硬盘立刻生效

3.创建raid0

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd{c,d}

4.分区fdisk /dev/md0 非必需

5.格式化mkfs.ext4 /dev/md0

5.挂载

查看raid状态

方法1: cat /proc/mdstat

方法2: mdadm -D /dev/md0

使用四块盘,做一个raid 10。

mdadm -C /dev/md1 -a yes -l 10 -n 4 /dev/sd{e..h}

mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{b,c}

mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{d,e}

mdadm -C /dev/md2 -a yes -l0 -n2 /dev/md{0,1}

删除raid

1.卸载

移除磁盘 mdadm /dev/md0 –r /dev/sda1

2.停掉raid

mdadm -S /dev/mdX

3.清空该raid每个成员盘的superblock

mdadm --zero-superblock /dev/sdX /dev/sdY ……

给raid新增成员

mdadm –G /dev/md0 –n 3 -a /dev/sdf1

模拟损坏 仅限raid1和raid5

mdadm /dev/md0 -f /dev/sdc

模拟移除

mdadm /dev/md0 -r /dev/sdc

模拟增加

mdadm /dev/md0 -a /dev/sdc

保存raid状态

mdadm -D -s /dev/md0 > /etc/mdadm.conf

共享热备盘

1.分别创建raid1和raid5。

2.mdadm -D -s > /etc/mdadm.conf

3.编辑mdadm.conf

ARRAY /dev/md1 metadata=1.2 name=instructor.magedu.com:1 UUID=eb6fbe24:2449dde5:da515f42:48694ac4 spar

e-group=magedisk

ARRAY /dev/md5 metadata=1.2 spares=1 name=instructor.magedu.com:5 UUID=19dea50d:2cecbdbf:5891cb66:463e

6c2c spare-group=magedisk

MAILADDR root

4.启动服务

centos6:service mdmonitor restart

centos7:systemctl restart mdmonitor

LVM***逻辑卷

1允许在多个物理设备间重新组织文件系统

2 将设备指定为物理卷

3 用一个或者多个物理卷来创建一个卷组

4 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的

5在物理卷上创建的逻辑卷 是由物理区域(PE)组成

6可以在逻辑卷上创建文件系统

创建LVM

新增虚拟磁盘

.echo ‘- - -‘ > /sys/class/scsi_host/host0/scan 使新增的硬盘立刻生效

pvcreate /dev/md1 /dev/md5 将设备指定为物理磁盘

vgcreate vgmage(vgmage是卷组名) /dev/md1 /dev/md5 将两个物理磁盘来创建一个卷组

lvcreate -L 38M -n lvlinux31(逻辑卷名) vgmage -n是名字 -L是大小

lvcreate -l 20 -n lvpython8 vgmage

新加举例:lvcreate -l 60%VG -n mylv testvg

lvcreate -l 100%FREE -n yourlv testvg

mkfs.ext4 /dev/vgmage/lvlinux31 选择文件系统类型,也就是格式化

mkfs.xfs /dev/mapper/vgmage-lvpython8

mount /dev/vgmage/lvlinux31 /app/lvmdata2 挂载

mount /dev/vgmage/lvpython8 /app/lvmdata2

postfix:后缀

/dev/sda5 1TB XFS /var/spool/mail

/dev/sdb1 10TB /app

LVM

/dev/sda7 /dev/sdb /dev/md0

pvcreate

/dev/sda7 1G /dev/sdb 2G /dev/md0 10G

vgcreate

/dev/vgmage 13G PE 8M

/dev/vgmage/lvmage31 15M

pvs vgs lvs 进行查看,显示。。。

F: 格式化

40G 40G

80G 40G

删除的话倒着执行:

1先卸载

2 lvremove /dev/卷组名/逻辑卷名

3 vgextend +卷组名

4 pvcreate /dev/磁盘名

逻辑卷的在线扩展

情况1:卷组大小足够扩展

方法一:

lvextend -L +1G /dev/vgmage/lvlinux31

resize2fs /dev/vgmage/lvlinux31

方法二:

lvextend -L 1.5G /dev/vgmage/lvlinux31 -r

情况2:卷组大小不够扩展

pvcreate /dev/sdj

vgextend vgmage /dev/sdj

lvextend -L +3G -r /dev/vgmage/lvlinux31

XFS

lvextend -r -L 1G /dev/vgmage/lvpython8 一键同步:直接省去加文件系统类型的步骤

xfs_growfs /dev/vgmage/lvpython8

逻辑卷减小

1.卸载

2.扫描

3.减小文件系统大小

4.减小逻辑卷大小

umount /app/data0/

e2fsck -f /dev/vgmage/lvlinux31

resize2fs /dev/vgmage/lvlinux31 50M

lvreduce -L 50M /dev/vgmage/lvlinux31

如果顺序反了,先执行了减逻辑卷,则扩展回去,再重新扫描

lvextend -L 500M /dev/vg_mage/lv_home

e2fsck -f /dev/vg_mage/lv_home

resize2fs /dev/vg_mage/lv_home 200M

lvreduce -L 200M /dev/vg_mage/lv_home

实验:将逻辑卷迁移到其他主机

1.增加一个独立文件的虚拟磁盘到源主机

2.将该磁盘做为PV,扩展进卷组

3.将所有数据都移动到将要拆卸的物理卷上

pvmove /dev/md5 /dev/sdk

4.将源卷组设置为非激活

vgchange -an vgmage

5.如果卷组中除了要拆卸的硬盘外还有其他的PV,则进行lvreduce,如没有,直接第6步

vgreduce vgmage /dev/md1 /dev/md5 /dev/sdi /dev/sdj

6.将源卷组设置为export状态

vgexport vgmage

7.拔硬盘,并加到目标主机

8.把vgmage设置为import

vgimport vgmage

9.把卷组设置为激活

lvchange -ay vgmage

10.挂载

copy on write = COW

何时写COW

1.当源发生变化时,如A-Version1 变化为A-Version2,则把A-Version1拷至COW

2.对于可写的快照,快照发生改变,直接写入COW

icq oicq (qq) wechat msn gtalk

e-mail:exchange sendmail postfix

mail client: outlook foxmail

ms-dos windows linux unix

smb

原文地址:https://www.cnblogs.com/wang-jin/p/9308785.html

时间: 2024-08-11 23:30:41

磁盘存储和文件系统管理的相关文章

Linux基础之磁盘及文件系统管理(二)

磁盘和文件系统管理 文件系统管理工具: 创建文件系统的工具 mkfs mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ... 检测及修复文件系统的工具 fsck fsck.ext2, fsck.ext3, ... 查看其属性的工具 dumpe2fs, tune2fs 调整文件系统特性: tune2fs 内核级文件系统的组成部分: 文件系统驱动:由内核提供 文件系统箮理工具:由用户空间的应用程序提供 ext系列文件系统的管理工具: mkf

磁盘和文件系统管理

我们知道一块磁盘是可以被分区成多个分区的(partition),以Windows的观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘,那个C, D,E就是分区.Linux的设备都是以文件的型态存在,磁盘设备接口的不同也早就了磁盘文件名的不同.即IDE接口的磁盘设备文件名都是/dev/hd[a-z]的格式,例如:/dev/hda./dev/hdb.SCSI, SATA, SAS, USB接口的磁盘设备文件名都是:/dev/sd[a-z],例如sda.sdb,磁盘设备的命名主要是根据

第八章、Linux 磁盘与文件系统管理

第八章.Linux 磁盘与文件系统管理 1. 认识 EXT2 文件系统 1.1 硬盘组成与分割的复习 1.2 文件系统特性: 索引式文件系统 1.3 Linux 的 EXT2 文件系统(inode): data block, inode table, superblock, dumpe2fs 1.4 与目录树的关系 1.5 EXT2/EXT3 文件的存取与日志式文件系统的功能 1.6 Linux 文件系统的运行 1.7 挂载点的意义 (mount point) 1.8 其他 Linux 支持的文

Linux磁盘和文件系统管理

Linux系统中的磁盘和文件系统管理,之所以将二者放在一起总结,是因为在平时的工作中,二者是相辅相成的,常常用来一起使用. 首先介绍下磁盘分区的管理工具 常用的磁盘分区管理工具有fdisk,parted,sfdisk 这里我们介绍下常用的fdsik工具 fdisk -l [DEVICE]... :列出指定磁盘设备上的分区情况 fdisk [DEVICE]:创建分区 fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能:所有的操作均在内存中完成,没有直接同步到磁盘:直到

Linux磁盘管理及文件系统管理中命令的使用

1.磁盘管理工具fdisk的使用: 最多支持在一块硬盘上的15个分区: 分区管理子命令: p: 显示磁盘信息 n: 创建一个5G的主分区 d: 删除分区 t: 修改分区ID l: 列出所有支持ID类型 w: 保存退出 q: 放弃修改并退出 m: 获取帮助 创建完成之后,查看内核是否已经识别新的分区: # cat /proc/partitions 如果没有识别到新建分区可使用以下三个命令让内核重读磁盘分区表: CentOS 5: partprobe [DEVICE] CentOS 6,7: par

Linux运维 第二阶段 (六)文件系统管理

Linux运维第二阶段(六)文件系统管理 一.硬盘: 逻辑结构:扇区sectors(磁盘的最小存贮单位).磁道.柱面cylinders: 硬盘大小:磁头数*柱面数*扇区数*每个扇区的大小 注:柱面数表示硬盘每一盘片有几条磁道,扇区数表示每条磁道上有几个扇区 二.文件系统: >超级块(superblock)记录整个文件系统的信息,包括block与inode的总量,已经使用的,未使用的,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间: >数据块(datablock)用来实际保存数据

磁盘及文件系统管理详解---急需加强

磁盘管理: 机械式硬盘 U盘.光盘.软盘.硬件.磁带 MBR:Master Boot Record 主引导记录 ln [-s -v] SRC DEST:创建链接文件,默认硬链接 -s:创建软连接 -v:显示过程 硬链接: 1.只能对文件创建,不能应用于目录 2.不能跨文件系统 3.创建硬链接会增加文件被链接的次数 符号链接(软连接): 1.可以应用于目录 2.可以跨文件系统 3.不会增加被链接文件的链接次数 4.其大小为指定的路径所包含的字符个数 du -s -h df:显示整个磁盘分区使用情况

NO.7day系统监控,硬盘分区和文件系统管理

系统监控,硬盘分区和文件系统管理 1.系统监控 top命令:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.默认每5秒刷新屏幕数据. top pid  进程id  ppid 父进程id free命令:显示内存的使用状态 buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据.这二者是为了提高IO性能的,并由OS管理.实际系统可用内存应该以available数据为准. ps命令:进程

磁盘及文件系统管理

挂载一块新的硬盘到文件系统的步骤: 1)在VMware中申请新的硬盘: 2)分区 3)高级格式化 4)挂载  (包括swap分区的挂载) 在VMware中申请新的硬盘 分区 [[email protected] ~]# fdisk /dev/sdb... Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder