linux下的磁盘管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux下的磁盘管理

linux下磁盘是按照块(Block)来划分的,相当与windows下的簇的概念,就是一整个磁盘被分成N多个连续的小块,写数据的时候最少要用到一块,如果一块是1k的话即使数据少于1k也要用到1k的数据,如果数据很多个,并且块很大的话,就会造成很大的浪费,所以linux在格式化的时候可以自定义块的大小.有人会问,既然块大了会浪费那么直接默认的最小不好么?块越小,磁盘利用率越高,但是速度就会变慢,因为磁头在读数据的时候要不停的寻找下一个要读取的块,会造成磁盘的负担.在一些场合,例如视频文件服务器,文件比较大,要求速度较高,就可以用到较大的块.

windows 下的NTFS支持最小0.5k的簇,linux的ext3可以有1024/2048/4096(字节)几种块的大小,如果要在大只能编译内核.除了块,还有索引点的概念,分区表中记录的索引点,可以让磁头迅速的找到某个块.

磁盘管理的几个步骤:

磁盘

(fdisk -l)



分区

(fdisk)



格式化

(mkfs -t -c -i -b)



挂载

(mount -o usrquota,grpquota)



卷标

(e2label)



配额

(quota)

现在来说每个步骤的详细操作:



磁盘:

刚添加一块磁盘后并不能使用和挂载,可以用命令fdisk -l,查看当前系统中存在的磁盘和磁盘状态.



分区:

然后用命令fdisk /dev/sdb对磁盘分区.(其中/dev/sdb中sdb是linux的磁盘表示方法,s代表SCSI磁盘,b是代表第2块磁盘,sda就是第一块SCSI磁盘,后面加数字代表的是分区,例如sdb1代表第二块SCSI磁盘上的第一个分区.)

进入fdisk后提示:

输入m会提示fdisk这个模式中命令列表.

Command(m for help):

a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibillity flag
d delete a partition
l list known partition types
m parint this menu
n add anew 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创建新分区,d删除分区,p查看分区情况,w应用并退出,l列出所有支持的分区格式.

输入n,创建一个新分区.
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p

这时候选择p为主分区,e为扩展分区.
我们输入p建立扩展分区。
Partition number (1-4):1
提示输入1-4的编号,这个就是分区的编号(因为分区表只有64B,每个分区要用16B,所以只能有4个主或扩展分区,扩展分区中可以有很多逻辑分区,编号为5以后)
First cylinder (1-512,default 1):
提示输入起始柱面,默认为1,我们直接用容量

来分会更加直观,所以这里直接回车.
Last cylinder or +size or +sizeM or +sizeK(1-512,defaule 512):
然后提示要输入主分区的大小,我们输入+100M,就是100M,可随意,但是要注意加号和M不要少了.
然后同样在次输入n->e(扩展分区)->2然后回车不输入大小,我们把剩余的空间都分到扩展分区中,在扩展分区中在创建逻辑驱动器.
扩展分区创建完后在输入n。
接下来会有一个新的提示l,就是在扩展分区中创建逻辑驱动器,根据个人需要创建几个合适大小的逻辑驱动器.
Command (m for help):n
Command action
l logical (5 or over)
p primary partition (1-4)
最后用w保存并退出fdisk模式.




格式化:

格式化的操作是针对分区而不是整个磁盘,所以要注意命令后带上分区号,如/dev/sdb1.

首先我们将sdb1格式化成ext3格式,执行命令

mkfs -t ext3 /dev/sdb1 也可以简写成 mkfs.ext3 /dev/sdb1

我们把扩展分区中的第一个逻辑驱动器sdb5(因为sdb2是扩展分区,不能直接使用,我们使用的是扩展分区中的逻辑驱动器,编号就是从5开始)格式化成块大小为1024,把sdb6格式化成块大小为4096

mkfs.ext3 -b 1024 /dev/sdb5

mkfs.ext3 -b 4096 /dev/sdb6

在这里也可以指定索引点,用-i实现,默认索引点等于块大小,如果要改变用命令

mkfs.ext3 -b 1024 -i 2048 /dev/sdb1 即可把索引点改为2048(索引点要是块的倍数,块要是扇区的倍数)

mkfs.ext3 -m2 /dev/sdb1 定义保留块为2%(默认为5%的块保留给管理员用来管理)



挂载:

在/mnt/下建立两个文件夹sdb5和sdb6

mkdir /mnt/sdb5;mkdir /mnt/sdb6

然后把/dev/sdb5和/dev/sdb6两个分区分别挂载到两个目录中

mount /dev/sdb5 /mnt/sdb5

mount /dev/sdb6 /mnt/sdb6

如果需要磁盘配额则加上参数-o让分区支持磁盘配额

mount -o usrquota,grpquota /dev/sdb5 /mnt/sdb5

mount -o usrquota,grpquota /dev/sdb6 /mnt/sdb6

如果挂载成功我们用命令mount就会看到在列表中出现了/mnt/sdb5和/mnt/sdb6

要想要此磁盘支持每次启动后生效,需要修改/etc/fstab文件让分区自动挂载并支持磁盘配额.

