2013-12-19

Linux. Используем файл как файловую систему.

Мучались мы долго с квотированием файловых ресурсов на samba, в итоге пришли к простому решению. Делаем файл ограниченного размера, подключаем его как файловую систему, шарим через самбу. Все, никто никогда за пределы файла не вылезет:

Создаем и монтируем ресурс размером 100М:

dd if=/dev/zero of=/files01/fs/alexsf.fs bs=1024 count=100000
mkfs.ext3 /files01/fs/alexsf.fs
mkdir /files01/mnt/alexsf
mount -t ext3 -o loop /files01/fs/alexsf.fs /files01/mnt/alexsf

Если нужно увеличить размер, например до 300М:

umount -l /files01/mnt/alexsf
dd if=/dev/zero of=/files01/fs/alexsf.fs bs=1 count=0 seek=300M
e2fsck -f /files01/fs/alexsf.fs
resize2fs /files01/fs/alexsf.fs
mount -t ext3 -o loop /files01/fs/alexsf.fs /files01/mnt/alexsf
e2fsck -f /files01/fs/alexsf.fs

Проще в некоторых случаях создать новый файл,  смонтировать и перелить данные, а исходный удалить.

Для монтирования при загрузке, в /etc/fstab добавить

/files01/fs/alexsf.fs   /files01/mnt/alexsf     ext3    acl,user_xattr  1 0

С флагами внимательно, провтыкаете - сервер не загрузится. Если стремно постоянно редактировать fstab, что придется делать на большой файлопомойке, где порядка сотни самбовских шар, можно написать скриптец и запихнуть его в init.d, ну и линки соответственно сделать для вашего уровня выполнения.

Такой вот скрипт:

#! /bin/sh
#
# Copyright (c) 2013 Filippov A.S.
#
# /etc/init.d/mntusersfs
#
### BEGIN INIT INFO
# Provides:          mntusersfs
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network
# Default-Start:    3 5
# Default-Stop:    3 5
# Description:       Mount users filesystems
### END INIT INFO

. /etc/rc.status

rc_reset

case "$1" in
  start)
        echo "Mount users filesystems..."
        mount -v -t ext3 -o loop /files01/fs/a1.ext3 /files01/mnt/a1
        mount -v -t ext3 -o loop /files01/fs/a2.ext3 /files01/mnt/a2
        mount -v -t ext3 -o loop /files01/fs/alexsf.ext3 /files01/mnt/alexsf
        rc_status -v -r
        ;;
    stop)
        echo "Umount users filesystems..."
        umount -l -v /files01/mnt/a1
        umount -l -v /files01/mnt/a2
        umount -l -v /files01/mnt/alexsf
        rc_status -v
        ;;
    status)
        mount -l -t ext3
        ;;
    restart)
        $0 stop
        $0 start
        rc_status
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
        exit 1
        ;;
esac

rc_exit

В этом случае при провтыке в скрипте он просто не отработает целиком. Ошибки легче исправлять на живой системе :)

А вот так ставим на автозагрузку:

chkconfig mntusersfs on

Спустя пять дней закончились loop devices. Сейчас делаю так(номер loop увеличиваю при создании новой ФС)

dd if=/dev/zero of=/files01/userfs/admsektor.ext3 bs=1024 count=2048000
mkfs.ext3 /files01/userfs/admsektor.ext3
mkdir /files01/usermnt/admsektor
mknod -m 660 /dev/loop8 b 7 8
mount -t ext3 -o loop /files01/userfs/admsektor.ext3 /files01/usermnt/admsektor
mkdir /files01/usermnt/admsektor/admsektor
chmod 777 /files01/usermnt/admsektor/admsektor
tune2fs -m 1 /dev/loop8
tune2fs -r 1 /dev/loop8

Читать далее

2013-12-18

XenServer 6.2 исправление дефолтной настройки maxcpus

По умолчанию, в Citrix XenServer 6.2 есть такая неприятная штука - практически все шаблоны для создания витруальных машин идут с параметром maxcpus=1, что означает, что сколько бы процов вы не дали на виртуалку, в ней будет только 1. Исправить можно, установив принудительно maxcpus в другое значение. Через XenCenter (os boot parameter) сделать это можно не всегда, а вот через командную строку...

Цепляемся по ssh на XenServer, где работает виртуальная машина, предположим, которая называется s11s3x64, и


[root@xen02 ~]# xe vm-list name-label=s11s3x64
uuid ( RO)           : 973563fd-00da-0a89-54de-a70e78b37351
     name-label ( RW): s11s3x64
    power-state ( RO): running

[root@xen02 ~]# xe vm-param-set PV-args='console=ttyS0 xencons=ttyS maxcpus=32' uuid=973563fd-00da-0a89-54de-a70e78b37351

Все, теперь в нашей виртуалке будет максимум 32 проца, не больше. То есть если в настройках 4, будет 4, если 40 - будет 32.

Читать далее

2013-05-13

Командира опытного от новичка отличает не срок службы и не звание, а способность распределить задачи между подчиненными так, чтобы проблема решалась наилучшим образом и без участия непосредственного начальства. Одним такие решения даются сразу, а другие на всю жизнь становятся для подчиненных пугалом, которое отталкивает своей суетливой бестолковостью и склонностью к работе дровосека, тоже любящего рубить сплеча.

Дурак не знает сомнений – он берется и делает. Зато каждый второй умный отказывается поверить в себя и потому так и сидит у разбитого корыта. Оттого-то миром и правят энергичные тупицы.

Зыков В.В. "Дорога Домой"


Читать далее

2013-02-14

logrotate. Как переворачивать часто...

Про линукс.
Часто бывает, что какие-то логи растут с бешеной скоростью, терять их нельзя, давать разрастаться тоже. А logrotate в формате даты, которую дописывает к файлу при перевороте, может добавлять время с указанием не менее дня. Что делать, если надо указывать все до секунды??? А вот что(пример переворотов логов bucardo):

/var/log/bucardo/bucardo.log {
notifempty
size=100M
rotate 200
missingok
dateext
dateformat -%Y%m%d
copytruncate
olddir /var/log/arhiv/bucardo
postrotate
  CURDTT=$(date +%Y%m%d)
  CURDT=$(date +%Y-%m-%d.%H.%M.%S)
  mv /var/log/arhiv/bucardo/bucardo.log-$CURDTT /var/log/arhiv/bucardo/bucardo.log-$CURDT
  tar -cvzf /var/log/arhiv/bucardo/bucardo.log-$CURDT.tar.gz /var/log/arhiv/bucardo/bucardo.log-$CURDT
  rm /var/log/arhiv/bucardo/bucardo.log-$CURDT
endscript
}

Читать далее

2013-01-15

Я смотрю на них, понимая – я здесь чужой.
Сохрани и помилуй, Боже, но я здесь лишний.
Они все состоят из фильмов, стихов и книжек.
Я – из ножа и артерии под ножом.
Читать далее