Замена нескольких строк с другим набором нескольких строк становится грязной, если Вы хотите использовать стандартную обработку параметра. Обычно, команды берут ряд атомарных параметров и затем ряда атомарных аргументов, и последовательность не имеет значения кроме этого, аргументы прибывают после параметров (разделенный --
если неоднозначный). Как Вы создали бы резюме в этом случае?
Вот простая функция, которая должна сделать задание для простых замен:
$ trs() {
local string=$1
shift
for replacement in "$@"
do
string="$(sed -e "s/$replacement/g" <<< "$string")"
done
printf "$string"
}
$ trs '1 2 3' '1/foo' '2 3/bar baz'
foo bar baz
Кроме того, Вы могли работать с парами параметров:
$ trs() {
local string=$1
shift
while [ $# -gt 0 ]
do
string="$(sed -e "s/$1/$2/g" <<< "$string")"
shift 2
done
printf "$string"
}
$ trs '1 2 3' 1 foo '2 3' 'bar baz'
foo bar baz
Можно использовать lvm для этого. Это было разработано для разделения физического диска от логического диска.
С lvm Вы можете:
Добавьте свежий новый физический диск к пулу (названный Volume Group в терминологии LVM)
pvcreate/dev/sdb my_vg
Расширьте пространство логического тома
lvextend...
И закончите с онлайн, изменяют размер Вашей файловой системы
e2resize/mnt/my/path
Но остерегайтесь, это не чудодейственное средство. Это намного больше тяжелее для сокращения файловой системы, даже с LVM.
Можно интересоваться UnionFS. Может быть более просто установить в существующей системе, чем LVM.
От страницы UnionFS, http://www.filesystems.org/project-unionfs.html:
Этот проект создает наращиваемую файловую систему объединения, которая, может казаться, объединяет содержание нескольких каталогов (ответвления) при разделении их физического содержания. Unionfs полезен для объединенного исходного управления деревом, объединенного содержания CD-ROM разделения, объединенных отдельных каталогов пакета программного обеспечения, сеток данных, и т.д.
Я надеюсь, что Вы находите это полезным.
Ответ LVM является хорошим, но набег может сделать это также, таким образом добавив другого.
Набег программного обеспечения Linux (mdadm) действительно позволяет добавлять диски к массиву, это уже создается. Когда Вы сделаете это восстановит равновесие данных на новый диск.
Если Вы не интересуетесь дублированием, можно использовать набег 0, который просто чередует данные равномерно через все диски.
Однако совершите рейд на 5 предложений по крайней мере некоторое дублирование, не теряя много устройства хранения данных (Вы жертвуете ценностью одного диска).
Но после этих слов набег работает лучше всего, когда все диски являются тем же размером. Если они не будут тем же размером, то части диска будут не использованы, поскольку он будет только использовать столько же сколько самый маленький диск. Если я вспоминаю правильно, выход LVM не имеет этой проблемы, как будто диски не являются тем же размером, дополнительное пространство просто, привычка чередуется.
Вы можете использовать MHDDFS вместо LVM, как если бы один диск не удался, то будут потеряны только данные на этом диске. Он работает на пространстве пользователя, используя модули предохранителей, но я использую его для очень тяжелой инфраструктуры нагрузки
[root@storagenode1 ~]# df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/sdl2 259G 2.1G 244G 1% /
tmpfs 48G 0 48G 0% /dev/shm
/dev/sdl1 485M 30M 430M 7% /boot
/dev/sda1 24T 23T 1.4T 95% /mnt/disk01
/dev/sdg1 24T 22T 2.6T 90% /mnt/disk02
/dev/sdf1 24T 22T 2.6T 90% /mnt/disk03
/dev/sdb1 24T 20T 4.5T 82% /mnt/disk04
/dev/sde1 39T 30T 8.3T 79% /mnt/disk07
/dev/sdh1 28T 6.6T 21T 24% /mnt/disk08
/dev/sdj1 39T 32T 6.5T 84% /mnt/disk09
/dev/sdi1 20T 792G 19T 5% /mnt/disk10
/mnt/disk01;/mnt/disk02;/mnt/disk03;/mnt/disk04;/mnt/disk07;/mnt/disk08;/mnt/disk09;/mnt/disk10
218T 153T 65T 71% /mnt/disk99
Это - это главный веб-сайт разработчика, и Здесь Вы можете загрузить пакеты для Centos6, так как я делаю
VIM / ETC / FSTAB Добавьте эту строку
mhddfs#/mnt/disk01,/mnt/disk02,/mnt/disk03,/mnt/disk04,/mnt/disk07,/mnt/disk08,/mnt/disk09,/mnt/disk10 /mnt/disk99 fuse defaults,allow_other,mlimit=10%,nonempty,logfile=/dev/null,loglevel=2 0 0
Предупреждение : В моем случае [11777744]: В моем случае с тяжелой нагрузкой MHDDFS был размером логики и разбил сервер Много раз, поэтому я использую / dev / null для ведения журнала. Я не мог заставить Logrotate работать с MHDDFS, потому что вам нужно перемещать, когда вы меняете логики.
Is there a way to mount multiple hard drives to a single mount point?
Вероятно, не так, как вам хотелось бы. Вы можете делать всевозможные забавные вещи , но это не решает проблему, которую вы пытаетесь решить.
Let's say I run out of space on /home and decide to add an extra hard drive to the computer. How do I scale the space on a mount point?
Одним из подходов могут быть следующие шаги:
добавить один или несколько новых дисков на ваш компьютер
отформатируйте новый LVM (, вероятно, в ext4 или xfs)
установить на временное место (бывший:/dev/tmp
)
скопировать содержимое /home
в новый lvm(/dev/tmp
)с помощью rsync
илиcp
выполнить "обмен" (отключить старый диск в /home
, отключить новый диск в /dev/tmp
и смонтировать новый диск в/home
опционально расширение нового LVM с использованием старого диска
обновить fstab , чтобы монтирование сохранялось при перезагрузке
Описанные выше шаги, вероятно, следует выполнить, загрузив ОС с живого USB/CD, например Gparted .
If I use RAID, can I add drives on the fly to increase space as I run out of them?
Да, можете. Как именно зависит от оборудования (при условии, что вы будете использовать аппаратный рейд ).
Is there an alternative to using RAID if I am not interested in maintaining a high level of redundancy?
«Высокий уровень избыточности» субъективен, и не все RAID обеспечивают избыточность. Вот общая разбивка параметров RAID:
RAID 1 (зеркальное отображение )полностью избыточно, возможно, это не нужно
RAID 6 (2 блока четности )могут справиться с отказом 2 дисков без потери данных, минимум 4 диска, возможно, это не нужно
RAID 5 (1 блок четности )устойчив к сбою одного диска, минимум 3 диска, может подойти для ваших нужд
RAID 0 (чередование )не имеет избыточности, и вы потеряете все данные в случае отказа одного диска (, хотя он обеспечивает отличную производительность ), может соответствовать вашим потребностям
В качестве альтернативы вы также можете использовать ZFS , что я бы и сделал.Из Википедии:«ZFS является масштабируемой и включает в себя расширенную защиту от повреждения данных, поддержку больших объемов памяти, эффективное сжатие данных, интеграцию концепций файловой системы и управления томами, моментальные снимки и копирование -на -писать клоны». По моему опыту, ZFS очень гибкая и может быть сконфигурирована (и настроена ), чтобы делать почти все, что вы хотите. Он обрабатывает RAID, LVM, копирование -на -запись, быстрое сжатие и т. д. Это немного сложнее в администрировании, чем ext4 или xfs, но если вам все равно придется возиться с raid/lvm, то это на самом деле не так уж отличается.