本章概要
1、磁盘基础介绍
设备文件
- I/O Ports:I/O设备地址
- 设备类型:
块设备:block,存取单位“块”,来自于磁盘
字符设备:char,存取单位“字符”,来自于键盘 - 设备文件:关联至一个设备驱动程序,进而能够与之对应硬件设备进行通信
- 设备号码:
主设备号:major number, 标识设备类型
次设备号:minor number, 标识同一类型下的不同设备
示例:
[root@centos7 ~]#ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Aug 18 20:31 /dev/sda
brw-rw----. 1 root disk 8, 1 Aug 18 20:31 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 18 20:31 /dev/sda2
brw-rw----. 1 root disk 8, 3 Aug 18 20:31 /dev/sda3
brw-rw----. 1 root disk 8, 4 Aug 18 20:31 /dev/sda4
brw-rw----. 1 root disk 8, 5 Aug 18 20:31 /dev/sda5
#其中8即为主设备号,0-5即为次设备号
硬盘接口类型
- 并行:
IDE:133MB/s
在实际应用中也被称为ATA,早期普通计算机使用的接口类型,现已淘汰
SCSI:640MB/s
使用与早期服务器上的接口类型,逐渐被代替 - 串口:
SATA:6Gbps
即serial ATA;稳定性较强,仍是目前大多数服务器使用的接口类型
SAS:6Gbps
向下兼容SATA硬盘,传输速率较高,但因其昂贵的价格,没有普及使用
USB:480MB/s
移动存储设备接口(如u盘,移动硬盘等) - rpm: rotations per minute,即每分钟转数
机械硬盘和固态硬盘
- 机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成
- 固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致
二者的区别: - 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
- 相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势
- 硬盘有价,数据无价,目前SSD不能完全取代HHD
设备文件
- 磁盘设备的设备文件命名:/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 - 硬盘存储术语
head:磁头
track:磁道
cylinder:柱面
sector:扇区,每个扇区在磁盘上用512byte表示
CHS模式支持的硬盘容量有限,用8bit来存储磁头地址,最多为2\^8=256;用10bit来存储柱面地址,最大为2\^10=1024;用6bit来存储扇区地址,最大为2^6=64,因为扇区从0扇区开始,因此扇区范围为0~63;而一个扇区共有512Byte,这样使用CHS寻址一块硬盘最大容量为256 1024 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B来算就是8.4GB)
硬盘寻址:CHS和LBA
- CHS
采用24bit位寻址
最大寻址空间为8GB; - LBA(logical block addressing)
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
LBA采用48个bit位寻址
最大寻址空间128PB - 由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式
使用分区空间
(1)设备识别
(2)设备分区
(3)创建文件系统
(4)标记文件系统
(5)在/etc/fstab文件中创建条目
(6)挂载新的文件系统
2、磁盘分区
两种分区方式:MBR,GPT
MBR分区
- MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
- 如何分区:按柱面分区
- 0磁道0扇区:512bytes
446bytes: boot loader
64bytes:分区表
每个硬盘的分区表使用64byte表示,每16byte表示一个主分区,因此,主分区最多只能分4个
2bytes: 55AA,结束标记字 - 4个主分区;3主分区+1扩展(N个逻辑分区)
GPT分区
- GPT:GUID(Globals Unique Identifiers)partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)
- 使用128位UUID(Universally Unique Identifier) 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位
- UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
3、管理分区
- 列出块设备:lsblk
-f:列出文件系统 - 创建分区使用
fdisk:创建MBR分区
gdisk:创建GPT分区
parted:高级分区操作 - partprobe:同步分区表
parted命令
- parted的操作都是实时生效的,小心使用
- 用法:parted [选项]... [设备[命令[参数]...]...]
parted /dev/sdbmklabelgpt|msdos
parted /dev/sdbprint
parted /dev/sdbmkpartprimary 1 200 (默认M)
parted /dev/sdbrm1
parted –l 列出分区信息
分区工具fdisk和gdisk
这两种工具的区别在于:fdisk是MBR分区管理工具,gdisk是GPT管理分区工具
-
gdisk /dev/sdb 类fdisk的GPT分区工具
-
fdisk -l [-u] [device...] 查看分区
-
fdisk /dev/sdb 管理分区
注意:fdisk命令后跟的是硬盘名称,而不是分区名称 -
常用子命令:
p 分区列表
t 更改分区类型
l 列出分区类型
常用分区类型:
82 Linux swap / So(swap分区类型)
83 Linux(linux基础分区)
8e Linux LVM(逻辑卷管理)
fd Linux raid auto(raid类型,配置软raid时使用)
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
注意:新建分区中,主分区最多创建4个;如果想要创建更多的分区,可以把第4个分区创建为扩展分区,在扩展分区中创建逻辑分区,即可增加4个以上的分区
示例:
[root@centos7 ~]#fdisk /dev/sdb 使用fdisk命令创建分区
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n 新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 创建主分区
Partition number (1-4, default 1): 主分区范围1-4,默认选1分区
First sector (2048-41943039, default 2048): 选择扇区范围,选择默认范围
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G 设置分区大小为5G
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): w 保存分区
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos7 ~]#lsblk 查看分区/dev/sdb1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /
├─sda3 8:3 0 30G 0 part /data
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 3G 0 part [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
注意:分区完后硬盘和内存中的分区表可能不同步,因此需要同步
磁盘分区表和内存分区表如果不同步,会导致以下问题:
当原有硬盘上已有分区时,再次对磁盘分区,保存新分区有时会报错,如果是新增硬盘,则不存在此问题
如果分区未做同步,报错信息如下:
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
知识扩展:
删除分区表:dd if=/dev/zero of=/dev/sdb bs=1 count=512
同步分区表
- 查看内核是否已经识别新的分区:
cat /proc/partations - centos6通知内核重新读取硬盘分区表
新增分区命令:
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force - 删除分区命令:
partx -d --nr M-N /dev/DEVICE
注意:这里的M-N是指要删除的连续的分区,如果是单个分区,则需要单个删除 - CentOS 5,7: 使用partprobe
partprobe [/dev/DEVICE]
4、管理文件系统
文件系统
- 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
- 从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
- 查看支持的文件系统:ls /lib/modules/\
uname–r
/kernel/fs - 各种文件系统:
https://en.wikipedia.org/wiki/Comparison\_of\_file_systems 维基百科
文件系统类型
- Linux文件系统:
ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况,例如/boot 分区。
ext3:是ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统
ext4:是ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
xfs:SGI,支持最大8EB的文件系统
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命令:
- (1)mkfs.FS_TYPE /dev/DEVICE
FS_TYPE:ext4、xfs、btrfs、vfat - mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL':设定卷标
示例:
[root@centos7 ~]#mkfs.xfs(ext4) /dev/sdb1 为分区创建文件系统xfs(ext4)
[root@centos7 ~]#mkfs -t xfs(ext4) /dev/sdb1
[root@centos7 ~]#lsblk -f /dev/sdb1 查看/dev/sdb1的文件系统
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb1 ext4 85834c6b-5c40-4288-9703-75bbd6f22fa2
注意:centos7版本支持xfs、ext系列文件系统;而centos6版本支持ext系列文件系统,若想要使用xfs文件系统,则需要安装工具:xfsprogs
创建ext系列文件系统
mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}
注意:该命令如果不加选项,默认创建的是ext2文件系统,因此如果创建ext系列其他文件系统,需要加上选项:-t FS_TYPE
-b {1024|2048|4096} 指定块大小
-L 'LABEL' 指定卷标
-j: 相当于-t ext3 创建ext3文件系统
mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3
-i#: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比;当分区空间过大时,管理预留空间会占用较大空间,因此需要更改为自己所需要的空间大小
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
示例:
[root@centos7 ~]#mke2fs -O has_journal /dev/sdb1
[root@centos7 ~]#lsblk -f /dev/sdb1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb1 ext3 c04db398-1430-47cb-8d4d-56d7189e9c5f
mke2fs默认创建ext2文件系统,该系统不具备日志功能,而加上-O has_journal选项后,文件增加日志功能,文件系统自动更改为ext3文件系统
[root@centos7 ~]#mke2fs -O ^has_journal /dev/sdb1
[root@centos7 ~]#lsblk -f /dev/sdb1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb1 ext2 896d9616-b011-4302-bc7a-bb6070faa6ed
使用-O ^has_journal去除日志功能,文件系统自动更改为ext2文件系统
文件系统标签
- 指向设备的另一种方法
- 与设备无关
- blkid:块设备属性信息查看
- 用法:blkid [OPTION]... [DEVICE]
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备 - e2label:管理ext系列文件系统的LABEL
e2label DEVICE [LABEL] - findfs:查找分区
findfs[options] LABEL=\<label>
findfs[options] UUID=\<uuid>
示例:
[root@centos7 ~]#blkid
/dev/sda1: UUID="da6027b7-04a8-412e-b54d-0a3cbe7a9e0d" TYPE="xfs"
/dev/sda2: UUID="2f1bda24-d0a0-4498-84b2-76ecad8602b8" TYPE="xfs"
/dev/sda3: UUID="13feb009-a4b1-4521-b6fe-2596f033f6a5" TYPE="xfs"
/dev/sda5: UUID="bbbfb1b0-b076-4203-a4d3-0b7cd755019d" TYPE="swap"
/dev/sdb1: UUID="6768767b-9def-412d-a360-4f2c46fb024f" TYPE="ext4"
blkid和findfs都可以根据uuid和卷标查找分区,但是要注意两个命令后跟参数的细微差别
[root@centos7 ~]#blkid -U 6768767b-9def-412d-a360-4f2c46fb024f
/dev/sdb1
[root@centos7 ~]#findfs UUID=6768767b-9def-412d-a360-4f2c46fb024f
/dev/sdb1
tune2fs
- tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3,类似于mke2fs -j
-O: 文件系统属性启用或禁用,–O ^has_journal,类似于mkfs -O
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号 - dumpe2fs:
块分组管理,32768块
-h:查看超级块信息,不显示分组信息
注意:centos7系统默认具有acl权限,centos6系统需要手动设置acl功能
如:tune2fs -o acl /dev/sdb1
文件系统检测和修复
- 常发生于死机或者非正常关机之后
- 挂载为文件系统标记为“no clean”
- 注意:一定不要在挂载状态下修复
- fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同 - e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复
5、挂载设备
挂载mount
- 挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
- 卸载:为解除此关联关系的过程
- 把设备关联挂载点:mount Point
mount - 卸载时:可使用设备,也可以使用挂载点
umount - 挂载点下原有文件在挂载完成后会被临时隐藏
- 挂载点目录一般为空
用mount命令挂载文件系统
- 挂载方法:mount DEVICE MOUNT_POINT
- mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
- mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要挂载的设备;
(1) 设备文件:例如/dev/sda5
(2) 卷标:-L 'LABEL', 例如-L 'MYDATA'
(3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
dir:挂载点
事先存在;建议使用空目录
进程正在使用中的设备无法被卸载
示例:
[root@centos7 ~]#mkdir /mnt/sdb1
[root@centos7 ~]#mount /dev/sdb1 /mnt/sdb1
[root@centos7 ~]#cat /etc/mtab或mount 查看挂载信息
[root@centos7 ~]#ll /etc/mtab
lrwxrwxrwx. 1 root root 17 Jul 18 17:15 /etc/mtab -> /proc/self/mounts
查看/etc/mtab详细信息,发现该文件是/proc/self/mounts的软链接,而mount命令调用的也是此文件
注意:在配置文件/etc/fstab写入挂载信息时,尽量使用设备uuid挂载比较稳定,因为设备名称以及卷标都可能会被更改,因此使用设备名称挂载不稳定
知识扩展:
挂载之前要先创建文件系统,挂载是把文件系统和硬盘关联起来
一个目录(挂载点)同时只能挂载一个设备,不能挂载多个设备,如果挂载多个设备,则后续设备会把前面挂载的设备顶替掉
一个设备可以挂载到多个挂载点
挂载点目录一般为空,如果当挂载点的目录里有文件,把设备挂载到该目录后,该目录原有的文件将无法访问(原文件不会删除,取消挂载后恢复访问),只能访问挂载的设备里的文件
也可循环挂载
练习:
根据/etc/fstab找出根目录挂载在哪个分区
findfs `grep " / " /etc/fstab`
或findfs `sed -nr '/ \/ /s/(^[^[:space:]]+).*/\1/p' /etc/fstab`
mount常用命令选项
-t vsftype:指定要挂载的设备上的文件系统类型
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见
一般情况下,mount挂载信息会更新到/etc/mtab文件中,使用-n选项不更新该文件,挂载成功,但mount信息会被隐藏
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
-B, --bind:把目录挂载到另一个目录上
cat /proc/mounts 查看内核追踪到的已挂载的所有设备
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
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
注意:
当用户正在使用设备时,无法将正在使用的设备取消挂载
mount -o remoount,rw(ro) /mnt/sdb1 使用该命令,在不影响用户使用的情况下更改设备为读写或只读状态
使用mount -B选项,可以把目录挂载到目录(挂载点)上
[root@centos7 ~]#mkdir /mnt/boot
[root@centos7 ~]#mount -B /boot /mnt/boot 把boot目录挂载到/mnt/boot
[root@centos7 ~]#ls -i /boot /mnt/boot 查看两个文件节点编号
/boot:
72 config-3.10.0-862.el7.x86_64
67 efi
68 grub
1572928 grub2
76 initramfs-0-rescue-7eab25876df747da952cee5f5a6dbc5f.img
75 initramfs-3.10.0-862.el7.x86_64.img
73 symvers-3.10.0-862.el7.x86_64.gz
71 System.map-3.10.0-862.el7.x86_64
77 vmlinuz-0-rescue-7eab25876df747da952cee5f5a6dbc5f
74 vmlinuz-3.10.0-862.el7.x86_64
/mnt/boot:
72 config-3.10.0-862.el7.x86_64
67 efi
68 grub
1572928 grub2
76 initramfs-0-rescue-7eab25876df747da952cee5f5a6dbc5f.img
75 initramfs-3.10.0-862.el7.x86_64.img
73 symvers-3.10.0-862.el7.x86_64.gz
71 System.map-3.10.0-862.el7.x86_64
77 vmlinuz-0-rescue-7eab25876df747da952cee5f5a6dbc5f
74 vmlinuz-3.10.0-862.el7.x86_64
发现两个目录中文件的节点编号一致,说明挂载成功
loop 用文件模拟文件系统(即文件挂载到目录)
先创建需要大小的文件,如100M大小
dd if=/dev/zero of=/data/p1 bs=1M count=100
然后创建文件系统
mkfs.ext4 /data/p1
blkid /data/p1 查看文件类型
mkdir /mnt/p1
mount -o loop /data/p1 /mnt/p1
centos6中需加上-o loop选项即可挂载,centos7系统下不需要-o loop选项即可挂载
知识扩展:
在centos6版本中,使用文件模拟文件系统,挂载时需要启用loop功能(即mount -o loop),在centos6中默认启用loop设备默认有8个,超出此范围无法继续使用loop设备(centos7系统loop设备会自动生成,因此没有此限制)
解决方法:修改内核参数(针对centos6版本)
在/boot/grub/grub.conf文件中,kernel行最后添加max_loop=N(该数字可自定义)即可,修改完毕重启设备,loop设备即可超过8个。
kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=c6650924-418d-4c84-b6e5-c3a3b7b14323 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet max_loop=100
如果新增加的loop使用完,可以使用mknod创建特殊文件
mknod /dev/loop100 b 7 100
其中b是指块设备;7是指设备主编号;100是指设备次编号
卸载命令
- 查看挂载情况
findmnt MOUNT_POINT|device - 查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT - 终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT - 卸载
umount DEVICE
umount MOUNT_POINT
注意:在卸载分区前,要先查看是否有其他用户在使用该分区,如果有,则可以终止访问该文件系统的用户,然后卸载。
示例:
[root@centos7 sdb1]#lsof /mnt/sdb1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2071 root cwd DIR 8,17 4096 2 /mnt/sdb1
lsof 4169 root cwd DIR 8,17 4096 2 /mnt/sdb1
lsof 4170 root cwd DIR 8,17 4096 2 /mnt/sdb1
[root@centos7 sdb1]#fuser -v /mnt/sdb1
USER PID ACCESS COMMAND
/mnt/sdb1: root kernel mount /mnt/sdb1
root 2071 ..c.. bash
练习:判断/mnt/sdb1是否一个挂载点,如果不是,把/dev/sdb1挂载到该挂载点;如果是,则不挂载
findmnt /mnt/sdb1 &>/dev/null || mount /dev/sdb1/ /mnt/sdb1
挂载点和/etc/fstab
- 配置文件系统体系
- 被mount、fsck和其他程序使用
- 系统重启时保留文件系统提示
- 可以在设备栏使用文件系统卷标
- 使用mount -a命令挂载/etc/fstab中的所有文件系统
文件挂载配置文件
- /etc/fstab每行定义一个要挂载的文件系统
- 1、要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs - 2、挂载点
- 3、文件系统类型:ext4,xfs,nfs,none
- 4、挂载选项:defaults,acl,bind
- 5、转储频率:0:不做备份1:每天转储2:每隔一天转储
- 6、fsck检查的文件系统的顺序:允许的数字是0, 1, 和2
0:不自检
1:首先自检;一般只有rootfs才用
2:非rootfs使用
示例:
[root@centos7 sdb1]#cat /etc/fstab
UUID=2f1bda24-d0a0-4498-84b2-76ecad8602b8 / xfs defaults 0 0
UUID=da6027b7-04a8-412e-b54d-0a3cbe7a9e0d /boot xfs defaults 0 0
UUID=13feb009-a4b1-4521-b6fe-2596f033f6a5 /data xfs defaults 0 0
UUID=bbbfb1b0-b076-4203-a4d3-0b7cd755019d swap swap defaults 0 0
UUID=6768767b-9def-412d-a360-4f2c46fb024f /mnt/sdb1 ext4 defaults 0 0
注意:在挂载时,尽量使用设备的uuid挂载,,因为设备名称、卷标会被更改,因此使用设备名称挂载不稳定,而每个设备的uuid是唯一的,因此使用uuid挂载比较稳定。
实验1:当/etc/fstab表中要挂载的分区被删除
当分区被误删除,该分区会被其他分区自动顶替,系统无法正常启动。一旦出现这种情况,系统所有分区默认只有读权限,无法更改fstab表。
解决方法:
使用(mount -o remount,rw /)重新挂载根分区,并使其具有写权限,更改fstab表,恢复即可。
/etc/fstab表中 0 0,最后一个0表示检查次序,如果/etc/fstab表中,最后一项写成"0 0"不检测系统分区,相对来说比较安全,不会出现系统无法启动的情况
实验2:将/home目录迁移到一个独立分区中
1、创建分区,创建文件系统(即格式化),同步分区表
如:该分区为/dev/sda6
2、想要迁移数据,需要把数据复制到该分区中,要想使用该分区,则需要将该分区挂载到一个挂载点才能使用
挂载到一个临时挂载点(如:/mnt/home)
mkdir /mnt/home
mount /dev/sda6 /mnt/home
复制之前,要保证该分区没有其他人在访问,不再向该分区写入数据
使用命令init 1(单用户模式) 进入维护模式,一旦进入该模式,该设备会被断网,无法远程,需要到物理机进行操作
3、复制文件
cp -a /home /mnt/home
4、挂载永久有效,需要写入/etc/fstab表中
/dev/sda6 /home xfs defaults 0 0
注意:此时的挂载点是/home而不是/mnt/home;/mnt/home是临时挂载点,随着系统重启而失效
mount -a 使fstab表立即生效
5、删除原/home下的文件
要删除原/home文件需要将/home取消挂载 umount /home
删除/home目录 rm -rf /home/*
6、重新挂载/home
mount -a
最后,重启设备
6、管理虚拟内存
处理文件和分区
- 交换分区是系统RAM的补充
- 基本设置包括:
创建交换分区或者文件
使用mkswap写入特殊签名,即使用该命令对swap分区进行格式化
在/etc/fstab文件中添加适当的条目
使用swapon-a 激活交换空间
知识扩展:
fstab文件中:
如果设备(分区)出错
centos6,fstab文件中最后一项非0,将导致系统无法启动
centos7,fstab文件中最后一项是否为0,系统都无法启动
挂载交换分区
- 启用:swapon
swapon[OPTION]... [DEVICE]
-a:激活所有的交换分区
-p PRIORITY:指定优先级
-s:查看内存里swap信息,相当于cat /proc/swaps
/etc/fstab:pri=value - 禁用:swapoff [OPTION]... [DEVICE]
swap的优先级
- 可以指定swap分区0到32767的优先级,值越大优先级越高
- 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
- 先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
- 优化性能:分布存放,高性能磁盘存放
知识扩展:
1、增加swap分区大小
使用fdisk命令新建分区,并更改分区id为82
创建文件系统时使用mkswap 分区名
将更改写入/etc/fstab配置文件
swapon -a 使fstab表swap挂载立即生效
2、去掉新增的swap分区
swapoff 禁用swap分区
删除fstab表中swap挂载信息
删除swap分区
实验:增加分区或文件充当swap分区
创建需求大小的文件
dd if=/dev/zero if=swapfile bs=1G count=10
创建swap文件系统
mkswap /swapfile
写入fstab表
/swapfile swap swap defaults 0 0
激活fstab表
swapon -a 出于安全考虑,把/swapfile文件权限设置为600,即不允许别人对该文件进行写操作
移动介质
- 挂载意味着使外来的文件系统看起来如同是主目录树的一部分
- 访问前、介质必须被挂载
- 摘除时,介质必须被卸载
- 按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
- 挂载点通常在/media 或/mnt下
使用光盘
- 在图形环境下自动启动挂载/run/media/\
/\ - 否则就必须被手工挂载
mount /dev/cdrom/mnt/ - eject命令卸载或弹出磁盘
- 创建ISO文件
cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc - 刻录光盘
wodim–v –eject centos.iso
挂载USB介质
- 查看USB设备是否识别
lsusb - 被内核探测为SCSI设备
/dev/sdaX、/dev/sdbX、或类似的设备文件 - 在图形环境中自动挂载
图标在[计算机]窗口中创建
挂载在/run/media/\/\ - 手动挂载
mount /dev/sdb1 /mnt
常见工具
- 文件系统空间占用等信息的查看工具:
df [OPTION]... [FILE]...
-H:查看分区信息,大小以10^3来计算
-T:文件系统类型
-h: 查看分区信息,大小以2^10来计算
-i:inodesinstead of blocks,节点数使用情况
P: 对于长格式文件名,以常规方式显示;如果文件名过长,一行会错行变成两行显示,加上-P则会恢复成一行显示
df -Th组合选项示例:
[root@centos7 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 50G 5.1G 45G 11% /
devtmpfs devtmpfs 731M 0 731M 0% /dev
tmpfs tmpfs 747M 0 747M 0% /dev/shm
tmpfs tmpfs 747M 11M 736M 2% /run
tmpfs tmpfs 747M 0 747M 0% /sys/fs/cgroup
/dev/sda3 xfs 30G 33M 30G 1% /data
/dev/sda1 xfs 1014M 155M 860M 16% /boot
tmpfs tmpfs 150M 12K 150M 1% /run/user/42
tmpfs tmpfs 150M 0 150M 0% /run/user/0
/dev/sdb1 ext4 4.8G 20M 4.6G 1% /mnt/sdb1
df -P 选项示例:
[root@centos6 ~]#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 51475068 4520936 44332692 10% /
tmpfs 501508 72 501436 1% /dev/shm
/dev/sda1 999320 34120 912772 4% /boot
/dev/sda3 30832636 44996 29214776 1% /data
/dev/sr0 3897932 3897932 0 100% /mnt/cdrom
/root/Centos-6-x86_64-Everything-1804.iso
3897932 3897932 0 100% /mnt/iso
[root@centos6 ~]#df -P
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda2 51475068 4520936 44332692 10% /
tmpfs 501508 72 501436 1% /dev/shm
/dev/sda1 999320 34120 912772 4% /boot
/dev/sda3 30832636 44996 29214776 1% /data
/dev/sr0 3897932 3897932 0 100% /mnt/cdrom
/root/Centos-6-x86_64-Everything-1804.iso 3897932 3897932 0 100% /mnt/is
- 查看某目录总体空间占用状态:
du 查看文件大小,列出当前目录下每个子目录的大小,文件大小单位为k,默认递归
du [OPTION]... DIR
-h: human-readable
-s: summary
--max-depth du命令默认递归,使用该选项指定层级
工具dd
- dd命令:复制或转换文件
- 用法:
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 - 从fileA读取数据128byte写入fileB,从fileA读取数据时,跳过前63byte开始读取;写入fileB时,跳过前31byte开始写入,并且当fileA向fileB文件写入数据结束后,fileB文件内容不会被截断,实现如下:
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
示例:
[root@centos7 ~]#cat f1 f2
12345678
abcdefghijk
[root@centos7 ~]#dd if=/root/f1 of=/root/f2 bs=1 count=2 skip=3 seek=5
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.000197129 s, 10.1 kB/s
[root@centos7 ~]#cat f2
abcde45
[root@centos7 ~]#dd if=/root/f1 of=/root/f2 bs=1 count=2 skip=3 seek=5 conv=notrunc
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.000182165 s, 11.0 kB/s
[root@centos7 ~]#cat f2
abcde45hijk
- 备份:
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
将压缩的备份文件恢复到指定盘 - 拷贝内存资料到硬盘
dd if=/dev/mem of=/root/mem.binbs=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/zero of=/root/1Gb.file bs=1024 count=1000000 - 测试硬盘读速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null - 修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的
7、磁盘阵列RAID
- RAID:RedundantArrays of Inexpensive(Independent)Disks
早期被称为RedundantArrays of Inexpensive Disks(廉价的磁盘阵列),后来随着技术的不断完善,又被称为RedundantArrays of Independent Disks(独立的磁盘冗余阵列) - 其作用是:多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供
RAID
- 提高IO能力
磁盘并行读写 - 提高耐用性
磁盘冗余来实现 - 级别:多块磁盘组织在一起的工作方式有所不同
- RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
安装OS前在BIOS里配置
软件RAID:通过OS实现
注意:做raid要求raid成员大小要求一致;即取相同的空间做raid,如两个硬盘1个80M,1个100M,那么两个硬盘均取80M来做radi0
RAID级别
RAID-0:条带卷,strip
RAID-1: 镜像卷,mirror
RAID-2
..
RAID-5
RAID-6
RAID-10
RAID-01
- RAID0
读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2+
在读写数据时,多块硬盘同时进行读写操作,大大提升了读写的性能 - RAID1
读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2N
在写入数据时,要同时对两块硬盘写入相同的数据,这样一来,写入一份数据要花费更多的资源,降低了系统写性能 - RAID4
多块数据盘异或运算值存于专用校验盘
该模式会拿出一块磁盘专用于存储异或校验值,一旦校验盘损坏,系统安全性将会降低 - RAID5
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:允许最多1块磁盘损坏
最少磁盘数:3, 3+
每一个硬盘都有一个异或校验值,一旦其中某块硬盘发生故障,通过异或校验值可以计算出该硬盘的数据,以达到冗余的目的。同时,服务器将会处于“忙碌(降级)”状态,系统读写性能大大降低,需要及时把发生故障的硬盘替换。异或校验值会占用硬盘空间,因此硬盘利用率会被稍微降低,利用率为(n-1)/n - RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4, 4+
该模式与raid5类似,不同之处在于raid6每个成员内存有两个异或校验值,因此允许损坏2块硬盘,硬盘利用率为(n-2)/n - RAID10
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
raid10即对硬盘先两两做raid1,再对两组raid1做raid0 - RAID01
多块磁盘先实现RAID0,再组合成RAID1
注意:raid10和raid01硬盘利用率均为50%,但raid10容错性比raid01更好 - RAID-50
多块磁盘先实现RAID5,再组合成RAID0 - JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用
可用空间:sum(S1,S2,...)
该模式对每个磁盘成员大小没有要求,写入数据时,将第一块磁盘写满后,再写入第二块磁盘,以此类推;因此既无容错性,读写性能也大大降低,一般情况下不推荐这种模式 - RAID7
可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式 - 常用RAID级别:
RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
8、逻辑卷管理(LVM)
传统分区扩展性差,逻辑卷能够很好的解决该问题
- 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
- 允许在多个物理设备间重新组织文件系统
将设备指定为物理卷(PV)
用一个或者多个物理卷来创建一个卷组(VG)
物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
在物理卷上创建的逻辑卷(LVM)是由物理区域(PE)组成
可以在逻辑卷上创建文件系统(FS_TYPE)
LVM介绍
- LVM: Logical Volume Manager,ersion: 2
- dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
- 设备名:/dev/dm-#
- 软链接:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
示例:
[root@centos7 ~]#ll /dev/vg0/lv0 /dev/mapper/vg0-lv0
lrwxrwxrwx. 1 root root 7 Aug 19 16:31 /dev/mapper/vg0-lv0 -> ../dm-0
lrwxrwxrwx. 1 root root 7 Aug 19 16:31 /dev/vg0/lv0 -> ../dm-0
LVM更改文件系统的容量
- LVM可以弹性的更改LVM的容量
通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量
PV管理工具
- 显示pv信息
pvs:简要pv信息显示
pvdisplay - 创建pv
pvcreate /dev/DEVICE
VG管理工具
- 显示卷组
vgs
vgdisplay - 创建卷组
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupNamePhysicalDevicePath[PhysicalDevicePath...] - 管理卷组
vgextend VolumeGroupName PhysicalDevicePath[PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath[PhysicalDevicePath...] - 删除卷组
先做pvmove,再做vgremove
知识扩展:
把已经使用的PE移动到同一个卷组的其他成员的物理卷(pv)上;
注意:要确保同一个卷组中有足够可用的空间
pvmove /dev/sde 移动的是空间(PE)不是数据
vgreduce newvg0 /dev/sde 把/dev/sde从卷组newvg0中删除
pvremove /dev/sde 删除物理卷
LV管理工具
- 显示逻辑卷
lvs
Lvdisplay - 创建逻辑卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvcreate -l 60%VG -n mylvtestvg
lvcreate -l 100%FREE -n yourlvtestvg - 删除逻辑卷
lvremove /dev/VG_NAME/LV_NAME - 重设文件系统大小
fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
实验1:创建逻辑卷
1、准备磁盘或逻辑卷
如果从硬盘中分出一部分空间作为逻辑卷,需要通过对硬盘分区来分离出需要的硬盘空间,分区以后更改ID类型为8e
2、创建物理卷
pvcreate /dev/sdd1(分区名) /dev/sde(设备名)
3、创建卷组
vgcreate -s 16M vg0 /dev/sdd1 /dev/sde
-s 是扇区的指数倍,即2^n,至少128k
4、创建逻辑卷
lvcreate -L 1.5G -n lv0 vg0
-L 以容量为单位指定逻辑卷大小
-l 以pe为单位指定逻辑卷大小
PE在逻辑卷中的名称为LE
5、创建文件系统
mkfs.ext4 /dev/vg0/lv0
6、挂载
mount /dev/vg0/lv0 /mnt/lv0
实验2:删除所有的PV、VG、LVM
1、删除fstab表中挂载项
2、取消挂载
umount /mnt/lv0
umount /mnt/lv0
3、删除逻辑卷
lvremove /dev/newvg0/lv{0,1}
4、删除卷组
vgremove /dev/newvg0
5、删除物理卷
pvremove /dev/sdc /dev/sdd1
扩展和缩减逻辑卷
- 扩展逻辑卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME - 缩减逻辑卷:
umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount
实验1:扩展逻辑卷
扩展逻辑卷,首先要扩展卷组
1、查看卷组空间 vgdisplay
2、如果空间足够,直接扩展
lvextend -l 100%FREE /dev/vg0/lv0
然后扩展文件系统:
ext系列文件系统:resize2fs /dev/vg0/lv0
xfs文件系统:xfs_grow /mnt/lv0
或者一步完成:lvextend -r -l 100%FREE /dev/vg0/lv0
3、如果空间不足,则需要新增物理卷
(1)pvcreate /dev/sdc 增加物理卷
(2)vgextend vg0 /dev/sdc 扩展卷组
(3)lvextend -L +1G /dev/vg0/lv0 逻辑卷在原来的基础上增加大小+1G
lvextend -L 3G /dev/vg0/lv0 逻辑卷直接指定大小3G
(4)扩展文件系统
ext系列文件系统 resize2fs /dev/vg0/lv0(设备名)
xfs文件系统 xfs_grow /mnt/lv1(挂载点)
扩展逻辑卷,由于新增分区没有文件系统,因此硬盘容量虽然加入逻辑卷,但是却不能写入数据,因此需要扩展文件系统
或者:
扩展空间和扩展文件系统一步完成,不用管是哪种文件系统
lvextend -r -L +1G /dev/vg0/lv0
实验2:缩减逻辑卷
逻辑卷缩减(ext系列)
xfs文件系统不支持缩减,ext4支持缩减
逻辑卷缩减,数据要提前做备份
1、缩减不支持在线缩减,要先取消挂载要缩减的逻辑卷
umount /mnt/lv0
2、检查系统完整性(必须执行该步骤,否则后续会报错)
fsck -f /dev/vg0/lv0
3、缩减文件系统
resize2fs /dev/vg0/lv0 2G 缩减后的大小必须大于逻辑卷大小
4、缩减逻辑卷
lvreduce -L 2G /dev/vg0/lv0 逻辑卷缩减大小必须和文件系统缩减大小一致
5、重新挂载
mount -a
6、查看缩减后的结果
df -h
跨主机迁移卷组
- 源计算机上
1 在旧系统中,umount所有卷组上的逻辑卷
2 vgchange –a n vg0
lvdisplay
3 vgexport vg0
pvscan
vgdisplay
拆下旧硬盘 - 在目标计算机上
4 在新系统中安装旧硬盘,并vgimport vg0.
5 vgchange –ay vg0
6 mount所有卷组上的逻辑卷
实验:跨主机迁移卷组
1、为防止名字与目标主机上的逻辑卷、卷组冲突,需要在迁移之前对逻辑卷、卷组更改名称
vgrename vg0 newvg0
lvrename /dev/newvg0/lv0 newlv0(卷组名称更改后,逻辑卷可以不用更改名称)
lvdisplay 查看更改后的逻辑卷信息
2、取消挂载
umount /mnt/lv0
查看该逻辑卷所在分区下是否有其他逻辑卷,如果有,也要取消挂载
umount /mnt/lv1
3、卷组设置为非活动状态
vgchange -an newvg0
vgdisplay、lvdisplay 查看卷组、逻辑卷状态
4、卷组设置为导出状态
vgexport newvg0
5、把逻辑卷所在硬盘拆下来,并且安装到目标设备上
pvscan 在目标设备上查看物理卷
6、vgimport newcg0 导入卷组
7、vgchange -ay newvg0 激活卷组
8、mkdir /mnt/newlv0
注意:centos6默认文件系统为ext系列,因此从centos7迁移到centos6版本,会有问题,如果从centos6往centos7上迁移,则没问题
9、逻辑卷管理器快照
- 快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
- 对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择
- 快照只有在它们和原来的逻辑卷不同时才会消耗空间
在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照 - 快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
- 由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量
使用LVM快照
- 为现有逻辑卷创建快照
lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data - 挂载快照
mkdir -p /mnt/snap
mount -o ro /dev/vg0/data-snapshot /mnt/snap - 恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot - 删除快照
umount /mnt/databackup
lvremove /dev/vg0/databackup
实验1-1:创建快照(ext系列文件系统)
1、查看卷组是否有多余空间,如果有,创建逻辑卷的快照
lvcreate -n lv0-snapshot -s -L 1G /dev/vg0/lv0
或lvcreate -n lv0-snapshot -s -p r -L 1G /dev/vg0/lv0 加上-p r选项,把文件设备只读,保证数据完整性
lvdisplay
2、挂载快照逻辑卷
mkdir /mnt/lv0-snapshot
mount /dev/lv0-snapshot /mnt/lv0-snapshot
ext系列文件系统虽然快照逻辑卷和原有逻辑卷uuid一致,但不用使用-o nouuid选项,这是文件系统特性造成的结果
3、ls /mnt/lv0-snapshot 查看快照文件
实验1-2:创建快照(xfs文件系统)
1、创建快照逻辑卷
lvcreate -n lv1-snapshot -s -L 1G /dev/vg0/lv1
2、挂载快照逻辑卷
mkdir /mnt/lv1-snapshot
mount -o nouuid /dev/vg0/lv1-snapshot /mnt/lv1-snapshot
注意:挂载时由于xfs文件系统下快照逻辑卷和原有逻辑卷uuid一致,因此不能挂载;可以使用mount -o nouuid选项进行挂载。
实验2:根据快照还原数据
1、取消挂载
umount /mnt/lv0 取消逻辑卷挂载
umount /mnt/lv0-snapshot 取消快照逻辑卷挂载
2、把快照数据还原到原来的逻辑卷
lvconvert --merge /dev/vg0/lv0-snapshot
3、重新挂载逻辑卷
mount /dev/vg0/lv0 /mnt/lv0
实验3:删除快照
1、取消快照逻辑卷挂载
umount /mnt/lv0-snapshot
2、删除快照
lvremove /dev/vg0/lv0-snapshot
文章评论