存储管理
基础概念
一台服务器有多块硬盘,在/dev下,sd开头为物理设备,vd开头为虚拟设备,以[a..z]来命名不同设备,以[1..]命名不同分区,如sda,sdb1,sdb2,IDE设备则是以hd开头
硬盘的分区分为两种:基本分区和扩展分区,要么4基本分区,要么3基本分区+1扩展,扩展分区必须进行再分区才能使用
常用文件系统:ext4:ext3改进版,支持的存储容量高达1EB,且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。
当硬盘被格式化后,linux会创建一个硬盘地图superblock,记录文件系统的整体信息,包括inode/block的总量、使用量、剩余量、文件系统的格式与相关信息
inode:记录文件属性,一个文件使用一个inode,默认128字节,一个block占4B
block:用于存储数据
swap分区是通过在硬盘中预先划分一定空间,吧内存中暂不常使用的数据临时放在硬盘中,以腾出空间给别的更活跃的程序使用的技术
分区管理命令
lsblk:列出分区
[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 2G 0 disk
└─sdb1 8:17 0 500M 0 part /mnt/sdb1
sr0 11:0 1 918M 0 rom
df
-h:易读
-T:显示文件系统类型
[root@server1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 1.2G 16G 7% /
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 133M 882M 14% /boot
/dev/sdb1 ext4 477M 2.3M 445M 1% /mnt/sdb1
tmpfs tmpfs 98M 0 98M 0% /run/user/0
fdisk:分区管理工具
fdisk 磁盘名
命令(输入 m 获取帮助):m
命令操作
d 删除分区信息
l 列出可用分区类型
m 帮助
n 添加分区
p 打印分区信息
q 不保存退出
t 改变分区类型
w 保存退出
fdisk只是暂时性的,需要保存才会写入
mkfs:建立文件系统
mkfs.系统 分区名
mount/umount:临时挂载、卸载
mount 磁盘 挂载点
-a:挂载所有/etc/fstab中定义的文件系统
-t:指定文件系统类型
umount 磁盘
/etc/fstab:永久挂载
/dev/device mountpoint type rules 0 order
设备 挂载点 文件系统 规则 dump系统备份工具,0表示不备份 fsck检查顺序0不检查
规则:
auto 开机自动挂载
default 按照大多数永久文件系统的缺省值设置挂载定义
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载
挂载磁盘步骤
- 添加磁盘
- fdisk
- mkfs
- mount或者fstab
案例
永久挂载案例
添加磁盘,发现/dev下多了sdb
fdisk /dev/sdb
n
+500
p发现多了sdb1分区
w保存
mkfs.ext4 /dev/sdb1
blkid /dev/sdb1
vim /etc/fstab
UUID="8b838620-0b0d-4f78-b192-ed60958e7df6" /mnt/sdb1 ext4 defaults 0 0
重启后挂在依然存在
swap
[root@server1 ~]# umount /dev/sdb1
[root@server1 ~]# vim /etc/fstab #删除原本的挂载信息
[root@server1 ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
正在设置交换空间版本 1,大小 = 511996 KiB
无标签,UUID=f59a3855-f407-4e0c-a0b8-5b9d8fcf9ff2
[root@server1 ~]# free -h
total used free shared buff/cache available
Mem: 972M 98M 730M 7.6M 143M 710M
Swap: 2.0G 0B 2.0G
[root@server1 ~]# swapon /dev/sdb1
[root@server1 ~]# free -h
total used free shared buff/cache available
Mem: 972M 99M 729M 7.6M 143M 710M
Swap: 2.5G 0B 2.5G
vim /etc/fstab
/dev/sdb1 swap swap defaults 0 0
重启后再用free -h查看,发现多出的0.5g还在
vim /etc/fstab #删除刚才加入的那行
swapoff /dev/sdb1
再次查看已经成功卸载
磁盘容量配额
[root@server1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (1026048-4194303,默认为 1026048):
将使用默认值 1026048
Last 扇区, +扇区 or +size{K,M,G} (1026048-4194303,默认为 4194303):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc6750702
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 1026047 512000 83 Linux
/dev/sdb2 1026048 3123199 1048576 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
# 准备好盘
partprobe #重新读取分区表
[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 2G 0 disk
├─sdb1 8:17 0 500M 0 part [SWAP]
└─sdb2 8:18 0 1G 0 part
sr0 11:0 1 918M 0 rom
# 格式化
[root@server1 ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# 创建挂载点
[root@server1 ~]# cd /mnt
[root@server1 mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 1月 14 10:29 sdb1
[root@server1 mnt]# mkdir tmp
[root@server1 mnt]# mount /dev/sdb2 /mnt/tmp
[root@server1 mnt]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 1.2G 16G 7% /
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 133M 882M 14% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb2 ext4 976M 2.6M 907M 1% /mnt/tmp
# 创建组和指定家目录的用户
[root@server1 mnt]# groupadd usergrp
[root@server1 mnt]# useradd -g usergrp -b /mnt/tmp/ user1
useradd: cannot set SELinux context for home directory /mnt/tmp//user1
[root@server1 mnt]# ^C
[root@server1 mnt]# setenforce 0
[root@server1 mnt]# userdel -r user1
userdel: user1 邮件池 (/var/spool/mail/user1) 未找到
userdel:未找到 user1 的主目录“/mnt/tmp//user1”
[root@server1 mnt]# useradd -g usergrp -b /mnt/tmp/ user1
[root@server1 mnt]# useradd -g usergrp -b /mnt/tmp/ user2
# 查看挂载点是否支持quota,不支持重新挂载
[root@server1 mnt]# mount | grep tmp
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=485792k,nr_inodes=121448,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=99596k,mode=700)
/dev/sdb2 on /mnt/tmp type ext4 (rw,relatime,seclabel,data=ordered)
[root@server1 mnt]# mount -o remount,usrquota,grpquota /mnt/tmp/
[root@server1 mnt]# mount | grep tmp
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=485792k,nr_inodes=121448,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=99596k,mode=700)
/dev/sdb2 on /mnt/tmp type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)
# 确保开机自启quota
[root@server1 mnt]# tail -n 1 /etc/mtab >> /etc/fstab
#安装quota
yum install quota -y
# cd到对应目录
#开启
quotacheck -avug
quotaon -avug
# 配置
edquota -u user1
edquota -p user1 -u user2#复制配置
#修改宽限时间
[root@server1 tmp]# edquota -t
#查看限制情况
[root@server1 tmp]# repquota -as
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20K 0K 0K 2 0 0
user1 -- 16K 245M 293M 4 0 0
user2 -- 16K 0K 0K 4 0 0
## 测试
[root@server1 tmp]# passwd user1
更改用户 user1 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server1 tmp]# su user1
[user1@server1 tmp]$ cd
[user1@server1 user1]$ dd if=/dev/zero of=test1 bs=10M count=20
记录了20+0 的读入
记录了20+0 的写出
209715200字节(210 MB)已复制,1.43965 秒,146 MB/秒
[user1@server1 user1]$ ll
总用量 204800
-rw-r--r--. 1 user1 usergrp 209715200 1月 14 12:57 test1
[user1@server1 user1]$ ll -h
总用量 200M
-rw-r--r--. 1 user1 usergrp 200M 1月 14 12:57 test1
[user1@server1 user1]$ dd if=/dev/zero of=test2 bs=10M count=20
sdb2: warning, user block quota exceeded.
sdb2: write failed, user block limit reached.
dd: 写入"test2" 出错: 超出磁盘限额
记录了10+0 的读入
记录了9+0 的写出
97468416字节(97 MB)已复制,0.970785 秒,100 MB/秒
评论已关闭