标签 磁盘 下的文章

让我们从坏道和坏块的定义开始说起,它们是一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的。

随着坏道的继续积累,它们会对你的磁盘或闪存容量产生令人不快或破坏性的影响,甚至可能会导致硬件失效。

同时还需要注意的是坏块的存在警示你应该开始考虑买块新磁盘了,或者简单地将坏块标记为不可用。

因此,在这篇文章中,我们通过几个必要的步骤,使用特定的磁盘扫描工具让你能够判断 Linux 磁盘或闪存是否存在坏道。

以下就是步骤:

在 Linux 上使用坏块工具检查坏道

坏块工具可以让用户扫描设备检查坏道或坏块。设备可以是一个磁盘或外置磁盘,由一个如 /dev/sdc 这样的文件代表。

首先,通过超级用户权限执行 fdisk 命令来显示你的所有磁盘或闪存的信息以及它们的分区信息:

$ sudo fdisk -l<br>

列出 Linux 文件系统分区

列出 Linux 文件系统分区

然后用如下命令检查你的 Linux 硬盘上的坏道/坏块:

$ sudo badblocks -v /dev/sda10 > badsectors.txt

在 Linux 上扫描硬盘坏道

在 Linux 上扫描硬盘坏道

上面的命令中,badblocks 扫描设备 /dev/sda10(记得指定你的实际设备),-v 选项让它显示操作的详情。另外,这里使用了输出重定向将操作结果重定向到了文件 badsectors.txt

如果你在你的磁盘上发现任何坏道,卸载磁盘并像下面这样让系统不要将数据写入回报的扇区中。

你需要执行 e2fsck(针对 ext2/ext3/ext4 文件系统)或 fsck 命令,命令中还需要用到 badsectors.txt 文件和设备文件。

-l 选项告诉命令将在指定的文件 badsectors.txt 中列出的扇区号码加入坏块列表。

------------ 针对 for ext2/ext3/ext4 文件系统 ------------
$ sudo e2fsck -l badsectors.txt /dev/sda10

或

------------ 针对其它文件系统 ------------
$ sudo fsck -l badsectors.txt /dev/sda10

在 Linux 上使用 Smartmontools 工具扫描坏道

这个方法对带有 S.M.A.R.T( 自我监控分析报告技术 Self-Monitoring, Analysis and Reporting Technology )系统的现代磁盘(ATA/SATA 和 SCSI/SAS 硬盘以及固态硬盘)更加的可靠和高效。S.M.A.R.T 系统能够帮助检测,报告,以及可能记录它们的健康状况,这样你就可以找出任何可能出现的硬件失效。

你可以使用以下命令安装 smartmontools

------------ 在基于 Debian/Ubuntu 的系统上 ------------
$ sudo apt-get install smartmontools

------------ 在基于 RHEL/CentOS 的系统上 ------------
$ sudo yum install smartmontools

安装完成之后,使用 smartctl 控制磁盘集成的 S.M.A.R.T 系统。你可以这样查看它的手册或帮助:

$ man smartctl
$ smartctl -h

然后执行 smartctrl 命令并在命令中指定你的设备作为参数,以下命令包含了参数 -H--health 以显示 SMART 整体健康自我评估测试结果。

$ sudo smartctl -H /dev/sda10

检查 Linux 硬盘健康

检查 Linux 硬盘健康

上面的结果指出你的硬盘很健康,近期内不大可能发生硬件失效。

要获取磁盘信息总览,使用 -a--all 选项来显示关于磁盘所有的 SMART 信息,-x--xall 来显示所有关于磁盘的 SMART 信息以及非 SMART 信息。

在这个教程中,我们涉及了有关磁盘健康诊断的重要话题,你可以下面的反馈区来分享你的想法或提问,并且记得多回来看看。


via: http://www.tecmint.com/check-linux-hard-disk-bad-sectors-bad-blocks/

