第11章,磁盘存储和文件系统学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第11章,磁盘存储和文件系统学习笔记相关的知识,希望对你有一定的参考价值。
更多内容请点击:
Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~)
http://blog.51cto.com/13683480/2095439
笔记整理开始时间:2018年4月24日11:25:33
第11章,磁盘存储和文件系统
本章内容:
磁盘结构
分区类型
管理分区
管理文件系统
挂载设备
管理虚拟内存
RAID管理
LVM管理
LVM快照
设备文件:
磁盘设备的设备文件命名:/dev/dev-file
SCSI,SATA,SAS,IDE,USB: /dev/sd*
虚拟磁盘:/dev/vd
不同磁盘标识:a-z,aa,ab...
/dev/sda,/dev/sdb,...
同一设备上的不同分区:1,2.。。
/dev/sda1,/dev/sda5
设备号码: major number 标识设备类型
minor number 标识同一类型下的不同设备
磁盘存储术语:
head 磁头
track 磁道
cylinder 柱面
sector 扇区
CHS:
采用24bit寻址
其中前10位表示cylinder,中间8位表示head,后面6位表示sector
最大寻址空间8GB
LBA:(Logical block addressing)
LBA是一个整数,通过转换成CHS格式完成磁盘具体
LBA采用48位寻址
最大寻址空间128PB
使用分区空间步骤:
分区,创建文件系统,挂载
设备识别
设备分区
创建文件系统
标记文件系统
在/etc/fstab文件中创建条目
挂载新的文件系统
磁盘分区:
为什么分区:
优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统
分区:
两种分区方式:MBR,GPT
MBR: Mater Boot Record, 1982年,使用32位表示扇区数,分区不超过2T
如何分区:按柱面
0磁道0扇区:512bytes
446bytes: boot loader
64bytes: 分区表
16bytes:标识一个分区
2bytes: 55 aa
4个主分区; 3主分区+1扩展分区(n个逻辑分区)
GPT: GUID(Globals Unique ldentifiers)partition table 支持128个分区
使用64位寻址,支持8Z(512byte/block)64Z(4096byte/block)
使用128位UUID (Universally Unique ldentifier)表示磁盘和分区GPT分区表
自动备份在头和尾两份,并有CRC校验位
UEFI(统一扩展固件接口)硬件支持GPT,是操作系统启动
管理分区:
列出块设备: lsblk
创建分区使用:
fdisk 创建MBR分区
gdisk 创建GPT分区
parted 高级分区操作
partprode-重新设置内存中的内核分区表版本
parted 命令:
ps: parted的操作都是实时生效的,小心使用
用法:
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默认M)
parted /dev/sdb rm 1
parted -l 列出分区信息
fdisk
fdisk -l [-u] [dvice]
fdisk /dev/sdb 管理分区
子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
u 转换单位
w 保存并退出
q 不保存并退出
v 校验分区
o 格式化为 msdos 新分区
g 格式化为 gpt 新分区
查看内核是否已经识别新的分区:
cat /proc/partitions
partx:
centos6通知内核重新读取硬盘分区表
新增分区:
partx -a /dev/sd*
删除分区:
partx -d --nr M-N /dev/sd*
centos5,7:使用 partprobe
partprobe [/dev/sd*]
文件系统:
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在
存储设备上组织文件的方法。操作系统中负责管理和存储的文件信息的软件结构
称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件
存储并对存入的文件进行保护和检索的系统。具体的说,它负责为用户建立文件
存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密
等。
支持的文件系统:
/lib/modules/`uname-r`/kernel/fs
文件系统类型:
linux文件系统:ext2(Extended file system),ext3,ext4,xfs(SGI),btrfs(Oracle)
reiserfs,jfs(AIX),swap
光盘:iso9660
windows:FAT32 exfat ntfs
unix:ffs ufs jfs2
网络文件系统:NFS CIFS
集群文件系统:GFS2,OCFS2
分布式文件系统:fastdfs,ceph,moosefs,mogilefs,glusterfs,lustre
RAW:未经处理或者未经格式化产生的文件系统
文件系统分类:
根据是否支持日志‘journal’功能:
日志型文件系统:ext3 ,ext4,xfs..
非日志型文件系统:ext2,vfat(fat32)
文件系统的组成部分:
内核中的模块:ext4,xfs,vfat
用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat
linux的虚拟文件系统:VFS
查看支持的文件系统
cat /proc/filesystems
创建文件系统:
mkfs命令:
mkfs.fs_type /dev/sd*
ext4
xfs
btrfs
vfat
mkfs -t fs_type /dev/sd*
-L 'LABEL':设定卷标
mke2fs: ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}== mkfs.ext2,3,4
-b {1024|2048|4096}
-L 'LABLE'
-i # 为数据空间中每多少个字节创建一个inode,此大小不应该
小于block的大小
-N # 指定分区中创建多少个inode
-l 一个inode记录占用的磁盘空间大小,
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE...: 启用指定特性
-O ^FEATURE.. 关闭指定特性
文件系统标签:
指向设备的另一种方法:
与设备无关
blkid:
blkid:块设备属性信息查看
blkid /dev/sda1
-U UUID 根据指定的uuid 来查找对应的设备
-L Label 根据指定的label来查找对应的设备
e2lable: 管理ext系列文件系统的label
e2lable device [lable]
findfs: 查找分区
findfs [options] LABEL =label 等于 blkid -L
findfs [options] UUID=uuid 等于 blkid -U
PS:
在centos7上,GPT分区,默认会多一个PARTUUID
创建文件系统之后才会有UUID
uuidgen 生成uuid
tune2fs:
重新设定ext系列文件系统可调整参数的值
-l 查看指定文件系统(分区)超级块信息;super block
无法查看xfs系统
-L ‘LABEL' 修改卷标
-m # 修改预留给管理员的空间百分比
-j 将ext2升级为ext4 (加上journal功能)
-O 文件系统属性启用或禁用,-O ^has_journal
-o 调整文件系统的默认挂载选项, -o ^acl
-U UUID 修改UUID号
dumpe2fs:
块分组管理,32768
-h 查看超级块信息,不显示分组信息
文件系统检测和修复:
常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要再挂载状态下修复
fsck.fs_type
-p 自动修复错误
-r 交互式修复错误
fs_type一定要与分区上文件系统类型相同
e2fsck: ext系列文件专用的检测修复工具
-y: 自动回答yes
-f 强制修复
挂载, nount
umount
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此
目录作为其他文件访问入口的行为
卸载: 解除此关联关系的过程
把设备关联挂载点: mount point
卸载时:可使用设备,也可以使用挂载点
挂载点下原有文件在挂载完成后会被临时隐藏
挂载点目录一般为空
mount命令:
挂载方法
mount device mount-point
mount: 通过查看/etc/mtab文件显示当前已挂载的所有设备
mount [-fnrsvw] [-t vfstpe] [-o options] device dir
device;指明要挂载的设备;
1. 设备文件;例如/dev/sda5
2. 卷标; -L 'LABEL',
3. UUID, -U 'UUID'
4. 伪文件系统名称: proc sysfs devtmpfs configfs
dir: 挂载点
事先存在,建议使用空目录
进程正在使用中的设备无法被卸载
-t vsftype 指明要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write 读写挂载
-n 不更新/etc/mtab, mount不可见 centos7无效
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,
且挂载选项中有auto功能)
-L ’LABEL‘ 以卷标为指定挂载设备
-U ’UUID‘ 以UUID指定要挂载的设备
-B --bind 绑定目录到另一个目录上
查看内核追踪到的一挂载的所有设备
cat /proc/mounts
mount -o 挂载文件系统的选项,多个选项使用逗号分隔
async 异步模式
sync 同步模式
atime/noatime 包含目录和文件
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持自动挂载,是否支持-a选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持suid和sgid权限
remount 重新挂载
ro 只读
rw 读写
user/nouser 是否允许普通用户挂载此设备, /etc/fstab使用
acl 启用此文件系统上的acl功能
loop 使用loop设备
defaults: 相当于rw,suid,dev,exec,auto,nouser,async
findmnt
findmnt mount-point | device 查看挂载情况
lsof
lsof mount-point 查看正在访问指定文件系统的进程
fuser
fuser -v mount-point 查看正在访问指定文件系统的进程
fuser -km mount-point 终止所有正在访问指定的文件系统的进程
umount:取消挂载
umount device
umount mount-point
/etc/fstab
配置文件系统体系
被mount,fsck和其他程序使用
系统重启时保留文件系统体系
可以在设备栏使用文件系统卷标
使用mount -a 命令挂载/etc/fstab中的所有文件系统
每行定义一个要挂载的文件系统
1 要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID: UUID=
伪文件系统名称:proc sysfs
2 挂载点
3 文件系统类型:
4 挂载选项:defaults,acl。。。
5 转储频率:
0 不做备份
1 每天备份
2 每隔一天转储
6 自检次序:
0 不自检
1 首先自检,一般只有rootfs才用1
处理交换文件和分区:
交换分区是系统RAM的补充
基本设置包括
创建交换分区或者文件
mkswap 使用mkswap 写入特殊签名
在/etc/fstab文件中添加适当的条目
使用swapon -a 激活交换空间
swapon device 启用交换分区
-a 激活所有的交换分区
-s 查看已经使用的swap分区
-p priority: 指定优先级
/etc/fstab: pri=value
swapoff device 禁用交换分区
-a 禁用所有交换分区
swap的优先级:
可以指定swap分区0-32676的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从
-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级
-1
先添加的swap 的缺省优先级比较高,除非用户自己指定一个优先级,而用户
指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放
将文件当做swap使用:
dd if=/dev/zero of=p1 ps=1M count=2048 生成文件
mkswap p1 格式化
swapon p1 开启交换分区
写入/etc/fstab
swapon -a
文件挂载到目录上:
mkfs.ext4 p1
mount -o loop p1 /dir centos6挂载时需要加-o loop 选项
centos7可以直接挂载
/data/p1 /mnt/app1 ext4 loop 0 0 fstab文件书写格式
losetup -a 查看loop设备代表的源文件路径
ls /dev/loop* 查看所有loop设备
centos6默认只有8个loop设备,centos7不限制
mknod /dev/loop8 b 7 8 centos6手动生成loop文件来挂载
losetup /dev/loop8 p2 loop8和文件做映射
mount /dev/loop8 /data/app3 此时挂载就不需要-o了
vim /boot/grub/grub.conf centos6配置文件,可修改最大loop数量
在kernel行尾添加 max_loop=100,重启生效
挂载目录到目录
fstab书写格式:
/root /mnt/root none bind 0 0
移动介质:
挂载意味着使外来的文件系统看起来如同是主目录树的一部分
访问时,介质必须被挂载
摘除时,介质必须被卸载
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
挂载点通常在/media 或 /mnt 下
使用光盘:
在图形环境下自动启动挂载/run/media/user/label
否则就必须被手工挂载
mount /dev/cmrom /mnt/
eject 卸载或弹出磁盘
创建ISO文件
cp /dev/sr0 /root/centos6.iso
mkisofs -r -o file.iso /dir
此命令生成的iso文件,比如centos6光盘,可以做yum源,但是不能做引到盘
使用centos官方提供的mkdvdiso.sh 可以生成引到光盘
mkdvdiso.sh /dir centos6.iso
生成的iso文件需要挂载之后才可以查看
wodim -v -eject centos.iso
挂载usb介质
查看usb设备是否识别
lsusb
被内核探测为scsi设备
/dev/sda* /dev/sdb* 或类似的设备
在图形环境中自动挂载
图标在【计算机】窗口中创建
挂载在/run/media/user/label
手动挂载:
mount /dev/sd* /mnt/
常用工具:
df: 文件系统空间占用等信息的查看工具
df [option]..[file]..
-H 以1000为单位
-T 文件系统类型:
-h human-readable
-i inodes instead of blocks 查看inode编号使用情况
-P 以Posix兼容的格式输出
设备名很长的情况下 1行显示
du: 查看某目录总体空间占用状态
du [option]..[dir]..
-h human-readable
-s summary
--max-depth=# 最大深度
hexdump: 查看二进制文件
hexdump -C /dev/sda -n512
mknod: 生成块设备文件
mknod /data/sdA b 8 1
mknod /data/zefofile c 1 5
cp -a /dev/sda /data -a 可以复制块设备
dd: convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=# size count=# number
ibs=size 一次读size个byte
obs=size 一次写入size个byte
cbs=size 一次转化size个byte
skip=numbem 从开头忽略num个ibs大小的块
seek=num 从开头忽略num个obs大小的块
count=n 只拷贝n个记录
conv= 用指定的参数转换文件
ascii 转换EBCDIC 为 ASCII
ebcdic 转换ASCII为EBCDIC
lcace 把大写字符转换为小写字符
ucace 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunt 不截短输出文件
sync 把每个输入块填充到ibs字节,不足部分用nul空字符补齐
示例:
备份MBR:
dd if=/dev/sda of=/data/mar.bak bs=1 count=512
破坏分区表,保留MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读
取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开
始的位置,替换128Bytes,
dd if=fielA 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/file
将/dev/sdx全盘数据备份到指定路径的file文件
dd if=/dev/sdx | gzip > /path/file.gz
备份/dev/sdx 全盘数据,并利用gzip压缩,保存到指定路径
恢复:
dd if=/path/file of=/dev/sdx
将备份文件恢复到指定盘
gzip -dc /path/file.gz | dd of=/dev/sdx
将压缩的备份文件恢复到指定盘
拷贝内存资料到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件
拷贝光盘数据:
销毁磁盘数据:
dd if=/dev/urandom of=/dev/sda1
得到最恰当的block size
测试硬盘读写速度
修复硬盘:
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2)年放置不使用后,磁盘上会产生消磁点。
当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况
影响到硬盘的第一个扇区时,可能导致硬盘报废,上边的命令有可能使
这些数据起死回生,且这个过程是安全高效的。
练习:
1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统
ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载
选项
echo -e "n\np\n2\n\n+2G\nw\n" |fdisk /dev/sdb
mkfs.ext4 -L TEST -m 1 -b 2048 /dev/sdb2
echo -e "LABEL=TEST /test\text4\tdefaults,acl\t 0\t 0" >> /etc/fstab
mkdir /test
mount -a
lsblk
└─sdb2 8:18 0 2G 0 part /text
2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息
13 echo "device checking"
14 sleep 1
15 lsblk
16
17 num=$(lsblk |grep '^sd'|wc -l)
18 last=$(lsblk |grep '^sd'|tail -1|cut -d' ' -f1)
19
20 if [ $num = 1 ]; then
21 echo "There have just one device"
22 sleep 1
23 df -h | grep $last
24 exit 5
25 else
26 echo "There have $num device,the last one is: $last "
27 sleep 1
28 df -h |grep $last
29 exit 10
30 fi
31
3、将CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.8-x86_64-Everything.iso文件,
并将其配置为yum源
cp /mnt/cd1 /data/centos6
cp /mnt/cd2 /data/centos6
mkisofs -r -o CentOS-6.8-x86_64-bin-DVD2.iso /centos6
RAID:
什么是RAID
RAID,Redundant Arrays of Inexpensive(Independent) Disks
1988年由加利福利亚大学伯克利分校
多个磁盘合成一个阵列来提供更好的性能,冗余,或者两者都提供
提高IO能力:
磁盘并行读写
提高耐用性:
磁盘冗余来实现
级别:
多块磁盘组织在一起的工作方式有所不同
RAID实现的方式:
外接式磁盘阵列: 通过扩展卡提供适配能力
内接式RAID: 主板集成RAID控制器
安装OS前在bios里配置
软件RAID: 通过OS实现
RAID级别:
RAID-0 条带卷,strip
读、写性能提升
可用空间N*min
无容错能力
最少磁盘数2,2+
RAID-1 镜像卷,mirror
读性能提升,写性能略有下降
可用空间1*min
有冗余能力
最少磁盘数2,2N
RAID-2,3
RAID-4 多块数据盘异或运算值存于专用校验盘
读写提升,有容错
校验盘压力大容易坏
RAID-5
4的改进型,所有轮流充当校验盘
读,写性能提升
可用空间(N-1)*min
有容错能力:允许最多1块磁盘损坏
最少磁盘数3,3+
RAID-6
有2块校验盘
读写性能提升
可用空间:(N-2)*min
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4,4+
RAID-10
多块磁盘先两两组成RAID-1,在组成RAID-0
读、写性能提升
可用空间:N*min/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4,4+
RAID-01
多块磁盘先分成两组做RAID-0,再组成RADI-1
读,写性能提升
可用空间:N*min/2
容错,RAID1的两边不能同时坏硬盘
最少磁盘数4,4+
RAID-50
多块磁盘先实现RAID5,再组合成RAID-0
比RAID-10读写提升大,每组raid5里 最多允许坏一块硬盘
JBOD:
just a Bunch of disks
功能:将多块磁盘的空间合并一个大的连续空间使用
可用空间 sum
不能容错
RAID-7
可以理解为一个独立存储计算机,自身带有操作系统和管理工具,
可以独立运行,理论上性能最高的RAID模式
常用级别:
RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD
软RAID:
mdadm: 为软RAID提供管理界面
为空余磁盘添加冗余
结合内核中的md(multi devices)
RAID设备可命令为/dev/md0,/dev/md1...
mdadm:
语法格式:
mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR,0,1,4,5,6,10
mode 模式:
创建 -C
装配 -A
监控 -F
管理 -f -r -a
<raiddevice>: rainname /dev/md#
<component-devices> : 任意块设备,磁盘,分区等
-C 创建模式
-n# 使用#个块设备来创建此RAID
-l# 指明要创建的RAID的级别
-a{yes|no} 自动创建目标RAID设备的设备文件
-c chunk-size 指明块大小,单位K
-x 指明空闲盘的个数
-D 显示raid的详细信息
mdadm -D /dev/md*
管理模式:
-f 标记指定磁盘为损坏
-a 添加磁盘
-r 移除磁盘
观察md的状态:
cat /proc/mdstat
使用mdadm创建并定义RAID设备
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb{1,2,3,5}
用文件系统对RAID设备进行格式化
mkfs.ext4 /dev/md0
测试RAID设备
mdadm -D|--detail /dev/md0
增加新的成员
mdadm -G /dev/md0 -a /dev/sdb1
模拟磁盘故障
mdadm /dev/md0 -f /dev/sdb1
移除磁盘
mdadm /dev/md0 -r /dev/sdb1
软RAID管理
mdadm -D -s >> /etc/mdadm.conf
生成配置文件
mdadm -S /dev/md0
停止设备
mdadm -A -s /dev/md0
激活设备,如果没有生成配置文件,停止之后会无法激活
mdadm -R /dev/md0
强制启动
mdadm --zero-superblock /dev/sdb1
删除磁盘的raid信息
PS:
RAID-0 不支持空闲盘
raid5,格式化raid,或者空闲盘顶替之后,会有一段时间的 clean, degraded, recovering 时间,
有一个盘显示 spare rebuilding 的状态
使用-n4 -a 添加磁盘 会添加成raid盘,无法添加成空闲盘
练习:?
1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,
开机可自动挂载至/backup目录
? fdisk 分出3个1G分区/dev/sdc{1,2,3} 类型fd
mdadm -C /dev/md0 -a yes -l1 -n2 -x1 /dev/sdc{1,2,3}
mkfs.ext4 /dev/md0
mdadm -D -s >> /etc/mdadm.conf
blkid
echo "UUID=''\t /backup\text4\tdefaults\t0\t0" >>/etc/fstab
mkdir /dev/md0
mount -a
2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为
256k,文件系统为ext4,开机可自动挂载至/mydata目录
fdisk 分出4个1G分区 /dev/sdb{1,2,3,4} 类型fd
mdadm -C /dev/md1 -a yes -l5 -n3 -x1 -c 256 /dev/sdb{1,2,3,4}
mkfs.ext4 /dev/md1
mdadm -D -s >> /etc/mdadm.conf
blkid
echo "UUID=''\t/madata\text4\tdefault\t 0\t0 "
mkdir /mydata
mount -a
LVM:逻辑卷管理器
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
将设备指定为物理卷
用一个或者多个物理卷来创建一个娟阻
物理卷是用固定大小的物理区域(PE,Physical Extent)来定义的
在物理卷上创建的逻辑卷是由物理区域PE组成的
可在逻辑卷上创建文件系统
LVM: Logical Volume Manager, Version:2
dm: device mapper :将一个或多个底层设备组织成一个逻辑设备的模块
设备名:/dev/dm-#
软链接:
/dev/mapper/VG-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
LVM可以弹性的更改LVM的容量
通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV
的容量,或将其他设备中的PE加到LV中以加大容量
pv管理工具
pv
pvs 简要pv信息显示
pvdisplay 详细pv信息显示
pvcreate /dev/device 创建pv
pvmove 转移pv上的内容到其他pv
pvmove /dev/sd*
pvremove 删除pv,
需要先执行 vgreduce /dev/vg /dev/sd*
pvremove /dev/sd*
VG管理工具
vg
vgs 显示卷组
vgdisplay 显示vg详细信息
vgcreate 创建卷组
-s 指定PE大小
vgreduce 卷组减容
vgreduce /dev/vg /dev/sd*
vgextend 卷组扩容
vgextend /dev/vg /dev/sd*
vgremove 卷组删除
vgchange 修改卷组属性,便于迁移
-a n 迁出
-a y 迁入
vgexport 输出卷组,便于迁移
vgimport 输入卷组
vgrename vg改名
vgrename /dev/vg name
lv管理工具
lv
lvcreate 创建逻辑卷lv
-L # size,直接指定大小M/G
-l #,%{FREE|PVS|VG} PE数量,%FREE %VG 表示空闲百分比%和总百分比%
-n name 指定lv名
lvs 查看lv
lvdisplay 查看lv详细信息
lvremove 删除lv
lvrename lv改名
lvrename /dev/vg/lv name
lvconvert 恢复逻辑卷快照
--merge
lvextend
-L [+]size 扩展、扩展到size
-l [+]num 50%FREE/VG 扩展、扩展到num个PE大小
lvreduce lv减容
-L [-]size
-l [-]num 50%FREE/VG
pv删除:
pvmove /dev/sdb1
vgreduce /dev/vg1 /dev/sdb1
pvremore /dev/sdb1
lv扩容:
lvextend -L +5G /dev/vg/lv 扩展逻辑卷
resize2fs /dev/vg/lv 扩展文件系统
lvresize lvresize -r -l +100%FREE /dev/vg1/lv1 此命令会将文件系统和lv一起扩展
lv减容:
umount /dev/vg/lv 取消挂载
e2fsck e2fsck -f /dev/vg/lv 强制检查
resize2fs resize2fs /dev/vg/lv 5G 缩减文件系统 centos6
xfs_growfs centos7
lvreduce -L 5G /dev/vg/lv
PS: lv缩减或者删除必须取消挂载
lv扩展之后需要扩展文件系统
lv缩减之前需缩减文件系统
跨主机迁移卷组
源计算机上:
1. umount所有卷组上的逻辑卷
2. vgchange -a n vg
lvdisplay
3. vgexport vg
pvscan 查看pv使用情况
vgdisplay
拆下硬盘
目标计算机上:
4. 安装硬盘,并 vgimport vg
5. vgchange -ay vg
6. mount所有卷组上的逻辑卷
逻辑卷管理器快照:
快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
对于需要备份或者复制的现有数据临时拷贝以及其他操作做来说,快照
是最合适的选择
快照只有在它们和原来的逻辑卷不同时才会消耗空间
在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者
快照有所改变的时候才会使用这些空间
当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中
更改的数据
建立快照的卷大小只需要原始逻辑卷的15%-20%就够了,也可以使用
lvextend放大快照
快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据
改动了,则原始数据会被移动到快照区,没有改动的区域择优快照区的文件
系统共享
由于快照区与原来的LV公用很多PE的区块,因此快照与被快照的LV必须在同一个
VG中,系统恢复的时候的文件数量不能高于快照区的实际容量
使用LVM快照:
为现有的逻辑卷创建快照:
lvcreate -l 64 -s -n data-snapshot -p r /dev/vg/lv
-s|--snapshot 指明快照lv
-p|--permission {r|rw} 指明权限,是读写还是只读
挂载快照:
mkdir -p /mnt/snap
mount -o ro /dev/vg/data-snapshot /mnt/snap
恢复快照:
umount /dev/vg/data-snapshot
umount /dev/vg/data
lvconvert --merge /dev/vg/snapshot
删除快照:
umount /mnt/snap
lvremove /dev/vg/data-snapshot
练习:
1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小
为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
fdisk /dev/sdb /dev/sdb1 /dev/sdb2 10G 8e
pvcreat /dev/sdb{1,2}
vgcreat -s 16M /dev/vg0 /dev/sdb{1,2}
lvcreat -L 5G -n testlv /dev/vg0
mkfs.ext4 /dev/vg0/testlv
mkdir /users
mount /dev/vg0/testlv /users
2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至
archlinux用户,复制/etc/pam.d目录至自己的家目录
useradd -d /users/archlinux
su archlinux
cp -r /etc/pam.d ~
3、扩展testlv至7G,要求archlinux用户的文件不能丢失
lvextend -L 7G /dev/vg0/testlv
resize2fs /dev/vg0/testlv
4、收缩testlv至3G,要求archlinux用户的文件不能丢失
umount /dev/vg0/testlv
e2fsck -f /dev/vg0/testlv
resize2fs /dev/vg0/testlv 3G
lvreduse -L 3G /dev/vg0/testlv
mount /dev/vg0/testlv /users
5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
lvcreate -L 1G -s -n snap1 /dev/vg0/testlv1
umount /users
lvconvert --merge /dev/vg0/snap1
笔记整理完成时间:2018年4月28日20:18:25
以上是关于第11章,磁盘存储和文件系统学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
2017-2018-1 20155315 《信息安全系统设计基础》第11周学习总结