vi /etc/fstab 打开文件后新加一行

/dev/sdb5 /mnt/sdb5 ext3 defaults,usrquota,grpquota 0 0

/dev/sdb6 /mnt/sdb6 ext3 defaults,usrquota,grpquota 0 0

这样磁盘每次都会自动挂载到/mnt/sdb5和/mnt/sdb6上并支持磁盘配额.



卷标:

我们给/dev/sdb5加上一个卷标study,/dev/sdb6加上一个卷标game

e2label /dev/sdb5 study

e2label /dev/sdb6 game

e2label /dev/sdb5 命令查看sdb5的卷标.



配额:

首先用命令quotacheck检查磁盘并创建磁盘配额文件.

quotacheck -cugv /dev/sdb5 -c为创建 -u为用户 -g为组 -v为显示过程

quotacheck -cugva -a为所有可以使用磁盘配额功能的磁盘创

建配额文件(本例中sdb1不会创

建,因为没有使用 mount -o usrquota,grpquota)

ls /mnt/sdb5 查看会发现多了 quota.grup和er两个文件.

quotaon -a 打开磁盘配额功能.

quotaoff -a 关闭磁盘配额功能.

edquota -u tom 为TOM用户编辑磁盘配额文件,这里可以定义TOM用户可以使用的磁盘空间.

打开后可以看到支持磁盘配额的磁盘列表,前两个blocks 后面的soft和hard是软限制和硬限制磁盘使用空间(k),软限制指在超过软限制后7天内还可以继续写入数据,硬限制为不可以超过这个限制.inodes后面的soft和hard是限制文件数量.修该soft和hard下面的数值,就可以对TOM用户做出限制.

su - tom 从root用户切换到 tom 并在/mnt/sdb5和/mnt/sdb6下建立文件

然后用命令查看磁盘使用情况

quota 会看到已使用的空间,剩余空间,软限制如果超过的话会有提示(*)和天数,还有限制文件数量等信息.



磁盘管理:

tune2fs -l /dev/sdb5 会看到/dev/sdb5磁盘的详细使用情况

inode count:节点号,

Block count:块,

mount count:挂载次数,

Maximum mount count:最大挂载多少次后自检,

Last checked:上次自检时间,

check interval:自检间隔,

Reserved block count 保留块

tune2fs -c <数字> 强制多少次挂载后自检

tune2fs -i <天数> 强制自检天数

tune2fs -m <数字> 保留块的百分比(默认5%)

tune2fs -j 将ext2无损伤转换成ext3





查看块大小和磁盘配额效果实验:
查看块大小:
mkfs.ext3 -b 1024 /dev/sdb5
mkfs.ext3 -b 4096 /dev/sdb6 对两个分区格式化并定义块大小后挂载两个分区到/mnt/sdb5,/mnt/sdb6。
在/mnt/sdb5和/mnt/sdb6中分别创建文件夹dir
mkdir /mnt/sdb5/dir
mkdir /mnt/sdb6/dir
使用命令
echo "hello" >/mnt/sdb5/dir/test
echo "hello" >/mnt/sdb6/dir/test 创建两个文件,这两个文件只包含有"hello"字符,小于1k.使用命令 :
ll -h /mnt/sdb[56]/dir 可以看到sdb5用了1k,而sdb6用了4k 空间
du -h /mnt/sdb[56]/dir 可以看到sdb5用了2k,而sdb6用了8k空间,因为文件夹本身也占用了一个块.

磁盘配额:

首先把sdb5挂载到/mnt/sdb5,并支持磁盘配额(如果已挂需要先卸载)
mount -o usrquota,grpquota /dev/sdb5 /mnt/sdb5 创建一个文件夹test1
mkdir /mnt/sdb5/test1 把文件所有者改为tom 用户
chown tom /mnt/sdb5/test1 建立磁盘配额数据文件
quotacheck -cugv /dev/sdb5 打开磁盘配额功能
quotaon -a 给tom用户设置配额
edquota -u tom 修改tom用户配额文件,


空间限制 soft 1024 hard2048 文件数 soft 2 hard 4
su - tom 切换到tom用户
dd if=/dev/zero of=/mnt/sdb5/test1/file bs=1k count=1024
从/dev/zero生成一个文件/mnt/sdb5/test1/file 共有1024个块,块大小为1k,也就是复制了一个1M的文件file.
用quota查看一下.
Disk quotas for user tom (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 1030* 1024 2048 7days 2 2 4
说明超过了软限制会*提示,在7天只内还可以继续使用,但不能超过硬限制.
再次复制一个1M的文件file1
dd if=/dev/zero of=/mnt/sdb5/test1/file1 bs=1k count=1024
用quota查看
Disk quotas for user tom (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 2048* 1024 2048 3* 2 4 7days
说明文件的大小已达到最大,文件的数量超过了软限制,7天后将不能写入.
再次复制一个1M的文件file2
dd if=/dev/zero of=/mnt/sdb5/test1/file2 bs=1k count=1024
发现生成的只是一个空文件,因为已经没有可以使用的空间了.



相关文档
最新文档