UNIX 文件系统中的粘性位是什么?
作为管理员,您将何时以及如何使用它?
我们使用 rsnapshot 进行备份。它保留了备份文件的大量快照,但它确实删除了旧文件。这很好。然而,rm -rf在一个巨大的目录树上做一个大约需要 7 个小时。文件系统是 XFS。我不确定那里有多少个文件,但可能有数百万个。
有没有办法加快速度?是否有任何命令可以执行相同的操作rm -rf并且不需要花费数小时和数小时?
环境:
Windows XP sp3、Windows 2003 服务器
问题:
我们有几十台 kiosk 机器,每台机器都具有相同的登录名,它们偶尔和简短地共享一个文件。速率是几次锁定并释放一分钟。
最近,我们遇到了一个客户端独占锁定文件,然后不释放文件的情况。
发生这种情况时,我们可以关闭文件,但几分钟或更长时间过去了,这是不可接受的中断。
未发布的锁问题在上个月发生了几次。我一直在寻找负责锁定的自助服务终端设备,并在锁定发生时快速检测到它。
我们可以从服务器获得的信息似乎存在差距:
我们可以从各种工具中看到: -
打开和锁定了哪些文件。(多种方式) -
什么登录有一个特定的文件打开或锁定。(多种方式)
- 特定计算机通常打开一个文件。(共享文件夹、会话 mmc)
我们看不到的是特定计算机打开并锁定了特定文件。
有谁知道有什么方法可以做到这一点?
谢谢 -
抢
众所周知,“unix”可以在文件中包含除 '/' 和 '\0' 之外的任何内容,但是系统管理员的偏好要小得多,主要是因为不喜欢空格作为输入...... ':' 和 '@' 等的特殊含义。
最近我看到了另一个案例,在文件名中使用了时间戳,在玩了一些不同的格式以使其“更好”之后,我想我会尝试找到一种“最佳实践”,但没有看到我认为的我只是在这里问一下,看看人们是怎么想的。
可能的“常见”解决方案(p=prefix 和 s=suffix):
syslog/logrotate/DNS 类似格式:
p-%Y%m%d-suffix = prefix-20110719-s
p-%Y%m%d%H%M-suffix = prefix-201107191732-s
p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
ISO-8601-格式
p-%Y-%m-%d-s = p-2011-07-19-s
p-%Y-%m-%dT%H:%M%z-s = p-2011-07-19T17:32-0400-s
p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T17:32:16-0400-s
p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T23:32:16+0200-s
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
RFC-3339 格式
p-%Y-%m-%d-s = p-2011-07-19-s
p-%Y-%m-%d %H:%M%:z-s = p-2011-07-19 17:32-04:00-s
p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 17:32:16-04:00-s
p-%Y-%m-%d %H:%M:%S%:z-s …Run Code Online (Sandbox Code Playgroud)我有一个带有许多 2 TB 磁盘的 Linux 服务器,目前都在一个 LVM 中,导致大约 10 TB 的空间。我在 ext4 分区上使用了所有这些空间,目前有大约 8.8 TB 的数据。
问题是,我的磁盘经常出现错误,即使我更换(也就是说,我用 dd 将旧磁盘复制到新磁盘,然后我将新磁盘放入服务器),一旦出现错误,它们,我经常会收到大约 100 MB 的损坏数据。这使得 e2fsck 每次都变得疯狂,并且通常需要一周时间才能让 ext4 文件系统再次处于正常状态。
所以问题是:您建议我将什么用作 LVM 上的文件系统? 或者你会推荐我做什么(我真的不需要 LVM)?
我的文件系统的配置文件:
主要问题是磁盘故障。我可以丢失一些文件,但我不能同时丢失所有文件。
如果我继续使用 ext4,我听说我最好尝试制作更小的文件系统并以某种方式“合并”它们,但我不知道如何。
我听说 btrfs 会很好,但我找不到任何关于它如何在不复制数据(mkfs.btrfs -d single?)时丢失磁盘的一部分(或整个磁盘)的线索。
欢迎任何有关该问题的建议,提前致谢!
我很好奇是否有人在文件系统和数据库性能之间做过任何实验或比较。在 Linux 上,我想知道 postgres 数据库的最佳文件系统是什么。此外,哪些设置(inode 等)最适合它?根据数据库中的数据,这可能会大不相同吗?
如果您正在寻找有关一般文件系统/数据库性能的问题,这篇文章有一些很好的信息。
但是,我想获得尽可能多的关于插入性能而不是读取性能的建议。感谢所有伟大的答案!
我在大学里买了一台新电脑,当我注意到这台机器的前一个用户ext3只使用了一个巨大的 1TB分区时,我几乎为自己设置了一切。
我通常保持/home在一个单独的分区上,我也更喜欢使用 LVM,所以我决定使用缩小分区resize2fs,然后在我释放的空间中创建我常用的 LVM 内容。(整个硬盘只有30G左右的数据,应该问题不大)。
我使用 live CD 重新启动并要求resize2fs将分区缩小到更合理的大小(50G),它似乎在前一刻钟左右的时间内非常密集地移动数据(从硬盘的噪音判断) .
现在它已经运行了三个多小时,尽管 CPU 使用率为100%,但 HD 几乎听不到任何噪音。
resize2fs出于某种原因在后台进行了一些密集的数字运算,这就是为什么我听不到 HD 发出的噪音?在 Linux 中,我有时会像这样重命名文件:
mv dir1/dir2/dir3/file.txt dir1/dir2/dir3/file.txt.old
Run Code Online (Sandbox Code Playgroud)
请注意,我只想重命名文件,而不是将其移动到另一个目录。
是否有一个命令可以让我执行该命令的速记版本?我在想这样的事情:
mv dir1/dir2/dir3/file.txt file.txt.old
Run Code Online (Sandbox Code Playgroud)
或者甚至是类似的东西(只是附加到名称):
mv dir1/dir2/dir3/file.txt {}.old
Run Code Online (Sandbox Code Playgroud)
我的目标是不必再次指定完整路径。
我知道我写的那些“例子”不起作用,但这只是我想要完成的一个想法。
我不想进入目录。
在我的系统分区上,我有一个无法删除的文件夹。该文件夹是通过从 Acronis TrueImage 备份恢复文件而创建的。
错误消息说:
错误 0x80070570:文件或目录已损坏且无法读取。
我已经多次尝试chkdsk /r /f在启动时运行,但问题仍然存在。
是否有任何其他实用程序或 chkdsk 选项可以尝试解决此问题?
我仍然看到人们sync; sync; sync; sleep 30; halt在谈论关闭或重新启动 Linux 时建议使用咒语。
我从 Linux 开始就一直在运行,虽然这是 BSD 4.2/4.3 和 SunOS 4 天的推荐程序,但我不记得至少在过去的十年里我必须这样做,在此期间我可能经历了 Linux 的关闭/重启可能数千次。
我怀疑这是一个时代错误,因为内核无法卸载和同步根文件系统和其他关键文件系统,即使在单用户模式下(例如 /tmp),因此有必要明确告诉它刷新尽可能多的数据到磁盘。
这些天,还没有在内核源代码中找到相关代码(通过http://lxr.linux.no和 google挖掘),我怀疑内核足够聪明,甚至可以干净地卸载根文件系统,文件系统也足够聪明在正常shutdown/ reboot/期间卸载自身之前有效地执行同步(2)poweorff。
在"sync; sync; sync"其中的文件系统不会卸载干净(如物理磁盘故障)或系统处于这样的状态,只有直接强迫重新启动(8)将它弄出来的冷冻(如负载过只在极端的情况下有必要高以让它安排关闭命令)。
sync在卸载可移动设备之前,我也从未执行过该程序,也从未遇到过问题。
另一个例子 - Xen 允许 DomUshutdown从 Dom0发送命令,这被认为是“干净的关闭”,无需任何人先登录并输入魔法sync; sync; sync。
我是对的还是我幸运地关闭了数千次系统?
filesystems ×10
linux ×4
files ×2
performance ×2
unix ×2
btrfs ×1
corruption ×1
database ×1
ext3 ×1
ext4 ×1
log-files ×1
logrotate ×1
lvm ×1
mv ×1
ntfs ×1
permissions ×1
postgresql ×1
rsnapshot ×1
windows-7 ×1
windows-xp ×1
zfsonlinux ×1