Linux磁盘管理
Posted ssooking
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux磁盘管理相关的知识,希望对你有一定的参考价值。
磁盘管理
一. 文件系统挂载
二. 查看磁盘空间
三. 逻辑卷管理
五. 制作镜像文件
六. 磁盘配额
七. 数据打包与压缩
磁盘接口:IDE、SCSI、SATA
文件系统:是一种对物理空间的组织方式,通常在格式化硬盘时创建。它定义了储存文件的方法和数据结构。
Windows:FAT16、FAT32 和NTFS
Swap:交换分区,大小取决于物理内存和硬盘空间。一般应大于物理内存,但目前不能超过2GB
一. 文件系统挂载: mount、umount
1.mount命令(手动挂载)
语法:mount [选项] [设备] [挂载点] 例子:mount /dev/sdb /my/usb
功能:将设备挂载到挂载点处,设备是指要挂载的设备名称,挂载点是指文件系统中已经存在的一个目录名。mount命令的选项及其含义见下表。
-t <文件系统> |
-o <选项> |
||
Ext4/xfs |
Linux目前常用的文件系统 |
ro |
以只读方式挂载 |
msdos |
Ms-dos的文件系统,即FAT16 |
rw |
以读写方式挂载 |
vfat |
FAT32 |
Remount |
重新挂载已挂载的设备 |
Iso9660 |
CD-ROM光盘标准文件系统 |
User |
允许一般用户挂载设备 |
ntfs |
NTFS文件系统 |
nouser |
不允许一般用户挂载设备 |
atuo |
自动检测文件系统 |
codepage=xxx |
代码页 |
swap |
交换分区文件系统 |
iocharset=xxx |
字符集 |
实例4-1 文件系统挂载
第1步:使用fdisk命令查看磁盘的分区情况,主要是看设备(如/dev/sda)与文件系统之间的对应关系
第2步:使用mkdir在/mnt/目录下创建挂载点
第3步:使用mount将设备/dev/sdc1(U盘)挂载到/mnt/usb目录下
注意:
(1)Linux会将USB设备识别为第一个没有被硬盘占用的SCSI设备,即如果系统中有一块SCSI硬盘的话(sda),USB会被识别为第2块SCSI设备,即sdb
(2)光盘为/dev/cdrom
2.umount命令
语法:umount [选项] [设备] [挂载点] 举例: umount /my/usb
注意:
(1)卸载时,当前目录不能在挂载点中,既在当前目录是被挂载设备所在目录时,即便没有对该设备读写,也不允许卸载。
(2)在使用umount卸载光驱之前,按下光驱的出仓按钮不会有任何反映。如果卸载时提示设备正忙,表明有进程正在用该光驱,用下列方法卸载:
fuser –m –v /mnt/cdrom //查看哪个进程正在使用光盘
fuser –k /mnt/cdrom //自动杀死占用cdrom的进程
umount /mnt/cdrom //重新卸载
3./etc/fstab文件(系统启动时挂载)
/etc/fstab文件内容如下:
最后一列:用来指定如何使用fsck检查硬盘。如果为0,不检查;挂载点为/,值为1,其他都不能写1。如何有分区些值大于1,则检查完根分区后,接着按填写的数字从小到大依次检查,相同数字的同时检查。
二. 查看磁盘空间:df、du
1.df命令
语法:df [选项] [设备或文件名]
功能:收集或整理当前已经挂载的全部文件系统的一些统计数据。
实例4-2 磁盘空间的查看
其他示例如下:
# df -i //以inode模式来显示磁盘使用情况 # df -t ext3 //显示指定类型磁盘 # df -ia //列出各文件系统的i节点的使用情况 # df -T //列出文件系统的类型 |
2.du(disk usage)命令
语法:du [选项] [Names…]
功能:统计目录(或文件)所占磁盘空间的大小,显示磁盘空间的使用情况
示例如下:
# du -hs Names # du -ha Names //文件和目录都显示 # du -h --max-depth=1 //输出当前目录下各个子目录所使用的空间 # du | sort -nr | less //按照空间大小排序 |
5.3 查看块设备(包括交换分区)的文件系统类型:blkid
语法:blkid [选项] [设备名]
功能:显示当前系统中所以已挂载文件系统的类型
[root@localhost 桌面]# blkid //列出当前系统中所以已挂载文件系统的类型 /dev/sda2: LABEL="rhel7" UUID="50ce223f-a1c2-4b6c-9288-448cb9ed34e8" TYPE="xfs" /dev/sda3: UUID="a7a028b9-1f6f-4261-ab4d-d2333b7de75f" TYPE="ext4" /dev/sda4: UUID="5A54CD0554CCE53B" TYPE="ntfs" /dev/sda5: LABEL="TOOLS" UUID="997E-50D2" TYPE="vfat" /dev/sda6: LABEL="DATA" UUID="E63D-7941" TYPE="vfat" /dev/sda7: LABEL="SCHOOL" UUID="0A27A8791083E690" TYPE="ntfs" /dev/sda8: UUID="904a2335-0e3c-42d2-bc15-2438cea2c044" TYPE="ext3" /dev/sda9: UUID="9f98fd30-78db-475b-b68c-e27ba673bdfc" SEC_TYPE="ext2" TYPE="ext3" /dev/sda12: UUID="59a9499f-4e9a-4d44-b152-03a14db6bc33" TYPE="ext3" /dev/sda13: UUID="8295c378-3cc4-4503-a754-d37d359170eb" TYPE="swap" |
示例如下:
# blkid /dev/sda1 //查看/dev/sda1设备所采用的文件系统类型 # blkid -s UUID /dev/sda5 //显示指定设备UUID # blkid -s UUID //显示所有设备UUID # blkid -s LABEL /dev/sda5 //显示指定设备LABEL # blkid -s LABEL //显示所有设备LABEL # blkid -s TYPE //使用TYPE标签,查看所有设备文件系统 # blkid -o device //显示所有设备 # blkid -o list //以列表方式查看详细信息 |
5.4 实例:安装硬盘和分区
要求:在当前系统增加一张SCSI硬盘,并在其上划分三个主分区,分区1和分区3的文件系统为ext3,分区2为交换分区。
第1步:增加硬盘后用ls查看该设备被系统识别为第几块硬盘。
第2步:使用fdisk建立分区表
语法:
fdisk [选项] <磁盘> //更改分区表
fdisk [选项] -l <磁盘> //列出分区表
fdisk -s <分区> //给出分区大小(块数)
功能:分割硬盘工具,查看硬盘分区信息。
第3步:建立文件系统
(1)使用mkfs建立文件系统xfs
语法:
Mkfs -t [fstype] <分区>
功能:格式化指定的分区。
#mkfs –t xfs /dev/sdb1 //把该设备格式化成xfs文件系统 # mkfs.ext3 /dev/sda4 //把该设备格式化成ext3文件系统 # mkfs.ext4 /dev/sda4 //把该设备格式化成ext4文件系统 # mke2fs -j /dev/sda4 //把该设备格式化成ext3文件系统 # mkfs.reiserfs /dev/sda4 //把该设备格式化成reiserfs文件系统 # mkfs.vfat /dev/sda4 //把该设备格式化成fat32文件系统 # mkfs.msdos /dev/sda4 //把该设备格式化成fat16文件系统 # mkdosfs /dev/sda4 //把该设备格式化成fat16文件系统
#mkfs .xfs –f /dev/sdb1 //把该设备重新格式化成xfs文件系统 |
(2)使用fsck检查文件系统
语法:
fsck [选项] [文件系统]
功能:检查文件系统并尝试修复错误,可同时检查一个或多个文件系统。
文件系统扫描工具有:fsck.ext2、fsck.ext3、fsck.ext4、fsck.xfs、fsck.btrfs、fsck.msdos、fsck.vfat、fsck.fat、fsck.minix、fsck.cramfs、fsck.gfs2。最好根据文件系统来调用不同的扫描工具。
# fsck.xfs -p /dev/sda8 //扫描并自动修复 |
注意:一定要把设备umonut后进行,否则会造成文件系统的损坏。
(3)测试分区
将建立的文件系统挂载到相应的目录下,看是否能正常工作
按同样的方法在分区3建立xfs文件系统
(4)使用mkswap创建并激活交换分区
语法:
mkswap [选项] 设备 [大小]
功能:将磁盘分区或文件设为linux的交换区。
# mkswap /dev/sda8 //创建此分区为swap交换分区 # swapon /dev/sda8 //加载交换分区 # swapoff /dev/sda8 //关闭交换分区 # swapon -s //列出加载的交换分区 |
(5)配置fstab文件
在fstab文件加入下面几行,让系统在启动时自动加载文件系统
/dev/sdb1 /mnt/web xfs defaults 0 2
/dev/sdb3 /mnt/ftp xfs defaults 0 2
/dev/sdb2 swap swap defaults 0 0
(6)重新启动系统
如果某个系统出了问题,系统将不能正常启动,而是引导进行救援模式。按下面步骤解决:
①提供root口令,以root身份登录系统
②使用fsck检查并试图修复受损的文件系统
③如果问题依然存在,运行mkfs重新在分区上建立文件系统
④不太幸运的话,可能要使用fdisk重新建立分区表。
5.5 逻辑卷管理
5.5.1 逻辑卷管理概述
逻辑卷管理器LVM(Logicl Volume Manager),通过使用逻辑卷管理器对硬盘存储设备进行管理,可以实现硬盘空间的动态划分和调整。
5.5.2 逻辑卷管理组成部分
逻辑卷管理由三部分组成:物理卷、卷组、逻辑卷。
物理卷(PV):在逻辑卷管理最底层,可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
卷组(VG):建立在物理卷上,一个卷组中至少包括一个物理卷,在卷组建立后可动态添加物理卷到卷组中。
逻辑卷(LV):建立在卷组之上,卷中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可动态扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
图6-1 逻辑卷管理的组成
5.5.3 实例:在硬盘sda上创建逻辑卷,大小100M,然后把其大小扩展到200M,然后再缩小到150M。
第1步:首先使用fdisk -l和blkid命令确定哪些分区空白
执行fdisk -l命令。下面是笔者电脑上的分区情况,读者一定要根据自己的具体情况判断。
[root@localhost 桌面]# fdisk –l 磁盘 /dev/sda:1000.2 GB, 1000204886016 字节,1953525168 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xf0b1ebb0
设备 Boot Start End Blocks Id System /dev/sda1 110318355 1953520064 921600855 f W95 Ext\'d (LBA) /dev/sda2 69353472 110313471 20480000 83 Linux /dev/sda3 28386855 69352604 20482875 83 Linux /dev/sda4 * 63 28386854 14193396 7 HPFS/NTFS/exFAT /dev/sda5 110318418 171766979 30724281 b W95 FAT32 /dev/sda6 171767043 233215604 30724281 b W95 FAT32 /dev/sda7 233215668 438028289 102406311 7 HPFS/NTFS/exFAT /dev/sda8 438028353 642840974 102406311 83 Linux /dev/sda9 642841038 1052450279 204804621 83 Linux /dev/sda10 1052450343 1462059584 204804621 b W95 FAT32 /dev/sda11 1462059648 1871668889 204804621 b W95 FAT32 /dev/sda12 1871668953 1873725209 1028128+ 83 Linux /dev/sda13 1873725273 1875781529 1028128+ 82 Linux swap / Solaris /dev/sda14 1875781593 1953520064 38869236 b W95 FAT32 |
执行blkid命令。
[root@localhost 桌面]# blkid /dev/sda2: LABEL="rhel7" UUID="50ce223f-a1c2-4b6c-9288-448cb9ed34e8" TYPE="xfs" /dev/sda3: UUID="a7a028b9-1f6f-4261-ab4d-d2333b7de75f" TYPE="ext4" /dev/sda4: UUID="5A54CD0554CCE53B" TYPE="ntfs" /dev/sda5: LABEL="TOOLS" UUID="997E-50D2" TYPE="vfat" /dev/sda6: LABEL="DATA" UUID="E63D-7941" TYPE="vfat" /dev/sda7: LABEL="SCHOOL" UUID="0A27A8791083E690" TYPE="ntfs" /dev/sda8: UUID="904a2335-0e3c-42d2-bc15-2438cea2c044" TYPE="ext3" /dev/sda9: UUID="9f98fd30-78db-475b-b68c-e27ba673bdfc" SEC_TYPE="ext2" TYPE="ext3" /dev/sda12: UUID="59a9499f-4e9a-4d44-b152-03a14db6bc33" TYPE="ext3" /dev/sda13: UUID="8295c378-3cc4-4503-a754-d37d359170eb" TYPE="swap" |
由上可知:/dev/sda10、/dev/sda11、/dev/sda14是空白分区。
第2步:在磁盘分区上建立物理卷
# pvcreate /dev/sda14 //在已经建立好的分区或硬盘上建立物理卷 Physical volume "/dev/sda14" successfully created # pvdisplay | pvs //查看系统中已经创建的物理卷 PV VG Fmt Attr PSize PFree /dev/sda14 lvm2 a-- 37.07g 37.07g |
第3步:使用物理卷建立卷组
# vgcreate MYVG /dev/sda14 //建立卷组,日后可以根据需要添加新的物理卷到已有卷组中 Volume group "MYVG" successfully created # vgdisplay | vgs //查看系统中已经创建的卷组 VG #PV #LV #SN Attr VSize VFree MYVG 1 0 0 wz--n- 37.07g 37.07g |
第4步:在卷组中建立逻辑卷
# lvcreate -L 00M -n mylv1 MYVG //从已有卷组建立逻辑卷,通常只分配部分空间给该逻辑卷 Logical volume "mylv1" created # lvdisplay | lvs //查看系统中已经创建的逻辑卷 LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv1 MYVG -wi-a----- 100.00m |
查看MYVG-mylv1。
[root@localhost 桌面]# fdisk -l 磁盘 /dev/sda:1000.2 GB, 1000204886016 字节,1953525168 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xf0b1ebb0
设备 Boot Start End Blocks Id System /dev/sda1 110318355 1953520064 921600855 f W95 Ext\'d (LBA) …… /dev/sda14 1875781593 1953520064 38869236 b W95 FAT32
磁盘 /dev/mapper/MYVG-mylv1:104 MB, 104857600 字节,204800 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 |
第5步:在逻辑卷上建立文件系统
[root@localhost 桌面]# mkfs.xfs /dev/mapper/MYVG-mylv1 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=67371008 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: 完成 |
第6步:将文件系统挂载到Linux系统的目录树中
[root@localhost 桌面]# mkdir /mnt/lv [root@localhost 桌面]# mount /dev/mapper/MYVG-mylv1 /mnt/lv [root@localhost 桌面]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 20469760 6099580 14370180 30% / devtmpfs 928616 0 928616 0% /dev tmpfs 937488 140 937348 1% /dev/shm tmpfs 937488 9112 928376 1% /run tmpfs 937488 0 937488 0% /sys/fs/cgroup /dev/sda8 99139188 85969004 8033488 92% /opt /dev/sda12 995544 434568 493188 47% /boot /dev/sda6 30709264 6854432 23854832 23% /run/media/root/DATA /dev/loop0 4138442 4138442 0 100% /cdrom/iso /dev/mapper/MYVG-mylv1 95054 1567 86319 2% /mnt/lv [root@localhost 桌面]# |
第7步:将/dev/mapper/MYVG-mylv1扩展到200M
[root@localhost 桌面]# lvextend -L 200M /dev/mapper/MYVG-mylv1 Extending logical volume mylv1 to 200.00 MiB Logical volume mylv1 successfully resized [root@localhost 桌面]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 20469760 6099580 14370180 30% / …… /dev/mapper/MYVG-mylv1 95054 1567 86319 2% /mnt/lv [root@localhost 桌面]# resize2fs /dev/mapper/MYVG-mylv1 //重新设置xfs文件系统大小 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/mapper/MYVG-mylv1 is mounted on /mnt/lv; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mapper/MYVG-mylv1 is now 204800 blocks long. [root@localhost 桌面]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 20469760 6099580 14370180 30% / …… /dev/mapper/MYVG-mylv1 194466 1567 181807 1% /mnt/lv [root@localhost 桌面]# ls /mnt/lv lost+found |
第8步:将/dev/mapper/MYVG-mylv1缩小到150M
# resize2fs /dev/卷组/逻辑卷名 size[KB,M,G] //先缩小ext2/ext3文件系统大小 # e2fsck -f /dev/卷组/逻辑卷名 //再执行上步指令 # lvreduce -L size[KB,M,G] /dev/卷组/逻辑卷名 |
5.5.4 卷组的拉升与清除LVM
1、扩展卷组
(1)创建物理卷
(2)扩展卷组
Vgextend <卷组名> <物理卷名>
2、清除卷组
(1)先卸载逻辑卷
(2)删除逻辑卷 (lvremove <逻辑卷名>)
(3)删除卷组 (vgremove <卷组名>)
(4)删除物理卷 (pvremove <物理卷名>)
(5)删除物理分区
5.6 制作镜像文件:dd
dd命令是一个功能强大的copy命令,支持在拷贝文件的过程中转换文件格式,并且支持指定范围的复制。dd命令的各个参数及其功能见表4-15。
共3步:制作、使用磁盘镜像文件
# dd if=/dev/zero of=/root/disk.img bs=1M count=100 //制作磁盘镜像文件 # mkfs.ext3 /root/disk.img //格式化 # mount -o loop /root/base.img /mnt/img //挂载镜像文件 |
5.7 文件系统的备份与还原:dump、restore
1.dump命令
功能:dump为备份文件系统工具程序,可将目录或整个文件系统备份至指定的设备中。
yum install dump //安装该工具程序
备份分为10级,0:备份级别为完全备份,1级备份会保存自执行0级备份以来更新过的所有文件;2级备份会保存自执行1级备份以来更新过的所有文件,以此类推。
实例:在硬盘sdb的sdb1上创建文件系统ext3,并把其挂载到/mnt/web下,在sdb1上创建一个目录test和一个文件test.txt,然后将其完全备份到/tmp下。过段时间以后,把sdb1上变化的数据进行增量备份
第一步: # dump -0S /dev/sdb1 //完整备份/dev/sdb1前统计一下需多大容量
第二步:#dump -0u -f /tmp/boot.dump /mnt/web //把/dev/sdb1完全备份到/tmp/boot.dump中,并更新/etc/dumpdates数据库文件
第三步:#ls –l /tmp/boot.dump //查看备份的文件boot.dump的属性
第四步:#cat /etc/dumpdates //查看在/etc/dumpdates中备份信息
第五步:#dump –W
//显示需要备份的文件及最后一次备份的层次、时间与日期假如过段时间,sdb1中增加了新的数据,则进行增量备份
#dump -1u –f /tmp/boot1.dump /mnt/web //只备份完全备份后有变化的文件示例如下:
2.restore命令
示例如下:
# restore -t -f boot.dump //用 restore 观察 dump 后的备份数据内容。-t参数是查看的意思,-f是指定要查看的备份文件。通过以上命令,就可以查看备份文件中备份了哪些文件 # restore -C -f /tmp /boot.dump //比较差异并且还原整个文件系统 # restore -i -f /tmp /boot.dump //如果只是一部分数据丢失了,那么可以使用参数-i通过交互方式来实现文件的选择性还原 # restore -r -f /tmp /boot.dump //全部还原
|
5.8 磁盘配额
5.8.1 相关命令:quota、quotacheck、edquota、quotaon、quotaoff
quota要使用的命令有两种:一种用于查询功能,包括quota、quotacheck、quotastats、repquota和warnquota;另一种用于编辑quota的内容,包括edquota和setquota。
1. quota命令
语法:quota [-uvsl] [username] 或 quota [-gvsl] [groupname]
例1:# quota -guvs //显示root用户的quota限制值
例2:# quota -vs -u ztg //显示ztg用户的磁盘配额
2. quotacheck命令
语法:quotacheck [-avug] [/mount_point]
例1:# q 以上是关于Linux磁盘管理的主要内容,如果未能解决你的问题,请参考以下文章