作者:Aaron Kili 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一。因此这篇文章会通过使用 Linux 命令,在 CentOS 7 系统上演示一些简单的操作步骤来扩充您的磁盘空间而不需要重启您的生产服务器。关于扩充和增加新的磁盘到 Linux 系统,我们会提及多种方法和多种可行性,可按您所需选择最适用的一种。

1. 在虚拟机客户端扩充磁盘空间:

在为 Linux 系统增加磁盘卷之前,您首先需要添加一块新的物理磁盘,或在 VMware vShere、VMware 工作站以及你使用的其它虚拟环境软件中进行设置来增加一块虚拟磁盘的容量。

Increase disk

2. 检查磁盘空间:

运行如下命令来检查当前磁盘空间大小。

# df -h
# fdisk -l

Fdisk check

可以看到,虽然我们已经在后端给其增加到 50 GB 的空间,但此时的总磁盘大小仍然为 10 GB。

3. 扩展空间而无需重启虚拟机

现在运行如下命令,通过重新扫描 SCSI (注:Small Computer System Interface 小型计算机系统接口)总线并添加 SCSI 设备,系统就可以扩展操作系统的物理卷磁盘空间,而且不需要重启虚拟机。

# ls /sys/class/scsi_host/
# echo "- - -" > /sys/class/scsi_host/host0/scan
# echo "- - -" > /sys/class/scsi_host/host1/scan
# echo "- - -" > /sys/class/scsi_host/host2/scan

使用下面的命令来检查 SCSI 设备的名称,然后重新扫描 SCSI 总线。

# ls /sys/class/scsi_device/
# echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
# echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan

如下图所示,会重新扫描 SCSI 总线,随后我们在虚拟机客户端设置的磁盘大小会正常显示。

Rescan disk device

4. 创建新磁盘分区:

一旦在系统中可以看到扩展的磁盘空间,就可以运行如下命令来格式化您的磁盘以创建一个新的分区。请按如下操作步骤来扩充您的物理磁盘卷。

# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2) press the 'm' key for help
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
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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)

Command (m for help):

键入 'p' 来查看当前的分区表信息,然后键入 'n' 键来创建一个新的主分区,选择所有可用的扇区。 使用 't' 命令改变磁盘类型为 'Linux LVM',然后选择编码 '8e' 或者默认不选,它默认的类型编码为 '83'。

现在输入 'w' 来保存分区表信息并且退出命令环境,如下示:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)

New disk Volume

5. 创建物理卷:

根据上述提示,运行 'partprob' 或 'kpartx' 命令以使分区表生效,然后使用如下的命令来创建新的物理卷。

# partprobe
# pvresize /dev/sda3

要检查新创建的卷,运行如下的命令可以看出新的物理卷是否已经被创建,是否可用。接下来,我们就可以使用这个新的物理卷来扩展 'centos' 卷组了,如下示:

# pvdisplay
# vgextend centos /dev/sda3

Extend volume Group

6. 扩展逻辑卷:

现在我们使用如下的命令扩展逻辑卷,以增加我们系统正使用的磁盘空间。

# lvextend -L +40G /dev/mapper/centos-root

一旦返回增加成功的消息,就可以运行如下命令来扩展您的逻辑卷大小。

# xfs_growfs /dev/mapper/centos-root

'/' 分区的大小已经成功的增加了,可以使用 'df' 命令来检查您磁盘驱动器的大小。如图示。

Increase disk space

7. 通过增加新的磁盘来扩充根分区而不用重启系统:

这是第二种方法,它使用的命令非常简单, 用来增加 CentOS 7 系统上逻辑卷空间大小。

所以第一步是打开您的虚拟机客户端的设置页面,点击 ‘增加’ 按纽,然后继续下一步操作。

Add new disk

选择新磁盘所需要的配置信息,如下图所示的,选择新磁盘的大小和它的类型。

New disk setup

然后进入服务端重复如下的命令来扫描您的磁盘设备,以使新磁盘在系统中可见。

# echo "- - -" > /sys/class/scsi_host/host0/scan
# echo "- - -" > /sys/class/scsi_host/host1/scan
# echo "- - -" > /sys/class/scsi_host/host2/scan

