磁盘管理
1. df命令
df含义:报告文件系统磁盘空间的使用情况。
df [选项] [文件名]
参数 | 参数含义 |
---|---|
-a | –all,显示所有的文件系统,包括虚拟文件系统。 |
-B | –block-size,指定单位大小。比如1k,1m等。 |
-h | –human-readable,以人们易读的GB、MB、KB等格式显示。 |
-H | –si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。 |
-i | –inodes,不用硬盘容量,而是以inode的数量来显示。 |
-k | 以KB的容量显示各文件系统,相当于–block-size=1k。 |
-m | 以KB的容量显示各文件系统,相当于–block-size=1m。 |
-l | –local,只显示本地文件系统。 |
–no-sync | 在统计使用信息之前不调用sync命令(默认)。 |
-sync | 在统计使用信息之前调用sync命令。 |
-P | –portability,使用POSIX格式显示。 |
-t | –type=TYPE,只显示指定类型的文件系统。 |
-T | –print-type,显示文件系统类型。 |
-x | –exclude-type=TYPE,不显示指定类型的文件系统。 |
–help | 显示帮助信息。 |
–version | 显示版本信息。 |
单位介绍:
单位 | 单位含义 | 读音 |
---|---|---|
Byte | 1字节 | 字节 |
KB | 1024字节=1KB | 千字节 |
MB | 1024KB=1MB | 兆字节 |
GB | 1024MB=1GB | 吉字节 |
TB | 1024GB=1TB | 太字节 |
PB | 1024TB=1PB | 拍字节 |
EB | 1024PB=1EB | 艾字节 |
ZB | 1024EB=1ZB | Z字节 |
YB | 1024ZB=1YB | Y字节 |
df主要参数示例:
- 查看文件系统磁盘空间使用情况
注意:Linux的磁盘是不能直接访问的,需要有个挂载点,需要通过挂载点才能进入磁盘进行读写数据。
[root@sc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 29140072 1113372 28026700 4% /
devtmpfs 491940 0 491940 0% /dev
tmpfs 502812 0 502812 0% /dev/shm
tmpfs 502812 7632 495180 2% /run
tmpfs 502812 0 502812 0% /sys/fs/cgroup
/dev/sda1 201380 106812 94568 54% /boot
tmpfs 100564 0 100564 0% /run/user/0
- df -h,会根据磁盘的大小来显示合适的单位
注意:文件系统目录带有 /tmpfs 的一般都是临时的文件系统目录,即便在其挂载点下写入了数据,但是只要一重启操作系统就会清空。不过我们一般不需要关注 /tmpfs 之类的文件系统目录,我们需要关注的是 /dev 之类的文件系统目录。
[root@sc ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.1G 27G 4% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.5M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
第一列是文件系统,也就是磁盘分区的名字,tmpfs 是临时文件系统。
第二列是磁盘的总大小,单位是 k
第三列是磁盘已经使用了多少,单位是 k
第四列是剩余多少,单位是 k
第五列是已用百分比,平常最需要关注的点
第六列是挂载点,实际上是系统的目录。
- 查看当前目录下一层级目录大小:du -h --max-depth=1
[root@master ~]# du -h --max-depth=1 /root/
0 /root/shell
44K /root/
- free 命令可以查看 swap
[root@sc ~]# free
total used free shared buff/cache available
Mem: 1005628 135824 583056 7664 286748 689036
Swap: 2097148 0 2097148
- df -i ,查看文件系统目录的 inode 和 inode 的使用情况,Linux 的 inode号是在格式化磁盘的时候就预先分配好了的,inode 的大小与磁盘的大小有关系
注意:如果挂载点还有足够的剩余容量,但是却无法写入数据的话,这时就可以使用 df -i 查看一下是否是 inode 号没有剩余可使用的,若是某个文件系统目录已经没有剩余可使用的 inode 号就会无法在此文件系统目录的挂载点下写入数据。
[root@sc ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 14577152 26852 14550300 1% /
devtmpfs 122985 381 122604 1% /dev
tmpfs 125703 1 125702 1% /dev/shm
tmpfs 125703 658 125045 1% /run
tmpfs 125703 16 125687 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
tmpfs 125703 1 125702 1% /run/user/0
- df -m 是以 MB 的单位来显示大小
[root@sc ~]# df -m
文件系统 1M-块 已用 可用 已用% 挂载点
/dev/sda3 28458 1087 27371 4% /
devtmpfs 481 0 481 0% /dev
tmpfs 492 0 492 0% /dev/shm
tmpfs 492 8 484 2% /run
tmpfs 492 0 492 0% /sys/fs/cgroup
/dev/sda1 197 105 93 54% /boot
tmpfs 99 0 99 0% /run/user/0
2. du命令
du含义:查看目录文件的大小
du [参数] [文件]
参数 | 参数含义 |
---|---|
-a, --all | 输出所有文件的磁盘用量,不仅仅是目录–apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大。 |
-B, --block-size=大小 | 使用指定字节数的块 |
-b, --bytes | 等于–apparent-size --block-size=1 |
-c, --total | 显示总计信息 |
-D, --dereference-args | 解除命令行中列出的符号连接–files0-from=F 计算文件F 中以NUL 结尾的文件名对应占用的磁盘空间如果F 的值是"-",则从标准输入读入文件名 |
-H | 等于–dereference-args (-D) |
-h, --human-readable | 以可读性较好的方式显示尺寸(例如:1K 234M 2G) --si 类似-h,但在计算时使用1000 为基底而非1024 |
-k | 等于–block-size=1K |
-l, --count-links | 如果是硬连接,就多次计算其尺寸 |
-m | 等于–block-size=1M |
-L, --dereference | 找出任何符号链接指示的真正目的地 |
-P, --no-dereference | 不跟随任何符号链接(默认) |
-0, --null | 将每个空行视作0 字节而非换行符 |
-S, --separate-dirs | 不包括子目录的占用量 |
-s, --summarize | 只分别计算命令列中每个参数所占的总用量 |
-x, --one-file-system | 跳过处于不同文件系统之上的目录 |
-X, --exclude-from=文件 | 排除与指定文件中描述的模式相符的文件 |
–exclude=PATTERN | 排除与PATTERN 中描述的模式相符的文件 |
–max-depth=N | 显示目录总计(与–all 一起使用计算文件),当N 为指定数值时计算深度为N;–max-depth=0 等于–summarize |
–time | 显示目录或该目录子目录下所有文件的最后修改时间 |
–time=WORD | 显示WORD 时间,而非修改时间:atime,access,use,ctime 或status |
–time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令): | full-iso,long-iso,iso,+FORMAT |
–help | 显示此帮助信息并退出 |
–version | 显示版本信息并退出 |
du主要参数示例:
- du 命令是用来查看一个文件大小的,不加任何选项并且不指定路径的话,是查看当前目录下的文件和目录的大小,并且不显示文件大小的单位,显示的是数字,这些数字的默认单位是 KB
[root@sc ~]# du /root/
4 /root/grep
0 /root/.pki/nssdb
0 /root/.pki
0 /root/123
856 /root/test
940 /root/
- du 加 -sh 选项后面跟具体的路径就可以查看指定的目录或文件的大小
[root@sc ~]# du /root/ #没有任何单位
4 /root/grep
0 /root/.pki/nssdb
0 /root/.pki
0 /root/123
856 /root/test
940 /root/
[root@sc ~]# du -s /root/ #加上 -s 会列出当前文件夹的总大小,没显示单位。
940 /root/
[root@sc ~]# du -h /root/ #加上 -h 会人性化显示出当前文件夹的总大小。
4.0K /root/grep
0 /root/.pki/nssdb
0 /root/.pki
0 /root/123
856K /root/test
940K /root/
[root@sc ~]# du -sh /root/
940K /root/
[root@sc ~]# du -sh /root/
940K /root/
[root@sc ~]# du -sh /etc/passwd #显示文件的大小
4.0K /etc/passwd
- 如果使用 ls -lh 命令查看 passwd 文件会发现此文件只有1.3K,而使用 du -sh 命令查看却是显示的 4K,这是因为磁盘在格式化的时候,是把存储空间划分为一个一个的小块,这每个小块的大小就是 4K,而一个小块只能存储一个文件,不可以存储多个文件,所以即便此文件的大小没有 4K,也是占用着 4K 的存储空间
注意:du -sb 同等于 ls -l 都可以查看文件具体大小。
[root@sc ~]# ls -lh /etc/passwd
-rw-r--r--. 1 root root 1.3k 3月 19 07:59 /etc/passwd
[root@sc ~]# du -sh /etc/passwd
4.0K /etc/passwd
[root@aminglinux01 ~]# du -sb 1.txt
24 1.txt
[root@sc ~]#
3. 磁盘分区
在日常工作中我们接触的比较多的是给操作系统增加磁盘接着划分分区和挂载,例如我要给操作系统添加一块硬盘,因为是在虚拟机软件上安装的操作系统,所以我们可以直接通过软件来在设置界面里添加一个磁盘:
现在我们就已经添加好一块硬盘了,一般在服务器都是支持热拔插磁盘的,也就是插上一块磁盘服务器马上就可以识别了,但是在虚拟机上不支持。
fdisk命令
fdisk介绍:操作磁盘分区表
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
参数 | 参数含义 |
---|---|
-l | 列出分区表 |
-b <大小> | 扇区大小(512、1024、2048或4096) |
-c[=<模式>] | 兼容模式:“dos”或“nondos”(默认) |
-h | 打印此帮助文本 |
-u[=<单位>] | 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认) |
-v | 打印程序版本 |
-C <数字> | 指定柱面数 |
-H <数字> | 指定磁头数 |
-S <数字> | 指定每个磁道的扇区数 |
fdisk主要参数示例:
fdisk -l 命令可以查看目前操作系统下所有的磁盘,刚添加完需要重启 reboot
[root@sc ~]# reboot # 重启
[root@sc ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c4ac8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 62914559 29154304 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
- fdisk 命令后面跟指定的磁盘名称就可以进行划分分区
注意:咱们用的 fdisk 划分的分区有一个格式叫 MBR 分区,MBR 分区有一个特点最高支持 2个T,超过 2个T 就不能用 fdisk 划分分区了。而且主分区最多只能划分四个,想要四个以上的分区,就划分三个主分区,剩下一个划分扩展分区,然后在扩展分区里面划分逻辑分区。
所以主分区 + 扩展分区的和小于等于四 。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag #切换可引导标志
b edit bsd disklabel #编辑BSD磁盘标签
c toggle the dos compatibility flag #切换DOS兼容性标志
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 #创建新的空DOS分区表
p print the partition table #打印分区表
q quit without saving changes #不保存更改就退出
s create a new empty Sun disklabel #创建新的空Sun磁盘标签
t change a partition's system id #更改分区的系统ID
u change display/entry units #更改显示/输入单位
v verify the partition table #验证分区表
w write table to disk and exit #将表写入磁盘并退出
x extra functionality (experts only) #额外功能(仅限专家)
- 先划分一个主分区
- 再连续划分 4 个主分区
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 10487807 1048576 83 Linux
/dev/sdb4 10487808 41943039 15727616 83 Linux #已经设置好4个主分区了
命令(输入 m 获取帮助):n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.
#如果要创建四个以上的分区,必须替换
首先使用扩展分区的主分区。
- 如果想继续增加分区,只能删除一个主分区
- 添加一个扩展分区并划分两个逻辑分区 /sdb5、/sdb6
- 逻辑分区的分区号有一个特点就是从 5 开始的, 5 以内的分区号都是预留给主分区和扩展分区的,并且逻辑分区的分区号是连续性的
- 使用 fdisk -l 命令查看一下是否添加分区成功
注意:扩展分区本身不占空间,扩展分区就像一个壳子,真正占着空间的是扩展分区下的逻辑分区。
4. 磁盘格式化
- cat /etc/filesystems 命令可以查看 CentOS7 里支持的文件系统格式
xfs 格式是 CentOS7 的默认文件系统,在 CentOS6 版本之前的默认文件系统格式是 ext 。
[root@sc ~]# cat /etc/filesystems #查看 CentOS7 支持的系统格式
xfs
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*
mke2fs命令
mke2fs介绍:是格式化磁盘的命令,针对ext4、ext3、ext2,不包含xfs。
mke2fs [-cFMqrSvV][-b <区块大小>][-f <不连续区段大小>][-i <字节>][-N <inode数>][-l <文件>][-L <标签>][-m <百分比值>][-R=<区块数>][ 设备名称][区块数]
参数 | 参数含义 |
---|---|
-b<区块大小> | 指定区块大小,单位为字节。 |
-c | 检查是否有损坏的区块。 |
-i<字节> | 指定"字节/inode"的大小。 |
-N<inode数> | 默认inode数不够用,所以要自定义inode数目。 |
-L<标签> | 设置文件系统的标签名称。 |
-j | 表示建立ext3格式的分区,如果使用mkfs.ext3格式,就不用加这个选项了。 |
-t | 用来指定文件的类型(如ext2,ext3,ext4等等) |
mke2fs主要参数示例:
- mke2fs -t 指定格式化成某个格式的文件系统
例如:mke2fs -t ext4 /dev/sdb1
指定将 /dev/sdb1 磁盘分区格式化成 ext4 格式的文件系统。
mke2fs 支持 ext4、ext3、ext2
注意:mke2fs -t ext4 命令 = mkfs.ext4 命令,mke2fs 不支持 xfs 格式
[root@sc ~]# 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
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 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 -b 此选项可以指定块的大小,这个块就是格式化磁盘时分隔的一个一个的小块,例如我用 ls -lh 查看某个文件的大小显示的结果是 1.3kb,但是用 du -sh 查看却是 4kb,这就说明这个磁盘的块大小是 4kb。
例如:mke2fs -t ext4 -b 2048 /dev/sdb1
指定 /dev/sdb1 磁盘分区的块大小为 2k,文件系统格式是 ext4,2048 是字节单位。
[root@sc ~]# mke2fs -t ext4 -b 2048 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 1572864 blocks
78643 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=270008320
96 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, 1327104
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
- mke2fs -m 指定某个磁盘分区的预留容量的大小(默认指定预留空间是给root使用)
例如:mke2fs -m 1 /dev/sdb1 1代表 预留空间大小
指定将 /dev/sdb1 磁盘分区预留容量的大小指定为此磁盘总容量的 1 %。
[root@sc ~]# mke2fs -m 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
196608 inodes, 786432 blocks
7864 blocks (1.00%) reserved for the super user #预留容量从(5.00%)变成(1.00%)
第一个数据块=0
Maximum filesystem blocks=805306368
24 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表: 完成
Writing superblocks and filesystem accounting information: 完成
- mke2fs -i 指定某个磁盘分区的 inode 号的数量。默认的情况下是四个块对应一个 inode 号,每个块默认是 4kb,也就是说 inode 号与块大约是 1:4 的比例
[root@sc ~]# mke2fs -i 8192 -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
393216 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 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: 完成
mkfs命令
mkfs介绍:格式化磁盘的命令,用于 xfs 格式。
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
参数 | 参数含义 |
---|---|
device | 预备检查的硬盘分区,例如:/dev/sda1 |
-V | 详细显示模式 |
-t | 给定档案系统的型式,Linux 的预设值为 ext2 |
-c | 在制做档案系统前,检查该partition 是否有坏轨 |
-l bad_blocks_file | 将有坏轨的block资料加到 bad_blocks_file 里面 |
block | 给定 block 的大小 |
mkfs主要参数示例:
- mkfs 格式化磁盘为 xfs 格式
[root@sc ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=196608 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=786432, 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
- 磁盘已经有格式了,想变成 xfs 格式,需要加 -f
磁盘是可以不分区直接进行格式化的,只有格式化才能挂载文件系统
[root@sc ~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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
blkid命令
blkid含义:可以查看已格式化但未挂载的磁盘分区
[root@sc ~]# blkid /dev/sdb1
/dev/sdb1: UUID="4cb50ee3-cf05-4f24-9fda-f4e69532efba" TYPE="ext4"
- blkid可以看到磁盘的UUID,可以直接使用UUID挂载磁盘
[root@test01 ~]# blkid
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="0628acbb-e870-46a7-8887-c23cd12fb4f9" TYPE="xfs"
/dev/sda2: UUID="9b2248fa-a1f7-4960-8f2f-db2299b69899" TYPE="swap"
/dev/sda3: UUID="02818647-32cc-4849-8379-15ec628d442a" TYPE="xfs"
/dev/sdb: UUID="add94538-2026-48f9-a764-17d280ab7fe6" TYPE="xfs"
[root@test01 ~]# mount UUID="add94538-2026-48f9-a764-17d280ab7fe6" /mnt/
[root@test01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 3.0G 15G 17% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.5M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/sdb 10G 33M 10G 1% /mnt
5. 磁盘挂载
mount命令
mount介绍:mount命令用于加载文件系统到指定的挂载点。
参数 | 参数含义 |
---|---|
-t vsftype | 指定要挂载的设备上的文件系统类型 |
-r: readonly | 只读挂载 |
-w: read and write | 读写挂载 |
-n | 不更新/etc/mtab |
-a | 自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能) |
-L ‘LABEL’ | 以卷标指定挂载设备 |
-U ‘UUID’ | 以UUID指定要挂载的设备 |
-B, --bind | 绑定目录到另一个目录上 |
- mount 是挂载命令,此命令后面要有两个参数,一个是要挂载的文件系统名称,一个是挂载点名称
[root@sc ~]# mount /dev/sdb /mnt
[root@sc ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.1G 27G 4% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.5M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/sdb 20G 33M 20G 1% /mnt
- mount命令的常用选项:
mount -o [ro,rw,remount]
- /etc/fstab 文件是 CentOS7 系统启动时默认挂载哪些磁盘的配置文件
注意:想要把挂载点永久保存,就要写入到 /etc/fstab 里
[root@sc ~]# vi /etc/fstab
第一列:设备号可以是uuid也可以是磁盘的分区/dev/sdb
第二列:设备的挂载点,就是你要挂载到哪个目录下。
第三列:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等
第四列:文件系统的参数
第五列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1;0代表不要做dump备份;1代表要每天进行dump的操作;2代表不定日期的进行dump操作。
第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)0代表不要检验,1代表最早检验(一般根目录会选择),2代表1级别检验完成之后进行检验
第四列文件系统的参数含义:
Async/sync #设置是否为同步方式运行,默认为async
auto/noauto #当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro #是否以以只读或者读写模式挂载
exec/noexec #限制此文件系统内是否能够进行"执行"的操作
user/nouser #是否允许用户使用mount命令挂载
suid/nosuid #是否允许SUID的存在
Usrquota #启动文件系统支持磁盘配额模式
Grpquota #启动文件系统对群组磁盘配额模式的支持
umount命令
umount含义:用于卸除文件系统。
- umount 命令可以直接跟挂载点的名称
[root@test01 ~]# umount /mnt/
- 在/mnt/下,umount -l 懒人模式卸载挂载点
[root@test01 ~]# cd /mnt/
[root@test01 mnt]# umount /mnt/
umount: /mnt:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@test01 mnt]# umount -l /mnt/
6. 手动增加swap空间
详细解读linux下swap分区的作用:https://www.jb51.net/article/133492.htm
- 想要手动增加swap空间的话,需要先添加一个小的虚拟磁盘
[root@sc mnt]# dd if=/dev/zero of=/tmp/newdisk bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,0.139927 秒,749 MB/秒
[root@sc mnt]# du -sh /tmp/newdisk
100M /tmp/newdisk
dd:命令是用来操作磁盘的
if:是指定从哪里去读取
/dev/zero:是Linux内核的造0器,可以产生源源不断的0
of:是指定将0写入到哪个文件里
bs:是指定每个块的大小
count:是指定newdisk文件的大小,在这里指定的大小是100M,这个大小是根据指定的块大小来计算的,例如指定的块大小是4k,那么这个文件就是400k。
- 添加完毕后,接下来就是对这个虚拟磁盘进行格式化,因为swap是特有的文件系统格式,所以需要使用mkswap命令:
[root@sc mnt]# mkswap -f /tmp/newdisk
正在设置交换空间版本 1,大小 = 102396 KiB
无标签,UUID=311647c6-f258-4af5-a4b7-002527789c37
- 格式化完成后,使用swapon命令将磁盘加上swap里去:
[root@sc mnt]# swapon /tmp/newdisk
swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600。
- 使用free -m命令可以查看swap的信息:
[root@sc mnt]# free -m
total used free shared buff/cache available
Mem: 982 132 586 7 262 675
Swap: 2147 0 2147
[root@sc mnt]# chmod 0600 /tmp/newdisk
- 使用swapoff命令可以卸载添加的虚拟磁盘,卸载之后如果不想要那个虚拟磁盘就把文件删掉即可释放创建的swap空间
[root@sc mnt]# swapoff /tmp/newdisk
[root@sc mnt]# free -m
total used free shared buff/cache available
Mem: 982 132 586 7 262 675
Swap: 2047 0 2047
[root@sc mnt]# rm -f /tmp/newdisk
7. parted命令
- 查看系统磁盘 /dev/sdb 还没有分区
[root@test-02 ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d2b4b
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 41943039 18668544 83 Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: D5CB517C-9DB5-49E1-A421-C72718A0265F
# Start End Size Type Name
- 首先类似于 fdisk 一样,先选择要分区的硬盘 /dev/sdb
[root@test-02 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
- 然后查看帮助直接输入 help
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check #check简单检查文件系统。建议用其他命令检查文件系统,比如fsck
help #help显示帮助信息
mklabel #mklabel创建分区表, 即是使用msdos(MBR)还是使用gpt,或者是其他方式分区表
mkpart #mkpart创建新分区。
name #name将分区号作为名称
print #print 输出分区信息。该功能有3个选项,
free 显示该盘的所有信息,并显示磁盘剩余空间
number 显示指定的分区的信息
all 显示所有磁盘信息
quit #quit退出程序
rescue #rescue恢复不小心删除的分区。如果不小心用parted的rm命令删除了一个分区,那么可以通过rescue功能进行恢复。恢复时需要给出分区的起始和结束的位置。然后parted就会在给定的范围内去寻找,并提示恢复分区。
resizepart #resize 调整指定的分区的大小。目前对ext3格式支持不是很好,所以不建议使用该功能。
rm #rm 删除分区。命令格式 rm number 。如:rm 3 就是将编号为3的分区删除
select #select 选择设备。当输入parted命令后直接回车进入交互模式是,如果有多块硬盘,需要用select 选择要操作的硬盘。如:select /dev/sdb
disk_set #disk_set标志状态更改选定设备上的标志
disk_toggle #切换选定设备上的标志状态
set #set 设置标记。更改指定分区编号的标志。标志通常有如下几种:boot hidden raid lvm 等。
boot 为引导分区,hidden 为隐藏分区,raid 软raid,lvm 为逻辑分区。
如:set 3 boot on 设置分区号3 为启动分区
toggle #切换[NUMBER [FLAG]]在分区号上切换FLAG的状态
unit #将默认单元设置为单元
version #版本显示GNU Parted的版本号和版权信息
注意:以上内容为parted常用的功能,由于该工具目前对ext3支持得不是很好,因此有些功能无法应用,比如move(移动分区)和resize等。
- 创建新的磁盘标签 (分区表)
(parted) mklabel
New disk label type? gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
- 执行 mkpart 命令,分别输入分区名称、文件系统和分区的起止位置
(parted) mkpart
Partition name? []? sdb1
File system type? [ext2]? xfs
Start? 0
End? 300G
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore
- print 命令打印分区信息
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 322GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 300GB 300GB xfs sdb1
- 保存退出
(parted) quit
Information: You may need to update /etc/fstab.
- 查看系统磁盘,显示刚分好的 /db1
[root@test-02 ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d2b4b
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 41943039 18668544 83 Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: B496B95C-13E3-4FC2-97AE-80429F10BA75
# Start End Size Type Name
1 34 585937500 279.4G Microsoft basic sdb1
- 格式化 /sdb1
[root@test-02 ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=18310546 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=73242183, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=35762, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- blkid 查看磁盘格式
[root@test-02 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a695d72a-f8d0-4581-b07b-de0a8b3eedcc" TYPE="xfs" PARTLABEL="sdb1" PARTUUID="3dc71f2c-1b70-4fb1-992a-d035d1d81b58"
- 挂载 /sdb1 到 /mnt 下
[root@test-02 ~]# mount /dev/sdb1 /mnt/
- 查看磁盘,显示有 /dev/sdb1 的信息了
[root@test-02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.2G 17G 7% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.5M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/sdb1 280G 33M 280G 1% /mnt
8. RAID磁盘阵列
- 创建 RAID 磁盘阵列
#虚拟机添加4块硬盘,做 RAID10 磁盘阵列
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm 命令用于管理 Linux系统中的软件 系统中的软件 RAID硬盘阵列,格式为“ mdadm [模式 ] <RAID设备名称 设备名称 > [选项 ] [成员设备名称 成员设备名称 成员设备名称 ]”。
-C 参数代表创建一个RAID阵列卡
-v 参数显示创建的过程
同时在后面追加一个设备名称 /dev/md0
-a yes参数代表自动创建设备文件
-n 4参数代表使用块硬盘来部署这个RAID磁盘阵列
-l 10参数则代表 参数则代表 RAID 10方案
最后再加上4块硬盘设备的名称就搞定
- 把做好的 RAID10 格式化为 xfs
[root@master ~]# mkfs.xfs -f /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- 创建挂载点然后把硬盘设备进行挂载操作,挂载成功可以看到可用空间为40G
[root@master ~]# mkdir /RAID
[root@master ~]# mount /dev/md0 /RAID
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 4.9G 13G 28% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.5M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/md0 40G 33M 40G 1% /RAID
- 查看 /dev/md0 磁盘阵列的详细信息
[root@master ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Aug 23 10:15:21 2019
Raid Level : raid10
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Aug 23 10:48:14 2019
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : master:0 (local to host master)
UUID : fa83e583:77278742:282fbc46:aec58af7
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync set-A /dev/sdb
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
9. lvm讲解
lvm 可以很方便的扩容和缩容磁盘的空间,但是有一定的局限性,一旦出现问题就比较麻烦了,例如某个磁盘使用了 lvm,然后某一天文件系统发生损坏里面的数据找不到了,这种情况第一时间都是想到恢复数据,但是由于磁盘物理分区的基础上划分了 lvm,因为 lvm 结构很复杂所以数据恢复起来没有那么容易,lvm 是一个软件工具是具有一定风险的。
1. 简单介绍lvm:
2. 在操作系统里完成以下描述的操作:
3. 使用 fdisk /dev/sdb 命令在 /dev/sdb 磁盘里创建三个新分区:
[root@sc ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xa97e4eee 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa97e4eee
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux # 正常的id号是83
命令(输入 m 获取帮助):t # 选择 t 命令
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa97e4eee
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 8e Linux LVM # id变为8e代表改为LVM
命令(输入 m 获取帮助):
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa97e4eee
设备 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 # 已经准备好三个LVM分区了
命令(输入 m 获取帮助):
准备物理卷:
1. 使用 pvcreate 命令将三个分区做成物理卷:
[root@sc ~]# yum provides "/*/pvcreate" # 全路径去搜索 pvcreate 这个命令的安装包
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
1:bash-completion-2.1-6.el7.noarch : Programmable completion for Bash
源 :base
匹配来源:
文件名 :/usr/share/bash-completion/completions/pvcreate
7:lvm2-2.02.180-8.el7.x86_64 : Userland logical volume management tools
源 :base
匹配来源:
文件名 :/usr/sbin/pvcreate
7:lvm2-2.02.180-10.el7_6.1.x86_64 : Userland logical volume management tools
源 :updates
匹配来源:
文件名 :/usr/sbin/pvcreate
7:lvm2-2.02.180-10.el7_6.2.x86_64 : Userland logical volume management tools
源 :updates
匹配来源:
文件名 :/usr/sbin/pvcreate
7:lvm2-2.02.180-10.el7_6.3.x86_64 : Userland logical volume management tools
源 :updates
匹配来源:
文件名 :/usr/sbin/pvcreate
[root@sc ~]# yum install -y lvm2
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
[root@sc ~]# ls /dev/sdb
/dev/sdb
[root@sc ~]# ls /dev/sdb1
ls: 无法访问/dev/sdb1: 没有那个文件或目录
[root@sc ~]# partprobe # 加载生成
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@sc ~]# ls /dev/sdb1
/dev/sdb1
[root@sc ~]# pvcreate /dev/sdb1
Can't open /dev/sdb1 exclusively. Mounted filesystem?
[root@sc ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.6M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
/dev/sdb 20G 33M 20G 1% /mnt
tmpfs 99M 0 99M 0% /run/user/0
[root@sc ~]# umount /mnt
[root@sc ~]# pvcreate /dev/sdb1 # 创建物理卷
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@sc ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@sc ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
2. 将分区都做成物理卷后使用 pvdispaly 命令列出物理卷:
[root@sc ~]# pvdisplay # 查看物理卷的命令
"/dev/sdb1" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID mWqmfm-8nCJ-3Iz0-qiNj-fCwG-hct5-yDGh2y
"/dev/sdb2" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID tCS9vU-Wbt3-N1t4-Fxlh-tCSu-Xphm-KCwmDP
"/dev/sdb3" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb3
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID oHKBUr-IKWm-EUG4-jvih-68HK-Eq47-UPLXjq
3. pvremove 是删除物理卷的命令:
[root@sc ~]# pvremove /dev/sdb3
Labels on physical volume "/dev/sdb3" successfully wiped.
4. pvs命令也能列出物理卷,并且更直观:
[root@sc ~]# pvs # 同样也是查看物理卷的命令
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
5. 创建完物理卷之后,就可以开始创建卷组了,vgcreate 命令可以创建卷组:
[root@sc ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created
vgcreate:创建卷组命令
vg1:卷组的名称
/dev/sdb1 /dev/sdb2:物理卷的路径,可以跟多个
6. vgdisplay命令可以查看卷组:
[root@sc ~]# vgdisplay # 查看卷组的信息
--- Volume group ---
VG Name vg1
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 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 0 / 0
Free PE / Size 510 / 1.99 GiB
VG UUID rHka4G-pKqf-KWTU-9ZwU-Voae-M0VJ-kZzobJ
7. vgs 命令也可以查看卷组:
[root@sc ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
8. vgremove 是删除卷组命令:
[root@sc ~]# vgremove
9. 有了卷组之后就可以创建逻辑卷了,lvcreate 是创建逻辑卷的命令:
[root@sc ~]# lvcreate -L 100M -n lv1 vg1
Logical volume "lv1" created.
lvcreate:创建逻辑卷的命令
-L 100M:划分大小
-n lv1:名称
vg1:从vg1卷组里划分
10. 接下来就是对逻辑卷进行格式化了:
[root@sc ~]# lvcreate -L 100M -n lv1 vg1
Logical volume "lv1" created.
[root@sc ~]# mkfs.ext4 /dev/vg1/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: 完成
11. 格式化完毕后就可以进行挂载了:
[root@sc ~]# mount /dev/vg1/lv1 /mnt
[root@sc ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.6M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/mapper/vg1-lv1 93M 1.6M 85M 2% /mnt
[root@sc ~]# ls -l /dev/vg1/lv1
lrwxrwxrwx. 1 root root 7 3月 24 18:47 /dev/vg1/lv1 -> ../dm-0
[root@sc ~]# ls -l /dev/mapper/vg1-lv1
lrwxrwxrwx. 1 root root 7 3月 24 18:47 /dev/mapper/vg1-lv1 -> ../dm-0
扩容逻辑卷:
1. 先卸载挂载点再执行命令重新设置卷的大小:
[root@sc ~]# umount /mnt/
[root@sc ~]# 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.
2. 检测磁盘错误:
[root@sc ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
3. 更新逻辑卷信息,如果不更新的话会在挂载时识别不了新的大小:
[root@sc ~]# 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@sc ~]# mount /dev/vg1/lv1 /mnt/
[root@sc ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.7M 484M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt
缩减逻辑卷:
1. 先卸载挂载点:
[root@sc ~]# umount /mnt
2. 检测磁盘错误:
[root@sc ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/49400 files (9.1% non-contiguous), 11884/204800 blocks
3. 更新逻辑卷信息:
[root@sc ~]# 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.
4. 重新设置卷的大小:
[root@sc ~]# 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.
[root@sc ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 100.00m
5. 进行挂载:
[root@sc ~]# !mount
mount /dev/vg1/lv1 /mnt/
xfs文件系统格式的扩容:
1. 将逻辑卷格式化成 xfs 文件系统格式:
[root@sc ~]# umount /mnt/
[root@sc ~]# 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
2. 格式化完成后进行挂载:
[root@sc ~]# !mount
mount /dev/vg1/lv1 /mnt/
3. 扩容逻辑卷:
[root@sc ~]# lvresize -L 300M /dev/vg1/lv1
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@sc ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 300.00m
4. xfs 和 ext 不同太一样,xfs 需要使用 xfs_growfs 命令执行一下:
[root@sc ~]# 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
扩展卷组:
1. 扩容卷组,因为之前还有一个物理卷没有加入到卷组中,我就直接将那个物理卷加入卷组来进行扩容了,就不新建物理卷了:
[root@sc ~]# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended
[root@sc ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size <2.99 GiB
PE Size 4.00 MiB
Total PE 765
Alloc PE / Size 75 / 300.00 MiB
Free PE / Size 690 / <2.70 GiB
VG UUID rHka4G-pKqf-KWTU-9ZwU-Voae-M0VJ-kZzobJ
[root@sc ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 1 0 wz--n- <2.99g <2.70g
2. 然后扩容逻辑卷,重新设置卷大小:
[root@sc ~]# lvresize -L 100M /dev/vg1/lv1
WARNING: Reducing active and open 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 300.00 MiB (75 extents) to 100.00 MiB (25 extents).
Logical volume vg1/lv1 successfully resized.
4.13 磁盘故障小案例
因为之前写了一行配置到etc目录下的fstap文件里,然后进行了以上的lvm操作后重新系统发现出现以下界面,出现这种情况一般是磁盘挂载点出现了问题,不能正常挂载到挂载点:
因为我知道出现问题的原因,所以我直接进入系统后编辑 /etc 目录下的 fstab 文件:
举例:vi /etc/fstab
然后保存退出后 reboot 重启操作系统,出现正常界面则是没问题了
扩展
扩展学习 parted分区gpt格式 http://www.apelearn.com/bbs/thread-7243-1-1.html
磁盘分区实际工作中使用场景
服务器加装磁盘,对磁盘进行分区格式化
云主机加硬盘,云盘扩容
磁盘有坏道的修复 fsck/e2fsck -a 分区名 https://www.2cto.com/os/201204/126370.html
在对磁盘的操作过程当中要避免数据的丢失
磁盘做raid,raid有raid1、raid5、raid6、raid10
数据做及时备份,备份方案:drdb、rsync+inotify
扩展阅读:
raid是什么?https://blog.csdn.net/caipeichao2/article/details/52661825
RAID磁盘阵列配置和调优小结 https://www.jianshu.com/p/b1cfac3f7679?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
drdb安装?https://blog.51cto.com/linuxboys/1673311
Rsync+inotify搭建实时同步系统 https://blog.51cto.com/10316297/2136440
磁盘坏道修复 https://www.jianshu.com/p/0b7c7e9a8779
dd使用场景
测试磁盘性能 https://blog.csdn.net/daiyudong2020/article/details/53157558
备份硬盘数据 http://zuyunfei.com/2015/06/04/linux-dd/
lvm使用场景
阿里云磁盘扩容文档 https://help.aliyun.com/document_detail/25452.html
硬盘大于2t如何分区
linux新增大于2T硬盘,分区并挂载 https://blog.csdn.net/u012150360/article/details/81333051