文件系统管理/高级文件系统管理
2021-03-21 17:09:02 0 举报
AI智能生成
文件系统管理/高级文件系统管理 part-7
作者其他创作
大纲/内容
文件系统管理
一、硬盘结构
1、硬盘的逻辑结构
0磁道和0扇区放的时系统的驱动程序
碳钢合金
每个扇区的大小事固定的,为512Byte。扇区也是磁盘的最小存贮单位。
机械式硬盘 133MB/s 速度慢,易损坏
硬盘的大小是使用“磁头数×柱面数×扇区数×每个扇区的大小”这样的公式来计算的。
其中磁头数(Heads)表示硬盘总共有几个磁头,也可以理解成为硬盘有几个盘面,然后乘以二;
柱面数(Cylinders)表示硬盘每一面盘片有几条磁道;
扇区数(Sectors)表示每条磁道上有几个扇区;每个扇区的大小一般是512Byte。
2、硬盘接口
IDE硬盘接口(Integrated Drive Electronics,并口,即电子集成驱动器)也称作“ATA硬盘”或“PATA硬盘”,是早期机械硬盘的主要接口,ATA133硬盘的理论速度可以达到133MB/s(此速度为理论平均值),IDE硬盘接口
SATA接口(Serial ATA,串口)是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是SATA三代,理论传输速度达到600MB/s(此速度为理论平均值)
SCSI接口(Small Computer System Interface,小型计算机系统接口)广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU占用率低及支持热插拔等优点,理论传输速度达到320MB/s
PCI-E
2000MB/s
cpu分级缓存
一级缓存,二级缓存,三级缓存
内存
硬盘
二、文件系统
1. Linux文件系统的特性:
super block(超级块)
记录整个文件系统的信息,包括block与inode的总量,已经使用的inode和block的数量,未使用的inode和block的数量,block与inode的大小,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间等。
dump2fs {硬盘挂载文件} 查看分组情况
date block(数据块,也称作block)
用来实际保存数据的(柜子的隔断),block的大小(1KB、2KB或4KB)和数量在格式化后就已经决定,不能改变,除非重新格式化(制作柜子的时候,隔断大小就已经决定,不能更改,除非重新制作柜子)。每个blcok只能保存一个文件的数据,要是文件数据小于一个block块,那么这个block的剩余空间不能被其他文件是要;要是文件数据大于一个block块,则占用多个block块。Windows中磁盘碎片整理工具的原理就是把一个文件占用的多个block块尽量整理到一起,这样可以加快读写速度。
inode(i节点,柜子门上的标签)
用来记录文件的权限(r、w、x),文件的所有者和属组,文件的大小,文件的状态改变时间(ctime),文件的最近一次读取时间(atime),文件的最近一次修改时间(mtime),文件的数据真正保存的block编号。每个文件需要占用一个inode。
2. Linux常见文件系统
ext
Linux中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用
ext2
是ext文件系统的升级版本,Red Hat Linux 7.2版本以前的系统默认都是ext2文件系统。于1993年发布,支持最大16TB的分区和最大2TB的文件(1TB=1024GB=1024×1024KB)
ext3
是ext2文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件
ext4
是ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。ext4的变化可以说是翻天覆地的,比如向下兼容ext3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。它是CentOS 6.x的默认文件系统
xfs
XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前CentOS 7.x将XFS+LVM作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。
swap
swap是Linux中用于交换分区的文件系统(类似于Windows中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的2倍,但是不要超过2GB。它是Linux的必需分区
NFS
NFS是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源
iso9660
光盘的标准文件系统。Linux要想使用光盘,必须支持iso9660文件系统
fat
就是Windows下的fat16文件系统,在Linux中识别为fat
vfat
就是Windows下的fat32文件系统,在Linux中识别为vfat。支持最大32GB的分区和最大4GB的文件
NTFS
就是Windows下的NTFS文件系统,不过Linux默认是不能识别NTFS文件系统的,如果需要识别,则需要重新编译内核才能支持。它比fat32文件系统更加安全,速度更快,支持最大2TB的分区和最大64GB的文件
ufs
Sun公司的操作系统Solaris和SunOS所采用的文件系统
proc
Linux中基于内存的虚拟文件系统,用来管理内存存储目录/proc
sysfs
和proc一样,也是基于内存的虚拟文件系统,用来管理内存存储目录/sysfs
tmpfs
也是一种基于内存的虚拟文件系统,不过也可以使用swap交换分区
三、常用的硬盘管理命令
1、df命令
查看硬盘占用情况
[root@localhost ~]# df –ahT
#-a 显示特殊文件系统,这些文件系统几乎都是保存在内存中的。如/proc,因为是挂载在内存中,所以占用量都是0
#-h 单位不再只用KB,而是换算成习惯单位
#-T 多出了文件系统类型一列
ll 命令 不支持统计目录大小,只支持文件大小
统计目录时不会统计子文件的大小,只会统计文件名所只占用的block大小。是4K的倍数
但是Boot分区的block默认大小是1Kb
但是Boot分区的block默认大小是1Kb
2、du命令
查看目录的情况
[root@localhost ~]# du [选项] [目录或文件名]
选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
-s 统计总占用量,而不列出子目录和子文件的占用量
选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
-s 统计总占用量,而不列出子目录和子文件的占用量
du与df的区别
du是用于统计文件大小的,统计的文件大小是准确的;df是用于统计空间大小的,统计的剩余空是准确的
两个大小不一致的原因是因为,系统产生的临时文件
lsof | grep deleted”
查看被删除的文件,然后一个进程一个进程的手工kill也是可以的,
查看被删除的文件,然后一个进程一个进程的手工kill也是可以的,
建议重启系统
3、fsck文件系统修复命令
[root@localhost ~]# fsck –y /dev/sdb1
#自动修复
#自动修复
在系统开始时,会自动执行,不需要手动执行
作用不大
4、显示磁盘状态dumpe2fs
[root@localhost ~]# dumpe2fs /dev/sda3
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none> 卷标名
Last mounted on: / 挂载点
Filesystem UUID: c2ca6f57-b15c-43ea-bca0-f239083d8bd2 UUID
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg spars
e_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl 挂载参数
Filesystem state: clean 文件系统状态,正常
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 1826816 inode总数
Block count: 7300864 块总素
Reserved block count: 365043
Free blocks: 6634637
Free inodes: 1753533
First block: 0
Block size: 4096 块大小
Fragment size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Mon Nov 12 22:30:41 2012
Last mount time: Tue Apr 9 23:53:29 2013
Last write time: Mon Nov 12 22:45:55 2012
Mount count: 3
Maximum mount count: -1
Last checked: Mon Nov 12 22:30:41 2012
Check interval: 0 (<none>)
Lifetime writes: 3199 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256 inode的大小
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none> 卷标名
Last mounted on: / 挂载点
Filesystem UUID: c2ca6f57-b15c-43ea-bca0-f239083d8bd2 UUID
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg spars
e_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl 挂载参数
Filesystem state: clean 文件系统状态,正常
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 1826816 inode总数
Block count: 7300864 块总素
Reserved block count: 365043
Free blocks: 6634637
Free inodes: 1753533
First block: 0
Block size: 4096 块大小
Fragment size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Mon Nov 12 22:30:41 2012
Last mount time: Tue Apr 9 23:53:29 2013
Last write time: Mon Nov 12 22:45:55 2012
Mount count: 3
Maximum mount count: -1
Last checked: Mon Nov 12 22:30:41 2012
Check interval: 0 (<none>)
Lifetime writes: 3199 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256 inode的大小
…省略部分输出…
Group 0: (Blocks 0-32767) [ITABLE_ZEROED] 第一个数据组的内容
校验和 0xcb85,8179个未使用的inode
主 superblock at 0, Group descriptors at 1-2
保留的GDT块位于 3-1024
Block bitmap at 1025 (+1025), Inode bitmap at 1041 (+1041)
Inode表位于 1057-1568 (+1057)
23513 free blocks, 8179 free inodes, 2 directories, 8179个未使用的inodes
可用块数: 9255-32767
可用inode数: 14-8192
…省略部分输出…
Group 0: (Blocks 0-32767) [ITABLE_ZEROED] 第一个数据组的内容
校验和 0xcb85,8179个未使用的inode
主 superblock at 0, Group descriptors at 1-2
保留的GDT块位于 3-1024
Block bitmap at 1025 (+1025), Inode bitmap at 1041 (+1041)
Inode表位于 1057-1568 (+1057)
23513 free blocks, 8179 free inodes, 2 directories, 8179个未使用的inodes
可用块数: 9255-32767
可用inode数: 14-8192
…省略部分输出…
5、查看文件的详细时间
stat 文件名 查看文件的详细时间
例如
[root@localhost ~]# stat test.sh
File: `test.sh'
#文件名
Size: 427 Blocks: 8 IO Block: 4096 regular file
#文件大小 占用块 系统分区块大小
Device: fd00h/64768d Inode: 23724038 Links: 1
#存放文件的设备 inode号 硬链接数
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
权限 属主 属组
Access: 2011-10-29 22:27:45.000000000 +0800
Modify: 2011-09-14 18:02:00.000000000 +0800
Change: 2011-10-25 22:21:44.000000000 +0800
access 访问时间
modify 数据修改时间
change 状态修改时间
6、判断文件类型
file 文件名 判断文件类型
type 命令名 判断命令类型
内部命令
提示 cd is a shell builtin
说明是内部命令
外部命令
没有提示上述命令
说明是外部命令
四、fdisk命令手工分区
1.查看系统所有硬盘及分区
fdisk -l
注意fdisk只识别MBR分区表,不识别GPT分区表
2.进行磁盘分区(分区还没有分区号)
fdisk /dev/sdb
fdisk 交互指令说明
a 设置可引导标记
b 编辑 bsd 磁盘标签
c 设置 DOS 操作系统兼容标记
d 删除一个分区
l 显示已知的文件系统类型。82 为 Linux swap 分区,83 为 Linux 分区
m 显示帮助菜单
n 新建分区
o 建立空白 DOS 分区表
p 显示分区列表
q 不保存退出
s 新建空白 SUN 磁盘标签
t 改变一个分区的系统 ID
u 改变显示记录单位
v 验证分区表
w 保存退出
x 附加功能(仅专家)
流程
主分区
n---p 主----1 分区号----1 起始柱面-----分区大小+100M-----w
扩展分区
n---e 扩展---2 分区号---124 起始柱面----1024 柱面(所有剩余空间都分配给扩展分区)
逻辑分区
n---l 逻辑---不用指定分区号---124 起始柱面----+100M(指定大小)-----w
有时因为系统的分区表正忙,则需要重新启动系统之后才能使新的分区表生效。
Command (m for help): w 保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
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. 要求重启动,才能格式化
Syncing disks.
The partition table has been altered!
Calling ioctl() to re-read partition table.
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. 要求重启动,才能格式化
Syncing disks.
3 partprobe
强制重读所有分区文件,重新挂载分区文件内所有分区。这不是分区必须
命令,如果没有提示重启,可以不执行,也可以重启系统
命令,如果没有提示重启,可以不执行,也可以重启系统
(Warning: Unable to open /dev/hdc read-write (Read-only file system). /dev/hdc has
been opened read-only.
光盘只读挂载,不是错误,不用紧张)
如果这个命令不存在请安装 parted-2.1-18.el6.i686 这个软件包
been opened read-only.
光盘只读挂载,不是错误,不用紧张)
如果这个命令不存在请安装 parted-2.1-18.el6.i686 这个软件包
4 格式化
建立文件系统
命令
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb5
mkfs -t ext4 /dev/sdb5
mkfs 命令非常简单易用,不过是不能调整分区的默认参数的(比如块大小是 4096),这些默认参数除非特殊情况,
否则不需要调整,如果想要调整就需要使用 mke2fs 命令进行重新格式化,命令格式如下:
否则不需要调整,如果想要调整就需要使用 mke2fs 命令进行重新格式化,命令格式如下:
[root@localhost ~]# mke2fs [选项] 分区设备文件名
选项:
-t 文件系统: 指定格式化成哪个文件系统,如 ext2,ext3,ext4
-b 字节: 指定 block 块的大小
-i 字节: 指定“字节/inode”的比例,也就是多少个字节分配一个 inode
-j: 建立带有 ext3 日志功能的文件系统
-L 卷标名: 给文件系统设置卷标名,就不使用 e2label 命令设定了
举个例子:
[root@localhost ~]# mke2fs -t ext4 -b 2048 /dev/sdb6
#格式化分区,并指定 block 的大小为 2048
选项:
-t 文件系统: 指定格式化成哪个文件系统,如 ext2,ext3,ext4
-b 字节: 指定 block 块的大小
-i 字节: 指定“字节/inode”的比例,也就是多少个字节分配一个 inode
-j: 建立带有 ext3 日志功能的文件系统
-L 卷标名: 给文件系统设置卷标名,就不使用 e2label 命令设定了
举个例子:
[root@localhost ~]# mke2fs -t ext4 -b 2048 /dev/sdb6
#格式化分区,并指定 block 的大小为 2048
5 建立挂载点
mkdir /disk1-----------------/dev/sdb1 把 sdb1 打算挂载到/disk1 目录中
mkdir /disk5----------------/dev/sdb5
6 挂载
mount /dev/sdb1 /disk1
mount /dev/sdb5 /disk5
7 查看
mount 查看所有已经挂载的分区和光盘
fdisk -l 查看系统分区
df 查看分区占用百分比
8 自动挂载
修改分区自动挂载文件
vi /etc/fstab 注意:此文件直接参与系统启动,如果修改错误,系统启动报错
移动设备是禁止自动挂载的,原因是当系统启动时没有检测到此设备,就会报错
/dev/sdb1 /disk1 ext3 defaults 1 2
第一列: 设备文件名
第二列 挂载点
第三列 文件系统
第四列 挂载选项
第五列 1 是否可以被备份 0 不备份 1 每天备份 2 不定期备份
第六列 2 是否检测磁盘 fsck 0 不检测 1 启动时检测 2 启动后检测
根分区建议启动检测
其他区可以启动后检测
其他区可以启动后检测
也可以使用 UUID 进行挂载,UUID(硬盘通用唯一识别码,可以理解为硬盘的 ID)
这个字段在 CentOS 5.5 的系统当中是写入分区的卷标名或分区设备文件名的,现在变
成了硬盘的 UUID。这样做的好处是当硬盘增加了新的分区,或者分区的顺序改变,再或
者内核升级后,任然能够保证分区能够正确的加载,而不至于造成启动障碍
成了硬盘的 UUID。这样做的好处是当硬盘增加了新的分区,或者分区的顺序改变,再或
者内核升级后,任然能够保证分区能够正确的加载,而不至于造成启动障碍
使用UUID的作用是,当设备更换时,系统能够检测到设备的变化不会混乱,从而正确地挂载,从而防止了系统报错
那么每个分区的 UUID 到底是什么呢?我们讲过的 dumpe2fs 命令是可以查看到的,命令
如下:
[root@localhost ~]# dumpe2fs /dev/sdb5
[root@localhost ~]# ls -l /dev/disk/by-uuid/
9.重启测试
或 mount -a 重新挂载所有内容,用它进行测试
五、/etc/fstab/文件修复
,如图9-16所示:
他提示你输入root密码啊,好像还有戏啊,我们输入密码试试,
赶快把/etc/fstab文件修改回来吧。晕,报错了
分析下原因提示是没有写权限,那么只要把/分区重新挂载下,挂载为读写权限不就可以修改了吗?命令如下
[root@localhost ~]# mount -o remount,rw /
再去修改/etc/fstab文件,把它改回来就可以正常启动了啊。
六、parted命令分区
我们Linux系统中有两种常见的分区表MBR分区表(主引导记录分区表)和GPT分区表(GUID分区表),其中:
MBR分区表:支持的最大分区是2TB(1TB=1024GB);最多支持4个主分区,或3个主分区1个扩展分区
GPT分区表:支持最大18EB的分区(1EB=1024PB=1024*1024TB);最多支持128个分区,其中1个系统保留分区,127个用户自定义分区
parted地缺陷
不过parted命令也有点小问题,就是命令自身分区的时候只能格式化成ext2文件系统,不支持ext3文件系统,那就更不用说ext4文件系统了(截止到CentOS 6.8还是这样,这里只是指不能用parted命令把分区格式化成ext4文件系统,但是parted命令还是可以识别ext4文件系统的)。不过这没有太多的影响,因为我们可以先分区再用mkfs进行格式化嘛!
一)parted交互模式
[root@localhost ~]# parted /dev/sdb
#打算继续划分/dev/sdb硬盘
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) parted的等待输入交互命令的位置
parted交互命令
check NUMBER
做一次简单的文件系统检测
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER
复制文件系统到另外一个分区
help [COMMAND]
显示所有的命令帮助
mklabel,mktable LABEL-TYPE
创建新的磁盘卷标(分区表)
mkfs NUMBER FS-TYPE
在分区上建立文件系统
mkpart PART-TYPE [FS-TYPE] START END
创建一个分区
mkpartfs PART-TYPE FS-TYPE START END
创建分区,并建立文件系统
move NUMBER START END
移动分区
name NUMBER NAME
给分区命名
print [devices|free|list,all|NUMBER]
显示分区表,活动设备,空闲空间,所有分区
quit
退出
rescue START END
修复丢失的分区
resize NUMBER START END
修改分区大小
rm NUMBER
删除分区
select DEVICE
选择需要编辑的设备
set NUMBER FLAG STATE
改变分区标记
toggle [NUMBER [FLAG]]
切换分区表的状态
unit UNIT
设置默认的单位
Version
显示版本
二)建立分区
1、 查看分区
(parted) print
#输入print指令
Model: VMware, VMware Virtual S (scsi) 硬盘参数,是虚拟机啊
Disk /dev/sdb: 21.5GB 硬盘大小
Sector size (logical/physical): 512B/512B 扇区大小
Partition Table: msdos 分区表类型,就是MBR分区表
Number Start End Size Type File system 标志
1 32.3kB 5379MB 5379MB primary
2 5379MB 21.5GB 16.1GB extended
5 5379MB 7534MB 2155MB logical ext4
6 7534MB 9689MB 2155MB logical ext4
#看到了我们使用fdisk分的区,其中1分区没有格式化,2分区是扩展分区不能格式化
#输入print指令
Model: VMware, VMware Virtual S (scsi) 硬盘参数,是虚拟机啊
Disk /dev/sdb: 21.5GB 硬盘大小
Sector size (logical/physical): 512B/512B 扇区大小
Partition Table: msdos 分区表类型,就是MBR分区表
Number Start End Size Type File system 标志
1 32.3kB 5379MB 5379MB primary
2 5379MB 21.5GB 16.1GB extended
5 5379MB 7534MB 2155MB logical ext4
6 7534MB 9689MB 2155MB logical ext4
#看到了我们使用fdisk分的区,其中1分区没有格式化,2分区是扩展分区不能格式化
使用print可以查看分区表信息,包括硬盘参数,硬盘大小,扇区大小,分区表类型和分区信息。
分区信息总共七列,分别是:
分区信息总共七列,分别是:
Number:分区号
Start:分区起始位置,这里不再像fdisk用柱面表示,而是使用Byte更加直观
End:分区结束位置
Size:分区大小
Type:分区类型
File system:文件系统类型。我不是说parted不支持ext4文件系统吗?
注意,我一直都是说parted不能直接把分区直接格式化成ext4文件系统,但是它是可以识别的。
注意,我一直都是说parted不能直接把分区直接格式化成ext4文件系统,但是它是可以识别的。
标志:Flags,就是分区的标记
2、修改成GPT分区表
修改了分区表,如果这块硬盘已经有分区了,那么原有分区和分区中的数据都会消失,而且需要重启系统才会生效。
还有我们转换分区表的目的是为了支持大于2TB的分区,如果分区并没有大于2TB,那么这步是可以不执行的。
注意:一定要把/etc/fstab文件中和原有分区的内容删除掉,才能重启动。要不系统启动就一定会报错的。
3、 建立分区
因为修改过了分区表,所以/dev/sdb中的所有数据都消失了,所以我们可以重新对这块硬盘分区了。不过建立分区时,默认文件系统就只能建立成ext2了,命令如下:
(parted) mkpart
#输入创建分区命令,后面不要参数,全部靠交互指定
分区名称? []? disk1 分区名称,我起名叫disk1
文件系统类型? [ext2]? 文件系统类型,直接回车,使用默认ext2
起始点? 1MB 分区从1MB开始
结束点? 5GB 分区到5GB结束
#分区完成
(parted) print 查看下吧
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 5000MB 4999MB disk1 分区1已经出现
#输入创建分区命令,后面不要参数,全部靠交互指定
分区名称? []? disk1 分区名称,我起名叫disk1
文件系统类型? [ext2]? 文件系统类型,直接回车,使用默认ext2
起始点? 1MB 分区从1MB开始
结束点? 5GB 分区到5GB结束
#分区完成
(parted) print 查看下吧
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 5000MB 4999MB disk1 分区1已经出现
不知道大家注意到了吗?我们现在的print查看的分区,和第一次查看MBR分区表的分区时有些不一样了,少了Type这个字段,也就是分区类型的字段,多了Name分区名字段。分区类型是标识主分区、扩展分区和逻辑分区的,不过这种标识只在MBR分区表中使用,我们现在已经变成了GPT分区表了,所以就不再有Type类型了。
4、 建立文件系统
分区分完了,我们还需要格式化。不过我们已经知道如果使用parted交互命令格式化的话,只能格式化成ext2文件系统。我们这里是要演示下parted命令的格式化方法,所以就格式化成ext2吧,命令如下:
(parted) mkfs
#格式化命令(很奇怪也是mkfs,但是这只是parted的交互命令)
WARNING: you are attempting to use parted to operate on (mkfs) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
警告: The existing file system will be destroyed and all data on the partition will be lost. Do you want to continue?
是/Yes/否/No? yes 警告你格式化数据会丢失,没关系,已经丢失过了
分区编号? 1
文件系统类型? [ext2]? 指定文件系统类型,写别的也没有用,直接回车
(parted) print 格式化完成,查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 5000MB 4999MB ext2 disk1 拥有了文件系统
#格式化命令(很奇怪也是mkfs,但是这只是parted的交互命令)
WARNING: you are attempting to use parted to operate on (mkfs) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
警告: The existing file system will be destroyed and all data on the partition will be lost. Do you want to continue?
是/Yes/否/No? yes 警告你格式化数据会丢失,没关系,已经丢失过了
分区编号? 1
文件系统类型? [ext2]? 指定文件系统类型,写别的也没有用,直接回车
(parted) print 格式化完成,查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 5000MB 4999MB ext2 disk1 拥有了文件系统
如果要格式化成ext4文件系统,请mkfs命令帮忙吧(注意不是parted交互命令中的mkfs,而是系统命令mkfs)!
5、 调整分区大小
parted命令还有一大优势,就是可以调整分区的大小(windows中也可以实现,不过要不需要转换成动态磁盘,要不需要依赖第三方工具,如硬盘分区魔术师)。起始Linux中LVM和RAID是可以支持分区调整的,不过这两种方法也可以看成是动态磁盘方法,我们在下一个章节中介绍。使用parted命令调整分区要更加简单。
注意:parted调整已经挂载使用的分区时,是不会影响分区中的数据的,也就是说数据不会丢失。但是一定要先卸载分区,再调整分区大小,否则数据是会出现问题的。还有要调整大小的分区必须已经建立了文件系统(格式化),否则会报错
命令如下:
(parted) resize
分区编号? 1 指定要修改的分区编号
起始点? [1049kB]? 1MB 分区起始位置
结束点? [5000MB]? 6GB 分区结束位置
(parted) print 查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 6000MB 5999MB ext2 disk1 分区大小改变
分区编号? 1 指定要修改的分区编号
起始点? [1049kB]? 1MB 分区起始位置
结束点? [5000MB]? 6GB 分区结束位置
(parted) print 查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 6000MB 5999MB ext2 disk1 分区大小改变
6、 删除分区
还有件事要注意,parted中所有的操作都是立即生效,没有保存生效的概念。这点和fdisk交互命令明显不同,所以所做的所有操作大家要倍加小心。
那么到底使用fdisk进行分区?还是parted命令呢?这个完全看个人习惯,我们更加习惯fdisk命令。
七、分配swap分区
1、分区,并修改为swap分区ID
[root@localhost ~]# fdisk /dev/sdb
#拿/dev/sdb分区
Command (m for help): t 修改分区的系统ID
Selected partition 1 只有一个分区,所以不用选择分区了
Hex code (type L to list codes): 82 改为swap的ID
Changed system type of partition 1 to 82 (Linux swap / Solaris)
#拿/dev/sdb分区
Command (m for help): t 修改分区的系统ID
Selected partition 1 只有一个分区,所以不用选择分区了
Hex code (type L to list codes): 82 改为swap的ID
Changed system type of partition 1 to 82 (Linux swap / Solaris)
2、格式化
[root@localhost ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 522076 KiB
no label, UUID=c3351dc3-f403-419a-9666-c24615e170fb
Setting up swapspace version 1, size = 522076 KiB
no label, UUID=c3351dc3-f403-419a-9666-c24615e170fb
3 使用swap分区
在使用swap分区之前,我们先来说说free命令,命令如下:
用来查看内存和swap分区地占用情况
[root@localhost ~]# free
total used free shared buffers cached
Mem: 1030796 130792 900004 0 15292 55420
-/+ buffers/cache: 60080 970716
Swap: 2047992 0 2047992
total used free shared buffers cached
Mem: 1030796 130792 900004 0 15292 55420
-/+ buffers/cache: 60080 970716
Swap: 2047992 0 2047992
buffer 指写入硬盘时地数据缓冲
cached 指读取硬盘数据时地数据缓存
[root@localhost ~]# swapon 分区设备文件名
例:
[root@localhost ~]# swapon /dev/sdb1
例:
[root@localhost ~]# swapon /dev/sdb1
让swap分区开机之后自动挂载
/dev/sdb1 swap swap defaults 0 0
#加入新swap分区的相关内容,我这里是直接使用的分区的设备文件名,大家当然也可以
#使用UUID号了。
高级文件系统管理
一、磁盘配额
1、磁盘配额概念
限制用户和用户组使用磁盘空间和文件个数的作用
限制普通用户在分区上的容量和文件数量的作用,不能限制超级用户
2、磁盘配额条件
内核必须支持磁盘配额
[root@localhost ~]# grep CONFIG_QUOTA /boot/config-2.6.32-279.el6.i686
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
系统中必须安装了quota工具,我们的Linux默认是安装了quota工具的,查看命令如下
[root@localhost ~]# rpm -qa | grep quota
quota-3.17-16.el6.i686
要支持磁盘配额的分区必须开启磁盘配额功能,这个功能需要手工开启,不再是默认就开启的
3、概念
1)用户配额和组配额
组配额中地用户并不是平均分配磁盘大小,而是先到先得,分配不合理,一般不使用组配额
用户配额可以用shell 脚本
2)磁盘容量限制和文件个数限制
文件个数限制,由于每个文件拥有一个Inode节点,Inode节点是有限地,因此在限制磁盘容量的同时应该限制Inode节点号
3)软限制和硬限制
软限制,可以超过容量
硬限制,不能超容量限制
4)宽限时间
4、磁盘配额规划
1、磁盘配额是限制的普通用户在分区上使用磁盘空间和文件个数的,所以我们需要指定一个分区。那么我们手工建立一个5GB的/dev/sdb1分区,把它挂载到/disk目录当中。
2、还有我们需要建立被限制的用户和用户组。那么我们假设需要限制user1、user2和user3用户,这三个用户属于test用户组。
3、其中test组磁盘容量硬限制为500MB,软限制450MB,文件个数不做限制。user1用户为了便于测试,磁盘容量硬限制为50MB,软限制为40MB,文件个数硬限制限制为10个,软限制为8个。user2和user3用户磁盘容量硬限制为250MB,软限制为200MB,文件个数不做限制。
4、大家发现user1、user2和user3用户加起来的磁盘容量限制为550MB,超过了test组的磁盘容量限制500MB。这样的话,某个用户可能达不到自己的用户限制,而达到组限制时就不能再写入数据了。也就是说,如果用户限制和组限制同时存在,那么哪个限制更小,哪个限制优先生效。
5、系统宽限时间我们改为8 天。
5、磁盘配额步骤
1)分5GB 的/dev/sdb1 分区,并将它挂载到/disk 目录当中
2)建立需要做限制的用户和用户组
[root@localhost ~]# groupadd test
[root@localhost ~]# useradd -G test user1
[root@localhost ~]# useradd -G test user2
[root@localhost ~]# useradd -G test user3
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2
[root@localhost ~]# passwd user3
3)、在分区上开启磁盘配额功能
[root@localhost ~]# mount -o remount,usrquota,grpquota /disk
#重新挂载/disk 分区,并加入用户和用户组的磁盘配额功能
我们要想永久生效,则需要修改/etc/fstab 文件,改成:
[root@localhost ~]# vi /etc/fstab
/dev/sdb1 /disk ext4 defaults,usrquota,grpquota 0 0
…省略部分输出…
[root@localhost ~]# mount –o remount /disk
#修改配置文件如果想要生效,必须重启系统,否则也需要把分区重新挂载一遍。
4)、建立磁盘配额的配置文件
命令
[root@localhost ~]# quotacheck [选项] [分区名]
选项:
-a:扫描/etc/mtab 文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面
就不需要加入分区名了
-c:不管原有的配置文件,重新扫描并建立新的配置文件
-u:建立用户配额的配置文件,也就是生成aquota.user 文件
-g:建立组配额的配置文件,会生成aquota.group 文件
-v:显示扫描过程
-m:强制以读写的方式扫描文件系统,和-M 类似。一般扫描根分区时使用。
-f:强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用
选项:
-a:扫描/etc/mtab 文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面
就不需要加入分区名了
-c:不管原有的配置文件,重新扫描并建立新的配置文件
-u:建立用户配额的配置文件,也就是生成aquota.user 文件
-g:建立组配额的配置文件,会生成aquota.group 文件
-v:显示扫描过程
-m:强制以读写的方式扫描文件系统,和-M 类似。一般扫描根分区时使用。
-f:强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用
[root@localhost ~]# quotacheck -avug
[root@localhost ~]# ll /disk/
总用量 24
-rw------- 1 root root 6144 4 月 17 01:08 aquota.group
-rw------- 1 root root 6144 4 月 17 01:08 aquota.user
#/disk 目录中两个配额配置文件已经建立
总用量 24
-rw------- 1 root root 6144 4 月 17 01:08 aquota.group
-rw------- 1 root root 6144 4 月 17 01:08 aquota.user
#/disk 目录中两个配额配置文件已经建立
说明生效
需要关闭SELinux,否则会报错
命令(临时)关闭SELinux 0 为关闭 ,1 为生效
修改配置文件,永久生效
如果需要给根分区开启配额功能,需要:
[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,usrquota,grpquota 1 1
#开启/分区的配额功能
[root@localhost ~]# mount -o remount /
#重新挂载/分区
[root@localhost ~]# quotacheck -avugm
如果我们自动扫描/分区建立配额配置文件时,因为/分区已经挂载成读写系统,而quotacheck需要把分区先挂载成只读分区,然后建立配置文件,最后再挂载回来,所以不能直接在/分区建立配置文件。这时就需要使用-m 强制以读写方式扫描文件系统了
5)、 设置用户和组的配额限制
[root@localhost ~]# edquota [选项] [用户名或组名]
选项:
-u 用户名: 设定用户配额
-g 组名: 设定组配额
-t: 设定宽限时间
-p: 复制配额限制。如果已经设定好某个用户的配额限制,其他用户的配额限
制如果和这个用户相同,那么可以直接复制配额限制,而不用都手工指定
选项:
-u 用户名: 设定用户配额
-g 组名: 设定组配额
-t: 设定宽限时间
-p: 复制配额限制。如果已经设定好某个用户的配额限制,其他用户的配额限
制如果和这个用户相同,那么可以直接复制配额限制,而不用都手工指定
我们给user1 用户设定的配额限制是:磁盘空间软限制是40MB,硬限制是50MB;文件个数的软
限制是8 个,硬限制是10 个(稍微小一点,一会测试时方便测试)。命令如下:
限制是8 个,硬限制是10 个(稍微小一点,一会测试时方便测试)。命令如下:
[root@localhost ~]# edquota -u user1
#edquota 命令进入之后,就是标准的vi 操作方法
Disk quotas for user user1 (uid 500):
#磁盘配额是设定用户user1(UID 是500)
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 0 0
#分区名 已占用容量 软限制 硬限制 已占用文件数 软限制 硬限制
Disk quotas for user user1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 40000 50000 0 8 10
#不用对齐,是七列就行
#edquota 命令进入之后,就是标准的vi 操作方法
Disk quotas for user user1 (uid 500):
#磁盘配额是设定用户user1(UID 是500)
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 0 0
#分区名 已占用容量 软限制 硬限制 已占用文件数 软限制 硬限制
Disk quotas for user user1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 40000 50000 0 8 10
#不用对齐,是七列就行
再给user2 用户配置限额,user2 用户要求是空间软限制250MB,硬限制250MB,
文件个数不做限制:
文件个数不做限制:
[root@localhost ~]# edquota -u user2
Disk quotas for user user2 (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 250000 300000 0 0 0
Disk quotas for user user2 (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 250000 300000 0 0 0
接下来给test 组配置限额,test 组要求是空间软限制是450MB,硬限制500MB,文件个数不做限
制:
[root@localhost ~]# edquota -g test
Disk quotas for group test (gid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 450000 500000 0 0 0
6)、 配额复制
user3 用户的配额值和user2 用户完全一样,我们就可以使用user2 用户作为模板进行复制。这
样我们如果需要建立大量的配额值一致的用户时,就会非常方便,不用一个个手工建立了。复制命令
如下:
样我们如果需要建立大量的配额值一致的用户时,就会非常方便,不用一个个手工建立了。复制命令
如下:
[root@localhost ~]# edquota -p user2 -u user3
#命令 -p 源用户 -u 目标用户
7)、修改宽限时间
我们要求把宽限时间改为8 天,修改命令如下:
[root@localhost ~]# edquota –t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sdb1 8days 8days
#分区名 容量的宽限时间 个数的宽限时间
8)、启动和关闭配额
配额的配置完成,接下来只需要启动配额就大功告成了
启动命令如下:
[root@localhost ~]# quotaon [选项] [分区名]
选项:
-a:依据/etc/mtab 文件启动所有的配额分区。如果不加-a,后面就一定要指定分区名
-u:启动用户配额
-g:启动组配额
-v:显示启动过程的信息
[root@localhost ~]# quotaon -vug /disk/
/dev/sdb1 [/disk]: group quotas turned on
/dev/sdb1 [/disk]: user quotas turned on
#启动/disk 分区的配额
[root@localhost ~]# quotaon –avug
#这条命令也可以
关闭配额的命令如下:
[root@localhost ~]# quotaoff [选项] [分区名]
选项
-a:依据/etc/mtab 文件关闭所有的配额分区。如果不加-a,后面就一定要指定分区名
-u:关闭用户配额
-g:关闭组配额
[root@localhost ~]# quotaoff –a
#依据/etc/mtab 文件关闭配额分区
6、磁盘配额查询
quota 查询用户或用户组配额:
[root@localhost ~]# quota [选项] [用户名或组名]
选项:
-u 用户名: 查询用户配额
-g 组名: 查询组配额
-v: 显示详细信息
-s: 以习惯单位显示容量大小,如M,G
[root@localhost ~]# quota -uvs user1
repquota 查询文件系统配额
[root@localhost ~]# repquota [选项] [分区名]
选项:
-a: 依据/etc/mtab 文件查询配额。如果不加-a 选项,就一定要加分区名
-u: 查询用户配额
-g: 查询组配额
-v: 显示详细信息
-s: 以习惯单位显示容量大小
[root@localhost ~]# repquota –augvs
7、测试
[user1@localhost disk]$ dd if=/dev/zero of=/disk/testfile bs=1M count=60
#建立testfile 文件,指定大小60MB
8、非交互设定用户磁盘配额
[root@localhost ~]# setquota -u 用户名 容量软限制 容量硬限制 个数软限制 \
个数硬限制 分区名
[root@localhost ~]# useradd user4
[root@localhost ~]# passwd user4
#建立用户
[root@localhost ~]# setquota -u user4 10000 20000 5 8 /disk
#设定用户在/disk 分区的容量软限制为10MB,硬限制20MB。文件个数软限制5 个,硬限制#8 个。
这个命令在写脚本批量设置时更加方便。当然写脚本时也可以先建立一个模板的用户,设定好磁
盘配额,再进行配额复制,也是可以的。
二、LVM 逻辑卷管理
1、简介
LVM 是Logical Volume Manager 的简称,中文就是逻辑卷管理。
物理卷(PV,Physical Volume):就是真正的物理硬盘或分区。
卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一个逻辑硬盘。
逻辑卷(LV,Logical Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个
分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。
物理扩展(PE,Physical Extend):PE 是用来保存数据的最小单元,我们的数据实际上都
是写入PE 当中,PE 的大小是可以配置的,默认是4MB。
注意/boot不能使用LVM分区,只能使用普通分区的方式
2、建立LVM 的步骤:
首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区
加入卷组,也可以把物理分区从卷组中删除。不建议删除
加入卷组,也可以把物理分区从卷组中删除。不建议删除
最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻
辑卷可以想象成为分区,所以也需要格式化和挂载。
3、物理卷管理
1)、硬盘分区
创建方式就是使用fdisk 交互命令,不过需要注意的是分区的系统ID 不再是Linux 默认的分区
ID 号83 了,而要改成LVM 的ID 号8e。
2)、建立物理卷
[root@localhost ~]# pvcreate [设备文件名]
建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如
果要把整块硬盘都建立成物理卷,命令如下
[root@localhost ~]# pvcreate /dev/sdb
在我们的使用中,是要把分区建立成为物理卷,所以执行以下命令:
[root@localhost ~]# pvcreate /dev/sdb5
3)查看物理卷
[root@localhost ~]# pvscan
PV /dev/sdb5 lvm2 [1.01 GiB]
PV /dev/sdb6 lvm2 [1.01 GiB]
PV /dev/sdb7 lvm2 [1.01 GiB]
Total: 3 [3.03 GiB] / in use: 0 [0 ] / in no VG: 3 [3.03 GiB]
我们可以看到在我的系统中,/dev/sdb5-7 这三个分区是物理卷。最后一行的意思是:总共3 个
物理卷[大小] / 使用了0 个卷[大小] / 空闲3 个卷[大小]。
物理卷[大小] / 使用了0 个卷[大小] / 空闲3 个卷[大小]。
第二个查询命令是pvdisplay,它可以查看到更详细的物理卷状态,命令如下:
[root@localhost ~]# pvdisplay
"/dev/sdb5" is a new physical volume of "1.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb5 PV 名
VG Name 属于的VG 名,还没有分配,所以空白
PV Size 1.01 GiB PV 的大小
Allocatable NO 是否已经分配
PE Size 0 PE 大小,因为还没有分配,所以PE 大小也没有指定
Total PE 0 PE 总数
Free PE 0 空闲PE 数
Allocated PE 0 可分配的PE 数
PV UUID CEsVz3-f0sD-e1w0-wkHZ-iaLq-O6aV-xtQNTB PV 的UUID
4)删除物理卷
[root@localhost ~]# pvremove /dev/sdb7
4、卷组管理
1)建立卷组
[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
选项:
-s PE 大小:指定PE 的大小,单位可以是MB,GB,TB 等。如果不写默认PE 大小事4MB
我们又三个物理卷/dev/sdb5-7,我们先把/dev/sdb5 和/dev/sdb6 加入卷组,留着/dev/sdb7 一
会实验调整卷组大小,命令如下:
[root@localhost ~]# vgcreate -s 8MB scvg /dev/sdb5 /dev/sdb6
Volume group "scvg" successfully created
2)、查看卷组
查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,而vgdisplay 则是查看卷组的详
细状态的。命令如下:
细状态的。命令如下:
[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "scvg" using metadata type lvm2
#scvg 的卷组确实存在
Reading all physical volumes. This may take a while...
Found volume group "scvg" using metadata type lvm2
#scvg 的卷组确实存在
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name scvg 卷组名
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write 卷组访问状态
VG Status resizable 卷组状态
MAX LV 0 最大逻辑卷数
Cur LV 0
Open LV 0
Max PV 0 最大物理卷数
Cur PV 2 当前物理卷数
Act PV 2
VG Size 2.02 GiB 卷组大小
PE Size 8.00 MiB PE 大小
Total PE 258 PE 总数
Alloc PE / Size 0 / 0 已用PE 数量/大小
Free PE / Size 258 / 2.02 GiB 空闲PE 数量/大小
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
3)、增加卷组容量
[root@localhost ~]# vgextend scvg /dev/sdb7
Volume group "scvg" successfully extended
#把/dev/sdb7 物理卷也加入scvg 卷组
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name scvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 3.02 GiB 卷组容量增加
PE Size 8.00 MiB
Total PE 387 PE 总数增加
Alloc PE / Size 0 / 0
Free PE / Size 387 / 3.02 GiB
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
Volume group "scvg" successfully extended
#把/dev/sdb7 物理卷也加入scvg 卷组
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name scvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 3.02 GiB 卷组容量增加
PE Size 8.00 MiB
Total PE 387 PE 总数增加
Alloc PE / Size 0 / 0
Free PE / Size 387 / 3.02 GiB
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
4)、减小卷组容量
[root@localhost ~]# vgreduce scvg /dev/sdb7
Removed "/dev/sdb7" from volume group "scvg"
#在卷组中删除/dev/sdb7 物理卷
[root@localhost ~]# vgreduce -a
#删除所有的未使用物理卷
一般不允许缩减
5)、删除卷组
[root@localhost ~]# vgremove scvg
Volume group "scvg" successfully removed
卷组删除之后,才能删除删除物理卷。还要注意的是scvg 卷组还没有添加任何的逻辑卷,那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。还记得我刚说的吗?删除就是安装的反过程,每一步都不能跳过。
5、逻辑卷管理
1)、建立逻辑卷
注意建立逻辑卷的大小和单个物理卷的大小无关,只要卷组的大小足够就行
[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L 容量:指定逻辑卷大小,单位MB,GB,TB 等
-l 个数:按照PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
-n 逻辑卷名:指定逻辑卷名
那我们就建立一个1.5GB 的userlv 逻辑卷吧,建立命令如下:
[root@localhost ~]# lvcreate -L 1.5G -n userlv scvg
Logical volume "userlv" created
#在scvg 卷组中建立1.5GB 的userlv 逻辑卷
建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。格式化和挂载命令和操作普通
分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的userlv
的设备文件名就是“/dev/scvg/userlv”,具体命令如下:
[root@localhost ~]# mkfs -t ext4 /dev/scvg/userlv
#格式化
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/userlv /disklvm/
#建立挂载点,并挂载
[root@localhost ~]# mount
…省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4 (rw)
#已经挂载了
#格式化
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/userlv /disklvm/
#建立挂载点,并挂载
[root@localhost ~]# mount
…省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4 (rw)
#已经挂载了
当然如果需要开机自动挂载,也要修改/etc/fstab 文件。
2)、查看逻辑卷
同样的查看命令是两个,第一个命令lvscan 只能看到系统中是否拥有逻辑卷,命令如下:
[root@localhost ~]# lvscan
ACTIVE '/dev/scvg/userlv' [1.50 GiB] inherit
#能够看到激活的逻辑卷,大小事1.5GB
第二个命令是lvdisplay 可以看到逻辑卷的详细信息,命令如下:
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/scvg/userlv 逻辑卷设备文件名
LV Name userlv 逻辑卷名
VG Name scvg 所属的卷组名
LV UUID 2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status available
# open 1
LV Size 1.50 GiB 逻辑卷大小
Current LE 192
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
3)调整逻辑卷大小
[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
选项:
-L 容量:安装容量调整大小,单位KB,GB,TB 等。使用+代表增加空间,-号代表减少
空间。如果直接写容量,代表设定逻辑卷大小为指定大小。
-l 个数:按照PE 个数调整逻辑卷大小
注意
往小的容量修改逻辑卷大小有可能造成数据丢失
我们先在/disklvm 中建立点文件,一会调整完大小,我们看看数据是否会丢失:
[root@localhost ~]# cd /disklvm/
[root@localhost disklvm]# touch testf
[root@localhost disklvm]# mkdir testd
[root@localhost disklvm]# ls
lost+found testd testf
userlv 逻辑卷的大小到2.5GB 吧:
[root@localhost disklvm]# lvresize -L 2.5G /dev/scvg/userlv
Extending logical volume userlv to 2.50 GiB
Logical volume userlv successfully resized
#增加userlv 逻辑卷的大小到2.5GB
#当然命令也可以这样写 [root@localhost disklvm]# lvresize -L +1G /dev/scvg/userlv
[root@localhost disklvm]# lvdisplay
--- Logical volume ---
LV Path /dev/scvg/userlv
LV Name userlv
VG Name scvg
LV UUID 2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status available
# open 1
LV Size 2.50 GiB 大小改变了
Current LE 320
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
逻辑卷的大小已经改变了,但是好像有些问题啊:
[root@localhost disklvm]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 1.5G 35M 1.4G 3% /disklvm
怎么/disklvm 分区的大小还是1.5GB 啊?刚刚只是逻辑卷的大小改变了,如果需要让分区使用这
个新逻辑卷,我们还要使用resize2fs 命令来调整分区的大小。不过这里就体现了LVM 的优势,我们
不需要卸载分区,直接就能调整分区的大小。resize2fs 命令如下:
[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
选项:
-f: 强制调整
设备文件名:指定调整哪个分区的大小
调整的大小:指定把分区调整到多大,要加M,G 等单位。如果不加大小,会使用整个
分区
那么我们已经把逻辑卷调整到了2.5GB,这时我们就需要把整个逻辑卷都加入/disklvm 分区,命令如下:
[root@localhost ~]# resize2fs /dev/scvg/userlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on /disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
#已经调整了分区大小
[root@localhost ~]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 2.5G 35M 2.4G 2% /disklvm
#分区大小已经是2.5GB了
[root@localhost ~]# ls /disklvm/
lost+found testd testf
#而且数据并没有丢失
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on /disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
#已经调整了分区大小
[root@localhost ~]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 2.5G 35M 2.4G 2% /disklvm
#分区大小已经是2.5GB了
[root@localhost ~]# ls /disklvm/
lost+found testd testf
#而且数据并没有丢失
4)删除逻辑卷
[root@localhost ~]# lvremove 逻辑卷设备文件名
我们删除userlv这个逻辑卷,记得删除时要先卸载。命令如下:
[root@localhost ~]# umount /dev/scvg/userlv
[root@localhost ~]# lvremove /dev/scvg/userlv
0 条评论
下一页