Kradziony sprzęt.

Przed Bożym Narodzeniem mieliśmy włamanie, zniknęło nam trochę sprzętu – pisałem na fejsie od razu po włamaniu (dzięki wielu osobom numery są zgłoszone do sporej ilości miejsc takich jak serwisy czy lombardy). Ale chcę, żeby gdzieś w necie został też ślad tych numerów seryjnych.

Canon 1000D – nr ser. 2766B005 // 0730200248
Sigma 17-70mm F2.8-4 – nr ser. 13174488
Lampa błyskowa canon 430EX II – nr. ser. 2805B003A[AA] (miała jakieś 5 miesięcy, używana kilka razy, może z 200 fotek przebiegu…)
iPad mini 16GB biały – nr ser. F4GJL92XF196
iPad mini 16GB czarny – nr ser. DLXK2VQLF193
Laptop ASUS U36J srebrny (U36JC-RX167V rozbudowany do 8GB ramu) – nr. ser. B2N0AS073561077
Macbook pro mid 2010 (8GB ramu, 120GB dysk SSD Vertex 4 + 250GB hdd, bez napędu)- nr ser. W8041MZUATM

Jak będziecie gdzieś widzieć taki sprzęt o dajcie znać pls :-)

NAS – Szyfrowanie – truecrypt

Na początek ściągamy

1
wget http://www.truecrypt.org/download/truecrypt-7.1a-linux-console-x64.tar.gz

następnie

1
2
tar zxf truecrypt-7.1a-linux-console-x64.tar.gz
./truecrypt-7.1a-linux-console-x64
1
2
3
4
5
6
7
8
9
10
TrueCrypt 7.1a Setup
____________________


Installation options:

 1) Install truecrypt_7.1a_console_amd64.tar.gz
 2) Extract package file truecrypt_7.1a_console_amd64.tar.gz and place it to /tmp

To select, enter 1 or 2:

wybieramy 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
truecrypt -c plik                                                                                                                                             [46/1213]
Volume type:
 1) Normal
 2) Hidden
Select [1]:

Enter volume size (sizeK/size[M]/sizeG):

Encryption algorithm:
 1) AES
 2) Serpent
 3) Twofish
 4) AES-Twofish
 5) AES-Twofish-Serpent
 6) Serpent-AES
 7) Serpent-Twofish-AES
 8) Twofish-Serpent
Select [1]:

Hash algorithm:
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Select [1]:

Filesystem:
 1) None
 2) FAT
 3) Linux Ext2
 4) Linux Ext3
 5) Linux Ext4
Select [2]: 5

Enter password:
Re-enter password:

Enter keyfile path [none]:

Please type at least 320 randomly chosen characters and then press Enter:

Done: 100,000%  Speed:   76 MB/s  Left: 0 s                

Enter your user password or administrator password:
The TrueCrypt volume has been successfully created.

I mamy stworzony szyfrowany wolumin :-)

Teraz tylko

1
truecrypt plik /punkt/montowania

wpisać hasło i mamy podmontowany wolumin.
Czemu jednak nie szyfruję tego za pomocą dm-crypt’a? Ponieważ nie jestem pewien jak się zachowa dmcrypt jak dołożę kolejny dysk do macierzy i będą ją chciał rozszerzyć.

NAS – udostępnianie plików

Teraz zajmiemy się stawianiem udostępniania plików.
Samba – Windows
NFS – Linux
AFP – MacOSX

Samba

1
apt-get install samba

Dorzucamy do configu sekcje, które nas interesują (w moim przypadku):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[global]
server string = HomeNAS
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb

[homes]
comment = Home Directories
valid users = %S
read only = No
create mask = 0700
directory mask = 0700
browseable = No

[backup]
comment = Backupy
path = /data/backup
read only = No
create mask = 0750
directory mask = 0750

[wazne]
comment = Wazne
path = /data/wazne/
read only = No
create mask = 0770
directory mask = 0770

Próbowałem odpalić autoryzację PAM (aby konta z systemu były aytomatycznie dostępne w sambie), ale poległem. Niby wystarczy zrobić wg tego tutoriala http://jaka.kubje.org/infodump/2007-05-14-unix-samba-password-sync-on-debian-etch/ ale w moim przypadku kończyło się to

1
load_usershare_service: directory /var/lib/samba/usershares is not owned by root or does not have the sticky bit 't' set or is writable by anyone.

a w drugim

1
load_usershare_service: /var/lib/samba/usershares is not a directory.