列出您的 SCSI 设备的名称:

# ls /sys/class/scsi_device/
# echo 1 > /sys/class/scsi_device/1\:0\:0\:0/device/rescan
# echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan
# echo 1 > /sys/class/scsi_device/3\:0\:0\:0/device/rescan
# fdisk -l

Scanning new disk

一旦新增的磁盘可见,就可以运行下面的命令来创建新的物理卷,然后增加到卷组,如下示。

# pvcreate /dev/sdb
# vgextend centos /dev/sdb
# vgdisplay

Extending Volume Group

现在根据此磁盘的空间大小来扩展逻辑卷,然后添加到根分区。

# lvextend -L +20G /dev/mapper/centos-root
# xfs_growfs /dev/mapper/centos-root
# df -h

Increase / Partition

结论:

在 Linux CentOS 7 系统上管理磁盘分区的操作过程是非常简单的,可以使用这篇文章所述的操作步骤来扩充您的任意逻辑卷的磁盘空间。您不需要重启生产线上的服务器,只是简单的重扫描下 SCSI 设备,和扩展您想要的 LVM(逻辑卷管理)。我们希望这文章对您有用。请随意的发表有用的评论和建议。


via: http://linoxide.com/linux-how-to/add-new-disk-centos-7-without-rebooting/

作者:Kashif S 译者:runningwater 校对: wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

df 即 “可用磁盘” disk free ,用于显示文件系统的磁盘使用情况。默认情况下 df 命令将以每块 1K 的单位进行显示所有当前已挂载的文件系统,如果你想以人类易读的格式显示 df 命令的输出,像这样“df -h”使用 -h 选项。

在这篇文章中,我们将讨论 df 命令在 Linux 下11种不同的实例。

在 Linux 下 df 命令的基本格式为:

# df {options} {mount_point_of_filesystem}

在 df 命令中可用的选项有:

df 的样例输出 :

[root@linux-world ~]# df
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304 804668  15311852   5% /
devtmpfs                 771876      0    771876   0% /dev
tmpfs                    777928      0    777928   0% /dev/shm
tmpfs                    777928   8532    769396   2% /run
tmpfs                    777928      0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
/dev/sda1                487652  62593    395363  14% /boot
/dev/mapper/vg00-var    9948012  48692   9370936   1% /var
/dev/mapper/vg00-sap   14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例1:使用 -a 选项列出所有文件系统的磁盘使用量

当我们在 df 命令中使用 -a 选项时,它会显示所有文件系统的磁盘使用情况。

[root@linux-world ~]# df -a
Filesystem            1K-blocks   Used Available Use% Mounted on
rootfs                 17003304 804668  15311852   5% /
proc                          0      0         0    - /proc
sysfs                         0      0         0    - /sys
devtmpfs                 771876      0    771876   0% /dev
securityfs                    0      0         0    - /sys/kernel/security
tmpfs                    777928      0    777928   0% /dev/shm
devpts                        0      0         0    - /dev/pts
tmpfs                    777928   8532    769396   2% /run
tmpfs                    777928      0    777928   0% /sys/fs/cgroup
cgroup                        0      0         0    - /sys/fs/cgroup/systemd
pstore                        0      0         0    - /sys/fs/pstore
cgroup                        0      0         0    - /sys/fs/cgroup/cpuset
cgroup                        0      0         0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                        0      0         0    - /sys/fs/cgroup/memory
cgroup                        0      0         0    - /sys/fs/cgroup/devices
cgroup                        0      0         0    - /sys/fs/cgroup/freezer
cgroup                        0      0         0    - /sys/fs/cgroup/net_cls
cgroup                        0      0         0    - /sys/fs/cgroup/blkio
cgroup                        0      0         0    - /sys/fs/cgroup/perf_event
cgroup                        0      0         0    - /sys/fs/cgroup/hugetlb
configfs                      0      0         0    - /sys/kernel/config
/dev/mapper/vg00-root  17003304 804668  15311852   5% /
selinuxfs                     0      0         0    - /sys/fs/selinux
systemd-1                     0      0         0    - /proc/sys/fs/binfmt_misc
debugfs                       0      0         0    - /sys/kernel/debug
hugetlbfs                     0      0         0    - /dev/hugepages
mqueue                        0      0         0    - /dev/mqueue
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
/dev/sda1                487652  62593    395363  14% /boot
/dev/mapper/vg00-var    9948012  48692   9370936   1% /var
/dev/mapper/vg00-sap   14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例2:以人类易读的格式显示 df 命令的输出

