Linux磁盘管理
一、 df命令
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
[root@ying01 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 27332568 1000560 26332008 4% /
devtmpfs 927860 0 927860 0% /dev
tmpfs 937752 0 937752 0% /dev/shm
tmpfs 937752 8776 928976 1% /run
tmpfs 937752 0 937752 0% /sys/fs/cgroup
/dev/sda1 201380 115476 85904 58% /boot
tmpfs 187552 0 187552 0% /run/user/0
以上代码可以看出:/、/boot是我们在安装系统时划分出来的,/dev、/dev/shm为内存分区,默认大小为内存的1/2,如果把文件存到这个分区下,相当于存到了内存中,好处是读写非常快,坏处是系统重启时文件就丢失。
选项与参数:
- -a:列出所有的文件系统,包括系统特有的 /proc 等文件系统;
- -k :以 KBytes 的容量显示各文件系统;
- -m :以 MBytes 的容量显示各文件系统; -** -h **:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
- -H :以 M=1000K 取代 M=1024K 的进位方式;
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
- -i :不用硬盘的容量,而以 inode 的数量来显示,如已经使用100%,即使磁盘空间富余,也会提示磁盘空间已满
-h用法
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 978M 26G 4% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.6M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
-i用法
[root@ying01 ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 13672960 26703 13646257 1% /
devtmpfs 231965 381 231584 1% /dev
tmpfs 234438 1 234437 1% /dev/shm
tmpfs 234438 458 233980 1% /run
tmpfs 234438 16 234422 1% /sys/fs/cgroup
/dev/sda1 102400 328 102072 1% /boot
tmpfs 234438 1 234437 1% /run/user/0
-m用法
[root@ying01 ~]# df -m
文件系统 1M-块 已用 可用 已用% 挂载点
/dev/sda3 26692 978 25715 4% /
devtmpfs 907 0 907 0% /dev
tmpfs 916 0 916 0% /dev/shm
tmpfs 916 9 908 1% /run
tmpfs 916 0 916 0% /sys/fs/cgroup
/dev/sda1 197 113 84 58% /boot
tmpfs 184 0 184 0% /run/user/0
将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[root@ying01 ~]# df -h /etc/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 978M 26G 4% /
free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
[root@ying01 ~]# free
total used free shared buff/cache available
Mem: 1875504 130492 1583640 8776 161372 1569712
Swap: 3905532 0 3905532
[root@ying01 ~]# free -h //可以看到单位//
total used free shared buff/cache available
Mem: 1.8G 127M 1.5G 8.6M 157M 1.5G
Swap: 3.7G 0B 3.7G
[root@ying01 ~]#
二、du命令
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的
du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。
[root@ying01 ~]# du
4 ./.ssh
0 ./6
4 ./NBA
0 ./8/80
0 ./8/1
0 ./8/2
0 ./8/5
0 ./8
0 ./9
4 ./10
0 ./11/111
8 ./11
0 ./5/2
0 ./5
0 ./222/10
0 ./222
0 ./3
0 ./100/3
0 ./100
80 .
du -sh 查看某个目录或文件所占空间的大小
[root@ying01 ~]# ls
10 100 11 1ceshi.txt 222 3 5 6 8 9 anaconda-ks.cfg NBA
[root@ying01 ~]# du -s /root/NBA
4 /root/NBA
[root@ying01 ~]# du -sh NBA
4.0K NBA
[root@ying01 ~]# du -sh 1ceshi.txt
4.0K 1ceshi.txt
为什么这么多文件都是4KB呢?看下嘛试验?
[root@ying01 ~]# ls -lh /etc/passwd
-rw-r--r--. 1 root root 1.5K 5月 18 21:59 /etc/passwd
[root@ying01 ~]# du -sh /etc/passwd
4.0K /etc/passwd
从上面我们看到用du命令查看passwd文件,显示是4KB,而其真实大小为1.5K;那是因为磁盘分为很多的小块,每个小块为4k,一个小块只能装一个文件;文件不够4K,但是用du查看就是显示装它的块;
du命令的选项:
- -sh 查一个文件或者目录时,以单位显示
- -a 全部文件和目录的大小都列出来,默认单位为KB
- -b 表示列出的值以B为单位输出
- -k 表示以KB单位输出
- -m 表示以MB单位输出
- -h 表示系统自动调节单位,如文件大小,可能几千字节,就以KB为单位显示。
三、磁盘分区
在Linux系统下(其他操作系统也有类似的规定),磁盘的分区大致可以分为三类,分别为主分区、扩展分区和逻辑分区等等。Linux系统管理员在部署系统时,必须要对这三个分区进行一个合理的规划,否则的话会浪费宝贵的硬盘空间。
通常情况下,一个硬盘中最多能够分割四个主分区。因为硬盘中分区表的大小只有64Bytes,而分割一个分区就需要利用16Bytes空间来存储这个分区的相关信息。由于这个分区表大小的限制,硬盘之能够分给为四个主分区。如果此时一块硬盘有120个G,而管理员划分了4个主分区,每个主分区的空间为20个G。那么总共才用去了80G的空间。这块硬盘剩余的40G空间就将无法使用。这显然浪费了硬盘的空间。
为了突破这最多四个主分区的限制,Linux系统引入了扩展分区的概念。即管理员可以把其中一个主分区设置为扩展分区(注意只能够使用一个扩展分区)来进行扩充。而在扩充分区下,又可以建立多个逻辑分区。也就是说,扩展分区是无法直接使用的,必须在细分成逻辑分区才可以用来存储数据。通常情况下,逻辑分区的起始位置及结束位置记录在每个逻辑分区的第一个扇区,这也叫做扩展分区表。在扩展分区下,系统管理员可以根据实际情况建立多个逻辑分区,将一个扩展分区划割成多个区域来使用。
所以在扩展分区与逻辑分区的帮助下,一块硬盘可以被划分为六个、七个甚至更多的分区。有时候由于磁盘限额的需要,要给不同的用户或者应用对应不同的分区。用户主目录的规划,这也需要用到一个独立的分区。故系统管理员需要在部署系统之前,先考虑一下系统到底有分几个区合适。故硬盘分区空间该如何规划,这是系统管理员在部署Linux系统之前需要回答的问题。
现在开始添加磁盘,点击虚拟机 > 设置
点击添加 > 硬盘 > 下一步
默认,下一步
我这路选择5G,单个文件,下一步
名字可以默认,点击完成
这时候我看到新增加的磁盘为5G,确定;
重启之后,我们用命令:fdisk -l 查看磁盘的详细信息;
[root@ying01 ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be1b7
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 8222719 3905536 82 Linux swap / Solaris
/dev/sda3 8222720 62914559 27345920 83 Linux
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 //新增5G磁盘//
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
我们用命令:fdisk /dev/磁盘代号 来进行分区;根据提示选择m选取帮助;一般常用命令的是n、p、w、d
[root@ying01 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x5376b0e0 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag //可切换启动标志//
b edit bsd disklabel //编辑bsd磁盘标记//
c toggle the dos compatibility flag //切换dos compatibility标志//
d delete a partition //删除分区//
g create a new empty GPT partition table //创建新的空GPT分区表//
G create an IRIX (SGI) partition table //创建IRIX (SGI)分区表//
l list known partition types //列出已知分区类型//
m print this menu //打印此菜单//
n add a new partition //增加一个新分区//
o create a new empty DOS partition table //创建新的enpty DOS分区表//
p print the partition table //打印分区表//
q quit without saving changes //退出而不保存更改//
s create a new empty Sun disklabel //创建新的empty Sun empty Sun//
t change a partition's system id //更改e分区的系统id//
u change display/entry units //更改显示/输出单位//
v verify the partition table //验证分区表//
w write table to disk and exit //将表写入磁盘并退出//
x extra functionality (experts only) //额外功能(仅限于专家)//
命令(输入 m 获取帮助):
我们先用命令p,打印分区表;
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
现在开始用命令n,增加一个新分区;
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free) //主分区//
e extended //扩展分区//
Select (default p): p //选择新增主分区//
分区号 (1-4,默认 1):1 //分区代号,有1~4可选//
起始 扇区 (2048-10485759,默认为 2048): //此处默认,回车//
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G //我们新的主分区为1G//
分区 1 已设置为 Linux 类型,大小设为 1 GiB //1G的主分区完成//
我们再新增1个500M主分区
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-10485759,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-10485759,默认为 10485759):+500M
分区 2 已设置为 Linux 类型,大小设为 500 MiB
再新增一个800M的主分区;
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (3123200-10485759,默认为 3123200):
将使用默认值 3123200
Last 扇区, +扇区 or +size{K,M,G} (3123200-10485759,默认为 10485759):+800M
分区 3 已设置为 Linux 类型,大小设为 800 MiB
现在只能增加一个分区;
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4 //自动选择//
起始 扇区 (4761600-10485759,默认为 4761600):
将使用默认值 4761600
Last 扇区, +扇区 or +size{K,M,G} (4761600-10485759,默认为 10485759):
将使用默认值 10485759
分区 4 已设置为 Linux 类型,大小设为 2.7 GiB //分配空间也是自动//
此时我们用命令p,查看分区情况;Blocks的单位为:KB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux //1G//
/dev/sdb2 2099200 3123199 512000 83 Linux //500M//
/dev/sdb3 3123200 4761599 819200 83 Linux //800M//
/dev/sdb4 4761600 10485759 2862080 83 Linux
现在我们试验删除命令:** d** 现在把主分区4删除;
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):4
分区 4 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 3123199 512000 83 Linux
/dev/sdb3 3123200 4761599 819200 83 Linux
现在我们把分区4,定义为扩展分区;
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e //选择e为扩展分区//
已选择分区 4
起始 扇区 (4761600-10485759,默认为 4761600):
将使用默认值 4761600
Last 扇区, +扇区 or +size{K,M,G} (4761600-10485759,默认为 10485759):
将使用默认值 10485759
分区 4 已设置为 Extended 类型,大小设为 2.7 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 3123199 512000 83 Linux
/dev/sdb3 3123200 4761599 819200 83 Linux
/dev/sdb4 4761600 10485759 2862080 5 Extended //分区4,系统类型为扩展分区//
扩展分区和主分区区别就是主分区可以直接读写,而扩展分区只是一个空壳子,如果需要用,必须在扩展分区上划分为逻辑分区,这个逻辑分区个数无限多个,不像主分区最多为4个;
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5 //自动识别为逻辑分区5//
起始 扇区 (4763648-10485759,默认为 4763648):
将使用默认值 4763648
Last 扇区, +扇区 or +size{K,M,G} (4763648-10485759,默认为 10485759):+900M
分区 5 已设置为 Linux 类型,大小设为 900 MiB
我们用命令p产看分区情况;这里需要说明下,id为系统类型:83 Linux(主分区或者逻辑分区) 5 Extended (扩展分区)
命令(输入 m 获取帮助):P
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 3123199 512000 83 Linux
/dev/sdb3 3123200 4761599 819200 83 Linux
/dev/sdb4 4761600 10485759 2862080 5 Extended
/dev/sdb5 4763648 6606847 921600 83 Linux
我们现在start和end,这里就是分区的开始容量和结束容量;我们可以看到分区1,从2048开始,为什么不是从0开始,那是因为磁盘本身有文件信息,所以占用了2M,分区2、3、4都是按顺序拼合;而分区5属于逻辑分区,它就是从扩展分区划分出来的,所以他们开始之间的差值为2018,即2M,也扩展分区中配置文件所占用;
现在我们删除分区1,发现分区2、3、4代号不变;
命令(输入 m 获取帮助):d
分区号 (1-5,默认 5):1
分区 1 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
/dev/sdb2 2099200 3123199 512000 83 Linux
/dev/sdb3 3123200 4761599 819200 83 Linux
/dev/sdb4 4761600 10485759 2862080 5 Extended
/dev/sdb5 4763648 6606847 921600 83 Linux
既然之前说逻辑分区5,是从扩展分区4的一部分,我们现在删除扩展分区4;结果逻辑分区5也被删除;
命令(输入 m 获取帮助):d
分区号 (2-5,默认 5):4
分区 4 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5376b0e0
设备 Boot Start End Blocks Id System
/dev/sdb2 2099200 3123199 512000 83 Linux
/dev/sdb3 3123200 4761599 819200 83 Linux
上面几项试验成功,按ctrl+c或者q退出,刚才做的分区边全部取消。下面代码显示,新增磁盘未被分区;
[root@ying01 ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be1b7
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 8222719 3905536 82 Linux swap / Solaris
/dev/sda3 8222720 62914559 27345920 83 Linux
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
我们现在重新分区,先分扩展分区,再建主分区
[root@ying01 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x69fa0494 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): e
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+3G
分区 1 已设置为 Extended 类型,大小设为 3 GiB
现在开始划分主分区;
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): p
分区号 (2-4,默认 2):3 //我们不选择默认分区号2,选择3//
起始 扇区 (6293504-10485759,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-10485759,默认为 10485759):+500M
分区 3 已设置为 Linux 类型,大小设为 500 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): p
分区号 (2,4,默认 2):4 //我们不选择默认分区号2,选择4//
起始 扇区 (7317504-10485759,默认为 7317504):
将使用默认值 7317504
Last 扇区, +扇区 or +size{K,M,G} (7317504-10485759,默认为 10485759):+300M
分区 4 已设置为 Linux 类型,大小设为 300 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): p
已选择分区 2 //最好默认为2//
起始 扇区 (7931904-10485759,默认为 7931904):
将使用默认值 7931904
Last 扇区, +扇区 or +size{K,M,G} (7931904-10485759,默认为 10485759):
将使用默认值 10485759
分区 2 已设置为 Linux 类型,大小设为 1.2 GiB
我们用命令p产看分区情况;可以看出虽然分区号按顺序排列,但是(Start、End)是从建立分区的顺序排列的;
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69fa0494
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 5 Extended //扩展分区//
/dev/sdb2 7931904 10485759 1276928 83 Linux
/dev/sdb3 6293504 7317503 512000 83 Linux
/dev/sdb4 7317504 7931903 307200 83 Linux
我们再增加逻辑分区;逻辑分区号,是系统指定的;从5开始,一次向后递增;
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (4096-6293503,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-6293503,默认为 6293503):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (2103296-6293503,默认为 2103296):
将使用默认值 2103296
Last 扇区, +扇区 or +size{K,M,G} (2103296-6293503,默认为 6293503):+800M
分区 6 已设置为 Linux 类型,大小设为 800 MiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 7
起始 扇区 (3743744-6293503,默认为 3743744):
将使用默认值 3743744
Last 扇区, +扇区 or +size{K,M,G} (3743744-6293503,默认为 6293503):
将使用默认值 6293503
分区 7 已设置为 Linux 类型,大小设为 1.2 GiB
我们用命令p产看分区情况;可以看出逻辑分区从扩展分区划分出来的;
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69fa0494
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 5 Extended
/dev/sdb2 7931904 10485759 1276928 83 Linux
/dev/sdb3 6293504 7317503 512000 83 Linux
/dev/sdb4 7317504 7931903 307200 83 Linux
/dev/sdb5 4096 2101247 1048576 83 Linux
/dev/sdb6 2103296 3741695 819200 83 Linux
/dev/sdb7 3743744 6293503 1274880 83 Linux
试着删除分区:主分区3删除后,这个空间大小就空出来了;
命令(输入 m 获取帮助):d
分区号 (1-7,默认 7):3
分区 3 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69fa0494
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 5 Extended
/dev/sdb2 7931904 10485759 1276928 83 Linux
/dev/sdb4 7317504 7931903 307200 83 Linux
/dev/sdb5 4096 2101247 1048576 83 Linux
/dev/sdb6 2103296 3741695 819200 83 Linux
/dev/sdb7 3743744 6293503 1274880 83 Linux
而删除逻辑分区6;系统会将分区7自动补位。但是需要注意:之前的空间还是空着;
命令(输入 m 获取帮助):d
分区号 (1,2,4-7,默认 7):6
分区 6 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69fa0494
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 5 Extended
/dev/sdb2 7931904 10485759 1276928 83 Linux
/dev/sdb4 7317504 7931903 307200 83 Linux
/dev/sdb5 4096 2101247 1048576 83 Linux
/dev/sdb6 3743744 6293503 1274880 83 Linux
总结:为什么需要这么麻烦分Extended;那是因为想分更多的区,如果只需要4个以下,那就不需要分扩展分区;
以下为扩展试验:parted分区
[root@ying01 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
错误: /dev/sdb: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
将磁盘格式变成gpt的格式(因为parted只能针对gpt格式的磁盘进行操作)(或者msdos)
(parted) mklabel gpt
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
我们开始分区
(parted) mkpart ying_01 0 1G //分给名字为:ying_01 范围为0~1G的分区//
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? I //因为磁盘开始有配置文件,所以不能从0开始//
(parted) mkpart ying_02 1G 2G //继续划分分区//
(parted) p //用命令p,查看分区//
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 1000MB 1000MB ying_01 //可以看到有17.4KB被占用//
2 1000MB 2000MB 999MB ying_02
我们现在删除一个分区
(parted) rm 2 //删除分区2//
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 1000MB 1000MB ying_01
(parted) quit //quit命令是保存与退出//
信息: You may need to update /etc/fstab.
如果我们再(parted)下操作不顺手,可以用这个命令parted /dev/sdb print 它可以在命令行下使用,只是用print把在parted下的命令打印出来;
[root@ying01 ~]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 1000MB 1000MB ying_01
[root@ying01 ~]#
四、磁盘格式化
我们先查看下CentOS下有哪些文件格式;
[root@ying01 ~]# cat /etc//filesystems
xfs
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*
注意:CentOS 7默认使用的xfs格式 ,而CentOS 6默认使用的格式ext4 ,CentOS 5默认使用的格式ext3,CentOS 4及之前版本默认使用的格式ext2;
mke2fs命令常用的选项如下:
- -b 表示分区时设定每个数据区块占用的空间大小,目前每个数据块支持1024B,2048B以及4096B
- -i 表示设定inode的大小
- -N 表示设定inode的数量,有时默认的inode不够用,所要要自定义
- -c 表示在格式化前先检查一下磁盘是否有问题,加上这个选项以后,运行速度会非常慢。
- -L 表示预设该分区的标签(label)
- -j 表示建立ext3格式的分区,如果使用mkfs.ext3格式 就不需要加这个选项了
- -t 比用来指定文件系统的类型
先格式化sdb1这个分区;mke2fs -t ext4 /dev/sdb1 和 mkfs.ext4 /dev/sdb1 命令是一样的;都是把分区格式化为etx4格式;
[root@ying01 ~]# mke2fs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
然而mke2fs命令不支持xfs格式,只能用mkfs.xfs这个命令;
[root@ying01 ~]# mkfs.xfs /dev/sdb1
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (ext4).
mkfs.xfs: Use the -f option to force overwrite.
[root@ying01 ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@ying01 ~]# blkid /dev/sdb1 //在没有挂载点时候,查看分区格式用blkid//
/dev/sdb1: UUID="0512d919-e03d-4a5e-bf7c-1bb672090322" TYPE="xfs" //分区格式为xfs//
-b选项: mke2fs -b 8192 ext4 /dev/sdb1 表示分区时设定每个数据区块占用的空间大小;
[root@ying01 ~]# mke2fs -b 8192 /dev/sdb1 //给定块大小为8KB//
Warning: blocksize 8192 not usable on most systems.
mke2fs 1.42.9 (28-Dec-2013)
mke2fs: 8192-byte blocks too big for system (max 4096) //最大为2KB//
无论如何也要继续? (y,n) n //退出//
那我们指定2048B;
[root@ying01 ~]# mke2fs -b 2048 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=2048 (log=1) //块大小为2048B//
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user //磁盘5%的区间留给root,意思5%空间不能用//
第一个数据块=0
Maximum filesystem blocks=537919488
64 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
-m选项: mke2fs -m 0.1 ext4 /dev/sdb1 表示分区时设定留给root用户的空间大小占磁盘的百分比;这个好处就是充分利用磁盘,因为假如是1TB的硬盘,那么5%就51.2G,这部分将会不能利用;那我们设定0.1%,那就是1G多,这个可以接受;
[root@ying01 ~]# mke2fs -t ext4 -m 0.1 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks //inode数量为:131072;4个块对应1个inode//
524 blocks (0.10%) reserved for the super user //设定的0.1%留给root用户//
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
-i选项: mke2fs -i 8192 ext4 /dev/sdb1 表示分区时设定多少个字节对应一个inode;
[root@ying01 ~]# mke2fs -i 8192 -t ext4 /dev/sdb1 //设定indoe大小为:8192B//
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 524288 blocks //此时的inode数量为:262144;2个块对应1个inode//
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
五、磁盘挂载
磁盘分区和格式化以后,如何使用磁盘,必须挂载以后才能使用,挂载分区前先建立一个挂载点,这个点以目录形式出现,再往目录里面写数据。
未分区的磁盘也可以直接挂载,先将原有分区删除,然后把增加的磁盘格式化,并用blkid查看;
[root@ying01 ~]# mkfs.xfs /dev/sdb
mkfs.xfs: /dev/sdb appears to contain a partition table (dos).
mkfs.xfs: Use the -f option to force overwrite.
[root@ying01 ~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@ying01 ~]# blkid /dev/sdb
/dev/sdb: UUID="112b0169-e74f-4a5f-abfe-df2f95b48b81" TYPE="xfs"
mount [磁盘] [挂载点]
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 978M 26G 4% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.6M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
[root@ying01 ~]# mount /dev/sdb /mnt/
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 978M 26G 4% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.6M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/sdb 5.0G 33M 5.0G 1% /mnt //已经挂载在/mnt下//
umount 卸载磁盘挂载点
[root@ying01 ~]# cd /mnt/
[root@ying01 mnt]# ls
[root@ying01 mnt]# touch 1.txt 2.txt
[root@ying01 mnt]# mkdir 234
[root@ying01 mnt]# ls
1.txt 234 2.txt
[root@ying01 mnt]# cd //也可以不用到root下,直接在mnt下用 umount -l //
[root@ying01 ~]# umount /dev/sdb
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 978M 26G 4% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.6M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
cat 查看下/etc/fstab文件内容,显示的是系统启动时需要挂载的各个分区
# /etc/fstab
# Created by anaconda on Wed May 9 02:21:04 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b43ac3f1-3afe-4a10-b3b8-a9f0f498cdc0 / xfs defaults 0 0
UUID=3fd26e68-574b-4d1c-b3e2-bcc2a64acf86 /boot xfs defaults 0 0
UUID=e5c61f28-8cda-4bda-b524-3ce569c743d4 swap swap defaults
- 第一列就是分区标识,分区的LABEL或UUID,
- 第二列是挂载点
- 第三列是分区的格式
- 第四列是mount挂载的一些参数,默认defaults
- 第五列是否被dump备份,1表示备份,0不备份
- 第六列拜师开机时是否自检磁盘,1和2都表示检测,0表示不检测,1比2优先级高
七、手动增加swap空间
swap命令类似于windows的虚拟内存,如果遇到虚拟内存不够的情况,就要增加一个虚拟磁盘。 基本思路是: 建立seapfile,然后格式化为swap格式,最后启用这个虚拟磁盘
** 首先建立一个swap file**
用命令: dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024
- dd是用来操作磁盘 可读可写 ;
- if 从哪里读取 /dev/zero是内核一个源源不断创建0的文件;
- of 指定写到哪里去 ;
- /tmp/newdisk 这个文件是把读取出来的信息 放到net disk目录下;
- bs指定每个块的大小;
- count定义块的数量;
[root@ying01 ~]# dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024
记录了567+0 的读入
记录了567+0 的写出
594542592字节(595 MB)已复制,18.4079 秒,32.3 MB/秒
[root@ying01 ~]# du -sh /tmp/newdisk //查看磁盘//
567M /tmp/newdisk
格式化为swap格式,并用free -m命令,查看目前Swap的大小;
[root@ying01 ~]# mkswap -f /tmp/newdisk //强制格式化磁盘为swap格式//
正在设置交换空间版本 1,大小 = 580604 KiB
无标签,UUID=9ef14d00-9a1b-4f06-9285-7b502c4d6ce2
[root@ying01 ~]# free -m //查看磁盘大小//
total used free shared buff/cache available
Mem: 1831 126 951 8 753 1521
Swap: 3813 0 3813
把刚新增加的虚拟内存添加进到Swa,用命令:swapon -f
[root@ying01 ~]# swapon /tmp/newdisk //添加新磁盘//
swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600。 //提示权限不够//
[root@ying01 ~]# free -m
total used free shared buff/cache available
Mem: 1831 126 951 8 753 1520
Swap: 4380 0 4380 //但是明显Swap已经增大了//
[root@ying01 ~]# chmod 0600 /tmp/newdisk //按提示修改权限//
[root@ying01 ~]# free -m
total used free shared buff/cache available
Mem: 1831 126 951 8 753 1520
Swap: 4380 0 4380
卸载新添加的虚拟内存,命令:swapoff
[root@ying01 ~]# swapoff /tmp/newdisk //卸载磁盘//
[root@ying01 ~]# free -m //查看Swap大小为3813M,可见已经卸载//
total used free shared buff/cache available
Mem: 1831 126 951 8 753 1521
Swap: 3813 0 3813
八、 lvm讲解
概念:LVM是logical volume manager的缩写(逻辑分区),方便对于对圈组、逻辑卷的大小进行调整,更进一步调整文件系统的大小。 优点:在使用很多硬盘的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。
1. 创建物理卷:
在建立主分区基础上,用t命令,将83 linux改为 8e linux LVM
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
依次创建3个分区,用命令p查看;下面代码可以看到3个(Linux LVM)
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x486cc3c0
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 8e Linux LVM
/dev/sdb2 2099200 4196351 1048576 8e Linux LVM
/dev/sdb3 4196352 6293503 1048576 8e Linux LVM
pvcreat命令是创建物理卷;但是未找到这个命令,那是因为我们安装LVM的包;
[root@ying01 ~]# pvcreat /dev/sdb1
-bash: pvcreat: 未找到命令
虽然我们知道用这个命令,但是怎么安装正确的安装包?yum provides "/*/pvcreate" 星号为通配符,在根下找包含所需命令的文件; 我们可以知道这个安装包是lvm2;
[root@ying01 ~]# yum provides "/*/pvcreate"
已加载插件:fastestmirror
base
extras
updates
(1/2): extras/7/x86_64/primary_db
(2/2): updates/7/x86_64/primary_db
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
extras/7/x86_64/filelists_db
updates/7/x86_64/filelists_db
1:bash-completion-2.1-6.el7.noarch : Programmable completion for Bash
源 :base
匹配来源:
文件名 :/usr/share/bash-completion/completions/pvcreate
7:lvm2-2.02.177-4.el7.x86_64 : Userland logical volume management tools
源 :base
匹配来源:
文件名 :/usr/sbin/pvcreate
用yum install -y lvm2 命令安装LVM2后,我们一次创建3个物理卷;
[root@ying01 ~]# pvcreate /dev/sdb1
WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@ying01 ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@ying01 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
用命令pvdisplay和pvs查看,两个命令都能查看,但是pvs更简洁直观;
[root@ying01 ~]# pvs //查看3个创建成功的物理卷//
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 1.00g 1.00g
/dev/sdb2 lvm2 --- 1.00g 1.00g
/dev/sdb3 lvm2 --- 1.00g 1.00g
2. 创建卷组
vgcreat这个命令是创建卷组;
[root@ying01 ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created
[root@ying01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
用命令vgdisplay和vgs查看卷组,但是vgs更简洁直观;(vgremove 删除卷组的命令)
[root@ying01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
创建逻辑卷:(lvcreate创建逻辑卷,-L 100M指定大小,-n lv1 逻辑卷的名字,vg1从卷组里面调用出来)
[root@ying01 ~]# lvcreate -L 100M -n lv1 vg1 //从卷组vg1拿出100M给逻辑卷lv1//
Logical volume "lv1" created. //逻辑卷lv1创建成功//
把逻辑卷扩容,那么我们先把其格式化;
[root@ying01 ~]# mkfs.ext4 /dev/vg1/lv1 //格式化逻辑卷lv1//
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
我们先挂载逻辑卷,发现/mnt下逻辑卷与我们创建的不一样,用ls -l查看各自的信息,发现它们都指向dm-0
[root@ying01 ~]# mount /dev/vg1/lv1 /mnt/
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 1.6G 25G 7% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.7M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg1-lv1 93M 1.6M 85M 2% /mnt //与创建逻辑卷的信息不一样//
[root@ying01 ~]# ls -l /dev/vg1/lv1
lrwxrwxrwx. 1 root root 7 5月 23 08:42 /dev/vg1/lv1 -> ../dm-0
[root@ying01 ~]# ls -l /dev/mapper/vg1-lv1
lrwxrwxrwx. 1 root root 7 5月 23 08:42 /dev/mapper/vg1-lv1 -> ../dm-0
3.扩容逻辑卷
扩容前我们需要首先取消其挂载点;用命令umount
[root@ying01 ~]# mkdir /mnt/1212
[root@ying01 ~]# touch /mnt/23.txt
[root@ying01 ~]# echo "1111111111" > /mnt/23.txt
[root@ying01 ~]# umount /mnt/ //取消挂载点//
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 1.6G 25G 7% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.7M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
先重置逻辑卷大小
[root@ying01 ~]# lvresize -L 200M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents).
Logical volume vg1/lv1 successfully resized.
检查磁盘错误 (ext4执行)
[root@ying01 ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks
更新逻辑卷信息(ext4执行)
[root@ying01 ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 204800 blocks long.
挂载新的逻辑卷,并查看信息;
[root@ying01 ~]# mount /dev/vg1/lv1 /mnt/
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 1.6G 25G 7% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.7M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt //已经变为200M//
[root@ying01 ~]# ls /mnt/
1212 23.txt lost+found //磁盘文件还在//
[root@ying01 ~]# cat /mnt/23.txt //相应的信息还在//
1111111111
4.缩减逻辑卷
先检查磁盘
[root@ying01 ~]# umount /mnt/
[root@ying01 ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 13/49400 files (7.7% non-contiguous), 11887/204800 blocks
更新逻辑卷信息(ext)
[root@ying01 ~]# resize2fs /dev/vg1/lv1 100M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 102400 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 102400 blocks long.
重新设置卷大小
[root@ying01 ~]# lvresize -L 100M /dev/vg1/lv1
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
Logical volume vg1/lv1 successfully resized.
lvs 或lvdisplay 查看缩减结果
[root@ying01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 100.00m
重新挂载,然后查看缩容后是否会丢失文件信息,结果是没有丢失
[root@ying01 ~]# mount /dev/vg1/lv1 /mnt/
[root@ying01 ~]# ls /mnt/
1212 23.txt lost+found
5.xfs文件格式下的扩容
挂载,然后格式化
[root@ying01 ~]# umount /mnt/
[root@ying01 ~]# mkfs.xfs -f /dev/vg1/lv1
meta-data=/dev/vg1/lv1 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载逻辑卷;
[root@ying01 ~]# mount /dev/vg1/lv1 /mnt/
[root@ying01 ~]# ls /mnt/ //查看信息,没有,因为格式化//
[root@ying01 ~]# touch /mnt/233.txt //创建文件//
[root@ying01 ~]# echo "bbbbbbbb" > /mnt/233.txt //给新建文件写入内容//
[root@ying01 ~]# cat /mnt/233.txt
bbbbbbbb
重新创建逻辑卷大小为300M,并在创建在前和之后查看,进行对比;
[root@ying01 ~]# lvs //查看逻辑卷大小为100M//
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 100.00m
[root@ying01 ~]# lvresize -L 300M /dev/vg1/lv1 //重新创建逻辑卷大小为300M//
Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 300.00 MiB (75 extents).
Logical volume vg1/lv1 successfully resized.
[root@ying01 ~]# lvs //逻辑卷大小为300M//
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 300.00m
创建完逻辑卷后,xfs格式需要用xfs_growfs /dev/vg1/lv1 更新
[root@ying01 ~]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 25600 to 76800
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 1.6G 25G 7% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.7M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg1-lv1 297M 5.5M 292M 2% /mnt //成功看到新的逻辑卷300M //
6.扩容卷组
查看现在的卷组大小 vgs
[root@ying01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 1 0 wz--n- 1.99g <1.70g
之前分区分了3个,还有一个没有用,先扩容卷组
[root@ying01 ~]# vgextend vg1 /dev/sdb3 //把sdb3物理卷添加到卷组vg1//
Volume group "vg1" successfully extended
再次查看现在的卷组大小 vgs
[root@ying01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 1 0 wz--n- <2.99g <2.70g //目前为3个G//
九、磁盘故障小案例
在做完实验后,我们开启虚拟机出现问题;因为之前我们编辑了这个文件etc/fstab 因此我们需要把其中的添加的内容删除;