Do tematu na pewno wrócę.

NFS

Na razie bez autoryzacji – zajmiemy się tym przy okazji zmiany autoryzacji w sambie.

1
apt-get install nfs-kernel-server

Następnie dodajemy interesujące nas wpisy w /etc/exports, np

1
 

i /etc/init.d/nfs-kernel-server restart :-)

AFP

Na początek instalujemy netatalk z tego linku: http://oichinote.com/plus/2012/07/installing-debianized-netatalk-3-0-on-ubuntu-10-04-in-english.html.

1
apt-get install avahi-daemon libnss-mdns libc6-dev

Jeżeli będą się czegoś pytać to zostawiamy default:-)

1
mkdir /data/wazne/backup/TimeMachine -p

Odpalamy plik /etc/nsswitch.conf, znajdujemy

1
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

na końcu dopisujemy mdns.

Tworzymy nowy plik /etc/avahi/services/afpd.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->

<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
  <service-group>
    <name replace-wildcards="yes">%h AFP</name>
    <service>
      <type>_afpovertcp._tcp</type>
      <port>548</port>
    </service>
    <service>
      <type>_device-info._tcp</type>
      <port>0</port>
      <txt-record>model=TimeCapsule</txt-record>
    </service>
  </service-group>

w /usr/local/etc/afp.conf wrzucamy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Global]
    vol preset = default_for_all_volumes
    log file = /var/log/netatalk.log
 
[default_for_all_volumes]
    file perm = 0600
    directory perm = 0700
 
[Homes]
    basedir regex = /home
 
[TimeMachine]
    path = /data/backup/time_capsule
    time machine = yes
    vol size limit = 512000

Restartujemy usługi:

1
/etc/init.d/netatalk restart; service avahi-daemon restart

I na macu powinniśmy już widzieć nasz serwerek z ikonką TimaCapsule :-)

NAS – monitoring

Zaczęliśmy już coś robić, więc fajnie by było wiedzieć jeżeli coś się zepsuje…

1
apt-get install logwatch ssmtp mailutils

Teraz edytujemy plik ssmtp/ssmtp.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=<from>

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=<mail server>

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=<hostname naszego NAS-a>

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

AuthUser=<login do autoryzacji smtp>
AuthPass=<haslo>
AuthMethod=LOGIN

No to poślijmy maila i zobaczmy czy się udało skonfigurować:

1
echo "Test ok!" | /bin/mail -s "Test mail-a z nas-a" nasz@email