在 df 命令中使用-h选项,以人类易读的格式输出(例如,5K,500M 及 5G)

[root@linux-world ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root   17G  786M   15G   5% /
devtmpfs               754M     0  754M   0% /dev
tmpfs                  760M     0  760M   0% /dev/shm
tmpfs                  760M  8.4M  752M   2% /run
tmpfs                  760M     0  760M   0% /sys/fs/cgroup
/dev/mapper/vg00-home   15G   41M   14G   1% /home
/dev/sda1              477M   62M  387M  14% /boot
/dev/mapper/vg00-var   9.5G   48M  9.0G   1% /var
/dev/mapper/vg00-sap    15G   37M   14G   1% /sap
[root@linux-world ~]#

例3:显示特定文件系统已使用的空间

假如我们想显示 /sap 文件系统空间的使用情况。

[root@linux-world ~]# df -h /sap/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-sap   15G   37M   14G   1% /sap
[root@linux-world ~]#

例4:输出所有已挂载文件系统的类型

-T 选项用在 df 命令中用来显示文件系统的类型。

[root@linux-world ~]# df -T
Filesystem            Type     1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root ext4      17003304 804668  15311852   5% /
devtmpfs              devtmpfs    771876      0    771876   0% /dev
tmpfs                 tmpfs       777928      0    777928   0% /dev/shm
tmpfs                 tmpfs       777928   8532    769396   2% /run
tmpfs                 tmpfs       777928      0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home ext4      14987616  41000  14162232   1% /home
/dev/sda1             ext3        487652  62593    395363  14% /boot
/dev/mapper/vg00-var  ext3       9948012  48696   9370932   1% /var
/dev/mapper/vg00-sap  ext3      14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例5:按块大小输出文件系统磁盘使用情况

[root@linux-world ~]# df -k
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304 804668  15311852   5% /
devtmpfs                 771876      0    771876   0% /dev
tmpfs                    777928      0    777928   0% /dev/shm
tmpfs                    777928   8532    769396   2% /run
tmpfs                    777928      0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
/dev/sda1                487652  62593    395363  14% /boot
/dev/mapper/vg00-var    9948012  48696   9370932   1% /var
/dev/mapper/vg00-sap   14987656  37636  14165636   1% /sap
[root@linux-world ~]#

例6:输出文件系统的 inode 信息

-i 选项用在 df 命令用于显示文件系统的 inode 信息。

所有文件系统的 inode 信息:

[root@linux-world ~]# df -i
Filesystem             Inodes IUsed   IFree IUse% Mounted on
/dev/mapper/vg00-root 1089536 22031 1067505    3% /
devtmpfs               192969   357  192612    1% /dev
tmpfs                  194482     1  194481    1% /dev/shm
tmpfs                  194482   420  194062    1% /run
tmpfs                  194482    13  194469    1% /sys/fs/cgroup
/dev/mapper/vg00-home  960992    15  960977    1% /home
/dev/sda1              128016   337  127679    1% /boot
/dev/mapper/vg00-var   640848  1235  639613    1% /var
/dev/mapper/vg00-sap   960992    11  960981    1% /sap
[root@linux-world ~]#

特定文件系统的 inode 信息:

[root@linux-world ~]# df -i /sap/
Filesystem           Inodes IUsed  IFree IUse% Mounted on
/dev/mapper/vg00-sap 960992    11 960981    1% /sap
[root@linux-world ~]#

例7:输出所有文件系统使用情况汇总

-total 选项在 df 命令中用于显示所有文件系统的磁盘使用情况汇总。

[root@linux-world ~]# df -h --total
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root   17G  786M   15G   5% /
devtmpfs               754M     0  754M   0% /dev
tmpfs                  760M     0  760M   0% /dev/shm
tmpfs                  760M  8.4M  752M   2% /run
tmpfs                  760M     0  760M   0% /sys/fs/cgroup
/dev/mapper/vg00-home   15G   41M   14G   1% /home
/dev/sda1              477M   62M  387M  14% /boot
/dev/mapper/vg00-var   9.5G   48M  9.0G   1% /var
/dev/mapper/vg00-sap    15G   37M   14G   1% /sap
total                   58G  980M   54G   2% -
[root@linux-world ~]#

例8:只打印本地文件系统磁盘的使用情况

假设网络文件系统也挂载在 Linux 上,但我们只想显示本地文件系统的信息,这可以通过使用 df 命令的 -l 选项来实现。

只打印本地文件系统:

[root@linux-world ~]# df -Thl
Filesystem            Type      Size  Used Avail Use% Mounted on
/dev/mapper/vg00-root ext4       17G  791M   15G   6% /
devtmpfs              devtmpfs  754M     0  754M   0% /dev
tmpfs                 tmpfs     760M     0  760M   0% /dev/shm
tmpfs                 tmpfs     760M  8.4M  752M   2% /run
tmpfs                 tmpfs     760M     0  760M   0% /sys/fs/cgroup
/dev/mapper/vg00-home ext4       15G   41M   14G   1% /home
/dev/sda1             ext3      477M   62M  387M  14% /boot
/dev/mapper/vg00-var  ext3      9.5G  105M  8.9G   2% /var
/dev/mapper/vg00-sap  ext3       15G   37M   14G   1% /sap
[root@linux-world ~]#

例9:打印特定文件系统类型的磁盘使用情况

-t 选项在 df 命令中用来打印特定文件系统类型的信息,用 -t 指定文件系统的类型,如下所示:

对于 ext4 :

[root@linux-world ~]# df -t ext4
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304 809492  15307028   6% /
/dev/mapper/vg00-home  14987616  41000  14162232   1% /home
[root@linux-world ~]#

对于 nfs4 :

[root@linux-world ~]# df -t nfs4
Filesystem            1K-blocks      Used Available Use% Mounted on
192.168.1.5:/opensuse 301545472 266833920  19371008  94% /data
[root@linux-world ~]#

例10:使用 -x 选项排除特定的文件系统类型

-x–exclude-type 在 df 命令中用来在输出中排出某些文件系统类型。

假设我们想打印除 ext3 外所有的文件系统。

[root@linux-world ~]# df -x ext3
Filesystem            1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg00-root  17003304    809492  15307028   6% /
devtmpfs                 771876         0    771876   0% /dev
tmpfs                    777928         0    777928   0% /dev/shm
tmpfs                    777928      8540    769388   2% /run
tmpfs                    777928         0    777928   0% /sys/fs/cgroup
/dev/mapper/vg00-home  14987616     41000  14162232   1% /home
192.168.1.5:/opensuse 301545472 266834944  19369984  94% /data
[root@linux-world ~]#

例11:在 df 命令的输出中只打印特定的字段

-output={field_name1,field_name2...} 选项用于显示 df 命令某些字段的输出。

可用的字段名有: source, fstype, itotal, iused, iavail, ipcent, size, used, avail, pcenttarget

[root@linux-world ~]# df --output=fstype,size,iused
Type     1K-blocks  IUsed
ext4      17003304  22275
devtmpfs    771876    357
tmpfs       777928      1
tmpfs       777928    423
tmpfs       777928     13
ext4      14987616     15
ext3        487652    337
ext3       9948012   1373
ext3      14987656     11
nfs4     301545472 451099
[root@linux-world ~]#

via: http://www.linuxtechi.com/11-df-command-examples-in-linux/

作者:Pradeep Kumar 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

有一个神话是 linux 的磁盘从来不需要整理碎片。在大多数情况下这是真的,大多数因为是使用的是优秀的日志文件系统(ext3、4等等)来处理文件系统。然而,在一些特殊情况下,碎片仍旧会产生。如果正巧发生在你身上,解决方法很简单。

什么是磁盘碎片

文件系统会按块更新文件,如果这些块没有连成一整块而是分布在磁盘的各个角落中时,就会形成磁盘碎片。这对于 FAT 和 FAT32 文件系统而言是这样的。在 NTFS 中这种情况有所减轻,但在 Linux(extX)中却几乎不会发生。下面是原因:

在像 FAT 和 FAT32 这类文件系统中,文件紧挨着写入到磁盘中。文件之间没有空间来用于增长或者更新:

NTFS 中在文件之间保留了一些空间,因此有空间进行增长。但因块之间的空间是有限的,碎片也会随着时间出现。

Linux 的日志型文件系统采用了一个不同的方案。与文件相互挨着不同,每个文件分布在磁盘的各处,每个文件之间留下了大量的剩余空间。这就给文件更新和增长留下了很大的空间,碎片很少会发生。

此外,碎片一旦出现了,大多数 Linux 文件系统会尝试将文件和块重新连续起来。

Linux 中的磁盘整理

除非你用的是一个很小的硬盘或者空间不够了,不然 Linux 很少会需要磁盘整理。一些可能需要磁盘整理的情况包括:

  • 如果你编辑的是大型视频文件或者 RAW 照片,但磁盘空间有限
  • 如果你使用一个老式硬件,如旧笔记本,你的硬盘会很小
  • 如果你的磁盘开始满了(大约使用了85%)
  • 如果你的家目录中有许多小分区

最好的解决方案是购买一个大硬盘。如果不可能,磁盘碎片整理就很有用了。

如何检查碎片

fsck 命令会为你做这个,换句话说,如果你可以在 LiveCD 中运行它,那么就可以用于所有卸载的分区

这一点很重要:在已经挂载的分区中运行 fsck 将会严重危害到你的数据和磁盘

你已经被警告过了。开始之前,先做一个完整的备份。

免责声明: 本文的作者与本站将不会对您的文件、数据、系统或者其他损害负责。你需要自己承担风险。如果你继续,你需要接受并了解这点。

你应该启动到一个 live 会话中(如使用安装磁盘,系统救援CD等)并在你卸载的分区上运行 fsck 。要检查是否有任何问题,请在使用 root 权限运行下面的命令:

fsck -fn [/path/to/your/partition]

您可以运行以下命令找到分区的路径

sudo fdisk -l

有一个在已挂载的分区中运行 fsck(相对)安全的方法是使用-n开关。这会对分区进行只读文件系统检查,而不会写入任何东西。当然,这并不能保证十分安全,你应该在创建备份之后进行。在 ext3 中,运行

sudo fsck.ext3 -fn /path/to/your/partition

这会产生大量的输出,大多数错误信息的原因是分区已经挂载了。最后会给出一个碎片相关的信息。

如果碎片率大于 20% 了,那么你应该开始整理你的磁盘碎片了。

如何简单地在 Linux 中整理碎片

你要做的是备份你所有的文件和数据到另外一块硬盘中(手动复制他们),格式化分区,然后重新复制回去(不要使用备份软件)。日志型文件系统会把它们作为新的文件,并将它们整齐地放置到磁盘中而不产生碎片。

要备份你的文件,运行

cp -afv [/path/to/source/partition]/* [/path/to/destination/folder]

记住星号(*)是很重要的。

注意:通常认为复制大文件或者大量文件,使用 dd 或许是最好的。这是一个非常底层的操作,它会复制一切,包含空闲的空间甚至是留下的垃圾。这不是我们想要的,因此这里最好使用 cp

现在你只需要删除源文件。

sudo rm -rf [/path/to/source/partition]/*

可选:你可以使用如下命令将空闲空间用零填充。也可以用格式化来达到这点,但是如果你并没有复制整个分区而仅仅是复制大文件(它通常会形成碎片)的话,就不应该使用格式化的方法了。

sudo dd if=/dev/zero of=[/path/to/source/partition]/temp-zero.txt

等待它结束。你可以用 pv 来监测进度。

sudo apt-get install pv
sudo pv -tpreb | of=[/path/to/source/partition]/temp-zero.txt

这就完成了,只要删除这个用于填充的临时文件就行。

sudo rm [/path/to/source/partition]/temp-zero.txt

待你清零了空闲空间(或者跳过了这步)。重新复制回文件,将第一个cp命令翻转一下:

cp -afv [/path/to/original/destination/folder]/* [/path/to/original/source/partition]

使用 e4defrag

如果你想要简单的方法,安装 e2fsprogs

sudo apt-get install e2fsprogs

用 root 权限在分区中运行 e4defrag。如果你不想或不能卸载该分区,你可以使用它的挂载点而不是路径。要整理整个系统的碎片,运行:

sudo e4defrag  /

在挂载的情况下不保证成功(你也应该在它运行时不要使用你的系统),但是它比复制全部文件再重新复制回来简单多了。

总结

linux 系统中由于它的日志型文件系统有效的数据处理很少会出现碎片。如果你因任何原因产生了碎片,简单的方法是重新分配你的磁盘,如复制出去所有文件并复制回来,或者使用e4defrag。然而重要的是保证你数据的安全,因此在进行任何可能影响你全部或者大多数文件的操作之前,确保你的文件已经被备份到了另外一个安全的地方去了。


via: https://www.maketecheasier.com/defragment-linux/

作者:Attila Orosz 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通常在你在虚拟机中添加一块新硬盘时,你可能会看到新硬盘没有自动加载。这是因为连接到硬盘的SCSI总线需要重新扫描来使得新硬盘可见。这里有一个简单的命令来重新扫描SCSI总线和SCSI设备。下面这几步在CentOS 7 和RHEL 7 中测试过。

  1. 在ESXi或者vCenter中添加一块新的20G硬盘:

  1. 显示当前磁盘分区:
[root@centos7 ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0006b96a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    62914559    30944256   8e  Linux LVM

Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-root: 29.5 GB, 29536288768 bytes, 57688064 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
  1. 确定主机总线号
[root@centos7 ~]# ls /sys/class/scsi_host/
host0  host1  host2
  1. 重新扫描SCSI总线来添加设备
[root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
  1. 验证磁盘和分区并确保20GB硬盘已经添加了。在本例中,出现了下面这行 “Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors” 并且可以确认没有重启服务器就添加了新盘:
[root@centos7 ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0006b96a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    62914559    30944256   8e  Linux LVM

Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-root: 29.5 GB, 29536288768 bytes, 57688064 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

via: http://www.ehowstuff.com/how-to-add-a-new-hard-disk-without-rebooting-on-centos-7-rhel-7/

作者:skytech 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

简介

对我们来说,磁盘被装满是棘手问题之一。无论我们如何小心谨慎,我们总可能将相同的文件复制到多个不同的地方,或者在不知情的情况下,重复下载了同一个文件。因此,迟早你会看到“磁盘已满”的错误提示,若此时我们确实需要一些磁盘空间来存储重要数据,以上情形无疑是最糟糕的。假如你确信自己的系统中有重复文件,那么 dupeGuru 可能会帮助到你。

dupeGuru 团队也开发了名为 dupeGuru 音乐版 的应用来移除重复的音乐文件,和名为 dupeGuru 图片版 的应用来移除重复的图片文件。

1. dupeGuru (标准版)

需要告诉那些不熟悉 dupeGuru 的人,它是一个免费、开源、跨平台的应用,其用途是在系统中查找和移除重复文件。它可以在 Linux, Windows, 和 Mac OS X 等平台下使用。通过使用一个快速的模糊匹配算法,它可以在几分钟内找到重复文件。同时,你还可以调整 dupeGuru 使它去精确查找特定文件类型的重复文件,以及从你想删除的文件中,清除某种文件。它支持英语、 法语、 德语、 中文 (简体)、 捷克语、 意大利语、亚美尼亚语、俄语、乌克兰语、巴西语和越南语。

在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru

dupeGuru 开发者已经构建了一个 Ubuntu PPA (Personal Package Archives)来简化安装过程。想要安装 dupeGuru,依次在终端中键入以下命令:

sudo apt-add-repository ppa:hsoft/ppa
sudo apt-get update
sudo apt-get install dupeguru-se

使用

使用非常简单,可从 Unity 面板或菜单中启动 dupeGuru。

点击位于底部的 + 按钮来添加你想扫描的文件目录。点击 扫描 按钮开始查找重复文件。

一旦所选目录中含有重复文件,那么它将在窗口中展示重复文件。正如你所看到的,在下面的截图中,我的下载目录中有一个重复文件。

现在,你可以决定下一步如何操作。你可以删除这个重复的文件,或者对它进行重命名,抑或是 复制/移动 到另一个位置。为此,选定该重复文件,或在菜单栏中选定写有“仅显示重复”选项 ,如果你选择了“仅显示重复”选项,则只有重复文件在窗口中可见,这样你便可以轻松选择并删除这些文件。点击“操作”下拉菜单,最后选择你将执行的操作。在这里,我只想删除重复文件,所以我选择了“移动标记文件到垃圾箱”这个选项。

接着,点击“继续”选项来移除重复文件。

2. dupeGuru 音乐版

dupeGuru 音乐版 或简称 dupeGuru ME,它的功能与 dupeGuru 类似。它拥有 dupeGuru 的所有功能,但它包含更多的信息列 (如比特率,持续时间,标签等)和更多的扫描类型(如带有字段的文件名,标签以及音频内容)。和 dupeGuru 一样,dupeGuru ME 也运行在 Linux、Windows 和 Mac OS X 中。

它支持众多的格式,诸如 MP3、WMA、AAC (iTunes 格式)、OGG、FLAC,以及失真率较少的 AAC 和 WMA 格式等。

在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru ME

现在,我们不必再添加任何 PPA,因为在前面的步骤中,我们已经进行了添加。所以在终端中键入以下命令来安装它:

sudo apt-get install dupeguru-me

使用

你可以从 Unity 面板或菜单中启动它。dupeGuru ME 的使用方法、操作界面以及外观和正常的 dupeGuru 类似。添加你想扫描的目录并选择你想执行的操作。重复的音乐文件就会被删除。

3. dupeGuru 图片版

dupeGuru 图片版,或简称为 duepGuru PE,是一个在你的电脑中查找重复图片的工具。它和 dupeGuru 类似,但独具匹配重复图片的功能。dupeGuru PE 可运行在 Linux、Windows 和 Mac OS X 中。

dupeGuru PE 支持 JPG、PNG、TIFF、GIF 和 BMP 等图片格式。所有的这些格式可以被同时比较。Mac OS X 版的 dupeGuru PE 还支持 PSD 和 RAW (CR2 和 NEF) 格式。

在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru PE

由于我们已经添加了 PPA,我们也不必为 dupeGuru PE 再次添加。只需运行如下命令来安装它。

sudo apt-get install dupeguru-pe

使用

就使用方法,操作界面和外观而言,它与 dupeGuru,dupeGuru ME 类似。我就纳闷为什么开发者为不同的类别开发了不同的版本。我想如果开发一个结合以上三个版本功能的应用,或许会更好。

启动它,添加你想扫描的目录,并选择你想执行的操作。就这样,你的重复文件将被清除。

如果因为任何的安全问题而不能移除某些重复文件,请记下这些文件的位置,通过终端或文件管理器来手动删除它们。

欢呼吧!


via: http://www.unixmen.com/dupeguru-find-remove-duplicate-files-instantly-hard-drive/

作者:SK 译者:FSSlc 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出