磁盘管理
- 分区类型 管理分区 管理文件系统 挂载设备 管理虚拟内存swap
主分区4个:3个主分区1个扩展分区-mbr
446byte bootloader
64byte分区表 16byte=1个分区
2byte 55AA
扩展分区
du -Th
[root@localhost ~]# df -Th #查看已挂载信息
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 6.0G 4.0G 2.1G 67% /
fdisk /dev/sda #磁盘操作
m 获取帮助
p 打印分区信息
n 新建分区
t 更改分区类型
d 删除分区
w 写入磁盘
添加磁盘后执行操作(vm)
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
同步分区信息
查看分区
ls /dev/sd*
cat /proc/patitions
lsblk
[root@localhost ~]# partprobe -s
/dev/sda: msdos partitions 1 2 3 4 <5 6>
/dev/sdb: msdos partitions 1 2 3
同步分区信息,查看分区信息
[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6
[root@localhost ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6
[root@localhost ~]# lsblk
sdb 8:16 0 2G 0 disk
├─sdb1 8:17 0 100M 0 part
│ └─lianxi-lianxivg 253:1 0 12M 0 lvm
├─sdb2 8:18 0 100M 0 part
└─sdb3 8:19 0 200M 0 part
sr0 11:0 1 7.2G 0 rom
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
8 16 2097152 sdb
8 17 102400 sdb1
8 18 102400 sdb2
8 19 204800 sdb3
mount 挂载点
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
[root@localhost ~]# partx --h
用法:
partx [-a|-d|-s|-u] [--nr <n:m> | <分区>] <磁盘>
选项:
-a, --add 添加指定的分区或所有分区
-d, --delete 删除指定的分区或所有分区
-s, --show 列出分区
文件系统:
blkid查看硬盘的编号
mkfs -t 指定文件系统类型
选项:
-t, --type=<类型> 文件系统类型;若不指定,将使用 ext2
mkfs.ext4=mkfs -t ext4=mke2fs -t ext4 /dev/sda3
blkid /dev/sda3
/dev/sda3: UUID="7764a875-81f3-45ba-bd25-56ea08eae290" SEC_TYPE="ext2" TYPE="ext3
mke2fs --h
Usage: mke2fs [-c|-l filename]
[-b block-size] 块
[-J journal-options] ext3有日志功能的文件系统
[-m reserved-blocks-percentage] 指定预留空间的百分比
[-o creator-os] 创建文件系统 (has_journal=ext3)
[-g blocks-per-group]
[-L volume-label] 标签
[-t fs-type]
e2label 卷标设置
e2label /dev/sda3 查看label
mkfs.ex4 -L TEST /dev/sda5
[root@localhost ~]# blkid /dev/sda5
/dev/sda5: LABEL="TEST" UUID="e761e88d-f389-403f-80f4-d7861ce1de89" TYPE="ext4"
[root@localhost ~]# e2label /dev/sda5 mydata
[root@localhost ~]# blkid /dev/sda5
/dev/sda5: LABEL="mydata" UUID="e761e88d-f389-403f-80f4-d7861ce1de89" TYPE="ext4"
tune2fs 查看或修改ext系列系统的某些属性 [预留空间等]
[-m reserved_blocks_percent] 预留百分比
[-o [^]mount_options[,...]] 挂选项
[-L volume_label] 标签
-O [^]feature开启或关闭某种特性
开启文件的facl选项
[root@node1 ~]# tune2fs -o acl /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
[root@node1 ~]# tune2fs -l /dev/sdb1 | grep acl
Default mount options: user_xattr acl
dumpe2fs 显示文件系统信息
-h 超级块信息
fsck 文件系统检测
因意外中止或系统崩溃原因导致操作非正常终止的时候可能需要检测并修复
ext系列文件:专用工具
E2FSCK
-p Automatic repair (no questions)
-n Make no changes to the filesystem
-y Assume "yes" to all questions
-c Check for bad blocks and add them to the badblock list
-f 强制检测
fsck
-a 自动修复所有错误
-t 指定文件系统类型
-r 交互式修复
[root@node1 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=10
记录了10+0 的读入
记录了10+0 的写出
10485760字节(10 MB)已复制,0.0207129 秒,506 MB/秒
[root@node1 ~]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
tune2fs: Bad magic number in super-block 当尝试打开 /dev/sdb1 时
找不到有效的文件系统超级块.
[root@node1 ~]# umount /dev/sdb1 #需要取消挂载然后在修复
[root@node1 ~]# fsck -a /dev/sdb1
blkid命令
-L 根据label查找设备
-U 通过uuid进行查找
取出uuid
[root@node1 ~]# sed -rn 's@^UUID=(.*) /boot .*@\1@p' /etc/fstab
a380558e-07c0-4abe-a0b6-9a0d038e86fd
把第一个文件的当做搜素条件-即取交集
f1:1,2,3,4 f2:2,3,4
[root@node1 ~]# grep -f f1 f2
2
3
4
swap文件系统
linux的交换分区必须使用独立的文件系统
且文件系统的systemid 必须是82
mkswap 创建swap设备
swapon 定义在/etc/fstab文件中的所有swap设备
swapoff
[root@localhost ~]# mkswap --h
选项:
-c, --check 创建交换区前检查坏块
-f, --force 允许交换区大于设备大小
-p, --pagesize SIZE 指定页大小为 SIZE 字节
-L, --label LABEL 指定标签为 LABEL
[root@localhost ~]# mkswap /dev/sda5
mkswap: /dev/sda5: warning: wiping old ext4 signature.
正在设置交换空间版本 1,大小 = 9212 KiB
无标签,UUID=0210c3c4-8f06-405f-b981-01bdec7690fc
[root@localhost ~]# blkid /dev/sda5
/dev/sda5: UUID="0210c3c4-8f06-405f-b981-01bdec7690fc" TYPE="swap"
linux和windows都能识别的文件系统vfat32
mkfs.vfat
挂载
mount/umount
根文件系统之外的其他文件系统能够被访问,都必须通过关联到跟文件系统上的某个目录来实现,此关联操作即为挂载目录被称为挂载点
-r 只读挂载
-w 读写挂载
-n 默认情况下设备挂载卸载的操作会同步到/etc/matb的文件中 -n会不同步到文件
-l 使用label卷标挂载
mount -L ccc /mnt
[root@localhost ~]# mount -L ccc /mnt
mount:/dev/sda5 已经挂载到 /mnt 上
注:当挂载点有数据,再次挂载新设备会被覆盖挂载,取消后数据仍在
[root@localhost ~]# mount /dev/sda3 /mnt
[root@localhost ~]# mount
/dev/sda3 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@localhost ~]# lsblk /dev/sda5
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda5 8:5 0 9M 0 part /mnt
cat /etc/mtab 所有的挂载都会被写到 /etc/mtab
/dev/sda5 /mnt ext4 rw,seclabel,relatime,data=ordered 0 0
-o 挂载选项
acl 支持使用facl
remount 重新挂载
ro只读
rw读写
dev/nodev 次设备上是否允许创建设备文件
exec/noexec 是否允许允许设备上的程序文件
auto/noauto 允许自动被挂载
user/nouser 是否允许非管理员挂载文件系统
默认情况下:rw.suid.dev.exec.auto.nouser.async.relatime
ex1: mount -o acl,remount /dev/sda3
/dev/sda3 on /mnt type ext2 (rw,relatime,seclabel)
ex2: tune2fs -o acl /dev/sda3
查看当前系统所有已挂载的设备b --- monut --bind 源目录 目标目录
mount cat /etc/mtab cat /proc/mounts
挂载光盘
mount -r /dev/cdrom /opt
光盘的设备文件 /dev/cdrom /dev/dvd
挂载本地的回环设备
mount -o loop iso文件 /media
1.设备文件,label,uuid,伪文件
2.挂载点
swap类型的设备的挂载点为swap
3.文件系统类型
4.挂载选项
defaults 使用默认挂载选项
如果同时指明多个挂载选项,彼此间已
5.转存频率
0 从不备份
1 每天备份
2 每隔一天
6.自检次序
0 不自检
1 首先自检,通常是/文件系统
2 次级自检
[root@localhost ~]# mount -a
可以自动挂载定义在/etc/fstab文件中的设备
/dev/sda5 /mnt ext4 defaults 0 0
df
-l 只显示本地文件的相关信息
-i 显示inode的使用量
du 文件大小
-s 目录
-h 易读的
inode与文件名的对应关系
删除文件:将文件指向的所有data block 标记为未使用的状态,将inode标记为未使用
移动和复制文件:
1.复制cp
新建一个文件将inode指向新的文件
2.mv
在同一个分区下移动文件只是将文件的路径映射关系修改了
在不同文件系统,则是复制目标文件并删除原文件
[root@localhost ~]# ls -i fstab
34658243 fstab
[root@localhost ~]# ls -i /tmp/fstab
34658243 /tmp/fstab
练习:
1.创建一个10g的分区并格式化为ext4的文件系统
[root@localhost ~]# mkfs -b 2048 -t ext4 -L mydata /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=mydata
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
1.block大小 2048
2.预留空间2%,卷标mydata
3.挂载到/mydata,禁止自动运行,不更新文件的时间戳,开机自动挂载 (/etc/fstab)
make2fs -m 2 -L yydata /dev/sdb1
mount -o noexex /dev/sdb1
2.创建一个大小为1g的swap分区,并且启动
mkswap /ev/sdb1
swap on
实验:
备份mbr和恢复
0.scp mbr /x d到另外一台机器
1.dd if=/dev/sda of=/app/mbr bs=1 count=512
2.rescue mode
3.scp remoteip;/root/mbr /
4.dd if=mbr of=/dev/sda