Czemu korzystamy z logwatch-a? Bo w fajnym formacie zwraca dane (agreguje, a nie przesyła userowi do przeglądnięcia stertę logów), przykładowy log z dedyka:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
 ################### Logwatch 7.3.6 (05/19/07) ####################
        Processing Initiated: Fri Oct 12 06:25:13 2012
        Date Range Processed: yesterday
                              ( 2012-Oct-11 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: hostname
  ##################################################################
 
 --------------------- Amavisd-new Begin ------------------------

 200 messages checked and passed.
 17 spam messages were found.
 13 messages with bad headers were found.
 
 ---------------------- Amavisd-new End -------------------------

 
 --------------------- clam-update Begin ------------------------

 
 Last ClamAV update process started at Thu Oct 11 23:50:24 2012
 
 Last Status:
    WARNING: Your ClamAV installation is OUTDATED!
    WARNING: Local version: 0.97.5 Recommended version: 0.97.6
    DON'T PANIC! Read http://www.clamav.net/support/faq
    main.cld is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
    daily.cld is up to date (version: 15454, sigs: 276212, f-level: 63, builder: guitar)
    bytecode.cld is up to date (version: 190, sigs: 36, f-level: 63, builder: neo)
    Received signal: wake up
 
 ---------------------- clam-update End -------------------------

 
 --------------------- Cron Begin ------------------------

 Errors when running cron:
    grandchild #10807 failed with exit status 1: 1 Time(s)

 ---------------------- Cron End -------------------------

 
 --------------------- Dovecot Begin ------------------------

 
 
 Dovecot disconnects:
    Connection closed bytes=17/340: 1 Time(s)
    Connection closed bytes=18/342: 3 Time(s)
    Connection closed bytes=217/2075: 1 Time(s)
    Connection closed bytes=217/2086: 1 Time(s)
    Connection closed bytes=276/1883: 1 Time(s)
    Connection closed bytes=285/1906: 1 Time(s)
    Connection closed bytes=32/669: 1 Time(s)
    Connection closed bytes=3521/2245017: 1 Time(s)
    Connection closed bytes=544/18030: 1 Time(s)
    Connection closed bytes=544/20957: 1 Time(s)
    Connection closed top=0/0, retr=0/0, del=0/1464, size=33470486: 1 Time(s)
    Inactivity: 47 Time(s)
    Logged out: 2504 Time(s)
    in IDLE: 49 Time(s)
    no reason: 2 Time(s)
    tried to use disabled plaintext auth: 5327 Time(s)
 
 **Unmatched Entries**
    dovecot: auth-worker(default): mysql: Connected to 10.0.0.xxx (emails): 7 Time(s)
    dovecot: imap-login: Disconnected (no auth attempts): rip=195.8.99.xxxx, lip=87.98.238.xxx, TLS: 1 Time(s)
 
 ---------------------- Dovecot End -------------------------

 
 --------------------- dpkg status changes Begin ------------------------

 
 Installed:
    libdate-manip-perl 6.20-1
    libyaml-syck-perl 1.17-1
    logwatch 7.3.6.cvs20090906-1ubuntu4
 
 Upgraded:
    bind9 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    bind9-host 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    bind9utils 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    dnsutils 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    libbind9-60 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    libdns69 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    libisc62 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    libisccc60 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    libisccfg62 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
    liblwres60 1:9.7.3.dfsg-1ubuntu2.6 => 1:9.7.3.dfsg-1ubuntu2.7
 
 ---------------------- dpkg status changes End -------------------------

 
 --------------------- pam_unix Begin ------------------------

 sshd:
    Authentication Failures:
[...]
       unknown (205-178-65-xxx.c3-0.snb-ubr1.chi-snb.il.cable.rcn.com): 1 Time(s)
    Invalid Users:
       Unknown Account: 7 Time(s)
 
 su:
    Sessions Opened:
       root -> root: 2 Time(s)
       root -> amavis: 1 Time(s)
 
 vsftpd:
    Unknown Entries:
       authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=91.12.103.xxx : 1 Time(s)
       check pass; user unknown: 1 Time(s)
 
 
 ---------------------- pam_unix End -------------------------

 
 --------------------- Postfix Begin ------------------------

   97.744M  Bytes accepted                         102,492,046
   71.117M  Bytes sent via SMTP                     74,571,912
   43.712M  Bytes delivered                         45,835,858
 ========   ==================================================
 
      443   Accepted                                    96.72%
       15   Rejected                                     3.28%
 --------   --------------------------------------------------
      458   Total                                      100.00%
 ========   ==================================================
 
        2   5xx Reject relay denied                     13.33%
       13   5xx Reject unknown user                     86.67%
 --------   --------------------------------------------------
       15   Total 5xx Rejects                          100.00%
 ========   ==================================================
 
     5783   Connections            
     5330   Connections lost (inbound)
     5783   Disconnections          
      444   Removed from queue      
      187   Delivered              
      266   Sent via SMTP          
        1   Deferred                
        1   Deferrals              
        1   Bounced (local)        
        1   Notifications sent      
 
        7   Timeouts (inbound)      
       29   Hostname verification errors
       42   SASL authenticated messages
 
 
 ---------------------- Postfix End -------------------------

 
 --------------------- SSHD Begin ------------------------

 
 Failed logins from:
    58.254.143.xxx: 1 time
[...]
    218.201.238.xxx: 1 time
 
 Illegal users from:
    62.212.154.xxx (www.digiinfo.nl): 6 times
    205.178.65.xxx (205-178-65-178.c3-0.snb-ubr1.chi-snb.il.cable.rcn.com): 1 time
 
 Users logging in through sshd:
    pawel:
       81.210.x.x (81-210-x-x.ip.netia.com.pl): 3 times
 
 
 Received disconnect:
    11: disconnected by user : 3 Time(s)
 
 **Unmatched Entries**
 reverse mapping checking getaddrinfo for xx.246.97.119.broad.wh.hb.dynamic.163data.com.cn [119.97.246.xx] failed - POSSIBLE BREAK-IN ATTEMPT! : 1 time(s)
 
 ---------------------- SSHD End -------------------------

 
 --------------------- Sudo (secure-log) Begin ------------------------

 
 ==============================================================================
 
 pawel => root
 -------------
 /bin/su - 2 Times.
 /usr/bin/vim - 1 Times.
 
 ---------------------- Sudo (secure-log) End -------------------------

 
 --------------------- vsftpd-messages Begin ------------------------

 
 Failed FTP Logins:
  (91.12.103.xxx): anonymous - 1 Time(s)
 
 ---------------------- vsftpd-messages End -------------------------

 
 --------------------- Disk Space Begin ------------------------

 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda6              20G  9.5G  9.1G  52% /
 none                  742M  204K  742M   1% /dev
 /dev/sda1             184M  170M  4.8M  98% /boot
 /dev/sdb1             247G  132G  103G  57% /home
 
 /dev/sda1 => 98% Used. Warning. Disk Filling up.
 
 ---------------------- Disk Space End -------------------------

 
 ###################### Logwatch End #########################

Jak widać wiadomość jest przystępna, a nie tak jak z logcheck-a czyli defacto prosty grep z danego serwera z danego dnia i zrzut tego na maila (ktoś czyta takie logi? o0).

Zabbix

Czemu Zabbix? Ponieważ, żeby podpiąć nową kontrolkę nie trzeba się specjalnie bawić – wstawiamy kontrolkę, następnie korzystamy z zabbix-sendera, czyli ręcznie wysyłamy dane i możemy sobie z tego zrobić wykres:-)

