Linux磁盘分区与文件系统
一 Linux磁盘分区与文件系统
在Linux中常见的操作系统有:ext2 ext3 ext4 xfs btrfs reiserfs等
文件系统的作用主要是明确磁盘或分区上的文件存储方法以及数据结构,Linux系统中数据分为元数据区和数据区,元数据区用于表示数据的属主属组,时间戳,访问权限,数据大小以及数据块指针等,每个文件的元数据会使用一个inode来标识。
在数据区中每个数据都会给它分配相应的数据块并通过inode来指向所对应的数据块。为了能够加快对数据块的索引,同时还会创建一个块位图来标识可用的数据块。
为了更加便于管理inode和block,所以就产生了块组的概念。块组是将同一个系统的块分成多个组进行管理,每个组都有独立的block以及inode并使用superblock来标识每个块组。
1 创建一个10G分区,格式化为ext4.块大小为2048,预留空间比%2,卷标Mydata挂载到/data/mydata且禁止程序自动运行并不更新文件访问时间戳
(1)[root@localhost ~]# fdisk /dev/sda 通过fdisk命令在sda上新创建一个10G分区
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (66004992-251658239, default 66004992):
Using default value 66004992
Last sector, +sectors or +size{K,M,G} (66004992-251658239, default 251658239): +10GB
Partition 3 of type Linux and of size 9.3 GiB is set
(2)[root@localhost ~]# partx -a /dev/sda 让内核识别磁盘中的新分区
(3)[root@localhost ~]# mke2fs -b 2048 -m 2 -L mydata -t ext4 /dev/sda3 创建了一个ext4的分区,每个块2k,给管理员预留%2的空间
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=mydata
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
612352 inodes, 4882944 blocks
97658 blocks (2.00%) reserved for the super user 预留给管理员的块数
First data block=0
Maximum filesystem blocks=273678336 总共的块数
299 block groups 总共的块组
16384 blocks per group, 16384 fragments per group 每个块组16384个block
2048 inodes per group 每个块组有2048个inode
Superblock backups stored on blocks: 超级块所在的块组
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,
2048000, 3981312
(4)[root@localhost ~]# mount -t ext4 -o acl,noexec,noatime /dev/sda3 /data/mydata/ 挂载至/data/mydata并且支持acl,禁止程序自动运行以及不更新访问时间戳
(5)[root@localhost ~]# df -h /data/mydata/ 查看挂载后的结果
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 9.2G 13M 8.9G 1% /data/mydata
2 创建一个大小为1G的swap分区
[root@localhost ~]# fdisk /dev/sda 创建一个1G分区并将类型给为82(Linux swap)
Command (m for help): t
Partition number (1-5, default 5): 5
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
[root@localhost ~]# mkswap /dev/sda5 创建为swap分区
mkswap: /dev/sda5: warning: wiping old swap signature.
Setting up swapspace version 1, size = 1048572 KiB
[root@localhost ~]# swapon /dev/sda5 启用该swap分区
二 RAID磁盘阵列
磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。是将多块磁盘接口使用以实现提升IO能力以及冗余的存储方式
RAID的级别:RAID分为6钟不同级别,其中常见的有0,1和5以及10结合使用
RAID 0:0级别又称之为条带,在存储同一个数据时会切分为多个chunk分别存储到不同的设备,可提高IO读写能力但无法提供冗余能力。至少需要两块硬盘,其中一块盘损坏数据就会丢失,可用空间为N*min
RAID 1:1级别又成为镜像,是将同一份数据在2个或多个硬盘硬盘上同时存储多分,可实现对数据的冗余性并且读能力也会略有提升。至少需要两块硬盘可用空间为1*Min
RAID 5: 5级别是通过校验码,多块盘中会有一块盘轮流做校验盘实现冗余以及IO能力的提升,至少使用三块盘,最多只能容错一块盘。可用空间:(N-1)*min
RAID 10: RAID10是将1级别和0级别结合使用,这样既可以提升读写性能又可以实现冗余。先建每组硬盘做成1级别,再将每个磁盘组做成0级别,做多只允许同组里的一块盘损坏,可用空间是N*min/2
使用mdadm模块化工具创建软RAID
1 创建一个10G raid1设置chunk为128有一块空闲盘
[root@localhost ~]# mdadm -C raid1 -c 128 -l 1 -n 2 -x 1 /dev/sda{6,7,8} 创建一个RAID1
[root@localhost ~]# mdadm -D /dev/md/raid1 / 查看RAID信息
/dev/md/raid1:
Version : 1.2
Creation Time : Sat Sep 2 16:19:05 2017
Raid Level : raid1
Array Size : 10477568 (9.99 GiB 10.73 GB)
Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Sep 2 16:21:33 2017
State : clean, resyncing
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Resync Status : 57% complete
Name : localhost.localdomain:raid1 (local to host localhost.localdomain)
UUID : f16b9b94:3c463cab:c2d70272:8d1e3577
Events : 9
Number Major Minor RaidDevice State
0 8 6 0 active sync /dev/sda6
1 8 7 1 active sync /dev/sda7
2 8 8 - spare /dev/sda8
[root@localhost ~]# mdadm -f /dev/md/raid1 /dev/sda6 将其中一块磁盘模拟为坏盘
Number Major Minor RaidDevice State
2 8 8 0 spare rebuilding /dev/sda8
1 8 7 1 active sync /dev/sda7
0 8 6 - faulty /dev/sda6 再次查看时会将备份盘自动添加进去
2 创建一个4G的RIAD5,chunk为256并格式化为ext4文件系统,开机自动挂载至/backup目录
[root@localhost ~]# mdadm -C myraid5 -c 256 -l 5 -n 3 /dev/sda{6,7,8} 创建一个RIAD5 (此前先创建了3个分区,每个分区2GB)
[root@localhost ~]# mke2fs -L raid5 -t ext4 /dev/md/myraid5 将此设备格式化为exit4
LABEL=raid5 /backup ext4 defaults,acl,atime 0 0 编辑/etc/fstab文件实现开机自动挂载
[root@localhost ~]# mount -a 挂载fstab中的分区
[root@localhost ~]# df -h /backup/ 查看该分区
Filesystem Size Used Avail Use% Mounted on
/dev/md127 3.9G 16M 3.7G 1% /backup
三 shell脚本练习
1 列出当前系统上所有的磁盘设备并显示每个磁盘上每个分区的相关信息
#!/bin/bash
disk=`fdisk -l | grep -E -o "^Disk /dev/sd[a-z]" | cut -d" " -f2` 提取出系统上有多少硬盘
echo this system disks list: $disk
for i in $disk; do 通过fdisk命令遍历磁盘每个分区
fdisk -l $i
done
2 接受一个以上的文件路径作为参数,显示每个文件的行数并说明本次为几个文件统计了其行数
#!/bin/bash
if [ $# -lt 1 ]; then
echo "At one more arguments"
exit 1
fi
for i in $*; do
lines=`wc -l $i | cut -d" " -f1 `
echo $i lines:$lines
done
echo files:$#
[root@localhost scrpit]# ./file_lines.sh /etc/fstab /etc/passwd /etc/fuse.conf /etc/fstab
/etc/fstab lines:13
/etc/passwd lines:42
/etc/fuse.conf lines:2
/etc/fstab lines:13
files:4
3 传递两个以上字符串当作用户名,创建这些用户密码通用户名,总结说共创建了几个用户
#!/bin/bash
declare -i sum=0
if [ $# -lt 1 ]; then 判断如果参数小于1就退出
echo "At least one arguments"
exit 1
else
for user in $*; do
[ `echo $user|wc -m` -le 4 ] && echo "Users name at leaset 3 string" && exit 2 如果用户字符小于三个就退出脚本
if ! id $user &> /dev/null; then
useradd $user
echo "$user" | passwd --stdin $user &> /dev/null
let sum++ 每添加一个用户让sum变量加1
else
echo "$user is exist"
fi
done
fi
echo add users:$sum
4 写一个脚本新建20个用户,visitor1-visitor20并计算他们UID和
#!/bin/bash
declare -i uidsum=0
for user in {1..20}; do
id vistor$user &> /dev/null && echo vistor$i is exist && exit 1
useradd vistor$user
uid=`id -u vistor$user`
uidsum=$[$uidsum+$uid]
done
echo uidsum:$uidsum
Linux磁盘分区与文件系统的更多相关文章
- Linux 磁盘分区,文件系统创建、挂载、开机自动挂载和卸载
创建分区 (fdisk): 第一步先在Linux的虚拟机上添加一块硬盘,添加完成后需要重启虚拟机才能够检测识别到新硬盘. 重启系统后可以使用 fdisk -l 命令查看当前所有磁盘分区情况,sdb为我 ...
- Linux磁盘分区,目录树,文件系统的关系(转)
研究了很久,自始至终不能够从三者的区别和联系中找到一个大脑与这些概念之间合适的相处方式.对于基本概念和理论理解不到位,在工作之中会走很多弯路和犯很多错误.今天花一天的时间,终于对三者的区别和联系有了更 ...
- linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例
转自:truemylife.linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例 基本概念: 磁盘.分区.物理卷[物理部分] 卷组[中间部分] 逻辑卷.文件系统[虚拟化后可控制部分] 磁 ...
- <实训|第七天>横扫Linux磁盘分区、软件安装障碍附制作软件仓库
期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...
- 调整Linux磁盘分区的大小的方法
昨天数据入库时,一直报错,说磁盘满了,,df -h 一看,发现/目录下只有50G空间,已使用49G:我的程序和dbss都安装在/目录下,ftp到的数据放在/data下的一个子目录下,分解完的 ...
- Linux磁盘分区与格式化
磁盘分区格式说明 linux分区不同于windows linux下分区标示: 例如:hda1 hd这两个字母表示分区所在的设备类型,hd标示IDE类型硬盘,sd表示SCSI类型硬盘 第三字母a标示硬盘 ...
- Linux 磁盘分区方案简析
Linux 磁盘分区方案简析 by:授客 QQ:1033553122 磁盘分区 任何硬盘在使用前都要进行分区.硬盘的分区有两种类型:主分区和扩展分区.一个硬盘上最多只能有4个主分区,其中一个主分区 ...
- Linux磁盘分区和挂载
Linux磁盘分区和挂载 分区 分区的方式: mbr分区 最多支持4个主分区 系统只能安装到主分区上 扩展分区要占用一个主分区 MBR最大支持2TB,但拥有最好的兼容性 gtp分区 支持无线多个主分区 ...
- (转)linux磁盘分区fdisk分区和parted分区
linux磁盘分区fdisk分区和parted分区 原文:http://www.cnblogs.com/jiu0821/p/5503660.html ~~~~~~~~~~~~~~~~~~~~~~~~~ ...
随机推荐
- C#使用MonoPInvokeCallback,让C直接回调C#函数
Test.mm char* TestMakeCString(NSString *str) { const char* string = [str UTF8String]; if (string == ...
- 【374】Adobe Acrobat 操作技巧
1. 文件内容增减 参考:如何在PDF文件中删除页面 参考:如何旋转.移动.删除和重新编号 PDF 页面 双击PDF文档,并在预览程序中打开它. 如果在其他程序(如Adobe Reader)中打开文档 ...
- springboot配置异常 web页面跳转
第一步 controller中 package cn.itcast.springboot.controller; import org.springframework.stereotype.Contr ...
- js基础-运算符
100 * "20" 字符串转数字 5 * "ss" NAN "ss" 转数字返回NAN 任何数字与NAN +-*/ 都返回NAN 5/N ...
- 微信小程序-获取当前城市位置及再次授权地理位置
微信小程序-获取当前城市位置 1. 获取当前地理位置,可通过wx.getLocation接口,返回经纬度.速度等信息; 注意---它的默认工作机制: 首次进入页面,调用该api,返回用户授权结果,并保 ...
- MyBatis数据库连接的基本使用
MyBatis部分: 本部分内容只主要体现Mybatis的特点. (1)MyBatis是什么? 开源的持久层框架,MyBatis的底层仍然是JDBC (2)编程步骤 step1 Maven项目 pom ...
- c# 用户页面
第一步: 第二步: 第三步: 结果:
- ORA-01578 ORACLE data block corrupted (file # 29, block # 2889087)
BW数据库后台报错如下:F:\oracle\SBP\saptrace\diag\rdbms\sbp\sbp\trace ORA-01578: ORACLE data block corrupted ( ...
- Bdfproxy
基于流量劫持动态注入shellcode 本机IP:192.168.1.113 靶机IP:192.168.1.114 先安装bdfproxy,mitmproxy,backdoor_factory 开启流 ...
- linux安装zookeeper及使用
一.安装条件 想要安装zookeeper,必须先在linux中安装好jdk.安装步骤见: https://www.cnblogs.com/expiator/p/9987351.html 二.下载并解压 ...