Linux磁盘管理
硬盘分类
机械式硬盘
SSD
机械式:
track
sector:512bytes
cylinder:分区的基本单位;
MBR:Master BootRecord
512bytes
446:bootloader
64:filesystem allocation table
16:标识一个分区
2:55AA
磁盘接口类型:
IDE(ATA):133MB/s,/dev/hd
SCSI:640MB/s
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
识别硬盘设备:/dev/sd
标记不同的硬盘设备:/dev/sd[a-z]
标记同一设备上的不同分区:/dev/sd[a-z][1-]
1-4:主或扩展分区标识
5+:逻辑分区标识
设备文件:特殊文件
设备号:
major,minor
major:设备类型
minor:同一类型下的不同设备
“块”:block,随机设备
“字符”:character,线性设备
GPT
分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;
分区工具:
fdisk,parted, sfdisk
fdisk工具的使用:
最多支持在一块硬盘上的15个分区;
分区管理子命令:
p:显示
n:创建
d:删除
t:修改分区ID
l:列出所有支持ID类型
w:保存退出
q:放弃修改并退出
m:获取帮助
创建完成之后,查看内核是否已经识别新的分区:
#cat /proc/partitions
有三个命令可以让内核重读磁盘分区表:
CentOS5: partprobe [DEVICE]
CentOS6,7:
partx
kpartx
partx命令:
partxDEVICE
partx-a DEVICE
partx-a -n M:N DEVICE
M
M:
:N
kpartx命令:
kpartx-af DEVICE
Linux文件系统管理
文件系统:
VFS:Virtual FileSystem
Linux:ext2, ext3,ext4, reiserfs, xfs, btrfs, swap
光盘:iso9660
Windows:fat32(vfat), ntfs
Unix:ffs, ufs, jfs, jfs2
网络文件系统:nfs,cifs
集群文件系统:ocfs2,gfs2
分布式文件系统:ceph,
moosefs,mogilefs, hdfs, gfs, glusterfs
(1)日志型文件系统
非日志型文件系统:ext2
日志型文件系统:ext3
(2)swap:交换分区
创建文件系统:
在分区上执行格式化(高级格式化)
要使用某种文件系统,满足两个条件:
内核中:支持此种文件系统
用户空间:有文件系统管理工具
创建工具:mkfs(make filesystem)
mkfs-t type DEVICE
mkfs.typeDEVICE
ext系列文件系统的专用管理工具:
mke2fs-t {ext2|ext3|ext4} DEVICE
-bBLOCK: 1024, 2048, 4096
-L'LABEL': 设定卷标
blkid命令:
blkidDEVICE
LABEL,UUID, TYPE
Linux文件系统管理:
mkfs,mkfs -t type = mkfs.type
ext:mke2fs
创建文件系统:
mke2fs[OPTION]... DEVICE
-t {ext2|ext3|ext4}
-b{1024|2048|4096}
-L'LABEL'
-j:mke2fs -t ext3
-i#:
-N#:
-m#: 预留磁盘空间占据多大百分比的空间为后期管理使用;
-OFEATURE[,...]
-O^FEATURE:关闭此特性
has_journal
文件系统属性查看及调整工具:
e2label
e2lableDEVICE [LABEL]
tune2fs
显示ext系列文件系统的属性,或调整其属性;
-l:显示超级块中的信息;显示整个文件的属性及布局等相关信息;
-L'LABEL':修改卷标;
-m#: 调整预留给管理员的管理空间百分比;
-j:ext2 --> ext3
-O:文件系统属性的启动或关闭
-o:文件系统默认挂载选项的启用或关闭
dumpe2fs:
-h:仅显示超级块信息;
文件系统检测:
fsck:Filesystem check
fsck-t type
fsck.type
-a:自动修复错误
-r:交互式修复错误
-f:强制检测
e2fsck:ext系列文件系统专用的检测修复工具;
-y:自动回答为“yes”
-f:force
文件系统的挂载和使用:
kernel--> rootfs(分区)
rootfs分区:
bin,sbin, etc, lib, lib64, dev, tmp, proc, sys
/sbin/init
将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件系统访问入口的行为,称之为挂载;
解除此关联关系的过程:卸载;
挂载点:mountpoint, 设备挂载至目录;
注意:挂载点在挂载在之后,其内部原有的文件会被暂时隐藏;建立使用空目录做为挂载点;
挂载方法:
mount:通过读取/etc/mtab文件来显示当前系统所有已经挂载的设备;
mount-a:挂载/etc/fstab文件中的所有支持自动挂载的文件系统;
mount[options] [-o options] DEVICE MOUNT_POINT
[options]:命令选项
[-ooptions]:挂载选项
DEVICE:要挂载的设备
(1)设备文件:/dev/sda5
(2)卷标:-L 'LABEL'
(3)UUID:-U 'UUID'
(4)伪文件系统名称
MOUNT_POINT:挂载点
常用选项:
-ttype:文件系统类型
-r:以“只读”方式挂载此文件系统
-w:以“读写”方式挂载此文件系统
-n:每个文件系统在挂载时都会自动更新/etc/mtab文件,-n用于禁止此功能;
此时,如果想查看挂载的所有文件系统:cat /proc/mounts
-a:自动挂载所有支持自动挂载的设备;
-B:绑定目录至另一个目录上;
-o挂载选项:
async:异步模式
sync:同步模式
atime/noatime:是否更新访问时间戳;
diratime/nodiratime:是否更新目录的访问时间戳;
auto/noauto:是否允许此设备被自动挂载;
exec/noexec:是否允许执行此文件系统上应用程序;
dev/nodev:是否支持在此设备上使用设备文件;
suid/nosuid:
remount:重新挂载
ro
rw
user/nouser:是否允许普通挂载此设备;
acl:是否支持此设备上使用facl;
defaults:rw, suid,dev, exec, auto, nouser, and async
umount:卸载命令
#umount DEVICE
#umount MOUNT_POINT
查看正在访问指定挂载点的进程:
#fuser -v MOUNT_POINT
终止所有正在访问指定的挂载点的进程:
#fuser -km MOUNT_POINT
交换分区:
free命令:
查看memory和swap的使用状态
-m:以MB为单位
-g:以GB为单位
mkswap:创建交换分区
mkswap[option] DEVICE
-L'LABEL'
swapon:启用交换分区
swapon[option] [DEVICE]
-a:激活所有交换分区
-pPRIORITY: 设定其优先级;
swapoff:禁用交换分区
swapoff[option] [DEVICE]
文件系统等空间占用信息的查看工个:
df:disk free
-h:human-readable
-i:inode数量
-P:以Posix兼容的格式输出
du:disk usage
-h:human-readable
-s:summary
文件系统相关挂载配置文件:/etc/fstab
每行定义一个文件系统;
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
要挂载的设备:
设备文件、LABEL=、UUID=、伪文件系统名称
挂载选项:
defaults
转储频率:
0: 不转储
1: 每天转储
2: 每隔一天转储
自检次序:
0:不自检
1:首先自检,通常只有/才为1
2:
...
文件系统上的链接文件:
硬链接:
两个路径指向同一个inode
不能对目录进行;
不能跨分区进行
指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除;
符号链接:
链接文件的数据指向另一个文件路径;
可以对目录进行;
可以跨分区;
指向的是另一个文件路径;而非inode;
对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;
ln[-s] SRC DEST
-s:symboliclink
-v:verbose
练习:创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录,创建一个4G的交换分区,并挂载使用,要求开机自动挂载。
首先在虚拟机上添加了两块硬盘,分别为20G和100G.
使用fdisk -l命令显示磁盘信息
[root@yy ~]# fdisk –l Disk /dev/sda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054cylinders Units = cylinders of 16065 * 512 = 8225280bytes Sector size (logical/physical): 512 bytes /512 bytes I/O size (minimum/optimal): 512 bytes / 512bytes Disk identifier: 0x000bfe70 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinderboundary. /dev/sda2 64 587 4194304 82 Linux swap / Solaris Partition 2 does not end on cylinderboundary. /dev/sda3 587 13055 100150272 8e Linux LVM Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280bytes Sector size (logical/physical): 512 bytes /512 bytes I/O size (minimum/optimal): 512 bytes / 512bytes Disk identifier: 0x00000000 Disk /dev/sdc: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054cylinders Units = cylinders of 16065 * 512 = 8225280bytes Sector size (logical/physical): 512 bytes /512 bytes I/O size (minimum/optimal): 512 bytes / 512bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg_yy-LogVol00: 102.6 GB,102550732800 bytes 255 heads, 63 sectors/track, 12467cylinders Units = cylinders of 16065 * 512 = 8225280bytes Sector size (logical/physical): 512 bytes /512 bytes I/O size (minimum/optimal): 512 bytes / 512bytes Disk identifier: 0x00000000
找到我们新加的磁盘。设备名为/dev/sdb和/dev/sdc。
执行分区命令
[root@yy ~]# fdisk /dev/sdb
显示帮助信息
Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
按n新建分区
按w保存
再次用fdisk -l命令
[root@yy ~]# fdisk –l
[root@yy ~]# fdisk /dev/sdc
建立一个4G的swap
执行格式命令:
[root@yy ~]# mkfs -t ext4 /dev/sdb1 mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655776 inodes, 2622603 blocks 131130 blocks (5.00%) reserved for thesuper user 第一个数据块=0 Maximum filesystem blocks=2688548864 81 block groups 32768 blocks per group, 32768 fragments pergroup 8096 inodes per group Superblock backups stored on blocks: 32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystemaccounting information: 完成 This filesystem will be automaticallychecked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@yy ~]# mke2fs -t ext4 /dev/sdb5 mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 640848 inodes, 2562359 blocks 128117 blocks (5.00%) reserved for thesuper user 第一个数据块=0 Maximum filesystem blocks=2625634304 79 block groups 32768 blocks per group, 32768 fragments pergroup 8112 inodes per group Superblock backups stored on blocks: 32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystemaccounting information: 完成 This filesystem will be automaticallychecked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 格式化交换分区 [root@yy ~]# mkswap /dev/sdc1 Setting up swapspace version 1, size =4200960 KiB no label,UUID=70b60a91-e1a8-42fd-bcbd-0fa0bbb7f5a6 挂载交换分区 [root@yy ~]# free -m total used free shared buffers cached Mem: 1862 416 1446 0 27 213 -/+ buffers/cache: 175 1686 Swap: 4095 0 4095 [root@yy ~]# [root@yy ~]# [root@yy ~]# swapon /dev/sdc1 [root@yy ~]# free -m total used free shared buffers cached Mem: 1862 419 1443 0 27 213 -/+ buffers/cache: 178 1683 Swap: 8198 0 8198 挂载10G硬盘到/mydata目录 [root@yy ~]# mkdir /mydata [root@yy ~]# mount /dev/sdb1 /mydata [root@yy ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_yy-LogVol00 ext4 94G 3.9G 86G 5% / tmpfs tmpfs 932M 76K 932M 1% /dev/shm /dev/sda1 ext4 477M 42M 410M 10% /boot /dev/sr0 iso9660 3.7G 3.7G 0 100%/media/CentOS_6.7_Final /dev/sdb1 ext4 9.8G 23M 9.3G 1% /mydata
修改/etc/fstab文件,开机自动挂载。
[root@yy ~]# vim /etc/fstab