1
apt-get install zabbix-agent zabbix-server-mysql zabbix-frontend-php

Po instalacji wchodzimy na http://nasz_nas/zabbix, logujemy się za pomocą admin/zabbix i możemy przystąpić do tworzenia kontrolek.

Po zalogowaniu się do panelu, przechodzimy do Configuration > hosts. Widzimy tam Zabbix server, ale ma on status „Not monitored” – klikamy, zatwierdzamy, że tak – chcemy go monitorować. Potem klikamy na nazwę Zabbix server i w dns name podajemy nasz hostname.

Teraz przechodzimy do konsoli, odpalamy

1
vim /etc/zabbix/zabbix_agentd.conf

znajdujemy RefreshActiveChecks i usuwamy # z przodu, następnie

1
/etc/init.d/zabbix-agent restart

i powinniśmy się cieszyć pięknymi wykresami :-)

Jeżeli macie problem z tym, ze frontend wyrzuca błędy dotyczące połączenia się do db, sprawdźcie czy w /etc/zabbix/dbconfig.php jest to samo hasło co w /etc/zabbix/zabbix_server.conf :-) Jeżeli nie to poprawcie w dbconfig.php. Jak dodawać kontrolki mozna przeczytać w necie, np stan dysków:

http://www.zabbix.com/wiki/howto/monitor/os/linux/smart

NAS – instalacja systemu oraz zestawienie RAID5

Ubuntu ściągamy z tego miejsca http://www.ubuntu.com/download/server/thank-you?distro=server&bits=64&release=lts, wrzucamy na USB i zaczynamy instalację (tego nie będe opisywał, sprowadza się do klikania tak i dalej…). Przy pytaniu o instalację aktualizacji automatycznie odpowiadamy, że nie chcemy. Przy wyborze pakietów instalujemy tylko openssh server.

Po instalacji pora na instalację potrzebnych pakietów.

1
sudo apt-get update &amp;&amp; sudo apt-get upgrade
1
sudo apt-get install vim git-core --no-install-recommends

Czemu Git? Chcemy mieć kontrolę nad naszymi configami, wiedzieć co i kiedy zrobiliśmy. Wg mnie bardzo przydatna rzecz dla administratorów, którzy nie posiadają narzędzi typu puppet czy chef.

Przełączamy się na roota za pomocą

1
sudo su

, wchodzimy do katalogu /etc i zakładamy tam nowe repozytorium.

1
2
3
4
5
git config --global user.name "Imię i nazwisko"
git config --global user.email nasz@email
git init
git add .
git commit -m 'Config dla czystego systemu'

Polecam po każdej instalacji pakietów i zmianach w konfigach robic git commit -m ‚KOMENTARZ’ lista plików
Możemy teraz zająć się konfigiem i instalacją reszty pakietów.

Na początek – nie chcemy aby system instalował polecane pakiety – jedynie te, które na pewno my chcemy.

1
vim /etc/apt/apt.conf.d/02noinstallrecommends
1
2
APT::Install-Recommends "0";
APT::Install-Suggests "0";

Chcielibyśmy się dowiedzieć co się dzieje z dyskami, czyli monitoring SMART:

1
apt-get install smartmontools

Na końcu pliku /etc/smartd.conf dodajemy (za http://blog.peacon.co.uk/wiki/Monitoring_SMART_Status_on_Debian)

1
2
3
/dev/sdb -a -I 194 -W 4,45,55 -R 5 -m nasz@email
/dev/sdc -a -I 194 -W 4,45,55 -R 5 -m nasz@email
/dev/sdd -a -I 194 -W 4,45,55 -R 5 -m nasz@email

Teraz raid:

1
apt-get install mdadm

Dyski są widoczne jako sdb, sdc oraz sdd. Aby zestawić raid, należy stworzyć najpierw partycje na wszystkich dyskach:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# fdisk /dev/sdb
Urządzenie nie zawiera poprawnej DOS-owej tablicy partycji ani etykiety dysku Sun, SGI ani OSF
Tworzenie nowej etykiety dysku typu DOS z identyfikatorem dysku 0xc2cfc882.
Zmiany pozostaną tylko w pamięci do chwili ich zapisania.
Potem, oczywiście, poprzednia zawartość będzie nie do odzyskania.

Urządzenie przedstawia logiczny rozmiar sektora mniejszy od rozmiaru
fizycznego. Zaleca się wyrównanie do granicy sektora fizycznego
(lub optymalnego dla we/wy), w przeciwnym wypadku może to wpłynąć
na wydajność.

Polecenie (m wyświetla pomoc): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Numer partycji (1-4, domyślnie 1): 1
Pierwszy sektor (2048-3907029167, domyślnie 2048):
Przyjęto wartość domyślną 2048
Ostatni sektor, +sektorów lub +rozmiar{K,M,G} (2048-3907029167, domyślnie 3907029167):
Przyjęto wartość domyślną 3907029167

Polecenie (m wyświetla pomoc): t
Wybrano partycję 1
Kod szesnastkowy (L wyświetla listę): fd
Zmieniono typ systemu partycji 1 na fd (Linux RAID autodetect)

Polecenie (m wyświetla pomoc): w
Tablica partycji została zmodyfikowana!

Wywoływanie ioctl() w celu ponownego odczytu tablicy partycji.
Synchronizacja dysków.

powtarzamy dla pozostałych dysków.

1
2
3
4
5
6
7
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sd[bcd]1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 1953381888K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Aby sprawdzić jak się ma nasza macierz:

1
2
3
4
5
6
7
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
3906763776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[&gt;....................] recovery = 0.0% (765052/1953381888) finish=552.9min speed=58850K/sec

unused devices:

Czyli zaczęło się ;-) Resztę zrobimy jak się stworzy macierz.

LVM
Instalacja pakietu:

1
apt-get install lvm2

Tworzenie partycji LVM

1
2
3
4
# pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
# vgcreate vg1 /dev/md0
Volume group "vg1" successfully created
1
2
# lvcreate -s 500G -n backup vg1 /dev/md0
Logical volume "backup" created

Tworzymy system plików (ext4 jest ok, bo nie ma większych problemów z odzyskiwaniem danych z niego)

1
mkfs.ext4 /dev/vg1/backup

Tworzymy mount point

1
mkdir /data/backup -p

Dodajemy do /etc/fstab

1
/dev/mapper/vg1-backup /data/backup ext4 auto 0 0

I montujemy.

1
mount /data/backup/

Teraz możemy sprawdzić jak wygląda sytuacja:

1
2
3
4
5
6
7
8
# df -h
System plików rozm. użyte dost. %uż. zamont. na
/dev/sda1 222G 1,2G 210G 1% /
udev 3,9G 4,0K 3,9G 1% /dev
tmpfs 1,6G 304K 1,6G 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 3,9G 0 3,9G 0% /run/shm
/dev/mapper/vg1-backup 493G 198M 467G 1% /data/bakup

Brawo! 500GB partycja jest stworzona!:-)

Teraz powtarzamy ostatnie kroki dla drugiego dysku (który będzie miał resztę).

Czemu dzielę dysk na backup i resztę? Ponieważ TimeMachine zaczyna rotować wpisy dopiero gdy całkiem zapcha dysk – wolałbym, aby jednak było tam coś więcej niż backupy;-)
Polecam poczekać aż cat /proc/mdstat pokaże, że jednak mamy cały raid zrobiony zanim zaczniemy się bawić;-)

NAS – wybór sprzętu

Jako, że jakiś czas temu zakupiłem konsolę, nie będę już potrzebował blaszaka (do pracy mam laptop-a), który swobodnie da sobie radę jako serwer plików:
- Mobo Asus M5A78L-M LX,
- Procesor AMD Athlon II x2, odblokowany na Phenom-a x4 :-)
- 8GB ram 1600Mhz
- 250GB dysk

Do tego przydałyby się jakieś dyski na storage. Po długim wybieraniu zdecydowałem się 3x 2TB WD Green. Czemu WD a nie Seagate? Nie mam do niego zaufania – wszystkie dyski jakie padły u mnie w domu to właśnie Seagate.
WD Green ma standardowo 2 letnią gwarancję, z możliwością (za śmieszne pieniądze – 29pln/dysk) przedłużenia jej o kolejny rok. Ponadto ciągną mniej prądu – ale za to są mniej wydajne niż inne dyski.
We wprowadzeniu wspominałem jeszcze o dyskach 2x 500GB do raid0 – te dyski mam z poprzedniego serwerka:-)
System będzie na osobnym dysku (250GB). Dzięki temu WDki będą mogły swobodnie parkować głowicę gdy nikogo w domu nie będzie (ponieważ nic się na nich nie będzie wtedy działo).

Edit:
No to nie tylko ja nie mam zaufania do Seagate:-) Admini w firmie także potwierdzają, że nowe Seagate-y się sypią.

NAS w domu

Jakiś czas nic nie pisałem – teraz postaram się trochę uaktywnić. Zacznę od postawienia nowego NASa w domu na Ubuntu 12.04 server z kilkoma bajerami.
Wstępne założenia:
- 3x 2TB – raid 5 + lvm + szyfrowanie,
- 2x 500GB – raid0 + lvm,
- VirtualBox albo LXC na wirtualne maszyny,
- Samba,
- AFP + TimeMachine,
- NFS,
- DLNA,
- Rsync backup dla maszyn z windowsem (jeżeli się uda).

Czemu tak? Raid5 na ważne dane (głównie backupy), raid0 na bieżącą robotę (wirtualne maszyny). Samba, AFP, NFS – wiadomo. Dla backupu dla Mac-a TimeMachine, dla backupów Windowsów (Home Premium i Starter) Rsync – w momencie gdy dany komputer pojawi się w sieci NAS powinien rozpocząć jego backup. Zobaczymy czy to się uda:-)

Postaram się to napisać w formie tutoriala, tak, aby nikt nie miał problemów z postawieniem takiego NAS dla siebie.

„No Metadata Classes to process.” w Symfony

Zaczynamy w kilka osób robić mały i szybki projekt. Przy wybieranie frameworka wybór padł na Symfony 2.
Lecę sobie kulturalnie zgodnie z dokumentację a tu nagle zonk

1
2
noose@dev ~/work/$ php app/console doctrine:schema:create
No Metadata Classes to process.

Trochę szukałem, nic nie pomagało:
* podobno pomaga dodanie @ORM\ w adnotacjach, ale ja już miałem
* podobno pomaga dodanie

1
2
3
orm:
        auto_generate_proxy_classes
: %kernel.debug%
        auto_mapping
: true

w app/config/config.yml

A co mi pomogło?

1
2
3
4
5
6
7
8
9
10
11
12
doctrine:
    dbal
:
        driver
:  %database_driver%
        host
:    %database_host%
        port
:    %database_port%
        dbname
:  %database_name%
        user
:    %database_user%
        password
: %database_password%
        charset
: UTF8
    orm
:
        auto_generate_proxy_classes
: %kernel.debug%
        auto_mapping
: true

Pierwotnie przed orm był enter….

Blokowanie ekranu w OSX

Aby zablokować ekran ( bez wylogowywania! ) należy wcisnąć CTRL+SHIFT+EJECT (^⇧eject)
Długo tego szukałem, więc wolę się podzielić ;)

Locking screen without logout in OSX CTRL+SHIFT+EJECT (^⇧eject)

Bardzo przydatny diff dla mercuriala

Nazywa się extdiff – pozwala pokazywać diffa w vimdiffie (3 panele – dwa z kodem, jeden z listą plików).

w hgrc dopisujemy

[extensions]
hgext.extdiff =

[extdiff]
cmd.vimdiff = vim 
opts.vimdiff = -f '+next' '+execute "DirDiff" argv(0) argv(1)'

oprócz tego potrzebujemy DirDiffa do vim’a
http://www.vim.org/scripts/script.php?script_id=102
+

let g:DirDiffDynamicDiffText = 1

w vimrc

Znalezione w http://mercurial.selenic.com/wiki/ExtdiffExtension